@sebastienrousseau/dotfiles 0.2.499 → 0.2.501

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 (567) hide show
  1. package/CHANGELOG.md +452 -0
  2. package/LICENSE +1283 -0
  3. package/README.md +322 -0
  4. package/docs/.vitepress/reports/localization-readability-audit.md +73 -0
  5. package/docs/AI.md +108 -0
  6. package/docs/CNAME +1 -0
  7. package/docs/COPYRIGHT +4 -3
  8. package/docs/NAMING_CONVENTIONS.md +102 -0
  9. package/docs/README.md +82 -0
  10. package/docs/_config.yml +59 -0
  11. package/docs/adr/ADR-001-ci-cd-pipeline.md +118 -0
  12. package/docs/adr/ADR-002-shell-performance.md +130 -0
  13. package/docs/adr/ADR-003-security-first.md +158 -0
  14. package/docs/adr/ADR-004-cli-architecture.md +171 -0
  15. package/docs/adr/ADR-005-chezmoi-choice.md +99 -0
  16. package/docs/adr/ADR-006-shell-selection.md +124 -0
  17. package/docs/adr/ADR-007-multi-shell-parity.md +62 -0
  18. package/docs/adr/ADR-008-alias-system-architecture.md +95 -0
  19. package/docs/adr/ADR-009-wallpaper-driven-theming.md +131 -0
  20. package/docs/adr/ADR-010-starship-transient-prompt.md +144 -0
  21. package/docs/adr/ADR-011-nushell-tier3-keep.md +144 -0
  22. package/docs/adr/README.md +39 -0
  23. package/docs/architecture/ARCHITECTURE.md +117 -0
  24. package/docs/architecture/INTEROP.md +44 -0
  25. package/docs/architecture/REPO_LAYOUT.md +241 -0
  26. package/docs/architecture/WALKTHROUGH.md +86 -0
  27. package/docs/architecture/fleet-deployment.md +77 -0
  28. package/docs/archive/EUXIS_2026_REVIEW.md +127 -0
  29. package/docs/archive/LEGACY_ROADMAP.md +160 -0
  30. package/docs/archive/MILESTONE_v0.2.493.md +47 -0
  31. package/docs/{PLAN.md → archive/PLAN.md} +50 -12
  32. package/docs/archive/REPO_AUDIT.md +31 -0
  33. package/docs/guides/INSTALL.md +144 -0
  34. package/docs/guides/NEOVIM_IDE_GUIDE.md +61 -0
  35. package/docs/guides/THEMING.md +230 -0
  36. package/docs/guides/TROUBLESHOOTING.md +176 -0
  37. package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +792 -0
  38. package/docs/index.md +43 -0
  39. package/docs/interop/A2A.md +39 -0
  40. package/docs/interop/POWERSHELL.md +102 -0
  41. package/docs/manual/00-introduction.md +89 -0
  42. package/docs/manual/01-concepts/01-architecture.md +138 -0
  43. package/docs/manual/01-concepts/02-trust-model.md +182 -0
  44. package/docs/manual/01-concepts/03-theme-engine.md +186 -0
  45. package/docs/manual/01-concepts/04-fleet.md +148 -0
  46. package/docs/manual/01-concepts/05-self-healing.md +204 -0
  47. package/docs/manual/02-tutorials/01-first-install.md +197 -0
  48. package/docs/manual/02-tutorials/02-add-wallpaper.md +216 -0
  49. package/docs/manual/02-tutorials/03-create-profile.md +244 -0
  50. package/docs/manual/02-tutorials/04-encrypt-secret.md +281 -0
  51. package/docs/manual/02-tutorials/05-deploy-fleet.md +283 -0
  52. package/docs/manual/03-reference/01-dot-cli.md +417 -0
  53. package/docs/manual/03-reference/02-config-files.md +265 -0
  54. package/docs/manual/03-reference/03-environment.md +124 -0
  55. package/docs/manual/03-reference/04-templates.md +190 -0
  56. package/docs/manual/03-reference/05-feature-flags.md +128 -0
  57. package/docs/manual/04-cookbook/01-recipes.md +285 -0
  58. package/docs/manual/04-cookbook/02-troubleshooting.md +351 -0
  59. package/docs/manual/04-cookbook/03-faq.md +175 -0
  60. package/docs/manual/05-appendices/A-platform-matrix.md +101 -0
  61. package/docs/manual/05-appendices/B-security-checklist.md +84 -0
  62. package/docs/manual/05-appendices/C-glossary.md +40 -0
  63. package/docs/manual/05-appendices/D-bibliography.md +58 -0
  64. package/docs/manual/05-appendices/E-license.md +38 -0
  65. package/docs/manual/_toc.yml +58 -0
  66. package/docs/manual/command-index.md +62 -0
  67. package/docs/manual/concept-index.md +168 -0
  68. package/docs/operations/ATTESTATION.md +44 -0
  69. package/docs/operations/CI_CADENCE.md +107 -0
  70. package/docs/operations/CI_COMPOSITES.md +156 -0
  71. package/docs/operations/COMPLETIONS.md +123 -0
  72. package/docs/operations/COVERAGE.md +148 -0
  73. package/docs/operations/DRIFT.md +107 -0
  74. package/docs/operations/MAINTENANCE.md +63 -0
  75. package/docs/operations/MIGRATION.md +109 -0
  76. package/docs/operations/OPERATIONS.md +188 -0
  77. package/docs/operations/PERFORMANCE.md +133 -0
  78. package/docs/operations/RELIABILITY.md +122 -0
  79. package/docs/{ROADMAP.md → operations/ROADMAP.md} +57 -39
  80. package/docs/operations/TESTING.md +199 -0
  81. package/docs/operations/TRACEABILITY.md +35 -0
  82. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +65 -0
  83. package/docs/operations/VERSION_SYNC.md +393 -0
  84. package/docs/reference/ALIASES.md +131 -0
  85. package/docs/reference/ALIASES_CHEATSHEET.md +32 -0
  86. package/docs/reference/ALIASES_DEPRECATIONS.md +13 -0
  87. package/docs/reference/FEATURES.md +66 -0
  88. package/docs/reference/FONTS.md +112 -0
  89. package/docs/reference/PROFILES.md +69 -0
  90. package/docs/reference/SCREENSHOTS.md +121 -0
  91. package/docs/reference/SCRIPTS.md +71 -0
  92. package/docs/reference/SUPPORT_MATRIX.md +80 -0
  93. package/docs/reference/THEMES.md +117 -0
  94. package/docs/reference/TOOLS.md +109 -0
  95. package/docs/reference/UTILS.md +155 -0
  96. package/docs/security/AI_ACT_COMPLIANCE.md +94 -0
  97. package/docs/security/AUDIT_BYPASS.md +103 -0
  98. package/docs/security/AUTOMATION_SECRETS.md +26 -0
  99. package/docs/security/CI_EGRESS_ALLOWLIST.md +127 -0
  100. package/docs/security/COMPLIANCE.md +458 -0
  101. package/docs/security/DEPS_DEV_EXCEPTIONS.md +86 -0
  102. package/docs/security/ENCRYPTION.md +57 -0
  103. package/docs/security/FMEA.md +159 -0
  104. package/docs/security/HISTORY_FILTERING.md +132 -0
  105. package/docs/security/INCIDENT_RESPONSE.md +579 -0
  106. package/docs/security/INSTALL_VERIFICATION.md +122 -0
  107. package/docs/security/KEYS.md +49 -0
  108. package/docs/security/KEY_ROTATION.md +223 -0
  109. package/docs/security/MCP_POLICY.md +78 -0
  110. package/docs/security/POLICY_RELEASES.md +37 -0
  111. package/docs/security/README.md +28 -0
  112. package/docs/security/SCORECARD.md +80 -0
  113. package/docs/security/SECRETS.md +158 -0
  114. package/docs/security/SECURITY.md +45 -0
  115. package/docs/security/SECURITY_CHECKLIST.md +55 -0
  116. package/docs/security/SHELL_EXEMPTIONS.md +145 -0
  117. package/docs/security/SOUP_REGISTER.md +36 -0
  118. package/docs/security/THREAT_MODEL.md +130 -0
  119. package/docs/security/VERIFICATION_VALIDATION.md +228 -0
  120. package/docs/themes/README.md +10 -0
  121. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +30 -0
  122. package/docs/themes/hero-shot.svg +78 -0
  123. package/dot_config/.module-manifest.json +69 -0
  124. package/dot_config/ai/identity.md +23 -0
  125. package/dot_config/ai/patterns/architect.md +16 -0
  126. package/dot_config/ai/patterns/hardener.md +15 -0
  127. package/dot_config/ai/patterns/refactor.md +15 -0
  128. package/dot_config/aider/aider.conf.yml +32 -0
  129. package/dot_config/alacritty/alacritty.toml.tmpl +55 -0
  130. package/dot_config/ansible/ansible.cfg +11 -0
  131. package/dot_config/atuin/config.toml.tmpl +47 -0
  132. package/dot_config/bat/config +23 -0
  133. package/dot_config/brave-flags.conf.tmpl +7 -0
  134. package/dot_config/btop/btop.conf +16 -0
  135. package/dot_config/btop/themes/tokyonight.theme +34 -0
  136. package/dot_config/bun/bunfig.toml.tmpl +33 -0
  137. package/dot_config/claude/mcp_servers.json +20 -0
  138. package/dot_config/containers/containers.conf +14 -0
  139. package/dot_config/curl/dot_curlrc +18 -0
  140. package/dot_config/dlv/config.yml +39 -0
  141. package/dot_config/docker/config.json +15 -0
  142. package/dot_config/dotfiles/agent-card.json +29 -0
  143. package/dot_config/dotfiles/agent-profiles.json +92 -0
  144. package/dot_config/dotfiles/boot/README.md +13 -0
  145. package/dot_config/dotfiles/grub/README.md +13 -0
  146. package/dot_config/dotfiles/lock/README.md +13 -0
  147. package/dot_config/dotfiles/mcp-lock.json +33 -0
  148. package/dot_config/dotfiles/mcp-policy.json +52 -0
  149. package/dot_config/dotfiles/mcp-registry.json +47 -0
  150. package/dot_config/dotfiles/model-registry.json +20 -0
  151. package/dot_config/dotfiles/policy-bundles.json +38 -0
  152. package/dot_config/dotfiles/prompt-registry.json +16 -0
  153. package/dot_config/dotfiles/versions.env +18 -0
  154. package/dot_config/duf/duf.conf +6 -0
  155. package/dot_config/duti/defaults.duti +5 -0
  156. package/dot_config/emoji/emoji.txt +34 -0
  157. package/dot_config/environment.d/50-ssh-agent.conf +2 -0
  158. package/dot_config/environment.d/90-wayland.conf +19 -0
  159. package/dot_config/fastfetch/config.jsonc +28 -0
  160. package/dot_config/firefox/user.js.tmpl +58 -0
  161. package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +9 -0
  162. package/dot_config/fish/completions/dot.fish.tmpl +115 -0
  163. package/dot_config/fish/conf.d/000-perf-cache.fish +56 -0
  164. package/dot_config/fish/conf.d/aliases.fish.tmpl +77 -0
  165. package/dot_config/fish/conf.d/env.fish.tmpl +48 -0
  166. package/dot_config/fish/conf.d/functions.fish.tmpl +22 -0
  167. package/dot_config/fish/conf.d/init.fish.tmpl +172 -0
  168. package/dot_config/fish/config.fish.tmpl +44 -0
  169. package/dot_config/fish/fish_plugins +1 -0
  170. package/dot_config/fish/functions/_.fish +3 -0
  171. package/dot_config/fish/functions/_cached_eval.fish +131 -0
  172. package/dot_config/fish/functions/_cached_eval_clear.fish +17 -0
  173. package/dot_config/fish/functions/als.fish +46 -0
  174. package/dot_config/fish/functions/bg-upgrade.fish +7 -0
  175. package/dot_config/fish/functions/c.fish +3 -0
  176. package/dot_config/fish/functions/cat.fish +9 -0
  177. package/dot_config/fish/functions/d.fish +7 -0
  178. package/dot_config/fish/functions/dot.fish +34 -0
  179. package/dot_config/fish/functions/h.fish +3 -0
  180. package/dot_config/fish/functions/l.fish +7 -0
  181. package/dot_config/fish/functions/la.fish +7 -0
  182. package/dot_config/fish/functions/ll.fish +7 -0
  183. package/dot_config/fish/functions/log_error.fish +13 -0
  184. package/dot_config/fish/functions/log_info.fish +13 -0
  185. package/dot_config/fish/functions/lr.fish +7 -0
  186. package/dot_config/fish/functions/lra.fish +7 -0
  187. package/dot_config/fish/functions/ls.fish +7 -0
  188. package/dot_config/fish/functions/lt.fish +7 -0
  189. package/dot_config/fish/functions/lta.fish +7 -0
  190. package/dot_config/fish/functions/notify-run.fish +11 -0
  191. package/dot_config/fish/functions/q.fish +3 -0
  192. package/dot_config/fish/functions/silent-run.fish +7 -0
  193. package/dot_config/fish/functions/yy.fish +8 -0
  194. package/dot_config/flatpak/flatpak.list +4 -0
  195. package/dot_config/fontconfig/fonts.conf.tmpl +57 -0
  196. package/dot_config/foot/foot.ini.tmpl +33 -0
  197. package/dot_config/fuzzel/fuzzel.ini.tmpl +18 -0
  198. package/dot_config/fzf/fzf.zsh +48 -0
  199. package/dot_config/gem/gemrc +9 -0
  200. package/dot_config/gh/config.yml +12 -0
  201. package/dot_config/ghostty/config.tmpl +165 -0
  202. package/dot_config/git/allowed_signers.tmpl +18 -0
  203. package/dot_config/git/attributes +12 -0
  204. package/dot_config/git/commit-template +10 -0
  205. package/dot_config/git/hooks/executable_commit-msg +146 -0
  206. package/dot_config/git/ignore +27 -0
  207. package/dot_config/gnupg/gpg-agent.conf +11 -0
  208. package/dot_config/go/golangci.yml +118 -0
  209. package/dot_config/go/gopls.json +30 -0
  210. package/dot_config/goose/config.yaml +29 -0
  211. package/dot_config/gtk-3.0/gtk.css.tmpl +184 -0
  212. package/dot_config/gtk-3.0/settings.ini.tmpl +27 -0
  213. package/dot_config/gtk-4.0/gtk.css.tmpl +252 -0
  214. package/dot_config/gtk-4.0/settings.ini.tmpl +18 -0
  215. package/dot_config/htop/htoprc +20 -0
  216. package/dot_config/inputrc +2 -0
  217. package/dot_config/ipython/profile_default/ipython_config.py +19 -0
  218. package/dot_config/just/justfile +122 -0
  219. package/dot_config/k9s/config.yaml +65 -0
  220. package/dot_config/k9s/skins/catppuccin-mocha.yaml +116 -0
  221. package/dot_config/kanshi/config.tmpl +22 -0
  222. package/dot_config/karabiner/karabiner.json +14 -0
  223. package/dot_config/kitty/kitty.conf.tmpl +53 -0
  224. package/dot_config/lazydocker/config.yml +186 -0
  225. package/dot_config/lazygit/config.yml +35 -0
  226. package/dot_config/mako/config +47 -0
  227. package/dot_config/mas/masapps.txt +5 -0
  228. package/dot_config/micro/settings.json +3 -0
  229. package/dot_config/mimeapps.list +77 -0
  230. package/dot_config/minikube/config.json +13 -0
  231. package/dot_config/mise/config.toml +99 -0
  232. package/dot_config/mongosh/mongoshrc.js +68 -0
  233. package/dot_config/mpv/input.conf +47 -0
  234. package/dot_config/mpv/mpv.conf +47 -0
  235. package/dot_config/mycli/myclirc +67 -0
  236. package/dot_config/nano/nanorc +28 -0
  237. package/dot_config/ncdu/config +12 -0
  238. package/dot_config/niri/config.kdl.tmpl +327 -0
  239. package/dot_config/nushell/aliases.nu +18 -0
  240. package/dot_config/nushell/cached_eval.nu +80 -0
  241. package/dot_config/nushell/completions.nu.tmpl +52 -0
  242. package/dot_config/nushell/config.nu.tmpl +86 -0
  243. package/dot_config/nushell/env.nu.tmpl +102 -0
  244. package/dot_config/nushell/functions.nu.tmpl +17 -0
  245. package/dot_config/nvim/init.lua +18 -0
  246. package/dot_config/nvim/lazy-lock.json +58 -0
  247. package/dot_config/nvim/lua/config/autocmds.lua +107 -0
  248. package/dot_config/nvim/lua/config/keymaps.lua +92 -0
  249. package/dot_config/nvim/lua/config/lazy.lua +44 -0
  250. package/dot_config/nvim/lua/config/options.lua +49 -0
  251. package/dot_config/nvim/lua/plugins/ai.lua +75 -0
  252. package/dot_config/nvim/lua/plugins/coding.lua +216 -0
  253. package/dot_config/nvim/lua/plugins/completion.lua +60 -0
  254. package/dot_config/nvim/lua/plugins/dap.lua +412 -0
  255. package/dot_config/nvim/lua/plugins/editor.lua +55 -0
  256. package/dot_config/nvim/lua/plugins/git.lua +10 -0
  257. package/dot_config/nvim/lua/plugins/lsp.lua +156 -0
  258. package/dot_config/nvim/lua/plugins/markdown.lua +18 -0
  259. package/dot_config/nvim/lua/plugins/rust.lua +34 -0
  260. package/dot_config/nvim/lua/plugins/sessions.lua +33 -0
  261. package/dot_config/nvim/lua/plugins/ui.lua +509 -0
  262. package/dot_config/paru/paru.conf +10 -0
  263. package/dot_config/pip/pip.conf.tmpl +32 -0
  264. package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +81 -0
  265. package/dot_config/pueue/pueue.yml +34 -0
  266. package/dot_config/pypoetry/config.toml +6 -0
  267. package/dot_config/pyrightconfig.json +5 -0
  268. package/dot_config/raycast/README.md +13 -0
  269. package/dot_config/redis/redisclirc +41 -0
  270. package/dot_config/ripgrep/ripgreprc +21 -0
  271. package/dot_config/shell/00-core-paths.sh.tmpl +134 -0
  272. package/dot_config/shell/05-core-safety.sh +48 -0
  273. package/dot_config/shell/10-secrets.sh +41 -0
  274. package/dot_config/shell/40-fzf-defaults.sh.tmpl +17 -0
  275. package/dot_config/shell/40-ls-colors.sh +49 -0
  276. package/dot_config/shell/50-logic-functions-core.sh.tmpl +11 -0
  277. package/dot_config/shell/50-logic-functions.sh.tmpl +11 -0
  278. package/dot_config/shell/51-logic-functions-extra.sh.tmpl +65 -0
  279. package/dot_config/shell/90-ux-aliases.sh.tmpl +121 -0
  280. package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +55 -0
  281. package/dot_config/shell/Brewfile +207 -0
  282. package/dot_config/shell/Brewfile.cask +92 -0
  283. package/dot_config/shell/Brewfile.cli +127 -0
  284. package/dot_config/shell/README.md +284 -0
  285. package/dot_config/shell/als_data.txt.tmpl +65 -0
  286. package/dot_config/shell/custom/auto_ls.zsh +20 -0
  287. package/dot_config/shell/custom/context_suggest.zsh +68 -0
  288. package/dot_config/shell/custom/error_analysis.zsh +45 -0
  289. package/dot_config/sops/dot_sops.yaml +23 -0
  290. package/dot_config/starship.toml.tmpl +202 -0
  291. package/dot_config/swaylock/config +43 -0
  292. package/dot_config/systemd/user/dotfiles-maintenance.service +8 -0
  293. package/dot_config/systemd/user/dotfiles-maintenance.timer +11 -0
  294. package/dot_config/systemd/user/pueued.service +12 -0
  295. package/dot_config/systemd/user/ssh-agent.service +12 -0
  296. package/dot_config/task/Taskfile.yml +86 -0
  297. package/dot_config/tflint/tflint.hcl +9 -0
  298. package/dot_config/tmux/tmux.conf.tmpl +223 -0
  299. package/dot_config/topgrade.toml.tmpl +54 -0
  300. package/dot_config/user-dirs.dirs +10 -0
  301. package/dot_config/vscode/extensions.txt +11 -0
  302. package/dot_config/vscode/settings.json.tmpl +82 -0
  303. package/dot_config/waybar/config.jsonc.tmpl +90 -0
  304. package/dot_config/waybar/style.css.tmpl +211 -0
  305. package/dot_config/wezterm/wezterm.lua.tmpl +64 -0
  306. package/dot_config/wget/wgetrc +12 -0
  307. package/dot_config/xdg-desktop-portal/niri-portals.conf +5 -0
  308. package/dot_config/yarn/yarnrc.yml +36 -0
  309. package/dot_config/yazi/keymap.toml +67 -0
  310. package/dot_config/yazi/theme.toml +102 -0
  311. package/dot_config/yazi/yazi.toml +40 -0
  312. package/dot_config/zathura/zathurarc +52 -0
  313. package/dot_config/zellij/config.kdl.tmpl +79 -0
  314. package/dot_config/zsh/dot_zprofile +7 -0
  315. package/dot_config/zsh/dot_zshenv +5 -0
  316. package/dot_config/zsh/dot_zshrc.tmpl +635 -0
  317. package/dot_config/zsh/rc.d/00-alias-shims.zsh +99 -0
  318. package/dot_config/zsh/rc.d/05-ssh-agent.zsh +18 -0
  319. package/dot_config/zsh/rc.d/10-env.zsh.tmpl +28 -0
  320. package/dot_config/zsh/rc.d/20-zinit.zsh +65 -0
  321. package/dot_config/zsh/rc.d/30-options.zsh.tmpl +214 -0
  322. package/dot_config/zsh/rc.d/40-bell.zsh +20 -0
  323. package/dot_config/zsh/rc.d/50-login-fortune.zsh +9 -0
  324. package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +32 -0
  325. package/dot_local/bin/executable_ai-update +195 -0
  326. package/dot_local/bin/executable_ai_core +152 -0
  327. package/dot_local/bin/executable_antigravity +11 -0
  328. package/dot_local/bin/executable_b64 +84 -0
  329. package/dot_local/bin/executable_bm +79 -0
  330. package/dot_local/bin/executable_cb +39 -0
  331. package/dot_local/bin/executable_dot +596 -0
  332. package/dot_local/bin/executable_dot-ai +36 -0
  333. package/dot_local/bin/executable_dot-bootstrap +77 -0
  334. package/dot_local/bin/executable_dot-launch-or-focus +52 -0
  335. package/dot_local/bin/executable_dot-load-benchmark +31 -0
  336. package/dot_local/bin/executable_dot-load-benchmark-pty +77 -0
  337. package/dot_local/bin/executable_dot-theme-sync +952 -0
  338. package/dot_local/bin/executable_dot_completion +57 -0
  339. package/dot_local/bin/executable_dtags +28 -0
  340. package/dot_local/bin/executable_epoch +67 -0
  341. package/dot_local/bin/executable_extract +41 -0
  342. package/dot_local/bin/executable_gbd +52 -0
  343. package/dot_local/bin/executable_gd +42 -0
  344. package/dot_local/bin/executable_git-ai-commit +175 -0
  345. package/dot_local/bin/executable_git-ai-diff +169 -0
  346. package/dot_local/bin/executable_gl +101 -0
  347. package/dot_local/bin/executable_hash +161 -0
  348. package/dot_local/bin/executable_hashsum +160 -0
  349. package/dot_local/bin/executable_hex +115 -0
  350. package/dot_local/bin/executable_jsonv +78 -0
  351. package/dot_local/bin/executable_jwt +94 -0
  352. package/dot_local/bin/executable_kill-port +75 -0
  353. package/dot_local/bin/executable_lorem +118 -0
  354. package/dot_local/bin/executable_mkscript +35 -0
  355. package/dot_local/bin/executable_monitor +56 -0
  356. package/dot_local/bin/executable_myip +51 -0
  357. package/dot_local/bin/executable_notify +24 -0
  358. package/dot_local/bin/executable_open +38 -0
  359. package/dot_local/bin/executable_pw +27 -0
  360. package/dot_local/bin/executable_rec-start +46 -0
  361. package/dot_local/bin/executable_rec-stop +35 -0
  362. package/dot_local/bin/executable_regex +132 -0
  363. package/dot_local/bin/executable_start-niri +8 -0
  364. package/dot_local/bin/executable_tmux-sessionizer +314 -0
  365. package/dot_local/bin/executable_tour +177 -0
  366. package/dot_local/bin/executable_up +23 -0
  367. package/dot_local/bin/executable_update +142 -0
  368. package/dot_local/bin/executable_uuid +87 -0
  369. package/dot_local/bin/executable_win +32 -0
  370. package/dot_local/bin/executable_yamlv +57 -0
  371. package/dot_local/share/bash-completion/completions/dot +72 -0
  372. package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
  373. package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
  374. package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
  375. package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
  376. package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
  377. package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
  378. package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
  379. package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
  380. package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
  381. package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
  382. package/dot_local/share/man/man1/dot.1 +149 -0
  383. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +64 -0
  384. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +18 -0
  385. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +13 -0
  386. package/dot_local/share/wayland-sessions/niri.desktop.tmpl +6 -0
  387. package/dot_local/share/zsh/completions/.keep +0 -0
  388. package/dot_local/share/zsh/completions/_dot +283 -0
  389. package/install.sh +350 -0
  390. package/package.json +1 -1
  391. package/scripts/ci/check-copyright-headers.sh +96 -0
  392. package/scripts/ci/check-dangerous-chmod.sh +19 -0
  393. package/scripts/ci/check-deps-dev.sh +236 -0
  394. package/scripts/ci/check-insecure-tls.sh +61 -0
  395. package/scripts/ci/check-regression-traceability.sh +67 -0
  396. package/scripts/ci/check-shell-preamble.sh +106 -0
  397. package/scripts/ci/guard-gitleaks-checkout.sh +57 -0
  398. package/scripts/ci/install-chezmoi-verified.sh +64 -0
  399. package/scripts/ci/run-coverage.sh +362 -0
  400. package/scripts/ci/validate-chezmoidata.sh +25 -0
  401. package/scripts/ci/validate-ci-config.sh +224 -0
  402. package/scripts/demo/record.sh +42 -0
  403. package/scripts/diagnostics/a2a-conformance.sh +162 -0
  404. package/scripts/diagnostics/alias-governance.sh +137 -0
  405. package/scripts/diagnostics/aliases-cheatsheet.sh +73 -0
  406. package/scripts/diagnostics/aliases-manifest.sh +31 -0
  407. package/scripts/diagnostics/benchmark.sh +381 -0
  408. package/scripts/diagnostics/conflicts.sh +72 -0
  409. package/scripts/diagnostics/doctor-unified.sh +38 -0
  410. package/scripts/diagnostics/doctor.sh +709 -0
  411. package/scripts/diagnostics/drift-dashboard.sh +201 -0
  412. package/scripts/diagnostics/health.sh +614 -0
  413. package/scripts/diagnostics/history-analysis.sh +85 -0
  414. package/scripts/diagnostics/mcp-doctor.sh +575 -0
  415. package/scripts/diagnostics/perf.sh +452 -0
  416. package/scripts/diagnostics/scorecard.sh +118 -0
  417. package/scripts/diagnostics/secret-governance.sh +58 -0
  418. package/scripts/diagnostics/security-score.sh +438 -0
  419. package/scripts/diagnostics/smoke-test.sh +87 -0
  420. package/scripts/diagnostics/snapshot.sh +89 -0
  421. package/scripts/diagnostics/verify.sh +107 -0
  422. package/scripts/{verify_state.sh → diagnostics/verify_state.sh} +22 -22
  423. package/scripts/diagnostics/version-locks.sh +79 -0
  424. package/scripts/diagnostics/workstation-attestation.sh +186 -0
  425. package/scripts/docs/build-manual.sh +883 -0
  426. package/scripts/docs/check-manual.sh +213 -0
  427. package/scripts/dot/commands/agent.sh +474 -0
  428. package/scripts/dot/commands/ai.sh +481 -0
  429. package/scripts/dot/commands/aliases.sh +250 -0
  430. package/scripts/dot/commands/appearance.sh +80 -0
  431. package/scripts/dot/commands/core.sh +185 -0
  432. package/scripts/dot/commands/diagnostics.sh +229 -0
  433. package/scripts/dot/commands/fleet.sh +399 -0
  434. package/scripts/dot/commands/lint.sh +177 -0
  435. package/scripts/dot/commands/manual.sh +168 -0
  436. package/scripts/dot/commands/meta.sh +248 -0
  437. package/scripts/dot/commands/patterns.sh +54 -0
  438. package/scripts/dot/commands/restore.sh +231 -0
  439. package/scripts/dot/commands/secrets.sh +223 -0
  440. package/scripts/dot/commands/security.sh +76 -0
  441. package/scripts/dot/commands/tools.sh +469 -0
  442. package/scripts/dot/data/alias-deprecations.tsv +2 -0
  443. package/scripts/dot/lib/bento.sh +50 -0
  444. package/scripts/dot/lib/log.sh +200 -0
  445. package/scripts/dot/lib/platform.sh +99 -0
  446. package/scripts/dot/lib/ui.sh +518 -0
  447. package/scripts/dot/lib/utils.sh +377 -0
  448. package/scripts/fonts/install-nerd-fonts.sh +68 -0
  449. package/scripts/fonts/patch-fonts.sh +35 -0
  450. package/scripts/git-hooks/install.sh +11 -0
  451. package/scripts/git-hooks/pre-commit +12 -0
  452. package/scripts/git-hooks/pre-commit-audit.sh +145 -0
  453. package/scripts/git-hooks/pre-push +92 -0
  454. package/scripts/git-hooks/prepare-commit-msg +29 -0
  455. package/scripts/lib/secrets_provider.sh +158 -0
  456. package/scripts/maintenance/check-updates.sh +131 -0
  457. package/scripts/ops/ai-setup.sh +55 -0
  458. package/scripts/ops/bundle.sh +77 -0
  459. package/scripts/ops/chaos.sh +49 -0
  460. package/scripts/ops/chezmoi-apply.sh +270 -0
  461. package/scripts/ops/chezmoi-diff.sh +15 -0
  462. package/scripts/ops/chezmoi-remove.sh +45 -0
  463. package/scripts/ops/chezmoi-update.sh +48 -0
  464. package/scripts/ops/heal-chezmoi.sh +86 -0
  465. package/scripts/ops/heal-system.sh +128 -0
  466. package/scripts/ops/heal-tools.sh +340 -0
  467. package/scripts/ops/heal.sh +222 -0
  468. package/scripts/ops/post-apply-repair.sh +106 -0
  469. package/scripts/ops/prewarm.sh +127 -0
  470. package/scripts/ops/release.sh +252 -0
  471. package/scripts/ops/rollback.sh +589 -0
  472. package/scripts/ops/setup.sh +137 -0
  473. package/scripts/ops/teleport.sh +33 -0
  474. package/scripts/qa/coverage-baseline.sh +60 -0
  475. package/scripts/qa/docs-coverage.sh +111 -0
  476. package/scripts/qa/powershell-contract.ps1 +95 -0
  477. package/scripts/qa/reliability-audit.sh +138 -0
  478. package/scripts/qa/traceability-coverage.sh +116 -0
  479. package/scripts/qa/validate-examples.sh +26 -0
  480. package/scripts/qa/wsl-contract.sh +11 -0
  481. package/scripts/release/package-policy-bundles.sh +125 -0
  482. package/scripts/secrets/age-init.sh +70 -0
  483. package/scripts/secrets/create-secrets-file.sh +45 -0
  484. package/scripts/secrets/encrypt-ssh-key.sh +43 -0
  485. package/scripts/security/backup.sh +57 -0
  486. package/scripts/security/dns-doh.sh +51 -0
  487. package/scripts/security/encryption-check.sh +54 -0
  488. package/scripts/security/enforce-policies.sh +334 -0
  489. package/scripts/security/firewall.sh +90 -0
  490. package/scripts/security/lock-configs.sh +57 -0
  491. package/scripts/security/lock-screen.sh +55 -0
  492. package/scripts/security/manage-secrets.sh +428 -0
  493. package/scripts/security/ssh-cert.sh +203 -0
  494. package/scripts/security/telemetry-kill.sh +50 -0
  495. package/scripts/security/usb-safety.sh +51 -0
  496. package/scripts/theme/apply-gnome-theme.sh +328 -0
  497. package/scripts/theme/extract-theme.py +677 -0
  498. package/scripts/theme/install-boot-logo.sh +62 -0
  499. package/scripts/theme/install-catppuccin-themes.sh +370 -0
  500. package/scripts/theme/install-cursors.sh +25 -0
  501. package/scripts/theme/install-file-icons.sh +26 -0
  502. package/scripts/theme/install-grub-theme.sh +61 -0
  503. package/scripts/theme/install-lock-icon.sh +30 -0
  504. package/scripts/theme/merge-wallpaper.sh +145 -0
  505. package/scripts/theme/rebuild-themes.sh +309 -0
  506. package/scripts/theme/switch.sh +431 -0
  507. package/scripts/theme/wallpaper-rotate.sh +136 -0
  508. package/scripts/theme/wallpaper-sync.sh +397 -0
  509. package/scripts/tools/cmatrix.sh +21 -0
  510. package/scripts/{detect-collisions.py → tools/detect-collisions.py} +2 -2
  511. package/scripts/tools/emoji-picker.sh +48 -0
  512. package/scripts/tools/figlet-banner.sh +18 -0
  513. package/scripts/tools/log-rotate.sh +30 -0
  514. package/scripts/tools/lolcat-wrap.sh +19 -0
  515. package/scripts/tools/pipes.sh +48 -0
  516. package/scripts/tuning/linux.sh +185 -0
  517. package/scripts/tuning/macos.sh +55 -0
  518. package/scripts/uninstall.sh +85 -0
  519. package/scripts/version-sync.sh +487 -0
  520. package/templates/chezmoi-data/geekom-a9.toml.example +21 -0
  521. package/templates/chezmoi-data/mac-m1.toml.example +16 -0
  522. package/templates/chezmoi-data/mac-t2-linux.toml.example +21 -0
  523. package/templates/chezmoi-data/surface-pro-7p.toml.example +21 -0
  524. package/templates/projects/go/.github/workflows/ci.yml +31 -0
  525. package/templates/projects/go/README.md +4 -0
  526. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +1 -0
  527. package/templates/projects/go/go.sum +0 -0
  528. package/templates/projects/molecule/README.md +7 -0
  529. package/templates/projects/molecule/converge.yml +7 -0
  530. package/templates/projects/molecule/molecule.yml +16 -0
  531. package/templates/projects/node/.github/workflows/ci.yml +30 -0
  532. package/templates/projects/node/README.md +4 -0
  533. package/templates/projects/node/package-lock.json +12 -0
  534. package/templates/projects/node/src/index.js +1 -0
  535. package/templates/projects/packer/README.md +15 -0
  536. package/templates/projects/packer/main.pkr.hcl +15 -0
  537. package/templates/projects/python/.github/workflows/ci.yml +34 -0
  538. package/templates/projects/python/README.md +4 -0
  539. package/templates/projects/python/pyproject.toml +15 -0
  540. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
  541. package/templates/projects/python/tests/test_basic.py +1 -0
  542. package/docs/ARCHITECTURE.md +0 -62
  543. package/docs/COMPLIANCE.md +0 -47
  544. package/docs/OPERATIONS.md +0 -103
  545. package/docs/PR_DESCRIPTION.md +0 -150
  546. package/docs/ROADMAP_legacy.md +0 -556
  547. package/docs/SECURITY_CHECKLIST.md +0 -25
  548. package/docs/TASK.md +0 -99
  549. package/docs/WALKTHROUGH.md +0 -46
  550. package/scripts/backup.sh +0 -142
  551. package/scripts/banner.sh +0 -20
  552. package/scripts/benchmark.sh +0 -20
  553. package/scripts/build.sh +0 -41
  554. package/scripts/clean.sh +0 -31
  555. package/scripts/compile.sh +0 -54
  556. package/scripts/copy.sh +0 -108
  557. package/scripts/doctor.sh +0 -79
  558. package/scripts/dotfiles.sh +0 -63
  559. package/scripts/download.sh +0 -35
  560. package/scripts/help.sh +0 -57
  561. package/scripts/lock-configs.sh +0 -57
  562. package/scripts/package.sh +0 -46
  563. package/scripts/ssh.sh +0 -55
  564. package/scripts/teleport.sh +0 -23
  565. package/scripts/test-aliases.sh +0 -25
  566. package/scripts/test_smoke.sh +0 -88
  567. package/scripts/unpack.sh +0 -28
@@ -0,0 +1,144 @@
1
+ ---
2
+ render_with_liquid: false
3
+ ---
4
+
5
+ # ADR-010: Enable Starship Transient Prompt in Zsh and Fish
6
+
7
+ ## Status
8
+
9
+ Accepted
10
+
11
+ ## Date
12
+
13
+ 2026-05-12
14
+
15
+ ## Context
16
+
17
+ Starship is the prompt renderer for both zsh and fish in this
18
+ distribution (pinned via `mise.toml`: `starship = "1.24.2"`).
19
+ A typical Starship prompt for this project renders 4–6 lines including
20
+ the directory, git branch + dirty markers, language toolchain version,
21
+ duration of the previous command, and a final `❯` line.
22
+
23
+ By default Starship emits this multi-line prompt on **every** previous
24
+ command as well as the current one. After 50 commands in a session, the
25
+ terminal scrollback contains 200–300 lines of historical prompts — most
26
+ of which only convey context that was relevant at the time the command
27
+ ran. Search through scrollback (Ctrl-r history, copy-paste, screenshots,
28
+ asciinema replay) is noisy.
29
+
30
+ Starship 1.24+ supports a **transient prompt** feature: when a command
31
+ finishes, the prompt that produced it is rewritten to a compact form
32
+ (e.g., `❯`) and the full prompt is re-emitted only at the live editing
33
+ line. The current command always shows the full prompt; history shows
34
+ only the compact form.
35
+
36
+ **Problem:** Reduce scrollback noise without sacrificing the live prompt's
37
+ rich context, and apply it consistently across the two interactive
38
+ shells we support as first-class.
39
+
40
+ **Constraints:**
41
+
42
+ - Must work in zsh and fish (the two Tier-1 shells per ADR-007).
43
+ - Must not interfere with `_cached_eval`'s startup-cost optimization
44
+ (the transient hook fires per-prompt, not per-shell-start).
45
+ - Must not break copy-paste of previous commands: the compact line
46
+ must still be `❯` (or similar) so `<Ctrl-shift-c>` over scrollback
47
+ yields runnable shell content if the user includes the prompt.
48
+
49
+ ## Decision
50
+
51
+ Call Starship's `enable_transience` shell function after the cached
52
+ `starship init` runs in each shell. We share one `starship.toml.tmpl`
53
+ across both shells; the transient prompt content is the existing
54
+ `[character]` block (no separate `[transient_*]` section needed).
55
+
56
+ - **Fish**: `dot_config/fish/conf.d/init.fish.tmpl` calls
57
+ `enable_transience` once the function is defined. `starship init
58
+ fish` defines it via `--print-full-init`. Result: `$fish_transient_prompt`
59
+ flips to `1` and the Enter handler is bound to
60
+ `__starship_transient_execute`. The compact prompt collapses past
61
+ scrollback as soon as the next command runs.
62
+
63
+ - **Zsh**: `dot_config/zsh/dot_zshrc.tmpl` carries the same
64
+ `enable_transience` call, guarded by
65
+ `(( ${+functions[enable_transience]} ))`. **Upstream Starship does
66
+ not ship a zsh-side `enable_transience` function yet** (tracked by
67
+ [starship/starship#3522](https://github.com/starship/starship/issues/3522)).
68
+ The guard returns 0, the block no-ops, and zsh keeps its full multi-
69
+ line prompt in scrollback for now. The code is a forward-compatibility
70
+ hook: when upstream ships the zsh function, the feature activates
71
+ automatically on the next `mise upgrade starship` with no zshrc edit.
72
+
73
+ Alternatives we rejected for zsh:
74
+
75
+ - **Roll our own `zle` widget that rewrites `$PROMPT` on Enter.**
76
+ Possible (the standard recipe overrides `accept-line` with a
77
+ transient widget). Rejected because:
78
+ (a) any hand-rolled implementation will conflict with upstream
79
+ once they ship the official function, forcing a removal,
80
+ (b) Starship's prompt is multi-line and ANSI-coloured; correctly
81
+ rewriting it from a custom widget requires duplicating
82
+ Starship's escape-code generation, which drifts with every
83
+ Starship release,
84
+ (c) it'd run inside `_cached_eval`'s eager-init path, complicating
85
+ the cache-invalidation semantics we documented in ADR-002.
86
+ - **Third-party zsh plugin (e.g. zsh-autocomplete's transient mode).**
87
+ Rejected because the upstream Starship fix is in active discussion
88
+ and a plugin adds a permanent dependency we'd then have to remove.
89
+ - **Disable zsh transient until upstream lands.** The current state.
90
+ Zsh users see the same scrollback density they had before this PR;
91
+ the visible improvement is fish-only. Honest trade-off.
92
+
93
+ - **Transient prompt content**: `❯` plus optional exit-code dot
94
+ (red dot if `$status != 0`). Keep it 1–3 characters so scrollback
95
+ density actually improves.
96
+
97
+ The toggle is exposed in `.chezmoidata.toml` as
98
+ `features.starship_transient = true`. Users on bandwidth-constrained
99
+ terminals (slow SSH, serial console) can flip it off without editing
100
+ the canonical config.
101
+
102
+ ## Consequences
103
+
104
+ ### Positive (fish only, until upstream lands zsh support)
105
+
106
+ - Scrollback is 4–5× denser **in fish**. A 100-command session that previously
107
+ filled the screen 20× over now fills it ~4×.
108
+ - Asciinema recordings (relevant for the showcase commits in #874)
109
+ read much more naturally — fewer screens of historical prompts
110
+ between actions.
111
+ - The live prompt still surfaces all the rich context Starship was
112
+ configured for; only history is compacted.
113
+
114
+ ### Negative
115
+
116
+ - Slightly more complex Starship config; the maintainer must remember
117
+ that `[character]` and `[transient_*]` are distinct modules.
118
+ - Users who rely on visual scanning of historical prompts (e.g., "what
119
+ branch was I on when I ran that?") lose that signal. Mitigation: the
120
+ feature flag.
121
+
122
+ ### Risks
123
+
124
+ - Starship's transient API is stable since 1.16 (2023) but the exact
125
+ config surface evolves. If Starship breaks the schema in a future
126
+ major, the pinned version in `mise.toml` insulates us; we vet new
127
+ releases through `dot upgrade --dry-run` before bumping.
128
+
129
+ ## Alternatives Considered
130
+
131
+ | Alternative | Why rejected |
132
+ |---|---|
133
+ | Single-line Starship prompt | Sacrifices live-prompt richness for the same scrollback-density goal. The transient feature gives both. |
134
+ | Custom zsh `precmd` rewriter | Would have to be reimplemented in fish. Starship already solved it. |
135
+ | Disable Starship entirely on history | Loses the whole reason we use Starship. |
136
+
137
+ ## References
138
+
139
+ - Starship transient prompt docs:
140
+ <https://starship.rs/advanced-config/#transientprompt-and-transientrightprompt-in-zsh>
141
+ - ADR-002 (Shell Performance Optimization) — establishes the
142
+ `_cached_eval` constraint this ADR respects.
143
+ - ADR-007 (Multi-Shell Parity) — establishes zsh + fish as Tier-1.
144
+ - Issue #873 — captures this ADR alongside `llms.txt`.
@@ -0,0 +1,144 @@
1
+ ---
2
+ render_with_liquid: false
3
+ ---
4
+
5
+ # ADR-011: Keep Nushell as Tier-3 Reference with Minimum-Viable Caching
6
+
7
+ ## Status
8
+
9
+ Accepted
10
+
11
+ ## Date
12
+
13
+ 2026-05-13
14
+
15
+ ## Context
16
+
17
+ ADR-007 (Multi-Shell Parity Strategy) classified the three supported
18
+ shells:
19
+
20
+ | Tier | Shells | Definition |
21
+ |---|---|---|
22
+ | Tier 1 (Full) | zsh, bash | Native aliases, functions, lazy loading, `_cached_eval` |
23
+ | Tier 2 (Bridged) | fish | Aliases + functions via bridge, `_cached_eval` |
24
+ | Tier 3 (Compatible) | nushell | Simple aliases only, functions via bash delegation |
25
+
26
+ The 2026 audit (slice 3 of #880's deep-dive) flagged Nushell as a
27
+ maintenance candidate:
28
+
29
+ - < 5% feature parity with zsh.
30
+ - No async / deferred-load support.
31
+ - No equivalent of `_cached_eval` — meaning every Nushell start spawns
32
+ `starship init nu`, `mise activate nu`, `zoxide init nushell`,
33
+ `atuin init nu` as fresh subprocesses, costing 100–200 ms aggregated.
34
+ - 5 config files (`config.nu.tmpl`, `env.nu.tmpl`, `aliases.nu`,
35
+ `completions.nu.tmpl`, `functions.nu.tmpl`) totalling ~270 lines —
36
+ enough to be meaningful, not enough to be self-sustaining.
37
+
38
+ Three paths were proposed:
39
+
40
+ 1. **Keep as-is** — accept the gap, defer maintenance.
41
+ 2. **Reduce to a stub** — leave the config but stop investing.
42
+ 3. **Remove entirely** — delete all references.
43
+
44
+ ## Decision
45
+
46
+ **Keep Nushell as Tier-3 with explicit limitations + a minimum-viable
47
+ `_cached_eval` equivalent.**
48
+
49
+ Specifically:
50
+
51
+ - Ship `dot_config/nushell/cached_eval.nu` — a Nushell module that
52
+ ports the binary-mtime-based init caching pattern from zsh/fish.
53
+ It handles the four tools that matter most for shell start:
54
+ starship, mise, zoxide, atuin. See the Nushell-specific tradeoffs
55
+ in the "Consequences" section below.
56
+ - Wire `env.nu.tmpl` to use the new module so subsequent shells skip
57
+ the subprocess spawns when binaries haven't moved.
58
+ - Continue maintaining the existing `aliases.nu` (hand-curated simple
59
+ aliases — `l`, `ll`, `la`, etc.) but accept that the bash-bridge
60
+ approach for full alias parity isn't worth the complexity.
61
+ - Update `README.md`'s shell list to call Nushell out as "best-effort
62
+ / Tier-3" so users have correct expectations.
63
+ - Reject the "remove entirely" option for now (see Rationale below).
64
+
65
+ ## Rationale
66
+
67
+ **Why not remove**: Nushell is shipped with the canonical `mise`
68
+ toolchain in this repo (it's installable via `mise install nushell`)
69
+ and is gaining adoption in the Rust + data-engineering communities
70
+ that overlap with this distribution's audience. Removing it would
71
+ break promises to a small-but-vocal segment of users. The maintenance
72
+ cost of the current 270-line surface is low.
73
+
74
+ **Why not reduce to a stub**: A stub config is worse than the current
75
+ moderate config — users who type `nu` and get a featureless shell
76
+ without any of the integrations the README promised would feel
77
+ betrayed. Either we keep the shell working well enough to use, or we
78
+ delete it.
79
+
80
+ **Why the minimum-viable cache layer**: The biggest waste on every
81
+ Nushell start was the four uncached subprocess spawns
82
+ (`starship init nu` etc.). Adding mtime-based caching for those costs
83
+ ~50 lines of Nushell code and saves 100–200 ms per shell. That's the
84
+ cheapest meaningful improvement; deeper investments (async hydration,
85
+ plugin system, bash bridge for aliases) await an actual user request.
86
+
87
+ ## Consequences
88
+
89
+ ### Positive
90
+
91
+ - Nushell starts substantially faster than before (TBD — needs
92
+ measurement on a host with all four tools installed). The
93
+ subprocess elimination saves ~50–80 ms per cached tool, per cold
94
+ shell after the cache is populated.
95
+ - The mtime-invalidation pattern matches what zsh / fish do, so a
96
+ contributor familiar with one of the other shells can read the
97
+ Nushell code without learning a new mental model.
98
+ - Explicit Tier-3 documentation avoids the "wait, this is supposed to
99
+ be at parity" surprise.
100
+
101
+ ### Negative
102
+
103
+ - Nushell's parse-time evaluator means we can't wrap source calls in
104
+ the cache function — the caller has to `source <path>` directly.
105
+ Slightly more boilerplate than the zsh/fish APIs.
106
+ - No malware-pattern screening in the cached output. The zsh / fish
107
+ implementations grep for `curl ... | sh`, `nc -e`, etc. before
108
+ sourcing; the Nushell version trusts its inputs. For the four tools
109
+ we ship (`starship`, `mise`, `zoxide`, `atuin`) this is acceptable
110
+ — they're official binaries pinned via `mise.toml`. Future tools
111
+ added to the cache must be similarly trusted.
112
+ - No per-tool timing telemetry. The `EVALCACHE_TIMING` infrastructure
113
+ zsh has (#863) isn't ported. If Nushell perf becomes a sustained
114
+ user concern, this is the next layer to add.
115
+
116
+ ### Risks
117
+
118
+ - Nushell's syntax evolves quickly between 0.x releases. The
119
+ `cached_eval.nu` module uses `path exists`, `ls | get -i modified`,
120
+ and `run-external` which have been stable since 0.86 (Q3 2024).
121
+ If a future Nushell release breaks the API, the module fails fast
122
+ (saving an empty cache file) rather than corrupting state.
123
+ - Cache invalidation by mtime is fragile when the user installs a
124
+ tool via a non-mtime-respecting method (e.g. unpacking a tarball
125
+ with `--no-touch-mtimes`). The fallback is the user running
126
+ `dot prewarm` or deleting `~/.cache/nushell/*.nu`. Documented in
127
+ `docs/operations/PERFORMANCE.md`.
128
+
129
+ ## Alternatives Considered
130
+
131
+ | Alternative | Why rejected |
132
+ |---|---|
133
+ | **Bash bridge for full alias parity** | Adds a `bash --norc --noprofile -c '...'` subprocess on every Nushell start (~30 ms). Defeats the perf gain from the cache layer. |
134
+ | **Port `_cached_eval` 1:1 (malware screen + JSONL telemetry)** | The full zsh implementation is 100+ lines. The Nushell version covers the 80% case at 50 lines; the remaining 20% (advanced features) aren't load-bearing for Tier-3 status. |
135
+ | **Delete Nushell entirely** | See "Why not remove" above. |
136
+ | **Reduce to a stub** | See "Why not reduce to a stub" above. |
137
+
138
+ ## References
139
+
140
+ - [`dot_config/nushell/cached_eval.nu`](../../dot_config/nushell/cached_eval.nu) — the new module.
141
+ - [`dot_config/nushell/env.nu.tmpl`](../../dot_config/nushell/env.nu.tmpl) — adopter.
142
+ - ADR-007 (Multi-Shell Parity Strategy) — establishes the tier definitions.
143
+ - ADR-002 (Shell Performance Optimization Strategy) — establishes `_cached_eval` semantics this module ports.
144
+ - Issue [#880](https://github.com/sebastienrousseau/dotfiles/issues/880).
@@ -0,0 +1,39 @@
1
+ ---
2
+ render_with_liquid: false
3
+ ---
4
+
5
+ # Architecture Decision Records
6
+
7
+ This directory contains Architecture Decision Records (ADRs) that document
8
+ significant architectural decisions made in this project.
9
+
10
+ ## Index
11
+
12
+ | ADR | Title | Status |
13
+ |-----|-------|--------|
14
+ | [ADR-001](ADR-001-ci-cd-pipeline.md) | Multi-stage CI/CD Pipeline Design | Accepted |
15
+ | [ADR-002](ADR-002-shell-performance.md) | Shell Performance Optimization Strategy | Accepted |
16
+ | [ADR-003](ADR-003-security-first.md) | Security-First Approach | Accepted |
17
+ | [ADR-004](ADR-004-cli-architecture.md) | Chezmoi + Custom CLI Wrapper Architecture | Accepted |
18
+ | [ADR-005](ADR-005-chezmoi-choice.md) | Chezmoi as Dotfiles Manager | Accepted |
19
+ | [ADR-006](ADR-006-shell-selection.md) | Zsh as Default Shell | Accepted |
20
+ | [ADR-007](ADR-007-multi-shell-parity.md) | Multi-Shell Parity Strategy | Accepted |
21
+ | [ADR-008](ADR-008-alias-system-architecture.md) | Alias System Architecture | Accepted |
22
+ | [ADR-009](ADR-009-wallpaper-driven-theming.md) | Wallpaper-Driven Theming Engine | Accepted |
23
+ | [ADR-010](ADR-010-starship-transient-prompt.md) | Enable Starship Transient Prompt in Zsh and Fish | Accepted |
24
+ | [ADR-011](ADR-011-nushell-tier3-keep.md) | Keep Nushell as Tier-3 Reference with Minimum-Viable Caching | Accepted |
25
+
26
+ ## ADR Format
27
+
28
+ Each ADR follows this structure:
29
+
30
+ - **Status**: Proposed, Accepted, Deprecated, Superseded
31
+ - **Context**: The situation and forces at play
32
+ - **Decision**: The change being made
33
+ - **Consequences**: The resulting context after applying the decision
34
+
35
+ ## References
36
+
37
+ - [Documenting Architecture Decisions](https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions)
38
+ - [ADR Tools](https://github.com/npryce/adr-tools)
39
+
@@ -0,0 +1,117 @@
1
+ ---
2
+ render_with_liquid: false
3
+ ---
4
+
5
+ # Architecture
6
+
7
+ Core architectural decisions and system design of the dotfiles shell distribution.
8
+
9
+ ---
10
+
11
+ ## Philosophy
12
+
13
+ - **XDG-First**: Configuration lives under `~/.config/` to keep the home directory clean.
14
+ - **Multi-Shell**: First-class support for Zsh, Fish, and Nushell with a shared logic core.
15
+ - **Fast Startup**: Heavy features are deferred or autoloaded to keep the first prompt under 50ms.
16
+ - **Deterministic**: Nix Flakes provide bit-for-bit identical environments across machines.
17
+ - **Non-Blocking**: Background daemons (Pueue) handle upgrades and builds without stalling the shell.
18
+
19
+ ## System Layout
20
+
21
+ ```text
22
+ ~/.dotfiles/
23
+ ├── dot_config/ # Managed application configurations (~/.config/)
24
+ │ ├── zsh/ # Modular Zsh rc.d architecture
25
+ │ ├── fish/ # Autoloading Fish configuration
26
+ │ ├── nushell/ # Structured data shell config
27
+ │ ├── shell/ # Shared logic (aliases, paths, functions)
28
+ │ └── ... # 50+ tool configurations (nvim, tmux, ghostty, etc.)
29
+ ├── dot_local/ # Local binaries and scripts (~/.local/bin/)
30
+ ├── .chezmoitemplates/ # Unified source for aliases, functions, and paths
31
+ ├── scripts/ # Internal libraries and diagnostics
32
+ ├── nix/ # Nix Flake for deterministic toolchains
33
+ ├── lib/wasm-tools/ # Rust source for Wasm utilities
34
+ └── install.sh # Universal bootstrap script (zero dependencies)
35
+ ```
36
+
37
+ ---
38
+
39
+ ## Shell Startup Strategies
40
+
41
+ ### Shared: `_cached_eval`
42
+
43
+ Across Zsh, Fish, and Bash, an idempotent caching wrapper avoids redundant tool initialization (Starship, Zoxide, Atuin).
44
+
45
+ 1. **Intercept** — check if a cached version of the tool's `eval` output exists in `~/.cache/shell/`.
46
+ 2. **Validate** — compare the cache timestamp against the tool binary's mtime.
47
+ 3. **Bypass** — if valid, `source` the cached text directly, saving 20-50ms per tool.
48
+
49
+ ### Lazy-Hydration Model
50
+
51
+ To reach a fluid first-prompt target (< 50ms), the shell uses a three-phase startup:
52
+
53
+ 1. **Phase 1 (Visual Paint)** — render the prompt immediately using static escape codes.
54
+ 2. **Phase 2 (Async Hydration)** — dispatch tool initializations (mise, atuin, etc.) to background workers.
55
+ 3. **Phase 3 (On-Demand Activation)** — environment hydration occurs on first user interaction or after 500ms of idle time.
56
+
57
+ ---
58
+
59
+ ## Artifact Mode
60
+
61
+ A minimal environment triggered by `DOTFILES_ARTIFACT_MODE=1`.
62
+
63
+ - **Minimalist UI** — strips prompt complexity, leaving only a green `->`.
64
+ - **Intelligence Surface** — an async Bento-style dashboard rendered via `bento.sh` that provides environment context (Node version, cloud status, Git health) without blocking the main thread.
65
+ - **Redraw Signaling** — uses `SIGWINCH` to return control after background hydration completes.
66
+
67
+ ---
68
+
69
+ ## Ultra-Fast Mode
70
+
71
+ Set `DOTFILES_ULTRA_FAST=1` to skip all non-essential initialization. Only core paths, aliases, and the prompt are loaded. Useful for:
72
+
73
+ - CI/CD pipelines where full shell setup is unnecessary
74
+ - Rapid scripting sessions where startup latency matters
75
+ - Benchmarking baseline shell performance
76
+
77
+ ---
78
+
79
+ ## Debug and Trace Modes
80
+
81
+ ### DOTFILES_DEBUG=1
82
+
83
+ Enables verbose diagnostic output during shell startup. Prints which files are sourced and their load times.
84
+
85
+ ### DOTFILES_TRACE=1
86
+
87
+ Enables `set -x` tracing for the entire shell startup sequence. Output is written to `~/.local/state/dotfiles/debug.log` for post-mortem analysis.
88
+
89
+ ---
90
+
91
+ ## Function Groups (groups.json)
92
+
93
+ Functions are organized into groups defined in `.chezmoitemplates/functions/groups.json`:
94
+
95
+ | Group | Functions | Description |
96
+ |-------|-----------|-------------|
97
+ | `api` | apihealth, apilatency, apiload | API testing utilities |
98
+ | `curl` | curlheader, curlstatus, curltime, httpdebug | HTTP debugging |
99
+ | `text` | encode64, kebabcase, lowercase, titlecase, ... | Text transformation |
100
+ | `system` | environment, freespace, hostinfo, myproc, sysinfo | System introspection |
101
+ | `files` | backup, extract, hexdump, hiddenfiles, size, zipf | File operations |
102
+ | `interactive` | banner, emoji, matrix, rainbow, stopwatch | Terminal fun |
103
+ | `nav` | cdls, goto, ql | Navigation shortcuts |
104
+ | `security` | genpass, keygen, mount_read_only | Security utilities |
105
+ | `misc` | dothelp, view-source, prependpath, caffeine | Miscellaneous |
106
+
107
+ Groups are lazy-loaded: stub functions are defined at startup, and the real implementation is loaded on first invocation. This keeps startup fast while providing 52+ functions on demand.
108
+
109
+ The `groups.json` schema maps group names to arrays of relative paths (including subdirectory):
110
+
111
+ ```json
112
+ {
113
+ "group_name": ["group_name/function1.sh", "group_name/function2.sh"]
114
+ }
115
+ ```
116
+
117
+ Each `.sh` file lives in a subdirectory matching its group and defines a single function with the same name as the file (minus `.sh` extension).
@@ -0,0 +1,44 @@
1
+ ---
2
+ render_with_liquid: false
3
+ ---
4
+
5
+ # Cross-Platform Interoperability
6
+
7
+ How dotfiles commands and shims map across macOS, Linux, and WSL2.
8
+
9
+ ## Command Mapping
10
+
11
+ | Alias / Command | macOS | Linux (Debian/Arch) | WSL2 (Windows Host) |
12
+ | :--- | :--- | :--- | :--- |
13
+ | `cb` (Clipboard) | `pbcopy` / `pbpaste` | `xclip` / `wl-copy` | `clip.exe` / `powershell.exe` |
14
+ | `open` | `open` | `xdg-open` | `wslview` / `explorer.exe` |
15
+ | `notify` | `osascript` (AppleScript) | `notify-send` / `gum log` | `powershell.exe` (Toast) / `gum` |
16
+ | `win` (Paths) | N/A | N/A | `wslpath` |
17
+ | `browser` | `open` | `xdg-open` | `powershell.exe Start-Process` |
18
+
19
+ ## Infrastructure Parity
20
+
21
+ | Feature | macOS | Linux | WSL2 |
22
+ | :--- | :--- | :--- | :--- |
23
+ | **Package Manager** | Homebrew (`brew`) | `apt` / `pacman` / `nix` | `apt` + Windows binaries |
24
+ | **Shell Startup** | Async lazy-hydration | Async lazy-hydration | Async (optimized for IO) |
25
+ | **Environment** | native plist / launchctl | systemd / dbus | systemd (if enabled) / init |
26
+ | **Hardware** | Secure Enclave | TPM 2.0 / LUKS | Windows Hello bridge |
27
+
28
+ ## Troubleshooting
29
+
30
+ ### WSL2 IO Latency
31
+
32
+ Keep projects in the Linux filesystem (`~/...`), not under `/mnt/c/`.
33
+
34
+ ### WSL2 Windows Binary Path
35
+
36
+ If you've disabled WSL path sharing, make sure Windows-side binaries like `clip.exe` and `explorer.exe` are still reachable in `$PATH`.
37
+
38
+ ### macOS Permissions
39
+
40
+ Grant your terminal "Full Disk Access" in System Settings so dotfiles can manage all configurations.
41
+
42
+ ### Linux GUI Fallbacks
43
+
44
+ In headless environments, GUI commands like `cb` and `open` fall back to `gum log` or terminal bell instead of hanging.