Repository navigation
v1.16.0
·
465 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Changelog
- 3a39631 Add RFC for snapshot copy between repositories
- 6d99156 Add RFC for snapshot copy between repositories (#209)
- 98b77e2 Add TUI check action and health service
- f798a95 Add TUI check action and health service (#214)
- 54143b5 Add TUI profile backup history view
- 8fad8e5 Add TUI profile management modal
- 363f5dc Add first interactive TUI dashboard slice (#212)
- 427089f Add interactive TUI dashboard slice
- a52e0c7 Add nested TUI store modal for profiles
- 929819e Add richer TUI profile health summaries
- 1a7f58f Add safe TUI mouse profile selection
- 1e3e876 Clarify copy RFC CLI and dedup wording
- 58b822d Improve TUI activity panel and progress
- 89db0d8 Improve TUI activity panel and progress (#226)
- de25128 Improve TUI store secret configuration
- 4cf331a Merge remote-tracking branch 'origin/main' into perf/restore-parallel-fetch
- 224e8e2 Model TUI actions in dashboard state
- 1af5e3c Model TUI actions in dashboard state (#225)
- dbcae64 Refactor TUI profile modal state
- 3425155 Refactor TUI profile modal state (#228)
- db9974a Refresh AGENTS.md and add CLAUDE.md importer (#254)
- 628ba69 Render TUI actions as clickable buttons
- e540738 Strengthen TUI edge-case coverage
- 335a6df Strengthen TUI edge-case coverage (#229)
- 08a70e9 TUI: add nested store modal to the profile form (#234)
- 50fccc7 TUI: add per-profile backup history view (#236)
- a90c630 TUI: add profile management modal (#227)
- d0a3a75 TUI: add richer profile health summaries (#235)
- 8d1856b TUI: improve store secret configuration (#237)
- 3bbe750 TUI: reintroduce safe mouse profile selection (#230)
- 9de6a0a TUI: render selection actions as clickable buttons (#231)
- 269c9a3 Update RFC 0018 status to Implemented
- e131029 Update RFC 0018 status to Implemented (#314)
- e873b41 chore(deps): bump DavidAnson/markdownlint-cli2-action from 23 to 24
- dce8c46 chore(deps): bump DavidAnson/markdownlint-cli2-action from 23 to 24 (#247)
- 21de078 chore(deps): bump actions/checkout from 6 to 7
- ca1ba74 chore(deps): bump actions/checkout from 6 to 7 (#244)
- 1974deb chore(deps): bump actions/setup-go from 6 to 7
- cc631b9 chore(deps): bump actions/setup-go from 6 to 7 (#248)
- 04ee5a3 chore(deps): bump actions/upload-artifact from 4 to 7
- ad93e3a chore(deps): bump actions/upload-artifact from 4 to 7 (#207)
- 3ab25e7 chore(deps): bump codecov/codecov-action from 6 to 7
- 1a634d6 chore(deps): bump codecov/codecov-action from 6 to 7 (#242)
- 4714b9f chore(deps): bump golang.org/x/crypto from 0.49.0 to 0.52.0
- 9fb0729 chore(deps): bump golang.org/x/crypto from 0.49.0 to 0.52.0 (#246)
- ec3b81f chore(deps): bump golang.org/x/net from 0.54.0 to 0.55.0
- 9a798ae chore(deps): bump golang.org/x/net from 0.54.0 to 0.55.0 (#245)
- 3eb3651 chore(deps): bump the go-dependencies group across 1 directory with 17 updates
- c5bcc37 chore(deps): bump the go-dependencies group across 1 directory with 17 updates (#249)
- 69e96d4 chore(deps): bump the go-dependencies group across 1 directory with 9 updates
- 56bfac8 chore(deps): bump the go-dependencies group across 1 directory with 9 updates (#349)
- 6cd52bc chore(deps): bump the go-dependencies group with 6 updates
- cfb0a76 chore(deps): bump the go-dependencies group with 6 updates (#208)
- 33df2a1 chore(e2e): regenerate the v1.14.0 fixture with a neutral identity
- 4b63ee5 chore(e2e): regenerate the v1.14.0 fixture with a neutral identity (#306)
- 499f544 chore(engine): remove dead metaCache field from RestoreManager
- 354b418 chore(engine): remove dead metaCache field from RestoreManager (#336)
- 9583e14 chore: cleanup action summary
- c1e7965 chore: cleanup action summary (#205)
- 2540f43 chore: completion e2e tests
- 957432f chore: completion e2e tests (#204)
- 59e34c5 chore: fix e2e coverage
- e065588 chore: fix e2e coverage (#206)
- 52ba42a docs(cli): make env-vs-profile precedence explicit and guard doc drift
- 3b458fd docs(cli): make env-vs-profile precedence explicit and guard doc drift (#286)
- c5f08e4 docs(spec): correct the index/packs description
- 504829d feat(cli): add structured error reporting
- 78d21e8 feat(cli): add structured error reporting (#269)
- dac61e6 feat(cli): promote B2 credentials to flags, profiles, and secret refs
- 9579d8e feat(cli): promote B2 credentials to flags, profiles, and secret refs (#285)
- 320740b feat(store): implement RangeGetter for the S3, B2, and SFTP backends
- 9c17a77 feat(store): implement RangeGetter for the S3, B2, and SFTP backends (#307)
- 87482f6 feat(store): make packfiles self-describing so the catalog can heal (RFC 0018)
- d5f395f feat(store): make packfiles self-describing so the catalog can heal (RFC 0018) (#297)
- e58d0ba feat(store): shard the pack index so concurrent writers cannot erase each other
- 0dc71f2 feat(store): shard the pack index so concurrent writers cannot erase each other (#311)
- 7455e1f feat(tui): add Bubble Tea foundation with a parallel read-only renderer (RFC 0012)
- d8add5c feat(tui): add Bubble Tea foundation with a parallel read-only renderer (RFC 0012) (#344)
- a07657d feat(tui): async cancellable actions and concurrent store probes (RFC 0012)
- 6cabca1 feat(tui): async cancellable actions and concurrent store probes (RFC 0012) (#346)
- ec1032c feat(tui): bubbles/textinput profile forms in internal/tui/forms (RFC 0012)
- a33cc2e feat(tui): bubbles/textinput profile forms in internal/tui/forms (RFC 0012) (#351)
- 2c793bb feat(tui): guided secret-ref form, completing the forms port (RFC 0012)
- 6621640 feat(tui): guided secret-ref form, completing the forms port (RFC 0012) (#354)
- 7d350d4 feat(tui): restore mouse click support in the Bubble Tea TUI (RFC 0012)
- b9d41b3 feat(tui): restore mouse click support in the Bubble Tea TUI (RFC 0012) (#355)
- aa62b2c feat(tui): restyle the Bubble Tea dashboard with titled lipgloss panels (RFC 0012)
- 5d6ceb6 feat(tui): restyle the Bubble Tea dashboard with titled lipgloss panels (RFC 0012) (#352)
- 7c0c154 feat(tui): store form + nested store-from-profile flow (RFC 0012)
- fd197c4 feat(tui): store form and nested store-from-profile flow (RFC 0012) (#353)
- 9bfb4ef feat: bump the repository format and stamp it on write
- c28a5e3 feat: bump the repository format and stamp it on write (#308)
- 8f929f4 feat: establish and enforce the repository compatibility contract (#303)
- 626ca9c feat: stamp the repository format on upgrade, not only at creation
- 1cf33a1 fix(cli): preserve cleanup and report build metadata
- 97ff9f9 fix(cli): preserve cleanup and report build metadata (#268)
- 2a7ce39 fix(cli): remove duplicated fish global flags and stale section scaffold
- 5463ea7 fix(cli): stop exposing secret environment values in help output
- 2635e58 fix(cli): stop exposing secret environment values in help output (#279)
- c1add83 fix(engine): abort operations when the repo lock is lost
- 7412b87 fix(engine): abort operations when the repo lock is lost (#330)
- 729a0c4 fix(engine): abort prune when no snapshots are found but objects remain
- ee91925 fix(engine): abort prune when no snapshots are found but objects remain (#294)
- 16920fb fix(engine): flush packs before updating index/latest
- 8f0ec27 fix(engine): flush packs before updating index/latest (#334)
- 48228de fix(engine): keep crash injection out of production builds
- cd7ffa9 fix(keychain): join per-resolver errors instead of one generic message
- 947cb8c fix(keychain): join per-resolver errors instead of one generic message (#333)
- eb24176 fix(keychain): stop key add-recovery from silently invalidating a recovery key
- 3bae00c fix(keychain): stop key add-recovery from silently invalidating a recovery key (#318)
- efec26e fix(secretref): cache native secret resolutions to prompt once per process
- 94b070c fix(store): bound the pack footer before it sizes an allocation
- a0adfe8 fix(store): distinguish not-found from real Get failures
- 9ceb12b fix(store): distinguish not-found from real Get failures (#332)
- b3887b9 fix(store): frame the compressed encoding instead of sniffing magic bytes
- 2b35f75 fix(store): frame the compressed encoding instead of sniffing magic bytes (#329)
- 3d9d505 fix(store): scope SFTPStore.List to the prefix subdirectory
- 2b1d314 fix(store): scope SFTPStore.List to the prefix subdirectory (#331)
- bf132a1 fix(store): seal the pack catalog and packfile footers (#295)
- 98e0265 fix(store): seal the pack catalog and packfile footers (#302)
- 4c9b820 fix(store): stop treating an unreadable pack catalog as an empty one
- c3da147 fix(store): stop treating an unreadable pack catalog as an empty one (#293)
- f052944 fix: enforce the version gate on the library path, not just the CLI
- c335d71 fix: honour --dry-run in forget, and stop previews from stamping the format
- 5d552cc fix: honour --dry-run in forget, and stop previews from stamping the format (#313)
- d6072df fix: make TUI dashboard freshness test time-relative
- 6dc2656 fix: stop init --adopt-slots from downgrading the repository format
- 1cdf9fe fix: time-bomb TUI dashboard freshness test (#255)
- 5524bf5 fix: verify content hashes during restore
- ab5ebcf fix: verify content hashes during restore (#316)
- 90d6df2 perf(engine): fetch restore chunks and filemetas concurrently
- 1d69491 perf(engine): fetch restore chunks and filemetas concurrently (#335)
- 77204bc perf(engine): pool chunk buffers in the FastCDC pipeline
- 1c6c30d perf(engine): pool chunk buffers in the FastCDC pipeline (#347)
- f058600 refactor(cli): collapse newFlagSet and ownFlags into one registry field
- 823b3c2 refactor(cli): convert globalFlags to value fields
- 6f0b8e7 refactor(cli): convert globalFlags to value fields (#265)
- 7aafcd4 refactor(cli): derive help output from command and flag declarations
- dc954ea refactor(cli): derive help output from command and flag declarations (#282)
- b3e7a11 refactor(cli): describe flags declaratively and scope global flags per command
- 664613a refactor(cli): describe flags declaratively and scope global flags per command (#277)
- d41a18f refactor(cli): drive dispatch, usage, and completion from a command registry
- 1e65dc6 refactor(cli): drive dispatch, usage, and completion from a command registry (#273)
- 5e894a7 refactor(cli): generate global flag completion from specs for zsh and fish
- 83ed610 refactor(cli): generate per-command shell completion from flag specs
- 0cc10fb refactor(cli): generate per-command shell completion from flag specs (#278)
- 349a076 refactor(cli): generate shell completion from the command tree
- afb4cbf refactor(cli): generate shell completion from the command tree (#283)
- 0fdeed7 refactor(cli): make the command tree recursive and declare commands per file
- 607ee19 refactor(cli): make the command tree recursive and declare commands per file (#280)
- a6c942f refactor(cli): move presentation and command orchestration off runner
- d6946ed refactor(cli): move presentation and command orchestration off runner (#264)
- 647a76b refactor(cli): separate parsed CLI configuration from store and client construction
- b610b2a refactor(cli): separate parsed CLI configuration from store and client construction (#284)
- cb5c72a refactor(cli): thread signal-aware context through commands
- f4cc05c refactor(cli): thread signal-aware context through commands (#258)
- 491e73b refactor(cli): unify command input declarations
- 4d38f4a refactor(cli): unify command input declarations (#281)
- 0163f0f refactor(hamt): extract NodeStore and move routing policy to the engine
- b6db3ea refactor(hamt): extract NodeStore and move routing policy to the engine (#325)
- e1a49a3 refactor(hamt): mutate nodes in memory and persist once at commit
- 7430b8e refactor(hamt): mutate nodes in memory and persist once at commit (#327)
- 6279e88 refactor(hamt): verify node hashes on load and bound recursive descent
- 21bd450 refactor(hamt): verify node hashes on load and bound recursive descent (#328)
- 5b590d9 refactor(store): derive framing from a gate instead of a store handle
- 7ad208b refactor(store): give the pack index one seal path and one open path
- 4a7153f refactor: make command flag parsing testable
- dfc1f44 refactor: make command flag parsing testable (#267)
- 69ca7f7 rfc: adopt Bubble Tea for the TUI (RFC 0012)
- 45fb27a rfc: adopt Bubble Tea for the TUI (RFC 0012) (#342)
- f195b90 rfc: self-describing packfiles and a rebuildable pack index (RFC 0018)
- 05fc3ee rfc: self-describing packfiles and a rebuildable pack index (RFC 0018) (#296)
- 2625e72 test(cli): add golden and end-to-end conventions
- 0ff8c93 test(cli): add golden and end-to-end conventions (#270)
- a91ddc1 test(crypto): make the bad-checksum mnemonic test deterministic
- 5b4483e test(crypto): make the bad-checksum mnemonic test deterministic (#310)
- d1c71b2 test(e2e): assert tui help from its declaration, not a hand-written banner
- 1918476 test(e2e): isolate completion runtime harness from the ambient PATH
- e59cfc1 test(e2e): isolate completion runtime harness from the ambient PATH (#326)
- a8a7253 test(e2e): pin backward compatibility against a real v1.14.0 repository
- f038d75 test(engine): add crash-consistency e2e coverage for backup
- 43929ea test(engine): add crash-consistency e2e coverage for backup (#343)
- 73be6fb test(sftp): demultiplex container exec output
- 4240ac3 test(store): add a shared FaultStore for fault-injection tests
- ce3d079 test(store): add a shared FaultStore for fault-injection tests (#337)
- 9724733 test(store): add httptest coverage for B2Store
- 0408547 test(store): add httptest coverage for B2Store (#348)
- 4a28c5e test(store): correct the claim that sealing costs reproducible pack names
- 03dcd5b test(store): cover mixed footer eras and keyless rebuild
- eaa6760 test(store): cover the full decorator chain and PackStore.Exists
- 8ea517e test(store): cover the full decorator chain and PackStore.Exists (#345)
- 81f824f test(store): pin the sealing layering, cost, and migration path