Key derivation stays as it is today: one derivation at libsodium's interactive
setting (64 MiB, about 0.15 s), with no second copy in memory.
The 12-character passphrase minimum stays the default.
A new setting, "Allow weak passphrases", off by default, lets a user who turns
it on set a shorter passphrase.
The length of the passphrase is what protects the stored secret, so this is the
only change.
Definition of done
The settings screen has an "Allow weak passphrases" setting, off by default.
While it is off, every screen that sets or changes a passphrase refuses one
under 12 characters, exactly as today.
While it is on, those screens accept any non-empty passphrase.
Key derivation is unchanged.
Tests cover a short passphrase refused with the setting off and accepted with
it on.
The README describes the setting in one or two plain sentences, and its Key
Decisions section states the key-derivation parameters and why (one light
derivation; the passphrase's length is what protects the stored secret).
One PR into next ending its title with (closes#674), passing an
independent review before it is squash-merged.
Model: opus-5-5
sneak confirmed this reading on 25 October
(https://git.eeqj.de/sneak/AutistMask/issues/401#issuecomment-154565, approving
https://git.eeqj.de/sneak/AutistMask/issues/401#issuecomment-154156):
- Key derivation stays as it is today: one derivation at libsodium's interactive
setting (64 MiB, about 0.15 s), with no second copy in memory.
- The 12-character passphrase minimum stays the default.
- A new setting, "Allow weak passphrases", off by default, lets a user who turns
it on set a shorter passphrase.
The length of the passphrase is what protects the stored secret, so this is the
only change.
**Definition of done**
- The settings screen has an "Allow weak passphrases" setting, off by default.
- While it is off, every screen that sets or changes a passphrase refuses one
under 12 characters, exactly as today.
- While it is on, those screens accept any non-empty passphrase.
- Key derivation is unchanged.
- Tests cover a short passphrase refused with the setting off and accepted with
it on.
- The README describes the setting in one or two plain sentences, and its Key
Decisions section states the key-derivation parameters and why (one light
derivation; the passphrase's length is what protects the stored secret).
- One PR into `next` ending its title with (closes #674), passing an
independent review before it is squash-merged.
Model: opus-5-5
clawbot
self-assigned this 2026-10-25 03:07:20 +01:00
Plan: one PR to next, after #671 lands (both change Settings and the stored profile).
A stored setting, off in a new profile (DEFAULT_STATE and normalizePersisted() in src/shared/persistedState.js).
Settings: an "Allow weak passphrases" checkbox, unticked, with one plain sentence on what it allows.
AddWallet (src/popup/views/addWallet.js), the only screen that sets a passphrase: with the setting off it refuses one under 12 characters, exactly as today; with it on it accepts any non-empty one. The hint line and error wording follow the setting.
src/shared/vault.js is not touched.
Jest tests: a short passphrase refused with the setting off and accepted with it on; an empty one refused either way.
README: the setting in one or two sentences, and in Key Decisions the key derivation (Argon2id at libsodium's interactive setting, 64 MiB, one derivation) and why: the passphrase's length is what protects the stored secret.
Model: opus-5-5
Plan: one PR to `next`, after https://git.eeqj.de/sneak/AutistMask/pulls/671 lands (both change Settings and the stored profile).
- A stored setting, off in a new profile (`DEFAULT_STATE` and `normalizePersisted()` in `src/shared/persistedState.js`).
- Settings: an "Allow weak passphrases" checkbox, unticked, with one plain sentence on what it allows.
- AddWallet (`src/popup/views/addWallet.js`), the only screen that sets a passphrase: with the setting off it refuses one under 12 characters, exactly as today; with it on it accepts any non-empty one. The hint line and error wording follow the setting.
- `src/shared/vault.js` is not touched.
- Jest tests: a short passphrase refused with the setting off and accepted with it on; an empty one refused either way.
- README: the setting in one or two sentences, and in Key Decisions the key derivation (Argon2id at libsodium's interactive setting, 64 MiB, one derivation) and why: the passphrase's length is what protects the stored secret.
Model: opus-5-5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
sneak confirmed this reading on 25 October
(#401 (comment), approving
#401 (comment)):
setting (64 MiB, about 0.15 s), with no second copy in memory.
it on set a shorter passphrase.
The length of the passphrase is what protects the stored secret, so this is the
only change.
Definition of done
under 12 characters, exactly as today.
it on.
Decisions section states the key-derivation parameters and why (one light
derivation; the passphrase's length is what protects the stored secret).
nextending its title with (closes #674), passing anindependent review before it is squash-merged.
Model: opus-5-5
Plan: one PR to
next, after #671 lands (both change Settings and the stored profile).DEFAULT_STATEandnormalizePersisted()insrc/shared/persistedState.js).src/popup/views/addWallet.js), the only screen that sets a passphrase: with the setting off it refuses one under 12 characters, exactly as today; with it on it accepts any non-empty one. The hint line and error wording follow the setting.src/shared/vault.jsis not touched.Model: opus-5-5