@sebastienrousseau/dotfiles 0.2.511 → 0.2.512

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 (55) hide show
  1. package/CHANGELOG.md +42 -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/02-tutorials/02-add-wallpaper.md +6 -6
  9. package/docs/manual/02-tutorials/03-create-profile.md +1 -1
  10. package/docs/manual/02-tutorials/05-deploy-fleet.md +1 -1
  11. package/docs/manual/03-reference/02-config-files.md +1 -1
  12. package/docs/manual/command-index.md +1 -0
  13. package/docs/operations/ARCHITECTURE_ROADMAP.md +5 -143
  14. package/docs/operations/COVERAGE.md +27 -4
  15. package/docs/operations/ROADMAP.md +3 -159
  16. package/docs/operations/ROADMAP_2026.md +5 -663
  17. package/docs/operations/ROADMAP_V0_2_503.md +5 -129
  18. package/docs/reference/THEMES.md +1 -1
  19. package/docs/reference/TOOLS.md +1 -0
  20. package/docs/reference/UTILS.md +1 -0
  21. package/install.sh +5 -5
  22. package/package.json +1 -1
  23. package/scripts/diagnostics/aliases-manifest.sh +33 -6
  24. package/scripts/diagnostics/benchmark.sh +27 -1
  25. package/scripts/diagnostics/doctor.sh +18 -11
  26. package/scripts/diagnostics/health.sh +8 -3
  27. package/scripts/diagnostics/mcp-doctor.sh +3 -0
  28. package/scripts/diagnostics/secret-governance.sh +7 -1
  29. package/scripts/diagnostics/security-score.sh +14 -5
  30. package/scripts/diagnostics/verify_state.sh +9 -1
  31. package/scripts/dot/commands/ai.sh +37 -30
  32. package/scripts/dot/commands/aliases.sh +28 -4
  33. package/scripts/dot/commands/appearance.sh +16 -0
  34. package/scripts/dot/commands/core.sh +17 -0
  35. package/scripts/dot/commands/diagnostics.sh +19 -0
  36. package/scripts/dot/commands/manual.sh +4 -4
  37. package/scripts/dot/commands/meta.sh +87 -12
  38. package/scripts/dot/commands/registry.sh +1 -1
  39. package/scripts/dot/commands/secrets.sh +17 -0
  40. package/scripts/dot/commands/security.sh +17 -0
  41. package/scripts/dot/commands/tools.sh +19 -0
  42. package/scripts/git-hooks/pre-commit-audit.sh +1 -1
  43. package/scripts/ops/ai-setup.sh +13 -6
  44. package/scripts/ops/bundle.sh +31 -5
  45. package/scripts/ops/chezmoi-apply.sh +5 -0
  46. package/scripts/ops/release.sh +14 -5
  47. package/scripts/qa/docs-coverage.sh +1 -1
  48. package/scripts/qa/reliability-audit.sh +2 -2
  49. package/scripts/secrets/age-init.sh +15 -4
  50. package/scripts/theme/apply-gnome-theme.sh +6 -2
  51. package/scripts/theme/extract-theme.py +97 -33
  52. package/scripts/theme/rebuild-themes.sh +240 -35
  53. package/scripts/theme/switch.sh +26 -16
  54. package/scripts/theme/wallpaper-sync.sh +95 -7
  55. package/scripts/version-sync.sh +81 -44
package/CHANGELOG.md CHANGED
@@ -2,6 +2,48 @@
2
2
 
3
3
  This file documents all notable changes to this project.
4
4
 
5
+ ## v0.2.512 — 2026-07-21
6
+
7
+ ### Added
8
+
9
+ - **`dot-ui`** — a shared Bubble Tea (Go) renderer for the `dot` CLI: themed
10
+ tables across all list/table commands, a unified `dot-ui pick` that replaces
11
+ fzf in the theme picker, and a step-runner façade. Degrades gracefully when
12
+ Go is absent, so it never fails a `chezmoi apply`.
13
+ - **AI CLIs** — Kimi Code CLI support, with a Kiri compatibility shim.
14
+ - **Themes** — regenerated the full theme set from the updated wallpaper
15
+ library; system wallpapers are now opt-in (only discovered themes are
16
+ assembled); `bloom-light` is the new default theme.
17
+ - **`corralctl`** — scheduled daily repo sync.
18
+ - Symlink iCloud Drive folders into home.
19
+
20
+ ### Changed
21
+
22
+ - **Theme engine overhaul** — terminals always use the dark palette with an
23
+ AAA light ramp; Apple-consistent light ANSI ramp; accurate wallpaper counts
24
+ and dominant-colour tracking; `dot-theme-sync` now drives through the shared
25
+ UI.
26
+ - **mise** — folded `~/mise.toml` overrides into the managed base layer; bumped
27
+ topgrade to 17.4.0 and dropped the typos pin.
28
+ - Bumped GitHub Actions pins (minor-patch group plus setup-go/node/python,
29
+ codeql-action, and action-gh-release), folding Dependabot #977 and #978.
30
+
31
+ ### Fixed
32
+
33
+ - **Themes / terminals** — readable light-mode palettes (fixed bg/fg with
34
+ AA/AAA ANSI contrast); kitty now renders light themes, is opaque in light
35
+ mode, and gets a runtime reloader; tmux client redraw across all servers so
36
+ existing sessions refresh immediately; regen-proof fallback themes; correct
37
+ macOS accent mapping and per-mode HEIC frame resolution; no workspace freeze
38
+ or WallpaperAgent restart on apply.
39
+ - **git** — render `allowed_signers` and guard it on a missing key / unset
40
+ email.
41
+ - **CI / reliability** — portable `timeout` shim for macOS (real `gtimeout`);
42
+ reliability tests made portable and environment-tolerant; diagnostics
43
+ scorecard to 100; copyright and coverage gate fixes.
44
+ - **aliases** — the CD-completion load-once guard now actually gates.
45
+ - Push the AUR package to `master`, not `main`.
46
+
5
47
  ## v0.2.511 — 2026-07-08
6
48
 
7
49
  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.512-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.512/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.512) - <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.512 — 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
 
@@ -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"
@@ -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 `49`, 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=49` 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 **50.16%** (`6205/12371` lines, re-measured on the merged tree; gate floored at 49 for local<->CI drift + run variance) after the eighth core
57
+ coverage-ratchet slice 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