# Changelog
## 0.0.9 - 2026-08-30
- Preserve the advertised Rust 1.88 minimum for fresh Cargo installations by
using the vault API release that pins its Linux Secret Service dependency to
the last Rust-1.88-compatible version.
## 0.0.8 - 2026-08-30
- Install the current v1 vault and archive exporter releases during automatic
migration so schema-2 archive metadata and migration-format 0.0.4 are used.
- Moved the infrequently used `recover` operation under `doctor`. `doctor
recover` now detects authenticated interrupted cleanup automatically and
rolls it forward in place; otherwise it salvages readable records into a
new Lockbox. `--dry-run` remains non-mutating, and the separate transaction
recovery mode flag has been removed.
- Write-capable Lockbox opens now complete authenticated pending cleanup
automatically, while `doctor` diagnostics use an explicitly read-only open
and report the recovery action without changing the Lockbox.
- Improved recovery, migration, session, file, variable, and form command
coverage, including failure-injection tests for interrupted commits and
recovery checkpoints.
- Added encrypted Lockbox descriptions. `create --description` records the
initial purpose, `description get|set|clear` manages it, `doctor LOCKBOX`
shows it after a successful open, and `vault lockbox list
--with-description` includes descriptions that can be decrypted. Existing
encrypted variable storage is reused, so the lockbox format is unchanged.
- Added persistent named `mirror` projects for one-way host-directory updates.
Projects own non-overlapping lockbox subtrees, store portable include/exclude
rules and missing-file policy inside the encrypted archive, use `status` as
the sole preview, and provide scoped variants of every file command. Empty
sources and large deletion plans retain explicit safeguards. This reuses
existing encrypted variable records and does not change the lockbox format
version.
- Top-level help now prints the installed CLI version.
- Corrected `variable move` usage to show one optional lockbox followed by one
source and destination.
- Missing lockboxes now produce a direct path-specific error from `open`.
- Added regression coverage for completing nested host lockbox paths.
- `variable set --secret` and `form set --secret` now upgrade existing normal
values to secure storage. Form-field promotion creates a definition revision
and upgrades that field across records of the same form type. Downgrades
remain explicit delete-and-recreate operations.
- Added target-first lockbox commands such as `lbx secrets.lbox add ...` and
`lbx secrets.lbox create`. Existing unambiguous command-first forms remain
available, but `add` now reserves every positional value for a source and
selects its lockbox before the command or from the session default. It
accepts multiple source files, uses `--to` for an optional logical
destination, supports explicit replacement with `--overwrite`, and
normalizes relative logical paths before storage.
- Mutating CLI commands now confirm successful outcomes. File imports report
the number of files added, and create, extract, rename, variable, form,
access, and developer key operations report what changed.
- `remove` now handles every shell-expanded path, supports quoted archive
globs, validates a batch before mutation, and prompts once. `*.json` matches
one directory while `**/*.json` matches recursively; directory removal
requires `--recursive`.
- Standardized frequent command names and aliases across the CLI: `list`/`ls`,
`remove`/`rm`, and `move`/`mv`. `rename` remains a full descriptive synonym
for the top-level `move` operation.
- Added prebuilt Linux, macOS, and Windows release artifacts, Unix and
PowerShell installers, a Windows MSI, checksums, and build provenance.
- Added `--version` so installers and package managers can verify the installed
CLI without opening a vault.
- Restored the minimum supported Rust version to Rust 1.88.
- Renamed vault identities to profiles throughout the CLI. Profile commands,
output labels, completion, publishing, recovery backups, and file extensions
now consistently use `profile`; the former `identity` forms are not retained.
- Added commandline completion for Bash, Zsh, Fish, PowerShell, and Elvish.
- Added `completion generate`, `completion install`, and
`completion uninstall` to aid installing the completion tooling.
- Added context-aware completion for vault profiles, contacts, reusable
forms definitions, and unlocked archive variables, forms and paths.
- Added graceful fallback to static command completion when the vault or
archive metadata is unavailable.
- Added encrypted, resumable vault and archive migration commands. Normal
migrations upgrade directly to the latest format, require either an explicit
output or `--replace`, validate before replacement, and retain a versioned
backup when replacing the source.
- Added hidden advanced migration export, upgrade, import, and verify commands.
Historical native readers are obtained as exact-version migration exporters
from crates.io instead of being retained in the current CLI.
Exporters are spawned behind a versioned, length-prefixed secret protocol and
must report matching capabilities before execution.
- Direct migrations now generate a random zeroizing artifact key instead of
prompting for a migration password. The key is retained only in the
source-protected resumability journal. Archive migration now requires an
initialized, current-format vault so the new archive can be signed with the
current owner signing key. The hidden/manual artifact commands still
require an explicit migration passphrase, supplied by prompt, environment,
or the export stdin option.
- Archive migration now supplies the already-validated vault credential to the
historical exporter through secret IPC. The exporter tries all migrated
profile key generations before using the password-only archive fallback.
- Running session agents now report their protocol and implementation version.
A CLI upgrade automatically replaces an incompatible agent and clears its
old cache on the next agent operation.