github cushycush/store v2.0.0
store 2.0 - Interactive TUI

latest releases: v2.5.0, v2.4.0, v2.3.0...
6 months ago

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 for cd $(store path nvim).
  • store rename <old> <new> — move the store directory and update config in one shot.
  • store edit — open .store/config.yaml in $EDITOR.

CLI ergonomics

  • Positional target paths on store add and the target subcommands: store add nvim ~/.config/nvim now works alongside the -t flag form.
  • Additive modify flags on store modify and store target modify: --add-file, --remove-file, --add-pattern, --remove-pattern, plus --clear-files / --clear-patterns. Compose as clear → replace → add → remove.
  • --dry-run across every mutating command — apply, import, adopt, modify, remove, and the target subcommands.
  • store apply --dry-run is equivalent to store diff.
  • store remove --all [--yes] replaces store removeall with a confirmation step by default.
  • Cleaner error output. Cobra's full usage dump after every error is gone; errors stand on their own. --help still 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/template engine (1.3) — {{ env "VAR" }}, {{ .Hostname }}, {{ .OS }}, {{ .Arch }}, {{ .Distro }}, {{ .Shell }}, and user-defined {{ .Vars.key }} in addition to {{ secret "name" }}. Paired with a top-level vars: 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 status now reports per-status counts.
  • Cross-platform Windows support (1.2) — store doctor detects missing symlink permissions, and hook dispatch is per-platform (PowerShell / cmd.exe on 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-bin

Prebuilt 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.

Don't miss a new store release

NewReleases is sending notifications on new releases.