@sebastienrousseau/dotfiles 0.2.511 → 0.2.513

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/README.md +2 -2
  3. package/docs/AI.md +2 -1
  4. package/docs/COPYRIGHT +1 -1
  5. package/docs/architecture/AI_COST_OPTIMIZATION.md +1 -0
  6. package/docs/archive/LEGACY_ROADMAP.md +4 -158
  7. package/docs/manual/00-introduction.md +1 -1
  8. package/docs/manual/01-concepts/02-trust-model.md +2 -1
  9. package/docs/manual/02-tutorials/02-add-wallpaper.md +6 -6
  10. package/docs/manual/02-tutorials/03-create-profile.md +1 -1
  11. package/docs/manual/02-tutorials/05-deploy-fleet.md +1 -1
  12. package/docs/manual/03-reference/02-config-files.md +1 -1
  13. package/docs/manual/03-reference/03-environment.md +1 -1
  14. package/docs/manual/04-cookbook/03-faq.md +1 -1
  15. package/docs/manual/05-appendices/B-security-checklist.md +2 -1
  16. package/docs/manual/command-index.md +1 -0
  17. package/docs/operations/ARCHITECTURE_ROADMAP.md +5 -143
  18. package/docs/operations/COVERAGE.md +30 -8
  19. package/docs/operations/REGISTRY.md +20 -19
  20. package/docs/operations/ROADMAP.md +3 -159
  21. package/docs/operations/ROADMAP_2026.md +5 -663
  22. package/docs/operations/ROADMAP_V0_2_503.md +5 -129
  23. package/docs/reference/POWERSHELL_PARITY.md +28 -27
  24. package/docs/reference/THEMES.md +1 -1
  25. package/docs/reference/TOOLS.md +1 -0
  26. package/docs/reference/UTILS.md +1 -0
  27. package/docs/schema/dot-registry-v1.json +33 -0
  28. package/docs/security/SCORECARD.md +1 -1
  29. package/install.sh +20 -11
  30. package/package.json +1 -1
  31. package/scripts/diagnostics/a2a-conformance.sh +0 -0
  32. package/scripts/diagnostics/aliases-manifest.sh +33 -6
  33. package/scripts/diagnostics/benchmark.sh +27 -1
  34. package/scripts/diagnostics/doctor.sh +18 -11
  35. package/scripts/diagnostics/health.sh +12 -4
  36. package/scripts/diagnostics/mcp-doctor.sh +3 -0
  37. package/scripts/diagnostics/secret-governance.sh +7 -1
  38. package/scripts/diagnostics/security-score.sh +14 -5
  39. package/scripts/diagnostics/verify_state.sh +9 -1
  40. package/scripts/diagnostics/workstation-attestation.sh +0 -0
  41. package/scripts/dot/commands/ai.sh +40 -31
  42. package/scripts/dot/commands/aliases.sh +28 -4
  43. package/scripts/dot/commands/appearance.sh +16 -0
  44. package/scripts/dot/commands/core.sh +17 -0
  45. package/scripts/dot/commands/diagnostics.sh +19 -0
  46. package/scripts/dot/commands/fleet.sh +1 -1
  47. package/scripts/dot/commands/manual.sh +4 -4
  48. package/scripts/dot/commands/meta.sh +87 -12
  49. package/scripts/dot/commands/registry.sh +164 -15
  50. package/scripts/dot/commands/secrets.sh +17 -0
  51. package/scripts/dot/commands/security.sh +17 -0
  52. package/scripts/dot/commands/tools.sh +19 -0
  53. package/scripts/dot/powershell/Dot.psm1 +146 -26
  54. package/scripts/fonts/install-nerd-fonts.sh +16 -10
  55. package/scripts/git-hooks/pre-commit-audit.sh +1 -1
  56. package/scripts/ops/ai-setup.sh +13 -6
  57. package/scripts/ops/bundle.sh +31 -5
  58. package/scripts/ops/chezmoi-apply.sh +5 -0
  59. package/scripts/ops/heal-tools.sh +39 -111
  60. package/scripts/ops/post-apply-repair.sh +0 -0
  61. package/scripts/ops/release.sh +14 -5
  62. package/scripts/qa/docs-coverage.sh +1 -1
  63. package/scripts/qa/reliability-audit.sh +4 -4
  64. package/scripts/qa/scorecard-snapshot.sh +3 -3
  65. package/scripts/qa/validate-examples.sh +0 -0
  66. package/scripts/qa/wsl-contract.sh +0 -0
  67. package/scripts/secrets/age-init.sh +15 -4
  68. package/scripts/theme/apply-gnome-theme.sh +6 -2
  69. package/scripts/theme/extract-theme.py +97 -33
  70. package/scripts/theme/rebuild-themes.sh +240 -35
  71. package/scripts/theme/switch.sh +26 -16
  72. package/scripts/theme/wallpaper-sync.sh +95 -7
  73. package/scripts/tools/detect-collisions.py +0 -0
  74. package/scripts/version-sync.sh +108 -44
package/CHANGELOG.md CHANGED
@@ -2,6 +2,96 @@
2
2
 
3
3
  This file documents all notable changes to this project.
4
4
 
5
+ ## v0.2.513 — 2026-08-06
6
+
7
+ - **Verified module registry installation.** `dot registry install` now validates the v1 index, verifies immutable archive SHA-256 digests, rejects traversal and link-bearing archives, previews with chezmoi by default, and applies only with explicit `--yes`. CI validates the published registry contract and JSON Schema.
8
+ - **Native PowerShell daily workflow.** `dot.ps1` now handles core chezmoi operations, status, doctor, mise inventory, agent checks/listing, and local fleet status without bash. Windows CI exercises the cmdlets directly, and the parity matrix now distinguishes native behavior from bash bridges.
9
+ - **Checksum-verified self-healing tools.** Nushell, Pueue, Wasmtime, SOPS, Yazi, and Zellij recovery now uses exact mise/aqua pins instead of mutable GitHub release URLs and unverified executable downloads.
10
+ - **Reproducible toolchain lock.** The development toolchain now ships a cross-platform `mise.lock` covering Linux, macOS, and Windows with exact download URLs and available SHA-256 checksums. Font archives, distro signing keys, and binary archives now fail closed on integrity or unsafe archive structure.
11
+
12
+ ### Security
13
+
14
+ - Enforce signed commits, linear history, required merge/reliability/DCO/PR
15
+ signature checks, conversation resolution, and up-to-date branches on
16
+ `main`.
17
+ - Default GitHub Actions tokens to read-only, disable workflow PR approvals,
18
+ enable secret push protection, and pin the SLSA reusable workflow to its
19
+ immutable commit.
20
+ - Verify every remotely executed installer against a committed SHA-256
21
+ allowlist. CI rejects direct download-to-shell execution and verifier
22
+ bypasses.
23
+
24
+ ### Fixed
25
+
26
+ - Make CLI snapshots hermetic across hosts by normalizing platform facts,
27
+ installed-tool paths, versions, health counts, and timing measurements.
28
+ - Keep `dot health` best-effort when an interactive zsh startup probe fails or
29
+ omits timing output, so macOS diagnostics still reach the health summary.
30
+ - Measure both unit and mandatory regression tests in Bash coverage, retain
31
+ function-probe xtrace, and cache source normalization. Measured line
32
+ coverage rises to 59.32%, the enforced floor rises to 58%, and aggregation
33
+ now completes in seconds instead of minutes.
34
+ - Run the reliability audit's integration phase without repeating the full
35
+ unit and regression suites.
36
+ - Keep `master` as a verified, fast-forward-only compatibility mirror of
37
+ `main` for historical raw-content install URLs.
38
+ - Package a self-contained `dot` distribution including command modules,
39
+ operational scripts, policies, schemas, help data, and the verified-download
40
+ manifest. Previously published archives omitted the command modules required
41
+ by most subcommands.
42
+ - Add `make install PREFIX=... DESTDIR=...` and `make uninstall` using the
43
+ same tested staging path as release archives. Published releases now run a
44
+ provenance-verified clean-install smoke test on Linux and macOS.
45
+ - Store CLI benchmark baselines under `XDG_CACHE_HOME` instead of requiring a
46
+ writable source checkout.
47
+ - Make focused help work for `apply`, `agents`, and `registry`.
48
+ - Make an explicit version-sync target update `package.json` atomically and
49
+ distinguish historical roadmap versions from current-version references.
50
+ - Correct documentation that conflated 100% executable-module mapping with
51
+ measured Bash line coverage.
52
+
53
+ ## v0.2.512 — 2026-07-21
54
+
55
+ ### Added
56
+
57
+ - **`dot-ui`** — a shared Bubble Tea (Go) renderer for the `dot` CLI: themed
58
+ tables across all list/table commands, a unified `dot-ui pick` that replaces
59
+ fzf in the theme picker, and a step-runner façade. Degrades gracefully when
60
+ Go is absent, so it never fails a `chezmoi apply`.
61
+ - **AI CLIs** — Kimi Code CLI support, with a Kiri compatibility shim.
62
+ - **Themes** — regenerated the full theme set from the updated wallpaper
63
+ library; system wallpapers are now opt-in (only discovered themes are
64
+ assembled); `bloom-light` is the new default theme.
65
+ - **`corralctl`** — scheduled daily repo sync.
66
+ - Symlink iCloud Drive folders into home.
67
+
68
+ ### Changed
69
+
70
+ - **Theme engine overhaul** — terminals always use the dark palette with an
71
+ AAA light ramp; Apple-consistent light ANSI ramp; accurate wallpaper counts
72
+ and dominant-colour tracking; `dot-theme-sync` now drives through the shared
73
+ UI.
74
+ - **mise** — folded `~/mise.toml` overrides into the managed base layer; bumped
75
+ topgrade to 17.4.0 and dropped the typos pin.
76
+ - Bumped GitHub Actions pins (minor-patch group plus setup-go/node/python,
77
+ codeql-action, and action-gh-release), folding Dependabot #977 and #978.
78
+
79
+ ### Fixed
80
+
81
+ - **Themes / terminals** — readable light-mode palettes (fixed bg/fg with
82
+ AA/AAA ANSI contrast); kitty now renders light themes, is opaque in light
83
+ mode, and gets a runtime reloader; tmux client redraw across all servers so
84
+ existing sessions refresh immediately; regen-proof fallback themes; correct
85
+ macOS accent mapping and per-mode HEIC frame resolution; no workspace freeze
86
+ or WallpaperAgent restart on apply.
87
+ - **git** — render `allowed_signers` and guard it on a missing key / unset
88
+ email.
89
+ - **CI / reliability** — portable `timeout` shim for macOS (real `gtimeout`);
90
+ reliability tests made portable and environment-tolerant; diagnostics
91
+ scorecard to 100; copyright and coverage gate fixes.
92
+ - **aliases** — the CD-completion load-once guard now actually gates.
93
+ - Push the AUR package to `master`, not `main`.
94
+
5
95
  ## v0.2.511 — 2026-07-08
6
96
 
7
97
  Bug-fix release: restore shell aliases that were silently dropped after the CD-completion fragment.
package/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  <p align="center">
12
12
  <a href="https://github.com/sebastienrousseau/dotfiles/actions"><img src="https://img.shields.io/github/actions/workflow/status/sebastienrousseau/dotfiles/ci.yml?style=for-the-badge&logo=githubactions&logoColor=white" alt="Build" /></a>
13
- <a href="https://github.com/sebastienrousseau/dotfiles/releases/latest"><img src="https://img.shields.io/badge/Version-v0.2.511-blue?style=for-the-badge&logo=semanticrelease&logoColor=white" alt="Version" /></a>
13
+ <a href="https://github.com/sebastienrousseau/dotfiles/releases/latest"><img src="https://img.shields.io/badge/Version-v0.2.513-blue?style=for-the-badge&logo=semanticrelease&logoColor=white" alt="Version" /></a>
14
14
  <a href="https://github.com/sebastienrousseau/dotfiles/releases"><img src="https://img.shields.io/github/downloads/sebastienrousseau/dotfiles/total?style=for-the-badge&logo=github&logoColor=white" alt="Downloads" /></a>
15
15
  <a href="https://codespaces.new/sebastienrousseau/dotfiles"><img src="https://img.shields.io/badge/Open%20in-Codespaces-blue?style=for-the-badge&logo=github&logoColor=white" alt="Open in GitHub Codespaces" /></a>
16
16
  <a href="https://scorecard.dev/viewer/?uri=github.com/sebastienrousseau/dotfiles"><img src="https://img.shields.io/ossf-scorecard/github.com/sebastienrousseau/dotfiles?style=for-the-badge&logo=linuxfoundation&logoColor=white&label=OpenSSF%20Scorecard" alt="OpenSSF Scorecard" /></a>
@@ -52,7 +52,7 @@
52
52
 
53
53
  ```bash
54
54
  curl -fsSL -o /tmp/dotfiles-install.sh \
55
- https://raw.githubusercontent.com/sebastienrousseau/dotfiles/v0.2.511/install.sh
55
+ https://raw.githubusercontent.com/sebastienrousseau/dotfiles/v0.2.513/install.sh
56
56
  echo "d5a04c5e2813a93a63c8ecce9655cf3d107f6068862c6eba84a92cf22f801c7e /tmp/dotfiles-install.sh" \
57
57
  | shasum -a 256 -c
58
58
  bash /tmp/dotfiles-install.sh
package/docs/AI.md CHANGED
@@ -120,6 +120,7 @@ These tools are not installed for you. Install what you want with `dot ai instal
120
120
  - `amp` — Sourcegraph's agentic coder
121
121
  - `cursor-agent` — Cursor's terminal agent
122
122
  - `grok` — xAI's terminal coding agent (Grok Build; needs a SuperGrok / X Premium+ plan)
123
+ - `kimi` — Moonshot AI's Kimi Code CLI; installed natively to `~/.kimi-code/bin/kimi` and supports native interactive use and one-shot prompts
123
124
 
124
125
  - **Coding (interactive)** — focused pair-programming assistants:
125
126
  - `aider` — Git-aware AI pair programmer
@@ -152,7 +153,7 @@ The old command shapes still work, but print a one-line hint pointing at the new
152
153
  | Deprecated | Use instead |
153
154
  |------------|-------------|
154
155
  | `dot cl` | `dot ai claude` |
155
- | `dot codex` / `dot copilot` / `dot agy` / `dot goose` | `dot ai codex` / `dot ai copilot` / `dot ai agy` / `dot ai goose` |
156
+ | `dot codex` / `dot copilot` / `dot kimi` / `dot agy` / `dot goose` | `dot ai codex` / `dot ai copilot` / `dot ai kimi` / `dot ai agy` / `dot ai goose` |
156
157
  | `dot kiro` / `dot sgpt` / `dot ollama` / `dot opencode` | `dot ai kiro` / `dot ai sgpt` / `dot ai ollama` / `dot ai opencode` |
157
158
  | `dot aider` / `dot autohand` / `dot vibe` / `dot qwen` / `dot zai` | `dot ai aider` / `dot ai autohand` / `dot ai vibe` / `dot ai qwen` / `dot ai zai` |
158
159
  | `dot ai status` | `dot ai tools` |
package/docs/COPYRIGHT CHANGED
@@ -1,5 +1,5 @@
1
1
  /*
2
- * 🅳🅾🆃🅵🅸🅻🅴🆂 (v0.2.511) - <https://github.com/sebastienrousseau/dotfiles>
2
+ * 🅳🅾🆃🅵🅸🅻🅴🆂 (v0.2.513) - <https://github.com/sebastienrousseau/dotfiles>
3
3
  * Made With ❤️ in London, United Kingdom
4
4
  * Designed by
5
5
  * Copyright (c) 2015-2026. All rights reserved.
@@ -114,6 +114,7 @@ Providers tracked today:
114
114
  | Copilot CLI | `copilot` | yes | no |
115
115
  | Gemini CLI | `gemini` | yes | no |
116
116
  | Goose | `goose` | yes | no |
117
+ | Kimi CLI | `kimi` | yes | no |
117
118
  | Aider | `aider` | yes | no |
118
119
  | OpenCode | `opencode` | yes | no |
119
120
  | Autohand | `autohand` | yes | no |
@@ -1,160 +1,6 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # The Ultimate Developer Environment Roadmap
6
-
7
- This roadmap outlines the path to a high-performance, super-efficient development machine designed for Rust, Python, and AI on Linux (Zorin OS / T2 Mac hardware).
8
-
9
- ## Phase 1: Foundation (Completed)
10
-
11
- - **Core Shell**: Zsh + Oh My Zsh.
12
- - **Modern Prompt**: Starship (hooked & active).
13
- - **Language Managers**: `rustup` (Rust) and `fnm` (Node.js).
14
- - **Ultra-Fast Python**: `uv` installed.
15
- - **Basic Modern Tools**: `eza` (ls), `bat` (cat), `fd` (find), `ripgrep` (grep).
16
- - **Git Enhancements**: `lazygit` (TUI) and `delta` (Diffs).
17
- - **Multiplexer**: `zellij` installed.
18
- - **AI**: `ollama` installed locally.
19
- - **Security**: Firewall (`ufw`) enabled.
20
-
21
- ---
22
-
23
- ## Phase 2: Speed & Navigation (Completed)
24
-
25
- Focus: Reduce friction in filesystem navigation and build times.
26
-
27
- ### 1. Navigation
28
-
29
- - [x] **Zoxide**: Smarter `cd` command that learns your habits (`z directory`).
30
- - [x] **FZF**: Command-line fuzzy finder. Essential for search history, files, and replacing standard completion.
31
- - [x] **Yazi**: Blazing fast terminal file manager (Rust-based).
32
-
33
- ### 2. Rust Optimization
34
-
35
- - [x] **Mold**: Use the `mold` linker to speed up Rust compile times by 3x-10x.
36
- - [x] **Sccache**: Shared compilation cache to speed up recompilations across projects.
37
- - [x] **Bacon**: Background rust compiler that gives instant feedback on errors.
38
-
39
- ### 3. Python Optimization
40
-
41
- - [x] **Ruff**: Extremely fast Python linter and formatter (replace flake8/black).
42
- - [x] **Global Config**: Set `uv` to use system Python or managed Python preferences.
43
-
44
- ### 4. Code Search
45
-
46
- - [x] **Ripgrep-all (rga)**: Search inside PDFs, E-Books, zip files, etc.
47
-
48
- ---
49
-
50
- ## Phase 3: AI Power User (Completed)
51
-
52
- Focus: Integrate AI deeply into the workflow.
53
-
54
- - [x] **Fabric**: Open-source framework for augmenting humans using AI (installed via `cmd` path).
55
- - [x] **Open WebUI**: A beautiful web interface for `ollama` (requires Docker).
56
- - [x] **GitHub Copilot CLI**: Integrate AI assistance directly into the terminal commands.
57
- - [x] **Local RAG**: Setup tools to chat with your own documents locally (Open WebUI).
58
-
59
- ---
60
-
61
- ## Phase 4: System Tuning & Hardening (Completed)
62
-
63
- Focus: Squeeze every ounce of performance and security from the hardware.
64
-
65
- - [x] **Kernel Tuning**: Increase file descriptor limits and optimize TCP stack for lower latency.
66
- - [x] **Swap Optimization**: Configure `zram` for memory compression (improves performance on 16GB RAM).
67
- - [x] **Flatpak Overrides**: Secure Flatpak permissions using `Flatseal`.
68
- - [x] **Automated Updates**: Configure `unattended-upgrades` for security patches.
69
-
70
- ---
71
-
72
- ## Phase 5: Final Polish (Completed)
73
-
74
- - [x] **Global UV Config**: Created `~/.config/uv/uv.toml` for managed python preference.
75
- - [x] **Roadmap Completion**: Verified all items are 100% complete.
76
-
77
- ---
78
-
79
- ## Maintenance & Updates
80
-
81
- - **Update System**: `sudo apt update && sudo apt upgrade`
82
- - **Update Rust**: `rustup update`
83
- - **Update Node**: `fnm install --lts`
84
- - **Update UV**: `uv self update`
85
- - **Update Firmware**: `fwupdmgr get-updates`
86
-
87
- ---
88
-
89
- ## Phase 6: Desktop Environment (Completed)
90
-
91
- Focus: Clean, bloat-free, and supercharged GNOME/Zorin experience.
92
-
93
- - [x] **Bloatware Removal**: Removed games (`aisleriot`, `mines`, etc.) and media apps (`rhythmbox`, `totem`).
94
- - [x] **Menu Cleanup**: Created `hide_menu_entries.sh` to deduplicate and hide unwanted entries.
95
- - [x] **GNOME Extensions**: Installed productivity boosters via `gnome-extensions-cli`:
96
- - [x] `Clipboard Indicator`: History management.
97
- - [x] `Caffeine`: Prevent auto-suspend.
98
- - [x] `Impatience`: Speed up animations.
99
- - [x] `Vitals`: System monitoring in top bar.
100
- - [x] **Memory Tuning**: Optimize GNOME Shell performance.
101
-
102
- ---
103
-
104
- ## Phase 7: Browser Optimization (Completed)
105
-
106
- Focus: Chrome tuned for development and memory efficiency.
107
-
108
- - [x] **Settings**: Enable "Memory Saver" and "Energy Saver" via Managed Policies.
109
- - [x] **Extensions**: Automated installation of developer stack (uBlock, JSON Viewer, React DevTools, Vimium, Refined GitHub).
110
- - [x] **Profile Separation**: Separate Personal and Work profiles (Manual setup recommendation).
111
-
112
- ---
113
-
114
- ## Phase 8: Neovim IDE (Completed)
115
-
116
- Focus: Building a terminal-based IDE that rivals VS Code for Rust, Python, and AI.
117
-
118
- - [x] **Latest Version**: Installed Neovim v0.12.0-dev (Nightly) to resolve plugin stability issues.
119
- - [x] **Plugin Manager**: Setup `lazy.nvim` with modular config (Restored from **PR #62**).
120
- - [x] **Core Plugins**:
121
- - [x] `Telescope`: Fuzzy finding.
122
- - [x] `Treesitter`: Syntax highlighting.
123
- - [x] `Harpoon`: Fast file switching.
124
- - [x] `Neo-tree`: File explorer.
125
- - [x] **UI/UX Menus**: Added `dressing.nvim` and `telescope-ui-select.nvim` for modern, searchable selection lists and floating inputs.
126
- - [x] **LSP & Autocomplete**:
127
- - [x] `Mason`: Managing LSPs (rust-analyzer, pyright, ruff).
128
- - [x] `Cmp`: Autocompletion engine.
129
- - [x] **Language Specifics**:
130
- - [x] **Rust**: `rustaceanvim` configured.
131
- - [x] **Python**: `pyright` + `ruff`.
132
- - [x] **AI Integration**:
133
- - [x] `Copilot.lua`: Enabled (needs `:Copilot auth`).
134
- - [x] `CopilotChat.nvim`: Sidebar chat (VS Code style).
135
- - [ ] `Avante.nvim`: Skipped (Removed due to complexity/instability).
136
- - [x] **VS Code Parity Pack**:
137
- - [x] `Trouble`: Problems panel.
138
- - [x] `Spectre`: Search/Replace.
139
- - [x] `Autopairs`: Auto-close brackets.
140
- - [x] `Todo-Comments`: TODO/FIXME highlighting.
141
- - [x] `Persistence`: Session management.
142
-
143
- ---
144
-
145
- ## Phase 9: Repository Polish & PR #62 (In Progress)
146
-
147
- Focus: Finalize the `dotfiles` repository for public consumption and sync the local "Gold Standard" environment.
148
-
149
- - [x] **Repository Sync**:
150
- - [x] Clone official repo to `~/dotfiles`.
151
- - [ ] Sync validated configuration (Neovim, scripts, tuning) into repository.
152
- - [ ] **Documentation Update**:
153
- - [ ] Refactor `README.md` for the modern architecture.
154
- - [ ] Add "Easy Setup" and "Troubleshooting" guides.
155
- - [ ] **Final PR Submission**:
156
- - [ ] Verify clean diff against original PR #62.
157
- - [ ] Push updates to PR #62 branch.
158
-
1
+ # Legacy Roadmap
159
2
 
3
+ Legacy roadmap material has been consolidated into the canonical
4
+ [`../../ROADMAP.md`](../../ROADMAP.md).
160
5
 
6
+ This archive path is retained only for compatibility with older links.
@@ -4,7 +4,7 @@ render_with_liquid: false
4
4
 
5
5
  # Introduction
6
6
 
7
- This manual describes `.dotfiles` v0.2.511 — a trusted agent workstation baseline for macOS, Linux, and WSL.
7
+ This manual describes `.dotfiles` v0.2.513 — a trusted agent workstation baseline for macOS, Linux, and WSL.
8
8
 
9
9
  The repository is more than a personal dotfiles collection. It ships as workstation infrastructure: signed, attested, multi-platform, AI-aware, and self-healing. Chezmoi handles templating and platform differences. The `dot` CLI sits on top and coordinates lifecycle operations.
10
10
 
@@ -160,7 +160,8 @@ See [Fleet Architecture](04-fleet.md) for the full model.
160
160
  | Shellcheck zero-warnings | `ci.yml` | Yes |
161
161
  | Gitleaks scan | `ci.yml` | Yes |
162
162
  | Copyright headers | `ci-enforced.yml` | Yes |
163
- | 100% unit test coverage | `ci-enforced.yml` | Yes |
163
+ | 100% executable module mapping | `ci-enforced.yml` | Yes |
164
+ | Measured Bash line coverage | `coverage.yml` | Ratcheted floor; see `docs/operations/COVERAGE.md` |
164
165
  | Reliability (macOS + Linux) | `ci-enforced.yml` | Yes |
165
166
  | Checkov infrastructure scan | `ci-enforced.yml` | On severity MEDIUM+ |
166
167
  | SBOM (CycloneDX) | `ci.yml` | No (informational) |
@@ -126,10 +126,10 @@ Output:
126
126
  ```
127
127
  NAME SOURCE PATH
128
128
  ---- ------ ----
129
- big-sur-graphic-dark system /System/Library/Desktop Pictures/.thumbnails/Big Sur Graphic Dark.heic
130
- big-sur-graphic-light system /System/Library/Desktop Pictures/.thumbnails/Big Sur Graphic Light.heic
131
- dome-dark system /System/Library/Desktop Pictures/.thumbnails/Dome Dark.heic
132
- dome-light system /System/Library/Desktop Pictures/.thumbnails/Dome Light.heic
129
+ monterey-dark system /System/Library/Desktop Pictures/.thumbnails/Monterey Dark.heic
130
+ monterey-light system /System/Library/Desktop Pictures/.thumbnails/Monterey Light.heic
131
+ tahoe-dark system /System/Library/Desktop Pictures/.thumbnails/Tahoe Dark.heic
132
+ tahoe-light system /System/Library/Desktop Pictures/.thumbnails/Tahoe Light.heic
133
133
  sonoma-dark system /System/Library/Desktop Pictures/.thumbnails/Sonoma Dark.heic
134
134
  ...
135
135
  Total: 152 wallpapers
@@ -138,10 +138,10 @@ Total: 152 wallpapers
138
138
  Switch to any system wallpaper:
139
139
 
140
140
  ```sh
141
- dot theme dome-dark
141
+ dot theme monterey-dark
142
142
  ```
143
143
 
144
- The engine extracts Dome Dark's dominant colors, generates a palette, and applies it to every surface.
144
+ The engine extracts Monterey Dark's dominant colors, generates a palette, and applies it to every surface.
145
145
 
146
146
  ## Verifying the Result
147
147
 
@@ -48,7 +48,7 @@ Edit `~/.config/chezmoi/chezmoi.toml`:
48
48
  ```toml
49
49
  [data]
50
50
  machine = "surface-pro" # choose from .chezmoidata/hardware.toml
51
- theme = "dome-dark"
51
+ theme = "monterey-dark"
52
52
  default_shell = "fish"
53
53
  terminal_font_family = "JetBrainsMono Nerd Font"
54
54
  terminal_font_size = 11 # larger for HiDPI, smaller for dense screens
@@ -146,7 +146,7 @@ Each host has its own `~/.config/chezmoi/chezmoi.toml` — use it for things tha
146
146
  # surface-pro's chezmoi.toml
147
147
  [data]
148
148
  machine = "surface-pro"
149
- theme = "dome-dark" # per-host default
149
+ theme = "monterey-dark" # per-host default
150
150
  default_shell = "fish"
151
151
  terminal_font_size = 11 # smaller for HiDPI
152
152
  ```
@@ -122,7 +122,7 @@ sourceDir = "/Users/you/.dotfiles"
122
122
 
123
123
  [data]
124
124
  machine = "surface-pro" # selects preset from hardware.toml
125
- theme = "dome-dark" # overrides .chezmoidata.toml default
125
+ theme = "monterey-dark" # overrides .chezmoidata.toml default
126
126
  default_shell = "fish"
127
127
  terminal_font_size = 11
128
128
  email = "you@example.com"
@@ -75,7 +75,7 @@ Variables relevant in GitHub Actions.
75
75
  | `CI` | Set to `true` in CI; disables prompts |
76
76
  | `GITHUB_ACTIONS` | GHA-specific; enables step summary output |
77
77
  | `CHEZMOI_VERSION` | Pinned chezmoi version for CI |
78
- | `COVERAGE_THRESHOLD` | Test coverage threshold (100 in enforced CI) |
78
+ | `COVERAGE_THRESHOLD` | Executable module-mapping threshold (100 in enforced CI; not line coverage) |
79
79
  | `DOTFILES_TEST_MODE` | Skip network-dependent tests |
80
80
 
81
81
  ## Secret-Related
@@ -25,7 +25,7 @@ Only via WSL2. Native Windows PowerShell support exists for baseline parity (ali
25
25
 
26
26
  ### Is it production-ready?
27
27
 
28
- Yes — it's the author's daily driver across multiple hosts and receives regular releases (see `CHANGELOG.md`). CI enforces 100% test coverage, zero-warning linting, WCAG AAA for themes, SBOM + CVE scanning, and signed commits on every merge.
28
+ Yes — it's the author's daily driver across multiple hosts and receives regular releases (see `CHANGELOG.md`). CI enforces 100% executable-module mapping and a ratcheted measured Bash line-coverage floor, plus zero-warning linting, WCAG AAA for themes, SBOM + CVE scanning, and signed-commit verification. The current measured coverage and exclusions are documented in `docs/operations/COVERAGE.md`.
29
29
 
30
30
  ### Can I fork it and use it without attribution?
31
31
 
@@ -71,7 +71,8 @@ Every PR to main must pass:
71
71
  - [x] Detect-secrets baseline diff
72
72
  - [x] TruffleHog verified scan
73
73
  - [x] Copyright headers present
74
- - [x] 100% unit test coverage
74
+ - [x] 100% executable module mapping
75
+ - [ ] 100% measured line and branch coverage (current ratchet is documented in `docs/operations/COVERAGE.md`)
75
76
  - [x] Reliability tests (macOS + Ubuntu)
76
77
  - [x] Checkov infra scan
77
78
  - [x] Version sync (bumped across all files)
@@ -77,6 +77,7 @@ job `lint/command-index` fails when this file is stale.
77
77
  | `dot history` | Shell history analysis |
78
78
  | `dot keys` | Keybindings (sign-check: verify git signing) |
79
79
  | `dot keys` | sign-check Verify git commit-signing configuration and key availability |
80
+ | `dot kimi` | Kimi CLI with context patterns |
80
81
  | `dot kiro` | Kiro CLI with context patterns |
81
82
  | `dot learn` | Start the interactive tour of your new tools |
82
83
  | `dot lint` | Lint shell scripts (--fix |
@@ -1,145 +1,7 @@
1
- ---
2
- title: "Architecture & Roadmap — cross-shell consistency, performance, decoupling"
3
- date: 2026-07-01
4
- status: living document
5
- ---
1
+ # Architecture Roadmap
6
2
 
7
- # Architecture & Roadmap
3
+ Historical architecture planning has been consolidated into the canonical
4
+ [`../../ROADMAP.md`](../../ROADMAP.md).
8
5
 
9
- This document captures a deep-dive across four fronts — cross-shell
10
- consistency, real startup performance, the 2026 competitive/research
11
- landscape, and a plan to decouple optional subsystems (`dot ai`, MCP, LSP)
12
- into companion repos around a stable core. It is the source of truth for
13
- the multi-phase program tracked below.
14
-
15
- > Honesty policy: every performance number here is **measured** with
16
- > `hyperfine` (warmed up), reproducible with the harness in
17
- > `tests/performance/bench.sh` (interactive sessions, all installed shells)
18
- > and `dot benchmark`. Estimates are labelled as such. The
19
- > built-in `dot doctor` perf readout historically **understated** real
20
- > startup because it timed a narrower slice — Phase 0 reconciles that.
21
-
22
- ## 1. Measured performance baseline (2026-07-01, Apple Silicon)
23
-
24
- Method: `hyperfine -N --warmup 5` on the deployed config; `exit`-on-launch.
25
-
26
- | Shell | Startup (mean) | rc cost over ~7ms spawn | vs <30ms target |
27
- |---------|----------------|-------------------------|-----------------|
28
- | nushell | 24.8 ms | — | meets |
29
- | bash | 51.1 ms | +43.6 ms | 1.7× over |
30
- | zsh | 66.3 ms | +59.6 ms | 2.2× over |
31
- | fish | 128.8 ms | bash-bridge tax | 4.3× over |
32
-
33
- Baselines (pure process spawn, no rc): `zsh -fc exit` 6.7 ms,
34
- `bash --norc` 7.5 ms.
35
-
36
- Cost attribution (uncached tool-init subprocess cost, what `_cached_eval`
37
- caches away): `mise activate` 17.7 ms, `atuin init` 7.1 ms,
38
- `starship init` 4.0 ms, `zoxide init` 2.4 ms. `_cached_eval` **is**
39
- working (cache files fresh; `zcompdump` is `zcompile`d), which is why zsh
40
- is 66 ms and not ~97 ms.
41
-
42
- **<30ms verdict (honest):** not reachable for the *full eager stack*
43
- (mise + starship + atuin + zoxide + fzf + zinit + ~97 alias files + ~53
44
- functions + compinit) on zsh/bash without tradeoffs. It **is** reachable
45
- as a tunable "fast profile" + first-prompt deferral. nushell already
46
- meets it; fish (bash-bridge) is the worst and the biggest opportunity.
47
-
48
- ## 2. Cross-shell consistency
49
-
50
- - bash/zsh are native + single-source; **fish and nushell are bash
51
- *bridges*** — they filter aliases and wrap functions via `bash -c`
52
- subshells, adding a runtime bash dependency and silent parity loss.
53
- - Parity gap: bash/zsh ~53 functions; fish 27 native; nushell 0 native;
54
- ~26 functions have no native impl; behaviour drifts (e.g. `goto` loses
55
- directory grouping in fish/nu).
56
- - Duplication: eza-detection logic in bash + 7 fish files + nu wrappers;
57
- `_cached_eval` reimplemented four times.
58
- - Direction: a **manifest-driven single source of truth** (one
59
- alias/function spec → per-shell generators). This also removes the
60
- class of parse-time collision that produced the zsh alias-shim bug.
61
-
62
- ## 3. Decoupling architecture
63
-
64
- ```
65
- dotfiles (CORE)
66
- dot CLI · lib/dot/ui.sh · utils.sh · chezmoi base · plugin API
67
- | | | |
68
- dotfiles-ai dotfiles-mcp dotfiles-lsp (future)
69
- dot ai, registry, dot/alias/
70
- cockpit, policy, chezmoi-template
71
- gateway mcp-doctor completions
72
- ```
73
-
74
- Readiness (from the coupling audit):
75
-
76
- | Subsystem | Coupling | Effort | Notes |
77
- |-----------|----------|--------|-------|
78
- | MCP | low (declarative JSON + one `cmd_mcp`) | low | isolated by design |
79
- | LSP | none (one nvim plugin file) | trivial | already a lazy.nvim plugin |
80
- | `dot ai` | high (ui.sh, utils.sh, dispatcher, chezmoi hooks) | high | needs the two contracts below |
81
-
82
- Two foundational contracts must exist before AI can move cleanly:
83
-
84
- 1. **Extract `lib/dot/ui.sh` into a versioned shared lib** — AI *and* MCP
85
- depend on it; without this, decoupling means duplication.
86
- 2. **A `dot` plugin/extension API** — manifest-registered subcommands so
87
- companion repos add `dot ai` / `dot mcp` without forking the
88
- dispatcher.
89
-
90
- ## 4. 2026 landscape — gaps worth adopting (highest value first)
91
-
92
- - **`dotfiles-mcp` with a secrets-redaction + allowlist policy layer** — a
93
- genuine gap no existing dotfiles-MCP fills; reuses the gitleaks / Atuin
94
- `history_filter` posture. Expose introspection via MCP **Resources**,
95
- actions via **Tools**.
96
- - **`dotfiles-lsp`** = `dot` subcommand completions + alias awareness +
97
- **chezmoi-template-data-aware** completions → a novel *combination*
98
- (weekend-scale MVP using just-lsp / tcl-lsp patterns).
99
- - Password-manager templating (1Password/Bitwarden), SOPS for shared
100
- secrets, **Bats** tests (reviewer lingua franca), devcontainer/Codespaces
101
- fast install path.
102
-
103
- Context: chezmoi has won the dotfiles category; mise is baseline; Starship
104
- has overtaken Powerlevel10k (maintenance-only); MCP spec 2025-11-25 is
105
- under the Linux Foundation and safe to build on.
106
-
107
- ## 5. Staged roadmap
108
-
109
- Each phase ships as its own reviewed PR with before/after benchmarks.
110
-
111
- | Phase | Work | Risk | Target payoff |
112
- |-------|------|------|---------------|
113
- | **0** | Honest benchmark harness in-repo; make `dot doctor` report real numbers | low | truth in metrics |
114
- | **1** | Perf quick-wins audit (deferral, compinit, zcompile, mise ordering) | low | verify + record baseline |
115
- | **2** | Extract `lib/dot/ui.sh` → versioned shared lib | med | unblocks decoupling |
116
- | **3** | `dot` plugin API + carve out `dotfiles-mcp` (lowest-risk repo) | med | proves the model |
117
- | **4** | Cross-shell manifest (single source → per-shell generators); de-bash-bridge fish | high | consistency + fish speed |
118
- | **5** | `dotfiles-ai` as a plugin repo | high | the decoupling goal |
119
- | **6** | `dotfiles-lsp` MVP | low | differentiation |
120
- | **7** | Docs + `examples/` + published honest benchmarks | med | completeness |
121
-
122
- ### Status
123
-
124
- - **Phase 0 — done** (`feat/v0.2.509`): `tests/performance/bench.sh` now times
125
- every shell *interactively* (fish was measured non-interactively, faking
126
- ~12ms vs the real ~118ms) and includes nushell; `dot doctor` reports the
127
- real medians.
128
- - **Phase 1 — done (audit)** (`feat/v0.2.509`): the documented quick-wins are
129
- **already implemented** in the deployed config, verified:
130
- - `compinit` deferred to first prompt, `-C` + daily-audit cache
131
- (`~/.config/zsh/rc.d/30-options.zsh`).
132
- - Eagerly-sourced hub files are `zcompile`d (`.zwc` present).
133
- - Plugins turbo-deferred (`zinit ice wait lucid`), fzf backgrounded, and
134
- mise/atuin/starship/zoxide inits deferred to post-prompt hydration and
135
- cached via `_cached_eval`.
136
- - `mise activate` ordering is a non-issue here: zsh uses `add-zsh-hook`
137
- (appends, no overwrite) and bash manages `PROMPT_COMMAND` explicitly.
138
- - Net: `zsh -ic exit` (which runs before the prompt, so it excludes the
139
- deferred inits) is ~66ms of *eager* rc — dominated by sourcing the large
140
- aggregated alias/function hubs. No safe further quick-win remains.
141
- - **Consequence:** sub-30ms is not reachable by tuning; it needs Phase 4
142
- (manifest → cut the eager alias/function volume) or a lean profile.
143
- fish (~118ms) is the biggest single opportunity (bash-bridge), also
144
- Phase 4.
145
- - Phases 2–7 — planned; sequencing subject to review.
6
+ Current architecture decisions belong in `docs/architecture/`; future roadmap
7
+ items belong in the root roadmap or in GitHub issues and milestones.
@@ -43,17 +43,40 @@ matches and emits standard `lcov.info` that Codecov ingests natively.
43
43
 
44
44
  | Surface | What runs |
45
45
  |---|---|
46
- | **PR + push to main** | `.github/workflows/coverage.yml` → `Coverage / kcov` job → uploads lcov.info to Codecov and fails the build below `MIN_COVERAGE_PCT` (currently `0`, ratcheted up each slice). |
46
+ | **PR + push to main** | `.github/workflows/coverage.yml` → `Coverage / kcov` job → uploads lcov.info to Codecov and fails the build below `MIN_COVERAGE_PCT` (currently `58`, ratcheted up after measured integer-floor gains). |
47
47
  | **Local dev** | `bash tools/ci/run-coverage.sh` — works on Linux + macOS (xtrace is a bash primitive, no platform tools needed). |
48
- | **macOS dev** | Supported. xtrace-based instrumentation runs on macOS bash 3.2+ and Homebrew bash 5.x. |
48
+ | **macOS dev** | Supported. xtrace-based instrumentation runs on macOS bash 3.2+ and Homebrew bash 5.x, with a Perl alarm fallback when GNU `timeout`/`gtimeout` is unavailable. |
49
49
 
50
50
  ## The current floor
51
51
 
52
- `MIN_COVERAGE_PCT=0` in `.github/workflows/coverage.yml`. Slice 1
52
+ `MIN_COVERAGE_PCT=58` in `.github/workflows/coverage.yml`. Slice 1
53
53
  of [#883](https://github.com/sebastienrousseau/dotfiles/issues/883)
54
54
  established the baseline at **~2.7% measured** (~613 of ~22 500 lines
55
55
  across 231 files). Successive slices raised it; the current measured
56
- value sits at **~47%**.
56
+ value sits at **59.32%** (`7523/12682` lines, measured on v0.2.513; gate floored at 58 for local<->CI drift + run variance). This release now traces both mandatory unit and regression suites, replays the function exerciser's captured xtrace, and caches source-path normalization so aggregation completes in seconds instead of minutes. It builds on the earlier parser correction for nested Bash execution prefixes and deterministic branch-driving tests for Scorecard snapshots, examples coverage, and `httpdebug`. It builds on the eighth core
57
+ coverage-ratchet slice, which added `jwt` portability coverage and
58
+ branch-driving function coverage for `apihealth`, `apiload`, and
59
+ `apilatency`. This builds on the prior helper slice that drove
60
+ `scripts/dot/commands/restore.sh` to 75.17%,
61
+ `scripts/dot/commands/meta.sh` to 66.88%, `lib/dot/log.sh` to 59.56%,
62
+ and `scripts/dot/commands/diagnostics.sh` to 49.63%, with additional
63
+ git AI, hashsum, regex, jsonv, gl, and hex helper branch coverage.
64
+ This builds on the prior core slice (`scripts/dot/commands/init.sh` at 72.09%,
65
+ `scripts/dot/commands/manual.sh` at 62.50%,
66
+ `scripts/dot/commands/core.sh` at 55.86%, and
67
+ `scripts/dot/commands/secrets.sh` at 54.97%), the prior
68
+ AI command slice (`defaults/dot_local/bin/executable_dot-ai-proxy` at
69
+ 76.00%, `scripts/dot/commands/agents.sh` at 66.15%, and
70
+ `scripts/dot/commands/completion.sh` at 45.68%), the registry slice
71
+ (`scripts/dot/commands/registry.sh` at 65.03%) and the macOS
72
+ coverage-runner Perl timeout fallback, the aliases slice
73
+ (`scripts/dot/commands/aliases.sh` at 70.00%), the tools/version-sync
74
+ slice (`scripts/dot/commands/tools.sh` at 72.85%, `lib/dot/utils.sh` at
75
+ 73.24%, and `scripts/version-sync.sh` at 36.53%), the first core slice
76
+ for `lib/dot/ui.sh`, and the #954 deep-branch pass for
77
+ `scripts/theme/switch.sh`,
78
+ `scripts/diagnostics/mcp-doctor.sh`, and Linux/WSL branches in
79
+ `scripts/diagnostics/doctor.sh`.
57
80
 
58
81
  To tighten:
59
82
 
@@ -66,10 +89,9 @@ To tighten:
66
89
 
67
90
  ### Why not the 95% target from #883
68
91
 
69
- The roadmap originally targeted ≥95% measured. After working through
70
- all six slices, the achievable ceiling with xtrace-only instrumentation
71
- is closer to **~50%** on this codebase. The remaining gap is structural,
72
- not aspirational:
92
+ The roadmap originally targeted ≥95% measured. The current xtrace-only
93
+ measurement is **59.32%** on this codebase. The remaining gap is largely
94
+ structural:
73
95
 
74
96
  - **System-mutation surface** — large parts of the repo orchestrate
75
97
  real OS state (`chezmoi apply`, `gpg`, `pass`/`age` keystores,