store 2.0
The second major release. Headline: a new interactive TUI, four new CLI verbs, positional target arguments, and a full documentation rewrite. One small breaking change in the CLI surface.
Breaking
Bare store no longer reconciles. It prints help now. Use store apply to reconcile.
This is the only breaking change. Scripts, cron entries, and shell aliases that relied on bare store need a one-word edit. MIGRATING.md has the full picture and one-line fixes for common setups.
store removeall is deprecated in favour of store remove --all. The old name still works and prints a deprecation warning.
What's new in 2.0
Interactive TUI
store tui opens a keyboard-driven dashboard — a single-column layout with your store ledger on top, the selected store's detail pane below, and a recent activity log at the bottom. Every CLI verb is reachable via a : command palette with fuzzy matching. Destructive operations require typed confirmation. Vim-safe keymap, austere chrome, one signature accent.
Four new CLI verbs
store list— one-line summary of every configured store, no filesystem access. For scripting and quick glances.store path <name>— print the absolute repo path of a store. Designed forcd $(store path nvim).store rename <old> <new>— move the store directory and update config in one shot.store edit— open.store/config.yamlin$EDITOR.
CLI ergonomics
- Positional target paths on
store addand thetargetsubcommands:store add nvim ~/.config/nvimnow works alongside the-tflag form. - Additive modify flags on
store modifyandstore target modify:--add-file,--remove-file,--add-pattern,--remove-pattern, plus--clear-files/--clear-patterns. Compose as clear → replace → add → remove. --dry-runacross every mutating command —apply,import,adopt,modify,remove, and thetargetsubcommands.store apply --dry-runis equivalent tostore diff.store remove --all [--yes]replacesstore removeallwith a confirmation step by default.- Cleaner error output. Cobra's full usage dump after every error is gone; errors stand on their own.
--helpstill prints the usage.
Docs
- README rewritten: new Interactive TUI section with an ASCII mock, comparisons vs chezmoi/dotbot/yadm alongside Stow, Windows install and symlink-permissions notes, expanded Troubleshooting, and a jump-to sub-TOC over every verb.
- New MIGRATING.md for 1.x users.
If you skipped 1.x versions
The road from 1.0 to 2.0 also brought:
store adopt(1.3) — move an existing file or directory into the repo and symlink back. The preferred on-ramp for new stores.- Go
text/templateengine (1.3) —{{ env "VAR" }},{{ .Hostname }},{{ .OS }},{{ .Arch }},{{ .Distro }},{{ .Shell }}, and user-defined{{ .Vars.key }}in addition to{{ secret "name" }}. Paired with a top-levelvars:map in config. [drift]status (1.3) — rendered files whose on-disk content has diverged from the source are flagged explicitly.- Status summary line (1.3) —
store statusnow reports per-status counts. - Cross-platform Windows support (1.2) —
store doctordetects missing symlink permissions, and hook dispatch is per-platform (PowerShell /cmd.exeon Windows, shebang on Unix). FORCE_COLOR(1.3) for colored output in non-TTY contexts.
Install
# go
go install github.com/cushycush/store/cmd/store@latest
# arch (AUR)
yay -S store-binPrebuilt binaries for Linux, macOS, and Windows are attached to this release.
Full changelog
Everything since 1.0 is in CHANGELOG.md. Diff against the previous release: v1.3.1...v2.0.0.