Skip to content

v1.16.0

Choose a tag to compare

@github-actions github-actions released this 24 Jul 14:43
· 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