A failed secret add --force leaves the secret unchanged (closes #136)
check / check (push) Waiting to run
check / check (push) Waiting to run
addVersion wrote the new version before it unlocked the vault to set notAfter on the version being replaced, so a wrong passphrase or mnemonic left an extra version behind. It now unlocks the vault and loads that version's metadata first; writing notAfter and switching current still come after the new version is saved. generate secret --force and import --force take the same path. The time set as the new version's notBefore and the replaced version's notAfter is taken after the unlock, which can wait for the passphrase. updatePreviousVersion asks for the long-term key again. The vault keeps it in memory after the first unlock, so this neither prompts nor derives it a second time. Model: opus-5-5
This commit was merged in pull request #161.
This commit is contained in:
@@ -18,6 +18,14 @@ https://git.eeqj.de/sneak/secret/milestone/12
|
||||
|
||||
# Completed Steps
|
||||
|
||||
- 2026-10-14: A `secret add --force` that cannot unlock the vault, given a wrong
|
||||
passphrase or mnemonic, leaves the secret as it was
|
||||
(https://git.eeqj.de/sneak/secret/issues/136). The new version used to be
|
||||
written before the vault was unlocked to set `notAfter` on the version it
|
||||
replaces, so each failed add left one more version that `secret version list`
|
||||
showed. The vault is now unlocked, and that version's metadata read, before
|
||||
anything is written. `generate secret --force` and `import --force` take the
|
||||
same path.
|
||||
- 2026-10-12: A mnemonic typed with extra spaces, tabs or line breaks gives the
|
||||
same long-term key as its words separated by single spaces
|
||||
(https://git.eeqj.de/sneak/secret/issues/135). The key was derived from the
|
||||
|
||||
Reference in New Issue
Block a user