0.195.0: extend the liability shield to the beta / data-loss warnings

This commit is contained in:
GB 2026-07-20 22:13:17 -07:00
parent 604c2ba312
commit 274db90a5c
7 changed files with 59 additions and 34 deletions

View file

@ -109,8 +109,8 @@ and out of the way when you don't:
- **Import / export**`.stash` bundles (optionally encrypted) round-trip notes +
attachments between vaults.
- **Encryption (beta)** — lock notes or folders into encrypted `.stashenc` files, with
archive folders, encrypted trash, and shared-key collaboration. *(Please read the
caveat below.)*
archive folders, encrypted trash, and shared-key collaboration. Beta: data can be
lost with or without your key. *(Please read the caveat below.)*
- **Authorship / multiplayer** — stamp notes with your name; shared vaults track
contributors via a vault-wide author registry.
- **Johnny.Decimal index** — build a JD-style hierarchy from dotted-prefix titles.
@ -133,8 +133,13 @@ and out of the way when you don't:
> don't rely on it for anything sensitive, and keep unencrypted backups. It's optional
> and off by default.
>
> Because it's beta, **data loss is possible with or without your key** — a bug, an
> interrupted lock/unlock, or a sync writing the vault mid-operation can damage
> encrypted files even when your password is perfectly safe. Keep unencrypted backups.
>
> *Stashpad cannot recover keys or passwords, and is not liable for the loss of keys,
> passwords, or any data encrypted with them.*
> passwords, or any data — whether the cause is a lost key or a fault in this beta
> encryption itself.*
## Feedback

52
main.js

File diff suppressed because one or more lines are too long

View file

@ -1,7 +1,7 @@
{
"id": "stashpad",
"name": "Stashpad",
"version": "0.194.0",
"version": "0.195.0",
"minAppVersion": "1.13.0",
"description": "A chat-style, nested-notes workspace: rapid capture, outliner navigation, fast search, tasks, and per-folder templates, with one-click Open Knowledge Format (OKF) export for LLMs and agents.",
"author": "Human",

View file

@ -1,6 +1,6 @@
{
"name": "stashpad-obsidian",
"version": "0.194.0",
"version": "0.195.0",
"private": true,
"scripts": {
"dev": "node esbuild.config.mjs",

14
release-notes/0.195.0.md Normal file
View file

@ -0,0 +1,14 @@
# 0.195.0
## Encryption warnings
- **"Beta" now says what beta means.** Everywhere encryption is labelled beta, it adds
that **data can be lost with or without your key** — a bug, an interrupted
lock/unlock, or a sync writing the vault mid-operation can damage encrypted files
even when your password is perfectly safe. Keep unencrypted backups.
- That warning, and the liability note with it, now travels on **every password
dialog** (it previously showed a bare "BETA" badge with no explanation), in Settings,
and in the README.
- The liability note is broadened to cover **both** causes: *Stashpad cannot recover
keys or passwords, and is not liable for the loss of keys, passwords, or any data —
whether the cause is a lost key or a fault in this beta encryption itself.*

View file

@ -1851,7 +1851,11 @@ export class EncryptionPasswordModal extends Modal {
: mode === "change" ? "Change encryption password"
: "Unlock encryption"),
);
this.contentEl.createDiv({ cls: "stashpad-beta-row" }).createEl("span", { cls: "stashpad-beta-badge", text: "BETA" });
// 0.195.0: the badge alone said nothing. Beta encryption can lose data even when
// the key is safe, so the risk + liability travel with every password dialog.
const betaRow = this.contentEl.createDiv({ cls: "stashpad-beta-row" });
betaRow.createEl("span", { cls: "stashpad-beta-badge", text: "BETA" });
betaRow.createEl("span", { cls: "stashpad-beta-note", text: "Beta encryption — data can be lost with or without your key. Keep unencrypted backups; Stashpad isn't liable for data loss." });
if (this.opts.intro) {
this.contentEl.createEl("p", { cls: "stashpad-export-desc", text: this.opts.intro });

View file

@ -1660,7 +1660,9 @@ export class StashpadSettingTab extends PluginSettingTab {
host.addClass("stashpad-encryption-section");
const betaRow = host.createDiv({ cls: "stashpad-beta-row" });
betaRow.createEl("span", { cls: "stashpad-beta-badge", text: "BETA" });
betaRow.createEl("span", { cls: "stashpad-beta-note", text: "Encryption is in beta — keep your own backups of anything important." });
// 0.195.0: say the quiet part — beta code can lose data even when your key is
// perfectly safe (a bug, an interrupted lock/unlock, a sync writing mid-op).
betaRow.createEl("span", { cls: "stashpad-beta-note", text: "Encryption is in beta — data can be lost with or without your key. Keep your own unencrypted backups." });
// 0.134.3: ONE merged warning callout (was three: the AI disclaimer box,
// a ⚠️ description paragraph here, and a "no recovery" callout at the top
// of the per-folder section). Same .stashpad-enc-warning callout style.
@ -1689,7 +1691,7 @@ export class StashpadSettingTab extends PluginSettingTab {
"Each device unlocks with its own password (it never leaves the device); collaborators get access by device approval, not a shared password. If everyone with access loses their password, the content is unrecoverable. While encrypting or decrypting, avoid having a sync/cloud service write the vault mid-operation — it can corrupt files.",
);
warn.createEl("p", { cls: "stashpad-enc-liability" }).setText(
"Stashpad cannot recover keys or passwords, and is not liable for the loss of keys, passwords, or any data encrypted with them. Backing them up is yours to do.",
"Stashpad cannot recover keys or passwords, and is not liable for the loss of keys, passwords, or any data — whether the cause is a lost key or a fault in this beta encryption itself. Keeping your own backups is yours to do.",
);
// 0.137.4: ONE collapsible, toggle-free "how it works" reference block, so