Skip to content

[Unreleased] - 2026-03-14

Features

  • (install) Validate age key can decrypt before chezmoi apply; fall back to --exclude=encrypted on failure
  • (install) Validate symlink source exists before creating symlink in ensure_symlink_with_backup
  • (backup) Exclude SSH private keys by default; add --include-ssh-keys flag to opt in
  • (doctor) Add 5-second timeout to DNS resolution check to prevent hanging
  • (rotate-secrets) Use temp file with restricted permissions instead of shell variable for decrypted secrets
  • (update) Warn users when optional update steps fail in the summary
  • (tests) Add test suites for secret rotation, release workflow, distro detection, and WSL DNS fix
  • (shell) Shared AI agent detection file (dot_config/shell/ai-agent-detect.sh) replaces duplicate inline functions in bash and zsh, adding process ancestry fallback and 7 new agent env vars
  • (atuin) Convert atuin config to chezmoi template; add host_name for consistent cross-device identity and cwd_filter to exclude commands from agent temp directories
  • (ci) Enforce public mise task contract via scripts/ci/check-public-task-contract
  • (ci) Add bash/zsh shell matrix smoke checks for install/doctor/update
  • (tasks) Add stable top-level task wrappers (install, update, doctor, lint, test, etc.)
  • (doctor) Add --fix mode for safe local repairs (task execute bits, agent symlinks, safe directories)
  • (update) Add --auto-stash, --allow-dirty, --wait-for-lock, --fast, --full, --offline, --dry-run, and --skip-verify modes
  • (update) Add step summary/timing output and post-update smoke verification
  • (verify) Add dots verify command and verify-dotfiles task for post-apply integrity checking (core files, config dirs, symlink targets, permissions)
  • (doctor) Validate symlink targets via readlink -f, not just symlink existence
  • (tests) Add lifecycle.bats (23 end-to-end lifecycle tests) and error_recovery.bats (18 resilience tests)
  • (tests) Rewrite git_hooks.bats with proper git identity and pre-push WIP commit tests
  • (ux) Add dots status dashboard as default bare dots command — shows repo, chezmoi, tools, and health at a glance with actionable next steps
  • (doctor) Write summary cache to ~/.cache/dots/last-doctor for dashboard health display

Documentation

  • Update ADR-014 to document the narrower AI-session detection strategy and Bash Atuin hook bridge
  • Align GitHub lint workflow with the repository lint toolchain without triggering full-tool installs in CI
  • Archive completed ADR-013 execution plan to docs/roadmaps/archive/09-shell-support-compliance-plan.md
  • Update roadmap status in docs/meta/ROADMAP.md for completed shell-compliance and CI hardening
  • Normalize docs to public task names (mise run doctor, mise run perf, etc.)
  • Remove non-human co-author example from DNS-FIX-SUMMARY.md
  • Refresh bootstrap/install docs for system-login-shell detection and rerun shell-prompt behavior
  • Update CLI/architecture references for dots bootstrap and current bootstrap flow
  • Document task execute-bit drift repair workflow and dots update/doctor reliability guardrails
  • Document new dots update safety/mode flags, lock behavior, and doctor --fix repairs
  • Fix dots CLI/README/install docs parity for release/changelog/check commands and bootstrap/server quick-start wording
  • Update CLI.md with missing commands (sync, pre-commit, test-coverage, welcome, uninstall)
  • Add server profiles section to INSTALL.md
  • Document kcov apt exception in CI workflow
  • Fix stale mise.lock reference in CONTRIBUTING.md
  • Consolidate duplicate server configs (delete .config/mise/server.toml)
  • Remove duplicate ncdu entry from .chezmoidata.yaml
  • Fix devcontainer CI cache key (remove non-existent mise.lock)
  • Add *.sync-conflict-* to .gitignore
  • Add Dashboard section to CLI.md documenting dots status / dots st / dots s
  • Document install rerun behavior for partial TPM / Antidote recovery and rootless install-test coverage

Bug Fixes

  • (bash/atuin) Restore Atuin recording in baseline Bash by dispatching preexec/precmd hooks and stop disabling Atuin for normal interactive shells solely due to agent ancestry
  • (bootstrap) Make scripts/bootstrap executable in git and remove duplicate bootstrap install pass
  • (install) Repair partial TPM / Antidote checkouts on rerun instead of skipping invalid directories
  • (install) Prompt before changing login shell and skip prompt when login shell is already zsh
  • (install) Detect system login shell from account records instead of $SHELL so reruns keep prompting until zsh is actually the default shell
  • (packages) Stop requesting git-extras in Arch package installs
  • (tasks) Restore executable mode for shell-based top-level mise-tasks/* shims
  • (tasks) Harden public task shims and dots update against execute-bit drift across devices
  • (update) Skip sudo-prompted system package upgrades by default unless --system-updates is requested
  • (update) Skip package-manager gh upgrades when gh is already managed by mise
  • (update) Add retries/timeouts for network-prone update steps and lock concurrent update runs
  • (ux) Restore dots changelog, implement dots release, map dots check to doctor, and add bootstrap --help / invalid-option guidance
  • (ssh) Fix detect_interactive called before colors.sh is sourced
  • (secrets) Add pipefail to prevent pipe masking age-keygen failures
  • (install) Guard eval of mise activation, add offline detection, and export DOTFILES_SERVER for chezmoi templates
  • (backup) Use temp file with tar -T to prevent word-splitting on paths with spaces
  • (update) Change lock file descriptor from 9 to 200 to avoid shell builtin collisions
  • (bootstrap) Add network connectivity check before first download and use session-only mise activation
  • (zshrc) Add 10-second timeout to antidote dynamic fallback to prevent shell startup hangs
  • (hooks) Make git hook files executable in repo for test and deploy consistency
  • (tests) Remove passwordless-sudo dependency from install/server deployment idempotency checks by using rootless mocked installer runs

[1.9.0] - 2026-02-08

Features

  • Setup powerlevel10k rainbow theme and nerf font automation
  • (install) Automated ssh setup and remote switching
  • (ssh) Enhance setup with key gen, host verification, and config
  • (wsl) Add clipboard, open alias, and git credential manager support
  • Standard linux support & wsl separation
  • Enforce clean working dir for updates and set git identity
  • Modernize dotfiles with mise, ci, and devcontainers
  • Globalize mise config
  • Improve CI/CD and Devcontainer configurations
  • Cross-platform support with mise, tmux-yank, Brewfile
  • Add vnv alias for smart python venv activation
  • Add mise tasks for backup, prune, shell, and enhanced doctor
  • Implement Service Packs 2 & 3 (Polish & Utilities)
  • Feat: Add VSCode/Antigravity workflow improvements (Service Pack 5)
  • Add c/c. aliases to open VSCode
  • Add browse alias for WSL browser integration (requires wslu)
  • Add stash/pop/nuke for Git safety net (AI change management)
  • Add f/ff/fz for quick code search (debugging AI mistakes)
  • Add aienv to check configured API keys
  • Add aibrief to generate AGENTS.md context files
  • Add gdr/gdp/greview for enhanced diff review
  • Remove aider/asciinema (not needed for IDE-based AI coding)
  • Update README.md and docs/TOOLS.md
  • Implement testing framework (BATS, ShellCheck, CI)
  • Complete test suite (functional, features, utilities)
  • Add comprehensive automated testing suite (Phase 1 & 2)
  • Add Reddit-sourced improvements (gitconfig, debug aliases, onefetch)
  • Feat: add awesome list tools (hyperfine, uv, glow, git-cliff, curlie)
  • Added tools to mise.toml
  • Added aliases and smart wrappers (md -> glow/mkdir)
  • Updated documentation (TOOLS.md, README.md, CHANGELOG.md)
  • Added tests/awesome_tools.bats
  • Feat(nvim): add which-key.nvim and expand telescope keymaps
  • Add which-key.nvim for keybinding discoverability (folke)
  • New telescope keymaps: fr (recent files), fc (commands)
  • Document native Neovim 0.10+ gc commenting operator
  • Update nvim README with full plugin list and keymaps table
  • Add to CHANGELOG under Unreleased section
  • Feat(nvim): add essential editing plugins and finalize zsh/tmux tweaks
  • Neovim: Add gitsigns.nvim, nvim-autopairs, nvim-surround
  • Tmux: Add tmux-window-name and tmux-better-mouse-mode
  • Zsh: Add zsh-vi-mode, zsh-completions, zsh-you-should-use
  • Docs: Update CHANGELOG, TOOLS, and nvim/README
  • (tools) Add navi, yq, and tokei (cloc)
  • (windows) Overhaul provisioning with high-ROI tools and PowerToys plugins
  • Feat: Implement secret knowledge tools and Windows provisioning updates
  • Added ncdu, lnav, glances, gron to managed tools.
  • Moved docs/WINDOWS_TOOLS_REVIEW.md to docs/archive/.
  • Updated Windows provisioning scripts and packages.
  • Added new tests for docker, git extensions, and hooks.
  • Updated documentation and changelog.
  • (mise) Add non-interactive mode detection to install script
  • Implement comprehensive audit fixes and improvements
  • Implement comprehensive audit fixes and refinements
  • (test) Comprehensive testing infrastructure upgrade
  • Smart cached welcome message with fast startup
  • Feat: add Bitwarden on-demand secrets integration
  • bw-unlock: Unlock Bitwarden for terminal session
  • bw-get: Fetch secret by item name (auto-unlocks)
  • bw-env: Run command with secret injected (not in history)
  • Document best practices in docs/SECRETS.md
  • Unified lolcat coloring for welcome message
  • (docs) Upgrade to MkDocs Material with Mermaid, SwaggerUI, and CI validation
  • Finalize quality roadmap v1.0.0 and documentation
  • (wsl) Add .wslconfig and /etc/wsl.conf deployment
  • Add shell enhancements and AI agent isolation
  • Add dotfiles-only deployment mode for servers
  • Comprehensive audit fixes and test coverage improvements
  • Add unified gist management command
  • Add unified dots command for dotfiles management
  • [breaking] Unified command interface (v1.4.0)
  • Server deployment readiness (v1.5.0)
  • Production hardening for server deployments (v1.6.0)
  • (doctor) Validate mise tasks symlink
  • (doctor) Add PATH validation and improve git identity messages
  • Improve CI visibility and git workflow
  • Add issue templates, CODEOWNERS, and enhance doctor
  • Implement v1.8.0 version pinning strategy (Option B)
  • Implement 5 repository quality improvements
  • Implement 5 medium-small quality improvements
  • Implement 5 medium-sized repository improvements (v1.9.0)
  • Add cls alias and exclude symlink from docs link checker
  • Complete v1.9.0 roadmap with security automation
  • Add dsp alias for Claude Code
  • Add ccdsp function for Claude Code workflow
  • Complete v2.0 improvements with performance optimization
  • Optimize server deployment and ansible integration

Bug Fixes

  • (zsh) Initialize atuin on first prompt so history/autocomplete works before first executed command
  • (install) Ensure fonts are copied to windows even if existing in wsl
  • (install) Fix syntax error and add powershell fallback for font install
  • (install) Ensure ssh sockets directory exists
  • (zsh) Add HIST_FCNTL_LOCK to prevent history file corruption
  • Shell config and aliases
  • (zshrc) Ensure ~/.local/bin is in PATH before mise activation
  • (install) Globalize mise tasks
  • (config) Hardcode DOTFILES_DIR to avoid symlink ambiguity
  • Run update script in dotfiles directory
  • Prevent symlink loop in mise tasks setup
  • Remove stale reference to deleted dot_tmux.wsl.conf
  • Bootstrap now supports zsh and handles missing age key
  • (ci) Use conditional DOTFILES_DIR in mise.toml and add debug config
  • (ci) Make task scripts executable and include user updates
  • (install) Skip chezmoi init if config exists to avoid prompts
  • (pkg) Move fastfetch to mise and cleanup redundant packages
  • (test) Make parallel execution conditional on GNU parallel presence
  • (test) Resolve test hangs, improve pre-commit config
  • (test) All tests validated and passing
  • Use command curl to bypass curlie alias in zshrc
  • Remove bats from pre-commit, run only in CI
  • Weather location accuracy and display formatting
  • (welcome) Silence job control output for async quote fetch
  • Fix: re-encrypt secrets with current key and add decryption validation
  • Re-encrypted encrypted_dot_secrets.age with current age key
  • Added decryption verification to mise run doctor
  • Added decryption test to tests/secrets.bats
  • Improve bw-unlock with login detection and helpful suggestions
  • Rename status to bw_status (zsh reserved variable)
  • Improve welcome display - show city only, lolcat without emoji
  • Preserve spacing in weather display when stripping location
  • Move encryption key to top-level in chezmoi config to silence warning
  • Add retry logic to weather fetch for unreliable API
  • (ci) Fix linux/macos/windows test failures
  • (ci) Fix interactive prompt and dependency issues
  • (ci) Fix toml syntax and windows nuget issue
  • (ci) Fix windows tests and chezmoi template syntax
  • (test) Component restore Describe block in provision tests
  • (ci) Fix windows profile tests by running config provision
  • (ci) Run chezmoi init in macos tests
  • (ci) Fix chezmoi template parsing
  • (ci) Skip encrypted files without age key
  • (ci) Make lint compatible with zsh
  • (ci) Mark all mise tasks executable
  • (ci) Make git hooks executable
  • (ci) Make tests respect DOTFILES_DIR
  • (ci) Make devcontainer setup executable
  • (ci) Authenticate mise in container-test
  • (ci) Create venv for uv in docs workflow
  • (docs) Update broken link and exclude venv from validation
  • (docs) Resolve broken links and ignore flaky urls
  • (ci) Make validate-links executable
  • (ci) Broaden ignore patterns for link check
  • (ci) Use ubuntu-22.04 for kcov and disable ttyd
  • (ci) Remove mise.lock to fix macos ttyd issue
  • (ci) Disable vhs to avoid macos issues
  • (ci) Disable dust, btop, navi for macos arm64 compatibility
  • (ci) Bypass kcov and run standard tests on ubuntu-22.04
  • (ci) Pragmatic simplification - remove test-macos, remove kcov
  • (tests) Skip navi test when not installed
  • (ci) Remove set -e from test task to fix false failures
  • (ci) Invoke bats directly to bypass mise wrapper issue
  • (ci) Use mise exec for bats to set PATH correctly
  • (ci) Make test step advisory with continue-on-error
  • (ci) Make doctor step advisory
  • (wsl) Robust windows user profile detection
  • (deps) Enable navi in mise.toml
  • (welcome) Enable lolcat by default and fix flag usage
  • Format mise.toml to satisfy taplo linter
  • Resolve autosuggestion ghost text and AI history isolation
  • Use plugin's clear function for autosuggestions
  • Resolve autosuggestion ghost text and AI history isolation
  • Comprehensive audit fixes and test coverage improvements
  • Make mise-tasks executable in git
  • Make btop and dust optional in doctor check
  • Remove overly strict mkdocs build mode
  • Remove --strict from CI mkdocs build
  • Correct ADR link in CHANGELOG
  • Server deployment readiness audit
  • Doctor script and CI server deployment test
  • Exclude encrypted files in CI server deployment test
  • Move SERVER_MODE validation to build job
  • Correct broken documentation links
  • Resolve CI failures in docs jobs
  • Correct link paths in docs/CONTRIBUTING.md
  • Switch tealdeer from github to cargo backend
  • Add docs/ prefix to links in root CONTRIBUTING.md
  • Correct link paths in docs/CONTRIBUTING.md
  • Exclude symlinks from link validation
  • Sync tealdeer backend to cargo in mise-server.toml
  • Add mise-server.toml to Renovate fileMatch
  • Symlink SECURITY.md to docs/ for MkDocs navigation
  • Correct links in SECURITY.md for symlink compatibility
  • Restore docs/ prefix in SECURITY.md link
  • Exclude SECURITY.md symlink from CI link checker
  • Resolve alias conflicts with forgit lazy-loaded functions
  • Restore dots command functionality by fixing task paths and permissions
  • Correct changelog path in release script

Refactor

  • (ssh) Move setup to separate script and remove remote switch
  • Migrate scripts to mise tasks
  • Consolidate welcome message logic into welcome.zsh
  • Aggressive repo cleanup and reorganization

Documentation

  • Update readme with ssh setup details
  • Add WSL optimizations section
  • Update README with cross-platform features and support matrix
  • Implement comprehensive documentation structure and policy
  • Enforce professional emoji usage and shell ergonomics
  • Docs: update CONTRIBUTING and TROUBLESHOOTING for chezmoi structure
  • Update TROUBLESHOOTING: replace symlinks section with chezmoi apply
  • Update TROUBLESHOOTING: fix secrets path, add encrypted option
  • Update CONTRIBUTING: fix directory structure for chezmoi
  • Update CONTRIBUTING: fix dot_ prefix table for repo root
  • Update CONTRIBUTING: update lint commands to use shellcheck
  • Clarify wsl --shutdown runs from Windows PowerShell
  • Improve clarity throughout for new users
  • Docs: add concise context to tools and troubleshooting
  • README: clarify atuin, age, and smart aliases
  • TOOLS: explain tool philosophy (modern replacements)
  • TROUBLESHOOTING: add tip to run doctor first
  • Update documentation and refine mise/bootstrap scripts
  • Polish tools reference formatting
  • Add windows tools and plugins reference
  • Add agent commit workflow for pre-commit hook
  • Update testing guides with pre-commit strategy
  • Document smart welcome script and caching features
  • Add welcome script documentation and fix pre-commit task
  • Deduplicate welcome tool entry
  • Correct welcome script documentation to match actual implementation
  • Correct welcome tool description (live vs cached)
  • Doc fixes
  • Add secrets management best practices
  • Refine secrets template with safety guidance
  • Finalize roadmap and add renovate enablement guide
  • Archive completed roadmap
  • Complete missing roadmap items (Renovate policy and Link Check plugin)
  • Add Renovate guide to documentation nav
  • Fix absolute file:// paths in documentation
  • Use proper relative paths for internal links
  • Fix TESTING.md line anchor link
  • Remove unsupported line anchor from markdown link
  • Update documentation for unified command interfaces
  • Document CI fast suite philosophy
  • Update AGENTS.md header to match filename
  • Document shellcheck exclude pattern
  • Add security audit findings to roadmap with implementation plans
  • Complete v1.7.0 Batch 1 security documentation
  • Complete v1.7.0 Batch 3 supply chain security
  • Enhance documentation and development infrastructure
  • Clarify GitHub Actions pinning strategy
  • Update ROADMAP.md to reflect v1.9.0 partial completion
  • Update CHANGELOG for repository improvements
  • Update changelog with recent improvements
  • Update performance documentation and add tests
  • Finalize structure, fix broken links, and resolve linting issues
  • Fix remaining broken links in README and SECURITY policies
  • Remove extraneous file remnants
  • Enhance documentation quality and coverage
  • Complete v1.9.0 contribution workflow and roadmap updates

Performance

  • (ci) Add Python dependency caching to docs-build
  • Phase 2 - eliminate mise hook bottleneck (save 126ms)

Miscellaneous Tasks

  • Remove legacy ssh bridge and add wsl performance docs
  • Cleanup zshrc and add tmux clipboard support
  • Migrate atuin to mise, add node corepack postinstall
  • Remove duplicative apt packages now managed by mise
  • Fix missing tasks by adding mise trust and conditional DOTFILES_DIR
  • Implementation finishing touches, config updates, and expanded test suite
  • Remove unused fastfetch (replaced by custom welcome)
  • Ignore syncthing files
  • Update global gitignore
  • De-scope container-test; add devcontainer smoke
  • Fix devcontainer smoke locked-mode
  • Cleanup CI artifacts and docs
  • Add pnpm and bun to mise.toml
  • Maintenance cleanup, add ADR-001, and update agent docs
  • Release v1.1.0 and maintenance
  • Standardize roadmap archive naming
  • Maintenance, docs, and test updates
  • Update wsl configs
  • Update gitignore and changelog
  • Run fast test suite only for quick feedback
  • Improve automation and validation
  • (renovate) Add automerge for GitHub Actions patches
  • Enhance .editorconfig with comprehensive rules
  • Complete v1.7.0 Batch 2 security hardening
  • Remove CLAUDE.md symlink
  • Remove AI attribution from release script

Revert

  • Revert: remove patronizing documentation changes Restore concise style throughout. Keep WSL PowerShell clarification.
  • Remove autosuggestion ghost text fix

Refactor

  • Secure secrets, cleanup aliases, robust install script

Install

  • Skip doctor in CI/non-interactive

Nvim

  • Add suda.vim and :w!! rescue

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

Added

  • Clipboard Platform Helper: Added unified ~/.local/bin/clipboard helper (copy/paste/backend) used by shell aliases and tmux integrations.
  • ADR-012: Documented tmux UX and clipboard integration strategy.
  • Roadmap Process: Added docs/roadmaps/roadmap-process.md to standardize active/archived roadmap handling.

  • Claude Code Convenience Aliases: Added workflow shortcuts for Claude Code CLI

  • dsp - Quick alias for claude --dangerously-skip-permissions
  • ccdsp - Complete workflow: clear, update, resume with Chrome and skip permissions

  • Stale Issue Automation: GitHub Actions workflow for automated issue lifecycle management

  • Issues: 90-day inactivity timeout, 14-day close warning
  • PRs: 60-day inactivity timeout, 7-day close warning
  • Exempts: pinned, security, enhancement, dependencies labels

  • Dependency Security Auditing: Pre-merge security checks in CI

  • Gitleaks secret scanning on all PRs via pre-commit
  • Blocks merge if security issues detected
  • Integrated with existing CI pipeline

Fixed

  • CI Stability and Signal Quality:
  • Switched CI workflows to direct script execution for lint/doctor steps to avoid runner-side task-resolution failures.
  • Removed redundant markdown-link-check step from primary CI docs job to reduce flake and runtime on free tier.
  • Updated MkDocs CI checks to keep docs validation coverage via build + lychee.

  • Windows Provisioning Path Consistency:

  • Updated Windows Pester tests to validate scripts and package manifest in mise-tasks/setup/provision/windows.
  • Corrected bootstrap/install script paths and Windows profile source resolution after task-path migration.
  • Updated active docs to reference current Windows provisioning paths.

  • Tmux UX Consistency:

  • Added explicit intuitive copy/paste keybindings (Prefix + p/P, copy-mode Enter, mouse copy).
  • Removed keybinding conflict by moving synchronize-panes toggle to Prefix + Y.
  • Hardened tmux status git segment when gitmux is unavailable.

  • Repository Improvements: Fixed 5 critical repository issues

  • Synced tealdeer backend to cargo in mise-server.toml to match main config
  • Added mise-server.toml to Renovate fileMatch for automatic dependency updates
  • Created docs/SECURITY.md symlink for MkDocs navigation
  • Removed AI attribution from release script and commit history

  • Server Deployment Readiness: Fixed issues blocking server deployment

  • Made 11 mise tasks executable (backup, doctor, install, update, etc.)
  • Added non-interactive mode guard to bootstrap script (skips confirmation when piped or in CI)
  • Fixed shellcheck SC2314 errors in tests (BATS ! pattern)
  • Removed unused variable in zshrc.bats (shellcheck SC2034)

  • Install/Bootstrap Cleanup Hardening: Fixed leftover home artifacts and partial-state leaks

  • Added rollback-on-failure to mise-tasks/setup/install (plugin clones and config link replacements)
  • Switched plugin clone/setup flows to atomic temp-directory moves
  • Added bootstrap clone cleanup trap for failed initial repo clones
  • Hardened setup/secrets temp-key cleanup and atomic key writes
  • Expanded .chezmoiignore to prevent non-dot repo artifacts from being managed into $HOME

Documentation

  • Roadmap Hygiene:
  • Archived and finalized the v1.8.0 roadmap in docs/roadmaps/archive/08-v1.8.0-server-deployment.md.
  • Refreshed docs/meta/ROADMAP.md with current and next work items.
  • Added attribution policy notes in AGENTS.md and contributor guidance.

  • GitHub Actions Pinning Strategy: Documented the rationale for different pinning strategies

  • First-party actions (actions/*) use major version tags (@v4, @v5)
  • Third-party actions use exact versions (@2.0.0) for supply chain security
  • Renovate manages automatic updates via dependency dashboard

  • ROADMAP: Updated to reflect accurate completion status

  • Changed v1.9.0 status from "Complete" to "In Progress"
  • Moved 5 uncompleted items to Future Considerations section

Changed

  • Doctor Diagnostics: Added clipboard integration health checks (helper presence + backend detection).
  • Install Workflow: Added best-effort tmux plugin auto-install during mise run install (non-server mode).
  • Tmux Session UX: Added tm, tml, tms, and tmk helpers for session create/list/switch/kill workflows.

  • README: Clarified installation instructions

  • Updated bootstrap note to mention non-interactive mode support
  • Added chezmoi prerequisite with install command for server deployment

[1.4.0] - 2026-01-31

Changed

  • BREAKING: Unified Command Interface: Consolidated all dotfiles operations under single dots command
  • Core Operations: dots install, dots update, dots doctor, dots sync, dots backup
  • Chezmoi Management: dots cz apply|diff|edit|status|reinit (with short aliases: dots cz a|d|e|s|r)
  • Utilities: dots log for changelog viewing
  • Shell Customization: dots welcome for weather/quotes management
  • Help System: dots help shows all commands with descriptions
  • Migration Guide: See ADR 006 for details

  • Welcome Message: Changed from opt-out to opt-in (disabled by default)

  • Enable with dots welcome toggle or ENABLE_WELCOME=1
  • Faster shell startup by default (<100ms)
  • Previous behavior: Enabled by default with ~/.cache/welcome/.disabled flag
  • New behavior: Disabled by default with ~/.cache/welcome/.enabled flag

Removed

  • Legacy Commands (19 total):
  • Removed deprecated dot-* aliases: dot-install, dot-update, dot-sync, dot-doctor, dot-check, dot-uninstall, dot-backup, dot-prune, dot-ssh, dot-shell
  • Removed standalone cz* aliases: cz, cza, czd, cze, czu, czs, czr
  • Removed dotlog alias (use dots log)
  • Removed dothelp function (use dots help)
  • Removed welcome-toggle and welcome-status commands (use dots welcome toggle|status)

Added

  • ADR Documentation: Created Architecture Decision Record for unified interface (ADR 006)
  • Short Aliases: Power user shortcuts for common operations
  • dots cz a → apply, dots cz d → diff, dots cz s → status
  • dots w → welcome, dots w t → toggle, dots w s → status
  • dots i → install, dots up → update, dots dr → doctor

Fixed

  • Updated all documentation to reference new unified commands
  • docs/CHEATSHEET.md - Updated command reference
  • docs/TROUBLESHOOTING.md - Updated troubleshooting commands
  • docs/TOOLS.md - Updated chezmoi section
  • CLAUDE.md - Updated maintenance commands
  • Fixed failing test in tests/functional.bats (dothelp → dots help)
  • Removed AI attribution from archived roadmap documentation

Testing

  • Added 6 new tests for unified interface
  • dots cz subcommand tests
  • dots log subcommand tests
  • Removal verification tests for old commands
  • All 41 tests passing

Migration

Old Command → New Command:

cza                dots cz apply    (or: dots cz a)
czd                dots cz diff     (or: dots cz d)
cze ~/.zshrc       dots cz edit ~/.zshrc
czs                dots cz status   (or: dots cz s)
czr                dots cz reinit   (or: dots cz r)
dotlog             dots log
dothelp            dots help
dot-install        dots install
dot-update         dots update
welcome-toggle     dots welcome toggle
welcome-status     dots welcome status

[1.3.0] - 2026-01-17

Fixed

  • Critical Bugs:
  • Mise Cache Bug: Fixed reversed logic in .zshrc.tmpl that prevented cache updates after mise upgrades (used -ot instead of -nt)
  • FZF Aliases: Fixed quoting issues in kp and cod aliases that broke with filenames containing spaces
  • CI Validation: Removed continue-on-error from test and health check steps to properly fail builds on errors
  • Security: Secured temp file handling in setup-secrets task using mktemp with restricted permissions
  • Robustness:
  • Port Validation: Added numeric and range validation (1-65535) to killport() function
  • Yazi Wrapper: Fixed race condition with temp file cleanup in ya() function
  • Virtual Environment: Added activation script existence check in vnv() function
  • Maintenance:
  • Cleaned up commented-out tools in mise.toml with clear documentation for platform-specific tools

Testing

  • Added 6 new template variable expansion tests for chezmoi templates
  • Added 8 new audit fix validation tests for aliases and functions
  • Added 3 new tests for mise cache logic validation
  • Total new tests: 17

Added

  • Deployment Modes:
  • Dotfiles-Only Deployment: New deployment mode for servers, containers, and shared systems that applies configuration files without installing system packages or provisioning tools
  • Sparse Checkout Support: Documentation for minimal clones using git sparse checkout for faster deployment on slow networks
  • Non-Interactive Setup: Support for CI/automation via CI=1 environment variable to skip interactive prompts
  • Shell Features:
  • Virtual Environment Indicator: Python venvs now display in the Powerlevel10k prompt (e.g., (venv))
  • Welcome Message Toggle: New welcome-toggle, welcome-status, and welcome commands to control weather/quote display
  • AI Agent History Isolation: Automatic detection of AI coding agents (Claude Code, Codex, Gemini, Antigravity, etc.) with isolated history to prevent pollution of personal command history
  • Yazi Shortcut: Added y alias for yazi file manager (in addition to existing ya)
  • Debugging:
  • AI Environment Debug: New aienvdebug command to discover AI-related environment variables
  • History Info: New histinfo function to show current history configuration and agent detection status

Changed

  • Graceful Degradation: Added guard to .zshrc for missing mise env file, enabling dotfiles to work in environments without mise installed

Documentation

  • Deployment Documentation: Added comprehensive "Quick Start" section to README with three deployment scenarios (full system, dotfiles-only, updates)
  • Customization Guide: Added "Deployment Modes" section to CUSTOMIZATION.md explaining full vs. dotfiles-only deployment
  • Development Guide: Updated CLAUDE.md with dotfiles-only deployment commands and sparse checkout instructions

Testing

  • Added 5 new tests for welcome message toggle functionality
  • Added 10 new tests for AI agent detection and history isolation
  • Added 4 new tests for new aliases and functions

[1.3.0] - 2026-01-17

Added

  • Testing:
  • Destructive Uninstall Tests: Added 3 new tests to verify mise run uninstall actually removes symlinks, is idempotent, and safely skips non-symlink files
  • Restore Flow Verification: Added 3 new tests to verify backup → uninstall → restore cycles work correctly
  • Documentation:
  • Renovate Health Checks: Added comprehensive section to RENOVATE.md for verifying dependency monitoring status
  • macOS Testing Strategy: Documented manual testing approach in TESTING.md with pre-release checklist
  • macOS Checklist: Created docs/macos-test-checklist.md for systematic pre-release verification

Coverage

  • Test suite expanded to 331 tests (from 325)
  • All backup/uninstall/restore flows now have behavioral verification

[1.2.0] - 2026-01-17

Added

  • Documentation:
  • Architecture Diagram: Enhanced Mermaid diagram in docs/index.md showing complete bootstrap → chezmoi → mise flow with secrets management
  • ADR Backlog: Created 4 Architecture Decision Records:
    • 002-chezmoi-dotfile-management.md: Document rationale for choosing Chezmoi
    • 003-mise-tool-management.md: Document decision to use Mise over asdf
    • 004-age-encryption.md: Document age encryption approach
    • 005-ci-pragmatism.md: Document pragmatic CI philosophy
  • Profile Task: Exposed scripts/profile-startup as mise run profile for easy shell startup profiling
  • Testing:
  • Behavioral Verification: Added behavioral tests to backup.bats:
    • Verify backup creates timestamped directories
    • Verify backup copies expected config files
    • Verify uninstall dry-run doesn't remove files

Changed

  • Cleanup: Removed stale TODO from provision/windows/packages.toml (integration already complete)

[1.1.0] - 2026-01-17

Added

  • Features:
  • Secret Rotation: New mise run rotate-secrets task to automate age key rotation.
  • Interactive Docs: Added docs/CHEATSHEET.md and GIF demos for fzf, lazygit, yazi.
  • macOS Parity: Added dedicated macOS support tests and doctor checks.
  • Testing:
  • Coverage: Implemented coverage enforcement (>80%) in CI.
  • Wrappers: Added comprehensive tests for smart shell wrappers (ps, df, du).
  • Performance:
  • Profiling: Added scripts/profile-startup for Zsh benchmarking.
  • Optimization: Implemented lazy-loading for atuin, zoxide, and cached mise activation.

Changed

  • Performance: Zsh startup time optimized to ~400ms (Best Effort).
  • CI: Enhanced workflow to include coverage reporting and macOS smoke tests.
  • Documentation: Overhauled docs/TOOLS.md with visual demos and better formatting.

Fixed

  • Doctor: Fixed missing checks for macOS-specific tools.
  • Welcome: Optimized startup welcome message performance.

[1.0.0] - 2025-12-25

Added

  • Initial stable release of dotfiles.