Releases.
Semantic versioning. Releases land on GitHub first, then Homebrew and crates.io within a few hours. For the source of truth, see CHANGELOG.md.
Profile inheritance lands
Profiles can now extend a parent profile. Changes to the parent flow down to every child; children only override what's different. Cycle detection prevents loops, and parent profiles are locked while children depend on them. The manifest auto-migrates from v1 to v2.
Added
- Profile inheritance with child-wins override semantics, multi-level chaining, cycle detection, and rename propagation
- Manage Profiles create popup: Inherits From field with live parent selection
- Profile details show resolved file counts with source annotations (own / inherited / common)
dotstate listgroups files by source and prints the inheritance chain;dotstate activateresolves the full chain
Changed
- Inherits From and Copy From are mutually exclusive — "live link to parent profile" vs "one-time file copy"
- Docs: README, website, and CONTRIBUTING.md updated with inheritance documentation
Fixed
- Atomic profile switching with rollback — if activation fails, the previous profile's symlinks are restored
- Deduplicated symlink-manager paths, eliminating parallel code branches
NavigateWithMessagepayloads now surface in a dialog instead of being dropped- Backup session timestamps use a filesystem-safe format
- Backup/symlink tests made sandbox-safe with test-local paths
Mouse support and six new themes
Comprehensive mouse interactions across every screen — click to select, focus panes, scroll lists and previews, and interact with popup dialogs. Six new themes round out the palette.
Added
- Mouse across all screens: Manage Files, Profiles, Packages, Sync, and popup dialogs
- Six new themes: Gruvbox Dark/Light, Catppuccin Mocha/Latte, Tokyo Night Dark/Light
Fixed
- Focus-based pane switching on the Sync screen (Tab key + mouse-targeted scrolling)
- Preview panes and dialogs clamp scroll offset to prevent infinite scrolling past content
Changed
- Settings: renamed "Embed Credentials in URL" to "Token in Remote URL"; hidden in local repo mode
- Simplified theme cycling logic
Package management
Track CLI tools per profile and install what's missing on a new machine with one command. Support for Homebrew, Cargo, npm, pip, and custom install scripts.
Added
dotstate packagessubcommand family- Per-profile package lists, stored alongside profile files
- Custom-script packages with user-defined install and check commands
- Solarized themes
Changed
- Configuration moved to
~/.config/dotstate/config.toml - Repository storage moved to
~/.local/share/dotstate
Initial release
The first public version. dotstate can manage dotfiles across machines using a git repository of your choice, with automatic backups and safe symlink management.
Added
- TUI built with Ratatui — keyboard navigation
- CLI for every TUI action, for automation
- GitHub-managed and bring-your-own repository modes
- Profile system — switch sets of dotfiles in a keystroke
- Common files — shared across every profile
- Automatic backups before every file operation
- Three built-in themes: Light, Dark, Midnight
- Three keymap presets: Standard, Vim, Emacs