@sebastienrousseau/dotfiles 0.2.481 → 0.2.500

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 (546) hide show
  1. package/CHANGELOG.md +122 -32
  2. package/LICENSE +1 -1
  3. package/README.md +211 -242
  4. package/docs/.vitepress/reports/localization-readability-audit.md +69 -0
  5. package/docs/AI.md +102 -0
  6. package/docs/COPYRIGHT +2 -2
  7. package/docs/NAMING_CONVENTIONS.md +95 -0
  8. package/docs/README.md +58 -249
  9. package/docs/adr/ADR-004-cli-architecture.md +2 -2
  10. package/docs/adr/ADR-006-shell-selection.md +2 -2
  11. package/docs/adr/ADR-007-multi-shell-parity.md +53 -0
  12. package/docs/adr/ADR-008-alias-system-architecture.md +85 -0
  13. package/docs/adr/README.md +2 -3
  14. package/docs/architecture/ARCHITECTURE.md +113 -0
  15. package/docs/architecture/INTEROP.md +36 -0
  16. package/docs/architecture/REPO_LAYOUT.md +237 -0
  17. package/docs/architecture/WALKTHROUGH.md +82 -0
  18. package/docs/architecture/fleet-deployment.md +73 -0
  19. package/docs/archive/EUXIS_2026_REVIEW.md +119 -0
  20. package/docs/archive/MILESTONE_v0.2.493.md +43 -0
  21. package/docs/{PLAN.md → archive/PLAN.md} +1 -1
  22. package/docs/guides/INSTALL.md +140 -0
  23. package/docs/{NEOVIM_IDE_GUIDE.md → guides/NEOVIM_IDE_GUIDE.md} +12 -12
  24. package/docs/guides/THEMING.md +222 -0
  25. package/docs/{TROUBLESHOOTING.md → guides/TROUBLESHOOTING.md} +36 -0
  26. package/docs/{WSL2_NIX_TROUBLESHOOTING.md → guides/WSL2_NIX_TROUBLESHOOTING.md} +8 -8
  27. package/docs/index.md +39 -0
  28. package/docs/interop/A2A.md +32 -0
  29. package/docs/manual/00-introduction.md +85 -0
  30. package/docs/manual/01-concepts/01-architecture.md +134 -0
  31. package/docs/manual/01-concepts/02-trust-model.md +178 -0
  32. package/docs/manual/01-concepts/03-theme-engine.md +182 -0
  33. package/docs/manual/01-concepts/04-fleet.md +142 -0
  34. package/docs/manual/01-concepts/05-self-healing.md +197 -0
  35. package/docs/manual/02-tutorials/01-first-install.md +192 -0
  36. package/docs/manual/02-tutorials/02-add-wallpaper.md +211 -0
  37. package/docs/manual/02-tutorials/03-create-profile.md +238 -0
  38. package/docs/manual/02-tutorials/04-encrypt-secret.md +275 -0
  39. package/docs/manual/02-tutorials/05-deploy-fleet.md +279 -0
  40. package/docs/manual/03-reference/01-dot-cli.md +413 -0
  41. package/docs/manual/03-reference/02-config-files.md +259 -0
  42. package/docs/manual/03-reference/03-environment.md +120 -0
  43. package/docs/manual/03-reference/04-templates.md +184 -0
  44. package/docs/manual/03-reference/05-feature-flags.md +118 -0
  45. package/docs/manual/04-cookbook/01-recipes.md +281 -0
  46. package/docs/manual/04-cookbook/02-troubleshooting.md +319 -0
  47. package/docs/manual/04-cookbook/03-faq.md +167 -0
  48. package/docs/manual/05-appendices/A-platform-matrix.md +97 -0
  49. package/docs/manual/05-appendices/B-security-checklist.md +78 -0
  50. package/docs/manual/05-appendices/C-glossary.md +36 -0
  51. package/docs/manual/05-appendices/D-bibliography.md +54 -0
  52. package/docs/manual/05-appendices/E-license.md +34 -0
  53. package/docs/manual/_toc.yml +58 -0
  54. package/docs/manual/command-index.md +58 -0
  55. package/docs/manual/concept-index.md +164 -0
  56. package/docs/operations/ATTESTATION.md +39 -0
  57. package/docs/operations/MAINTENANCE.md +59 -0
  58. package/docs/operations/MIGRATION.md +101 -0
  59. package/docs/operations/OPERATIONS.md +164 -0
  60. package/docs/operations/RELIABILITY.md +116 -0
  61. package/docs/{ROADMAP.md → operations/ROADMAP.md} +11 -11
  62. package/docs/operations/TESTING.md +195 -0
  63. package/docs/operations/TRACEABILITY.md +31 -0
  64. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +61 -0
  65. package/docs/operations/VERSION_SYNC.md +344 -0
  66. package/docs/{ALIASES.md → reference/ALIASES.md} +2 -6
  67. package/docs/reference/ALIASES_CHEATSHEET.md +28 -0
  68. package/docs/reference/ALIASES_DEPRECATIONS.md +9 -0
  69. package/docs/reference/FEATURES.md +62 -0
  70. package/docs/reference/FONTS.md +108 -0
  71. package/docs/reference/PROFILES.md +65 -0
  72. package/docs/{SCREENSHOTS.md → reference/SCREENSHOTS.md} +26 -25
  73. package/docs/reference/SCRIPTS.md +67 -0
  74. package/docs/reference/SUPPORT_MATRIX.md +74 -0
  75. package/docs/reference/THEMES.md +113 -0
  76. package/docs/reference/TOOLS.md +105 -0
  77. package/docs/reference/UTILS.md +151 -0
  78. package/docs/security/AI_ACT_COMPLIANCE.md +90 -0
  79. package/docs/security/AUTOMATION_SECRETS.md +22 -0
  80. package/docs/security/COMPLIANCE.md +453 -0
  81. package/docs/security/ENCRYPTION.md +52 -0
  82. package/docs/security/FMEA.md +155 -0
  83. package/docs/security/INCIDENT_RESPONSE.md +575 -0
  84. package/docs/security/KEYS.md +45 -0
  85. package/docs/security/MCP_POLICY.md +69 -0
  86. package/docs/security/POLICY_RELEASES.md +33 -0
  87. package/docs/security/README.md +24 -0
  88. package/docs/security/SECRETS.md +146 -0
  89. package/docs/security/SECURITY.md +41 -0
  90. package/docs/security/SECURITY_CHECKLIST.md +44 -0
  91. package/docs/security/SOUP_REGISTER.md +32 -0
  92. package/docs/security/THREAT_MODEL.md +120 -0
  93. package/docs/security/VERIFICATION_VALIDATION.md +224 -0
  94. package/docs/themes/README.md +3 -17
  95. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +26 -0
  96. package/docs/themes/hero-shot.svg +78 -0
  97. package/dot_config/.module-manifest.json +69 -0
  98. package/dot_config/ai/identity.md +20 -0
  99. package/dot_config/ai/patterns/architect.md +14 -0
  100. package/dot_config/ai/patterns/hardener.md +13 -0
  101. package/dot_config/ai/patterns/refactor.md +13 -0
  102. package/dot_config/aider/aider.conf.yml +1 -1
  103. package/dot_config/alacritty/alacritty.toml.tmpl +41 -469
  104. package/dot_config/atuin/config.toml +18 -1
  105. package/dot_config/bat/config +16 -1
  106. package/dot_config/claude/mcp_servers.json +3 -32
  107. package/dot_config/dotfiles/agent-card.json +29 -0
  108. package/dot_config/dotfiles/agent-profiles.json +92 -0
  109. package/dot_config/dotfiles/boot/README.md +1 -1
  110. package/dot_config/dotfiles/grub/README.md +1 -1
  111. package/dot_config/dotfiles/lock/README.md +1 -1
  112. package/dot_config/dotfiles/mcp-lock.json +33 -0
  113. package/dot_config/dotfiles/mcp-policy.json +52 -0
  114. package/dot_config/dotfiles/mcp-registry.json +47 -0
  115. package/dot_config/dotfiles/model-registry.json +20 -0
  116. package/dot_config/dotfiles/policy-bundles.json +38 -0
  117. package/dot_config/dotfiles/prompt-registry.json +16 -0
  118. package/dot_config/dotfiles/versions.env +18 -0
  119. package/dot_config/environment.d/50-ssh-agent.conf +2 -0
  120. package/dot_config/environment.d/90-wayland.conf +19 -0
  121. package/dot_config/firefox/user.js.tmpl +58 -0
  122. package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +9 -0
  123. package/dot_config/fish/completions/dot.fish.tmpl +115 -0
  124. package/dot_config/fish/conf.d/000-perf-cache.fish +56 -0
  125. package/dot_config/fish/conf.d/aliases.fish.tmpl +77 -0
  126. package/dot_config/fish/conf.d/env.fish.tmpl +48 -0
  127. package/dot_config/fish/conf.d/functions.fish.tmpl +22 -0
  128. package/dot_config/fish/conf.d/init.fish.tmpl +151 -0
  129. package/dot_config/fish/config.fish.tmpl +44 -0
  130. package/dot_config/fish/fish_plugins +1 -0
  131. package/dot_config/fish/functions/_.fish +3 -0
  132. package/dot_config/fish/functions/_cached_eval.fish +58 -0
  133. package/dot_config/fish/functions/als.fish +46 -0
  134. package/dot_config/fish/functions/bg-upgrade.fish +7 -0
  135. package/dot_config/fish/functions/c.fish +3 -0
  136. package/dot_config/fish/functions/cat.fish +9 -0
  137. package/dot_config/fish/functions/d.fish +7 -0
  138. package/dot_config/fish/functions/dot.fish +34 -0
  139. package/dot_config/fish/functions/h.fish +3 -0
  140. package/dot_config/fish/functions/l.fish +7 -0
  141. package/dot_config/fish/functions/la.fish +7 -0
  142. package/dot_config/fish/functions/ll.fish +7 -0
  143. package/dot_config/fish/functions/log_error.fish +13 -0
  144. package/dot_config/fish/functions/log_info.fish +13 -0
  145. package/dot_config/fish/functions/lr.fish +7 -0
  146. package/dot_config/fish/functions/lra.fish +7 -0
  147. package/dot_config/fish/functions/ls.fish +7 -0
  148. package/dot_config/fish/functions/lt.fish +7 -0
  149. package/dot_config/fish/functions/lta.fish +7 -0
  150. package/dot_config/fish/functions/notify-run.fish +11 -0
  151. package/dot_config/fish/functions/q.fish +3 -0
  152. package/dot_config/fish/functions/silent-run.fish +7 -0
  153. package/dot_config/fish/functions/yy.fish +8 -0
  154. package/dot_config/fontconfig/fonts.conf.tmpl +13 -0
  155. package/dot_config/foot/foot.ini.tmpl +33 -0
  156. package/dot_config/fuzzel/fuzzel.ini.tmpl +18 -0
  157. package/dot_config/fzf/fzf.zsh +48 -0
  158. package/dot_config/ghostty/config.tmpl +69 -565
  159. package/dot_config/git/allowed_signers.tmpl +18 -0
  160. package/dot_config/git/commit-template +10 -0
  161. package/dot_config/gnupg/{gpg-agent.conf.tmpl → gpg-agent.conf} +3 -3
  162. package/dot_config/goose/config.yaml +2 -2
  163. package/dot_config/gtk-3.0/gtk.css.tmpl +59 -180
  164. package/dot_config/gtk-3.0/settings.ini.tmpl +5 -44
  165. package/dot_config/gtk-4.0/gtk.css.tmpl +79 -136
  166. package/dot_config/gtk-4.0/settings.ini.tmpl +5 -8
  167. package/dot_config/ipython/profile_default/ipython_config.py +19 -0
  168. package/dot_config/just/justfile +18 -0
  169. package/dot_config/kanshi/config.tmpl +22 -0
  170. package/dot_config/kitty/kitty.conf.tmpl +44 -508
  171. package/dot_config/lazygit/config.yml +18 -6
  172. package/dot_config/mako/config +47 -0
  173. package/dot_config/micro/settings.json +3 -0
  174. package/dot_config/mimeapps.list +77 -0
  175. package/dot_config/mise/config.toml +63 -5
  176. package/dot_config/mongosh/mongoshrc.js +1 -0
  177. package/dot_config/mpv/input.conf +47 -0
  178. package/dot_config/mpv/mpv.conf +47 -0
  179. package/dot_config/niri/config.kdl.tmpl +327 -0
  180. package/dot_config/nushell/aliases.nu +18 -0
  181. package/dot_config/nushell/completions.nu.tmpl +52 -0
  182. package/dot_config/nushell/config.nu.tmpl +86 -0
  183. package/dot_config/nushell/env.nu.tmpl +94 -0
  184. package/dot_config/nushell/functions.nu.tmpl +17 -0
  185. package/dot_config/nvim/init.lua +14 -0
  186. package/dot_config/nvim/lazy-lock.json +45 -14
  187. package/dot_config/nvim/lua/config/autocmds.lua +45 -1
  188. package/dot_config/nvim/lua/config/keymaps.lua +13 -8
  189. package/dot_config/nvim/lua/config/lazy.lua +22 -12
  190. package/dot_config/nvim/lua/config/options.lua +1 -0
  191. package/dot_config/nvim/lua/plugins/ai.lua +75 -0
  192. package/dot_config/nvim/lua/plugins/coding.lua +11 -29
  193. package/dot_config/nvim/lua/plugins/completion.lua +60 -0
  194. package/dot_config/nvim/lua/plugins/dap.lua +215 -4
  195. package/dot_config/nvim/lua/plugins/editor.lua +6 -10
  196. package/dot_config/nvim/lua/plugins/git.lua +1 -0
  197. package/dot_config/nvim/lua/plugins/lsp.lua +16 -81
  198. package/dot_config/nvim/lua/plugins/markdown.lua +1 -0
  199. package/dot_config/nvim/lua/plugins/rust.lua +1 -0
  200. package/dot_config/nvim/lua/plugins/sessions.lua +1 -0
  201. package/dot_config/nvim/lua/plugins/ui.lua +23 -51
  202. package/dot_config/paru/paru.conf +10 -0
  203. package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +81 -0
  204. package/dot_config/pueue/pueue.yml +34 -0
  205. package/dot_config/raycast/README.md +1 -1
  206. package/dot_config/ripgrep/ripgreprc +21 -0
  207. package/dot_config/shell/00-core-paths.sh.tmpl +62 -24
  208. package/dot_config/shell/05-core-safety.sh +47 -0
  209. package/dot_config/shell/10-secrets.sh +40 -0
  210. package/dot_config/shell/40-fzf-defaults.sh.tmpl +16 -0
  211. package/dot_config/shell/40-ls-colors.sh +48 -0
  212. package/dot_config/shell/50-logic-functions-core.sh.tmpl +10 -0
  213. package/dot_config/shell/51-logic-functions-extra.sh.tmpl +64 -0
  214. package/dot_config/shell/90-ux-aliases.sh.tmpl +90 -5
  215. package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +33 -2
  216. package/dot_config/shell/Brewfile.cli +8 -0
  217. package/dot_config/shell/README.md +9 -9
  218. package/dot_config/shell/als_data.txt.tmpl +65 -0
  219. package/dot_config/shell/custom/auto_ls.zsh +20 -0
  220. package/dot_config/shell/custom/context_suggest.zsh +50 -50
  221. package/dot_config/shell/custom/error_analysis.zsh +29 -29
  222. package/dot_config/starship.toml.tmpl +85 -7
  223. package/dot_config/swaylock/config +43 -0
  224. package/dot_config/systemd/user/dotfiles-maintenance.service +8 -0
  225. package/dot_config/systemd/user/dotfiles-maintenance.timer +11 -0
  226. package/dot_config/systemd/user/pueued.service +12 -0
  227. package/dot_config/systemd/user/ssh-agent.service +12 -0
  228. package/dot_config/tmux/tmux.conf.tmpl +80 -38
  229. package/dot_config/topgrade.toml.tmpl +54 -0
  230. package/dot_config/user-dirs.dirs +9 -0
  231. package/dot_config/vscode/settings.json.tmpl +9 -50
  232. package/dot_config/waybar/config.jsonc.tmpl +90 -0
  233. package/dot_config/waybar/style.css.tmpl +211 -0
  234. package/dot_config/wezterm/wezterm.lua.tmpl +31 -203
  235. package/dot_config/xdg-desktop-portal/niri-portals.conf +5 -0
  236. package/dot_config/yazi/keymap.toml +67 -0
  237. package/dot_config/yazi/theme.toml +102 -0
  238. package/dot_config/zathura/zathurarc +52 -0
  239. package/dot_config/zellij/{config.kdl → config.kdl.tmpl} +1 -1
  240. package/dot_config/zsh/dot_zprofile +1 -7
  241. package/dot_config/zsh/dot_zshenv +2 -3
  242. package/dot_config/zsh/dot_zshrc.tmpl +368 -69
  243. package/dot_config/zsh/rc.d/00-alias-shims.zsh +77 -0
  244. package/dot_config/zsh/rc.d/05-ssh-agent.zsh +17 -4
  245. package/dot_config/zsh/rc.d/10-env.zsh.tmpl +4 -4
  246. package/dot_config/zsh/rc.d/20-zinit.zsh +65 -0
  247. package/dot_config/zsh/rc.d/30-options.zsh.tmpl +101 -30
  248. package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +32 -0
  249. package/dot_local/bin/__pycache__/executable_dot-load-benchmark-ptycpython-312.pyc +0 -0
  250. package/dot_local/bin/executable_ai-update +195 -0
  251. package/dot_local/bin/executable_ai_core +113 -91
  252. package/dot_local/bin/executable_antigravity +11 -0
  253. package/dot_local/bin/executable_b64 +61 -36
  254. package/dot_local/bin/executable_bm +77 -0
  255. package/dot_local/bin/executable_cb +39 -0
  256. package/dot_local/bin/executable_dot +543 -132
  257. package/dot_local/bin/executable_dot-ai +36 -0
  258. package/dot_local/bin/executable_dot-bootstrap +77 -0
  259. package/dot_local/bin/executable_dot-launch-or-focus +52 -0
  260. package/dot_local/bin/executable_dot-load-benchmark +31 -0
  261. package/dot_local/bin/executable_dot-load-benchmark-pty +77 -0
  262. package/dot_local/bin/executable_dot-theme-sync +952 -0
  263. package/dot_local/bin/executable_dot_completion +2 -0
  264. package/dot_local/bin/executable_dtags +28 -0
  265. package/dot_local/bin/executable_epoch +43 -38
  266. package/dot_local/bin/executable_extract +32 -99
  267. package/dot_local/bin/executable_gbd +52 -0
  268. package/dot_local/bin/executable_gd +42 -0
  269. package/dot_local/bin/executable_git-ai-commit +35 -20
  270. package/dot_local/bin/executable_git-ai-diff +33 -18
  271. package/dot_local/bin/executable_gl +101 -0
  272. package/dot_local/bin/executable_hash +56 -18
  273. package/dot_local/bin/executable_hashsum +160 -0
  274. package/dot_local/bin/executable_hex +44 -8
  275. package/dot_local/bin/executable_jsonv +34 -10
  276. package/dot_local/bin/executable_jwt +22 -6
  277. package/dot_local/bin/executable_kill-port +18 -2
  278. package/dot_local/bin/executable_lorem +21 -6
  279. package/dot_local/bin/executable_mkscript +35 -0
  280. package/dot_local/bin/executable_monitor +56 -0
  281. package/dot_local/bin/{executable_ip → executable_myip} +16 -2
  282. package/dot_local/bin/executable_notify +22 -0
  283. package/dot_local/bin/executable_open +36 -0
  284. package/dot_local/bin/executable_pw +27 -0
  285. package/dot_local/bin/executable_rec-start +46 -0
  286. package/dot_local/bin/executable_rec-stop +35 -0
  287. package/dot_local/bin/executable_regex +49 -13
  288. package/dot_local/bin/executable_start-niri +8 -0
  289. package/dot_local/bin/executable_tmux-sessionizer +276 -149
  290. package/dot_local/bin/executable_tour +112 -74
  291. package/dot_local/bin/executable_up +21 -0
  292. package/dot_local/bin/executable_update +45 -11
  293. package/dot_local/bin/executable_uuid +37 -7
  294. package/dot_local/bin/executable_win +32 -0
  295. package/dot_local/bin/executable_yamlv +25 -7
  296. package/dot_local/share/bash-completion/completions/dot +62 -44
  297. package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
  298. package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
  299. package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
  300. package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
  301. package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
  302. package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
  303. package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
  304. package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
  305. package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
  306. package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
  307. package/dot_local/share/man/man1/dot.1 +149 -0
  308. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +64 -0
  309. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +18 -0
  310. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +13 -0
  311. package/dot_local/share/wayland-sessions/niri.desktop.tmpl +6 -0
  312. package/dot_local/share/zsh/completions/_dot +283 -0
  313. package/install.sh +297 -210
  314. package/package.json +17 -5
  315. package/scripts/ci/check-copyright-headers.sh +96 -0
  316. package/scripts/ci/guard-gitleaks-checkout.sh +57 -0
  317. package/scripts/ci/install-chezmoi-verified.sh +64 -0
  318. package/scripts/ci/validate-ci-config.sh +41 -39
  319. package/scripts/demo/record.sh +3 -2
  320. package/scripts/diagnostics/a2a-conformance.sh +162 -0
  321. package/scripts/diagnostics/alias-governance.sh +137 -0
  322. package/scripts/diagnostics/aliases-cheatsheet.sh +73 -0
  323. package/scripts/diagnostics/aliases-manifest.sh +31 -0
  324. package/scripts/diagnostics/benchmark.sh +209 -29
  325. package/scripts/diagnostics/conflicts.sh +72 -0
  326. package/scripts/diagnostics/doctor-unified.sh +38 -0
  327. package/scripts/diagnostics/doctor.sh +491 -65
  328. package/scripts/diagnostics/drift-dashboard.sh +17 -6
  329. package/scripts/diagnostics/health.sh +351 -110
  330. package/scripts/diagnostics/history-analysis.sh +12 -4
  331. package/scripts/diagnostics/mcp-doctor.sh +575 -0
  332. package/scripts/diagnostics/perf.sh +225 -0
  333. package/scripts/diagnostics/scorecard.sh +118 -0
  334. package/scripts/diagnostics/secret-governance.sh +58 -0
  335. package/scripts/diagnostics/security-score.sh +139 -93
  336. package/scripts/diagnostics/smoke-test.sh +87 -0
  337. package/scripts/diagnostics/snapshot.sh +89 -0
  338. package/scripts/diagnostics/verify.sh +107 -0
  339. package/scripts/diagnostics/verify_state.sh +2 -2
  340. package/scripts/diagnostics/version-locks.sh +79 -0
  341. package/scripts/diagnostics/workstation-attestation.sh +181 -0
  342. package/scripts/docs/build-manual.sh +883 -0
  343. package/scripts/docs/check-manual.sh +213 -0
  344. package/scripts/dot/commands/agent.sh +465 -0
  345. package/scripts/dot/commands/ai.sh +416 -0
  346. package/scripts/dot/commands/aliases.sh +250 -0
  347. package/scripts/dot/commands/appearance.sh +21 -4
  348. package/scripts/dot/commands/core.sh +59 -4
  349. package/scripts/dot/commands/diagnostics.sh +132 -3
  350. package/scripts/dot/commands/fleet.sh +399 -0
  351. package/scripts/dot/commands/lint.sh +177 -0
  352. package/scripts/dot/commands/manual.sh +168 -0
  353. package/scripts/dot/commands/meta.sh +148 -17
  354. package/scripts/dot/commands/patterns.sh +54 -0
  355. package/scripts/dot/commands/restore.sh +57 -35
  356. package/scripts/dot/commands/secrets.sh +151 -9
  357. package/scripts/dot/commands/security.sh +3 -0
  358. package/scripts/dot/commands/tools.sh +268 -27
  359. package/scripts/dot/data/alias-deprecations.tsv +2 -0
  360. package/scripts/dot/lib/bento.sh +49 -0
  361. package/scripts/dot/lib/log.sh +194 -0
  362. package/scripts/dot/lib/platform.sh +98 -0
  363. package/scripts/dot/lib/ui.sh +507 -0
  364. package/scripts/dot/lib/utils.sh +318 -18
  365. package/scripts/fonts/install-nerd-fonts.sh +19 -10
  366. package/scripts/fonts/patch-fonts.sh +1 -0
  367. package/scripts/git-hooks/install.sh +11 -0
  368. package/scripts/git-hooks/pre-commit +12 -0
  369. package/scripts/git-hooks/pre-commit-audit.sh +145 -0
  370. package/scripts/git-hooks/pre-push +29 -0
  371. package/scripts/git-hooks/prepare-commit-msg +29 -0
  372. package/scripts/lib/secrets_provider.sh +158 -0
  373. package/scripts/maintenance/check-updates.sh +131 -0
  374. package/scripts/ops/ai-setup.sh +55 -0
  375. package/scripts/ops/bundle.sh +77 -0
  376. package/scripts/ops/chaos.sh +49 -0
  377. package/scripts/ops/chezmoi-apply.sh +245 -17
  378. package/scripts/ops/chezmoi-diff.sh +1 -0
  379. package/scripts/ops/chezmoi-remove.sh +2 -0
  380. package/scripts/ops/chezmoi-update.sh +34 -2
  381. package/scripts/ops/heal-chezmoi.sh +51 -0
  382. package/scripts/ops/heal-system.sh +128 -0
  383. package/scripts/ops/heal-tools.sh +340 -0
  384. package/scripts/ops/heal.sh +98 -342
  385. package/scripts/ops/post-apply-repair.sh +106 -0
  386. package/scripts/ops/prewarm.sh +127 -0
  387. package/scripts/ops/release.sh +252 -0
  388. package/scripts/ops/rollback.sh +86 -28
  389. package/scripts/ops/setup.sh +137 -0
  390. package/scripts/ops/teleport.sh +2 -1
  391. package/scripts/qa/coverage-baseline.sh +60 -0
  392. package/scripts/qa/docs-coverage.sh +111 -0
  393. package/scripts/qa/reliability-audit.sh +138 -0
  394. package/scripts/qa/traceability-coverage.sh +116 -0
  395. package/scripts/qa/validate-examples.sh +26 -0
  396. package/scripts/qa/wsl-contract.sh +11 -0
  397. package/scripts/release/package-policy-bundles.sh +125 -0
  398. package/scripts/secrets/age-init.sh +1 -0
  399. package/scripts/secrets/create-secrets-file.sh +1 -0
  400. package/scripts/secrets/encrypt-ssh-key.sh +1 -0
  401. package/scripts/security/backup.sh +44 -4
  402. package/scripts/security/dns-doh.sh +36 -14
  403. package/scripts/security/encryption-check.sh +27 -12
  404. package/scripts/security/enforce-policies.sh +11 -16
  405. package/scripts/security/firewall.sh +76 -20
  406. package/scripts/security/lock-configs.sh +2 -2
  407. package/scripts/security/lock-screen.sh +40 -18
  408. package/scripts/security/manage-secrets.sh +42 -29
  409. package/scripts/security/ssh-cert.sh +203 -0
  410. package/scripts/security/telemetry-kill.sh +40 -18
  411. package/scripts/security/usb-safety.sh +37 -15
  412. package/scripts/theme/apply-gnome-theme.sh +87 -56
  413. package/scripts/theme/extract-theme.py +677 -0
  414. package/scripts/theme/install-boot-logo.sh +1 -0
  415. package/scripts/theme/install-catppuccin-themes.sh +57 -33
  416. package/scripts/theme/install-cursors.sh +1 -0
  417. package/scripts/theme/install-file-icons.sh +1 -0
  418. package/scripts/theme/install-grub-theme.sh +11 -1
  419. package/scripts/theme/install-lock-icon.sh +1 -0
  420. package/scripts/theme/merge-wallpaper.sh +141 -0
  421. package/scripts/theme/rebuild-themes.sh +309 -0
  422. package/scripts/theme/switch.sh +308 -137
  423. package/scripts/theme/wallpaper-rotate.sh +66 -12
  424. package/scripts/theme/wallpaper-sync.sh +386 -31
  425. package/scripts/tools/cmatrix.sh +1 -0
  426. package/scripts/tools/detect-collisions.py +1 -1
  427. package/scripts/tools/emoji-picker.sh +4 -1
  428. package/scripts/tools/figlet-banner.sh +1 -0
  429. package/scripts/tools/log-rotate.sh +2 -1
  430. package/scripts/tools/lolcat-wrap.sh +1 -0
  431. package/scripts/tools/pipes.sh +1 -0
  432. package/scripts/tuning/linux.sh +23 -13
  433. package/scripts/tuning/macos.sh +13 -4
  434. package/scripts/uninstall.sh +85 -0
  435. package/scripts/version-sync.sh +487 -0
  436. package/templates/chezmoi-data/geekom-a9.toml.example +21 -0
  437. package/templates/chezmoi-data/mac-m1.toml.example +16 -0
  438. package/templates/chezmoi-data/mac-t2-linux.toml.example +21 -0
  439. package/templates/chezmoi-data/surface-pro-7p.toml.example +21 -0
  440. package/templates/projects/go/.github/workflows/ci.yml +31 -0
  441. package/templates/projects/go/README.md +1 -1
  442. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +1 -0
  443. package/templates/projects/go/go.sum +0 -0
  444. package/templates/projects/molecule/README.md +1 -1
  445. package/templates/projects/node/.github/workflows/ci.yml +30 -0
  446. package/templates/projects/node/README.md +1 -1
  447. package/templates/projects/node/package-lock.json +12 -0
  448. package/templates/projects/node/src/index.js +1 -0
  449. package/templates/projects/packer/README.md +1 -1
  450. package/templates/projects/python/.github/workflows/ci.yml +34 -0
  451. package/templates/projects/python/README.md +1 -1
  452. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
  453. package/templates/projects/python/tests/test_basic.py +1 -0
  454. package/docs/ARCHITECTURE.md +0 -229
  455. package/docs/COMPLIANCE.md +0 -47
  456. package/docs/FEATURES.md +0 -166
  457. package/docs/FONTS.md +0 -147
  458. package/docs/INSTALL.md +0 -119
  459. package/docs/KEYS.md +0 -40
  460. package/docs/OPERATIONS.md +0 -130
  461. package/docs/PR_DESCRIPTION.md +0 -149
  462. package/docs/SECRETS.md +0 -76
  463. package/docs/SECURITY.md +0 -30
  464. package/docs/SECURITY_CHECKLIST.md +0 -25
  465. package/docs/TASK.md +0 -99
  466. package/docs/TESTING.md +0 -190
  467. package/docs/TOOLS.md +0 -146
  468. package/docs/UTILS.md +0 -105
  469. package/docs/WALKTHROUGH.md +0 -165
  470. package/dot_config/clippy.toml +0 -55
  471. package/dot_config/dotfiles/versions.env.tmpl +0 -19
  472. package/dot_config/firefox/user.js +0 -8
  473. package/dot_config/git/config.tmpl +0 -77
  474. package/dot_config/go/aliases.sh +0 -61
  475. package/dot_config/go/env.sh +0 -24
  476. package/dot_config/ice/README.md +0 -13
  477. package/dot_config/ipython/profile_default/ipython_config.py.tmpl +0 -5
  478. package/dot_config/lsd/config.yaml +0 -19
  479. package/dot_config/nvim/snippets/all.lua +0 -9
  480. package/dot_config/nvim/snippets/python.lua +0 -16
  481. package/dot_config/shell/00-container-detect.sh +0 -53
  482. package/dot_config/shell/05-core-safety.sh.tmpl +0 -13
  483. package/dot_config/shell/40-ls-colors.sh.tmpl +0 -31
  484. package/dot_config/shell/90-theme-switch.sh +0 -70
  485. package/dot_config/topgrade/topgrade.toml.tmpl +0 -42
  486. package/dot_config/waybar/style.css +0 -8
  487. package/dot_config/zsh/rc.d/20-zinit.zsh.tmpl +0 -22
  488. package/dot_local/bin/executable_zig-install +0 -89
  489. package/dot_local/bin/voice_ops +0 -7
  490. package/scripts/ops/health-check.sh +0 -380
  491. package/scripts/tests/README.md +0 -241
  492. package/scripts/tests/benchmark.sh +0 -91
  493. package/scripts/tests/framework/assertions.sh +0 -283
  494. package/scripts/tests/framework/mocks.sh +0 -201
  495. package/scripts/tests/framework/test_runner.sh +0 -189
  496. package/scripts/tests/integration/test_install.sh +0 -237
  497. package/scripts/tests/performance/benchmark_runner.sh +0 -156
  498. package/scripts/tests/performance/regression_check.sh +0 -73
  499. package/scripts/tests/performance/stress_test.sh +0 -65
  500. package/scripts/tests/test-aliases.sh +0 -25
  501. package/scripts/tests/test-docker.sh +0 -48
  502. package/scripts/tests/unit/test_ai_aliases.sh +0 -158
  503. package/scripts/tests/unit/test_ai_cli_checks.sh +0 -47
  504. package/scripts/tests/unit/test_backup.sh +0 -227
  505. package/scripts/tests/unit/test_case_functions.sh +0 -238
  506. package/scripts/tests/unit/test_cd_aliases.sh +0 -367
  507. package/scripts/tests/unit/test_dot_cli.sh +0 -217
  508. package/scripts/tests/unit/test_encode64.sh +0 -67
  509. package/scripts/tests/unit/test_environment.sh +0 -78
  510. package/scripts/tests/unit/test_extract.sh +0 -163
  511. package/scripts/tests/unit/test_framework_edge_cases.sh +0 -113
  512. package/scripts/tests/unit/test_genpass.sh +0 -298
  513. package/scripts/tests/unit/test_install_edge_cases.sh +0 -167
  514. package/scripts/tests/unit/test_installers.sh +0 -172
  515. package/scripts/tests/unit/test_keygen.sh +0 -68
  516. package/scripts/tests/unit/test_logging.sh +0 -96
  517. package/scripts/tests/unit/test_os_detection_comprehensive.sh +0 -388
  518. package/scripts/tests/unit/test_package_managers_comprehensive.sh +0 -321
  519. package/scripts/tests/unit/test_prependpath.sh +0 -66
  520. package/scripts/tests/unit/test_prependpath_refactored.sh +0 -89
  521. package/scripts/tests/unit/test_rd.sh +0 -230
  522. package/scripts/tests/unit/test_security_fixes.sh +0 -130
  523. package/scripts/tests/unit/test_security_scripts.sh +0 -87
  524. package/scripts/tests/unit/test_template_validation.sh +0 -238
  525. package/scripts/tests/unit/test_utility_functions.sh +0 -144
  526. package/scripts/tests/unit/test_wave1_alias_split.sh +0 -132
  527. package/scripts/tests/unit/test_wave1_ci_pinning.sh +0 -61
  528. package/scripts/tests/unit/test_wave1_gitleaks_config.sh +0 -52
  529. package/scripts/tests/unit/test_wave1_heal_fixes.sh +0 -97
  530. package/scripts/tests/unit/test_wave1_install_gpg.sh +0 -35
  531. package/scripts/tests/unit/test_wave1_zshenv_path.sh +0 -89
  532. package/scripts/tests/unit/test_wave1_zshrc_lazy_hook.sh +0 -115
  533. package/scripts/tests/unit/test_wave2_dot_new_guard.sh +0 -75
  534. package/scripts/tests/unit/test_zipf.sh +0 -76
  535. /package/docs/{LEGACY_ROADMAP.md → archive/LEGACY_ROADMAP.md} +0 -0
  536. /package/docs/{REPO_AUDIT.md → archive/REPO_AUDIT.md} +0 -0
  537. /package/docs/{KEY_ROTATION.md → security/KEY_ROTATION.md} +0 -0
  538. /package/dot_config/ansible/{ansible.cfg.tmpl → ansible.cfg} +0 -0
  539. /package/dot_config/docker/{config.json.tmpl → config.json} +0 -0
  540. /package/dot_config/k9s/{config.yaml.tmpl → config.yaml} +0 -0
  541. /package/dot_config/pypoetry/{config.toml.tmpl → config.toml} +0 -0
  542. /package/dot_config/{pyrightconfig.json.tmpl → pyrightconfig.json} +0 -0
  543. /package/dot_config/tflint/{tflint.hcl.tmpl → tflint.hcl} +0 -0
  544. /package/dot_config/yarn/{yarnrc.yml.tmpl → yarnrc.yml} +0 -0
  545. /package/dot_config/zsh/rc.d/{40-bell.zsh.tmpl → 40-bell.zsh} +0 -0
  546. /package/dot_config/zsh/rc.d/{50-login-fortune.zsh.tmpl → 50-login-fortune.zsh} +0 -0
@@ -1,6 +1,6 @@
1
- # 🅳🅾🆃🅵🅸🅻🅴🆂 (v0.2.480) - <https://dotfiles.io>
1
+ # .dotfiles (v{{ .dotfiles_version }}) - <https://dotfiles.io>
2
2
  # Made With ❤️ in London, United Kingdom
3
- # Designed by Sebastien Rousseau
3
+ # Designed by
4
4
  # Copyright (c) 2015-2026. All rights reserved.
5
5
  # License: MIT
6
6
 
@@ -28,15 +28,83 @@ export FORCE_COLOR_OS="Windows"
28
28
 
29
29
  {{- $profile := default "laptop" .profile -}}
30
30
  {{- $features := default (dict "zsh" true "nvim" true "tmux" true "gui" true "secrets" true) .features -}}
31
- {{- $theme := default "catppuccin-mocha" .theme -}}
31
+ {{- $theme := default "macos-monterey-dark" .theme -}}
32
+ {{- $strict_mode := default false (index . "strict_mode") -}}
32
33
  {{- $enabled := list -}}
33
34
  {{- range $k, $v := $features }}{{- if $v }}{{- $enabled = append $enabled $k }}{{- end }}{{- end }}
34
35
 
35
36
  export DOTFILES_PROFILE="{{ $profile }}"
36
37
  export DOTFILES_FEATURES="{{ join "," $enabled }}"
37
38
  export DOTFILES_THEME="{{ $theme }}"
39
+ : ${DOTFILES_STARTUP_MODE:=full}
40
+ : ${DOTFILES_FAST:=0}
41
+ : ${DOTFILES_ULTRA_FAST:=0}
42
+ : ${DOTFILES_AI:=0}
43
+ : ${DOTFILES_ALIAS_STRICT_MODE:={{ if $strict_mode }}1{{ else }}0{{ end }}}
44
+ : ${DOTFILES_ULTRA_FAST_PROMPT:=1}
45
+ : ${DOTFILES_LAYERS_LOAD:=ondemand}
46
+ : ${DOTFILES_LAYERS_PREWARM:=system,text,api}
47
+ : ${DOTFILES_ALIAS_WRAPPER:={{ if .features.alias_wrapper }}1{{ else }}0{{ end }}}
48
+
49
+ # Default compinit based on profile (can be overridden by env)
50
+ if [[ -z "${DOTFILES_ENABLE_COMPINIT+x}" ]]; then
51
+ case "${DOTFILES_PROFILE}" in
52
+ laptop|desktop) DOTFILES_ENABLE_COMPINIT=1 ;;
53
+ *) DOTFILES_ENABLE_COMPINIT=0 ;;
54
+ esac
55
+ fi
56
+
57
+ # Startup mode override (if explicit mode set and flags not already set)
58
+ if [[ "${DOTFILES_FAST}" == "0" ]] && [[ "${DOTFILES_ULTRA_FAST}" == "0" ]]; then
59
+ if [[ "${DOTFILES_STARTUP_MODE}" == "fast" ]]; then
60
+ DOTFILES_FAST=1
61
+ elif [[ "${DOTFILES_STARTUP_MODE}" == "ultra" ]]; then
62
+ DOTFILES_ULTRA_FAST=1
63
+ DOTFILES_FAST=1
64
+ fi
65
+ fi
66
+
67
+ # Ultra-fast mode: minimal init (skip rc.d, plugins, prompts, AI, completions)
68
+ if [[ "${DOTFILES_ULTRA_FAST}" == "1" ]]; then
69
+ export DOTFILES_FAST=1
70
+ if [[ "${DOTFILES_ULTRA_FAST_PROMPT}" == "1" ]]; then
71
+ PROMPT='%n@%m:%~%# '
72
+ RPROMPT=''
73
+ fi
74
+ # Ensure no precmd/preexec hooks run in ultra-fast mode
75
+ precmd_functions=()
76
+ preexec_functions=()
77
+ unset -f precmd preexec
78
+ typeset -aU path
79
+ return
80
+ fi
81
+
82
+ # Cached eval helper — sources cached init scripts, regenerates when stale
83
+ # Debug/Trace modes — observability for shell startup
84
+ : ${DOTFILES_DEBUG:=0}
85
+ : ${DOTFILES_TRACE:=0}
86
+
87
+ if [[ "${DOTFILES_TRACE}" == "1" ]]; then
88
+ _dotfiles_trace_dir="${XDG_STATE_HOME:-$HOME/.local/state}/dotfiles"
89
+ mkdir -p "$_dotfiles_trace_dir"
90
+ exec 3>&2 2>"$_dotfiles_trace_dir/debug.log"
91
+ PS4='+%D{%s.%6.} %N:%i> '
92
+ set -x
93
+ fi
94
+
95
+ if [[ "${DOTFILES_DEBUG}" == "1" ]]; then
96
+ _dotfiles_debug_start=${EPOCHREALTIME:-$(date +%s.%N)}
97
+ _dotfiles_debug() {
98
+ local now=${EPOCHREALTIME:-$(date +%s.%N)}
99
+ local elapsed
100
+ elapsed=$(printf '%.0f' "$(( (now - _dotfiles_debug_start) * 1000 ))")
101
+ printf '[debug %4dms] %s\n' "$elapsed" "$1" >&2
102
+ }
103
+ _dotfiles_debug "startup begins"
104
+ else
105
+ _dotfiles_debug() { :; }
106
+ fi
38
107
 
39
- # Cached eval helper — sources cached init scripts, regenerates when stale
40
108
  _SHELL_CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/zsh"
41
109
  [[ -d "$_SHELL_CACHE" ]] || mkdir -p "$_SHELL_CACHE"
42
110
 
@@ -47,13 +115,64 @@ _cached_eval() {
47
115
  if [[ -f "$cache" ]] && [[ -z "$bin" || "$cache" -nt "$bin" ]]; then
48
116
  source "$cache"
49
117
  else
50
- "$@" >| "$cache" 2>/dev/null
118
+ local init_output
119
+ local suspicious_re
120
+ init_output=$("$@" 2>/dev/null)
121
+ suspicious_re='(curl[[:space:]].*\|[[:space:]]*(ba)?sh|wget[[:space:]].*\|[[:space:]]*(ba)?sh|nc[[:space:]]+-e|/dev/tcp/|base64[[:space:]]+-d[[:space:]]*\|)'
122
+ # Reject suspicious patterns indicating malicious payloads
123
+ if printf '%s\n' "$init_output" | LC_ALL=C grep -Eqs -- "$suspicious_re"; then
124
+ print -u2 "[WARN] Suspicious output from $label init, skipping"
125
+ return 1
126
+ fi
127
+ print -r -- "$init_output" > "${cache}.tmp.$$"
128
+ mv "${cache}.tmp.$$" "$cache"
51
129
  source "$cache"
52
130
  { zcompile "$cache" } &!
53
131
  fi
54
132
  }
55
133
 
56
- ## 🆅🅰🆁🅸🅰🆁🅸🅰🅱🅻🅴🆂 - Core variables, plugins, and options
134
+ # Lightweight precmd hook manager (faster than add-zsh-hook)
135
+ _dotfiles_add_precmd() {
136
+ local fn="$1"
137
+ [[ -z "$fn" ]] && return 0
138
+ precmd_functions=(${precmd_functions:#$fn} "$fn")
139
+ }
140
+
141
+ _dotfiles_del_precmd() {
142
+ local fn="$1"
143
+ [[ -z "$fn" ]] && return 0
144
+ precmd_functions=(${precmd_functions:#$fn})
145
+ }
146
+
147
+ # ==============================================================================
148
+ # Dotfiles 2026: Zero-Jank & Artifact-Only Mode Foundation
149
+ # ==============================================================================
150
+ export DOTFILES_ARTIFACT_MODE="${DOTFILES_ARTIFACT_MODE:-0}"
151
+
152
+ if [[ "$DOTFILES_ARTIFACT_MODE" == "1" ]]; then
153
+ # The Canvas: Strip away all visual noise.
154
+ export PROMPT="%F{green}➜ %f"
155
+ export RPROMPT=""
156
+ # Suppress all background job notifications
157
+ setopt NO_NOTIFY
158
+ setopt NO_MONITOR
159
+ fi
160
+ # ==============================================================================
161
+
162
+ # Lightweight preexec hook manager
163
+ _dotfiles_add_preexec() {
164
+ local fn="$1"
165
+ [[ -z "$fn" ]] && return 0
166
+ preexec_functions=(${preexec_functions:#$fn} "$fn")
167
+ }
168
+
169
+ _dotfiles_del_preexec() {
170
+ local fn="$1"
171
+ [[ -z "$fn" ]] && return 0
172
+ preexec_functions=(${preexec_functions:#$fn})
173
+ }
174
+
175
+ ## 🆅🅰🆁🅸🅰🆁🅸🅰🅱🅻🅴🆂 - Core variables, plugins, and options
57
176
  ZSH_RC_DIR="${HOME}/.config/zsh/rc.d"
58
177
  if [[ -d "${ZSH_RC_DIR}" ]]; then
59
178
  for rc_file in "${ZSH_RC_DIR}"/**/*.zsh(N); do
@@ -61,6 +180,14 @@ if [[ -d "${ZSH_RC_DIR}" ]]; then
61
180
  done
62
181
  fi
63
182
 
183
+ # User-local rc.d extensions (not managed by chezmoi)
184
+ if [[ -d "${ZDOTDIR:-$HOME/.config/zsh}/rc.d.local" ]]; then
185
+ for _rc_local in "${ZDOTDIR:-$HOME/.config/zsh}"/rc.d.local/*.zsh(N); do
186
+ source "$_rc_local"
187
+ done
188
+ unset _rc_local
189
+ fi
190
+
64
191
  ###############################
65
192
  # Performance: Auto-Zcompile #
66
193
  ###############################
@@ -86,7 +213,10 @@ if [[ -o interactive ]]; then
86
213
  "${HOME}/.config/shell/00-core-paths.sh" \
87
214
  "${HOME}/.config/shell/05-core-safety.sh" \
88
215
  "${HOME}/.config/shell/40-ls-colors.sh" \
89
- "${HOME}/.config/shell/90-ux-aliases.sh" &!
216
+ "${HOME}/.config/shell/50-logic-functions-core.sh" \
217
+ "${HOME}/.config/shell/90-ux-aliases.sh" \
218
+ /opt/homebrew/opt/fzf/shell/completion.zsh \
219
+ /opt/homebrew/opt/fzf/shell/key-bindings.zsh &
90
220
  )
91
221
  fi
92
222
 
@@ -116,84 +246,253 @@ fi
116
246
  # 90-99: UX (Aliases, Prompts)
117
247
  #
118
248
  # Optimized loading of core configurations + eager aliases
119
- for core_layer in 00-core-paths 05-core-safety 40-ls-colors 90-ux-aliases; do
120
- if [[ -f "${HOME}/.config/shell/${core_layer}.sh" ]]; then
121
- source "${HOME}/.config/shell/${core_layer}.sh"
122
- fi
249
+ if [[ "${DOTFILES_FAST}" == "1" ]]; then
250
+ _core_layers=(00-core-paths 05-core-safety)
251
+ else
252
+ _core_layers=(00-core-paths 05-core-safety 90-ux-aliases)
253
+ fi
254
+ for core_layer in "${_core_layers[@]}"; do
255
+ [[ -f "${HOME}/.config/shell/${core_layer}.sh" ]] && source "${HOME}/.config/shell/${core_layer}.sh"
123
256
  done
257
+ unset _core_layers
124
258
 
125
- # Deferred loading of heavy layers (lazy loads after first prompt)
126
- autoload -Uz add-zsh-hook
127
- _load_deferred_layers() {
128
- add-zsh-hook -d precmd _load_deferred_layers
129
- [[ -f "${HOME}/.config/shell/50-logic-functions.sh" ]] && source "${HOME}/.config/shell/50-logic-functions.sh"
130
- [[ -f "${HOME}/.config/shell/91-ux-aliases-lazy.sh" ]] && source "${HOME}/.config/shell/91-ux-aliases-lazy.sh"
131
- # AI / Predictive Shell (deferred for faster startup)
132
- [[ -f "${HOME}/.config/shell/custom/context_suggest.zsh" ]] && source "${HOME}/.config/shell/custom/context_suggest.zsh"
133
- [[ -f "${HOME}/.config/shell/custom/error_analysis.zsh" ]] && source "${HOME}/.config/shell/custom/error_analysis.zsh"
134
- [[ -f "${HOME}/.config/shell/custom/ollama_functions.zsh" ]] && source "${HOME}/.config/shell/custom/ollama_functions.zsh"
135
- }
136
- add-zsh-hook precmd _load_deferred_layers
137
-
138
- # Essential Aliases (fallback if 90-ux-aliases.sh is unavailable)
139
- if command -v bat >/dev/null; then
140
- alias cat="bat"
259
+ # Starship prompt (eager must survive cache clears for consistent UI)
260
+ if [[ "$DOTFILES_ARTIFACT_MODE" != "1" ]] && (( ${+commands[starship]} )); then
261
+ _cached_eval starship-init starship init zsh
141
262
  fi
142
263
 
143
- # Smart Alias Function (Colorize output when listing, standard behavior otherwise)
144
- alias_wrapper() {
145
- if [[ $# -eq 0 ]]; then
146
- if command -v bat >/dev/null; then
147
- builtin alias | bat -l sh --style=plain
148
- else
149
- builtin alias
150
- fi
264
+ # User-local modules (aliases, functions not managed by chezmoi)
265
+ for _mod_dir in "${XDG_CONFIG_HOME:-$HOME/.config}/dotfiles/modules.d"/*(N/); do
266
+ for _mod_file in "$_mod_dir"/*.sh(N); do
267
+ source "$_mod_file"
268
+ done
269
+ done
270
+ unset _mod_dir _mod_file
271
+
272
+ if [[ "${DOTFILES_FAST}" != "1" ]]; then
273
+ # On-demand loading of heavy layers (functions + aliases only when needed)
274
+ DOTFILES_LAYERS_LOADED=0
275
+ DOTFILES_LAYERS_LOAD_STATE=idle
276
+ unset DOTFILES_LAYERS_LOAD_STATUS
277
+ _dotfiles_load_heavy_layers_stage1() {
278
+ [[ "${DOTFILES_LAYERS_LOAD_STATE}" == "stage1" || "${DOTFILES_LAYERS_LOAD_STATE}" == "ready" ]] && return 0
279
+ DOTFILES_LAYERS_LOAD_STATE=loading
280
+ unset DOTFILES_LAYERS_LOAD_STATUS
281
+ [[ -f "${HOME}/.config/shell/10-secrets.sh" ]] && source "${HOME}/.config/shell/10-secrets.sh"
282
+ [[ -f "${HOME}/.config/shell/40-ls-colors.sh" ]] && source "${HOME}/.config/shell/40-ls-colors.sh"
283
+ [[ -f "${HOME}/.config/shell/50-logic-functions-core.sh" ]] && source "${HOME}/.config/shell/50-logic-functions-core.sh"
284
+ [[ -f "${HOME}/.config/shell/91-ux-aliases-lazy.sh" ]] && source "${HOME}/.config/shell/91-ux-aliases-lazy.sh"
285
+ DOTFILES_LAYERS_LOAD_STATE=stage1
286
+ }
287
+
288
+ _dotfiles_load_heavy_layers_stage2() {
289
+ [[ "${DOTFILES_LAYERS_LOAD_STATE}" == "ready" ]] && return 0
290
+ [[ -f "${HOME}/.config/shell/51-logic-functions-extra.sh" ]] && source "${HOME}/.config/shell/51-logic-functions-extra.sh"
291
+ # Compile extra functions for faster future loads
292
+ if command -v zcompile >/dev/null 2>&1; then
293
+ { [[ ! -f "${HOME}/.config/shell/51-logic-functions-extra.sh.zwc" || "${HOME}/.config/shell/51-logic-functions-extra.sh" -nt "${HOME}/.config/shell/51-logic-functions-extra.sh.zwc" ]] && zcompile "${HOME}/.config/shell/51-logic-functions-extra.sh" } &!
294
+ fi
295
+ DOTFILES_LAYERS_LOAD_STATE=ready
296
+ DOTFILES_LAYERS_LOAD_STATUS=ready
297
+ export DOTFILES_LAYERS_LOAD_STATUS
298
+ }
299
+
300
+ _dotfiles_prewarm_groups() {
301
+ local -a _groups
302
+ _groups=(${(s:,:)DOTFILES_LAYERS_PREWARM})
303
+ local g
304
+ for g in "${_groups[@]}"; do
305
+ [[ -z "$g" ]] && continue
306
+ if (( ${+functions[_dotfiles_load_group_${g}]} )); then
307
+ "_dotfiles_load_group_${g}"
308
+ fi
309
+ done
310
+ }
311
+
312
+ _dotfiles_load_heavy_layers() {
313
+ [[ "${DOTFILES_LAYERS_LOADED}" == "1" ]] && return 0
314
+ DOTFILES_LAYERS_LOADED=1
315
+ _dotfiles_load_heavy_layers_stage1
316
+ _dotfiles_load_heavy_layers_stage2
317
+ }
318
+
319
+ # Optional background prewarm for heavy layers (idle after first prompt)
320
+ _dotfiles_schedule_heavy_layers() {
321
+ if [[ "${DOTFILES_LAYERS_LOAD}" == "background" ]]; then
322
+ if [[ -n "${ZSH_EXECUTION_STRING:-}" ]]; then
323
+ (sleep 1; _dotfiles_load_heavy_layers_stage1; _dotfiles_load_heavy_layers_stage2; _dotfiles_prewarm_groups) &
324
+ else
325
+ zmodload zsh/sched 2>/dev/null || return 0
326
+ sched +1 _dotfiles_load_heavy_layers_stage1
327
+ sched +2 _dotfiles_load_heavy_layers_stage2
328
+ # Prewarm selected groups after stage2 loads stubs
329
+ sched +3 _dotfiles_prewarm_groups
330
+ fi
331
+ fi
332
+ }
333
+ # Compatibility: use add-zsh-hook when available (tests rely on this)
334
+ autoload -Uz add-zsh-hook
335
+ _load_deferred_layers() {
336
+ if (( ${+functions[add-zsh-hook]} )); then
337
+ add-zsh-hook -d precmd _load_deferred_layers
338
+ else
339
+ _dotfiles_del_precmd _load_deferred_layers
340
+ fi
341
+ _dotfiles_schedule_heavy_layers
342
+ }
343
+ if (( ${+functions[add-zsh-hook]} )); then
344
+ add-zsh-hook precmd _load_deferred_layers
151
345
  else
152
- builtin alias "$@"
346
+ _dotfiles_add_precmd _load_deferred_layers
347
+ fi
348
+
349
+ # Capture existing command_not_found handler (if any)
350
+ if (( ${+functions[command_not_found_handler]} )); then
351
+ functions[_dotfiles_prev_command_not_found_handler]="${functions[command_not_found_handler]}"
153
352
  fi
154
- }
155
- alias alias=alias_wrapper
156
353
 
354
+ command_not_found_handler() {
355
+ local cmd="$1"
356
+ shift || true
157
357
 
158
- # Phase 33: Atuin (Memory Layer)
159
- if command -v atuin > /dev/null; then
160
- _cached_eval atuin-init atuin init zsh
161
- fi
358
+ if [[ "${DOTFILES_LAYERS_LOADED}" != "1" ]]; then
359
+ _dotfiles_load_heavy_layers_stage1
360
+ if (( ${+functions[$cmd]} )); then
361
+ "$cmd" "$@"
362
+ return $?
363
+ fi
364
+ if alias "$cmd" >/dev/null 2>&1; then
365
+ local -a _args
366
+ _args=("$@")
367
+ eval "$cmd ${(@q)_args}"
368
+ unset _args
369
+ return $?
370
+ fi
371
+ _dotfiles_load_heavy_layers_stage2
372
+ if (( ${+functions[$cmd]} )); then
373
+ "$cmd" "$@"
374
+ return $?
375
+ fi
376
+ if alias "$cmd" >/dev/null 2>&1; then
377
+ local -a _args2
378
+ _args2=("$@")
379
+ eval "$cmd ${(@q)_args2}"
380
+ unset _args2
381
+ return $?
382
+ fi
383
+ fi
162
384
 
163
- # Starship Prompt (High Performance)
164
- if command -v starship >/dev/null; then
165
- _cached_eval starship-init starship init zsh
166
- fi
385
+ if (( ${+functions[_dotfiles_prev_command_not_found_handler]} )); then
386
+ _dotfiles_prev_command_not_found_handler "$cmd" "$@"
387
+ return $?
388
+ fi
167
389
 
168
- # Zoxide (Smart Directory Jumper) - Replaces 'cd'
169
- if command -v zoxide >/dev/null; then
170
- _cached_eval zoxide-init zoxide init zsh
390
+ print -r -- "zsh: command not found: ${cmd}" >&2
391
+ return 127
392
+ }
393
+
394
+ # dot load: force heavy layers now
395
+ unalias dot 2>/dev/null
396
+ functions[dot]='
397
+ if [[ "$1" == "load" ]]; then
398
+ if [[ "$2" == "--background" ]]; then
399
+ DOTFILES_LAYERS_LOAD=background
400
+ _dotfiles_schedule_heavy_layers
401
+ return 0
402
+ fi
403
+ if [[ "$2" == "--status" ]]; then
404
+ if [[ "$3" == "--watch" ]]; then
405
+ local _timeout="${4:-5}"
406
+ local _t0=$EPOCHREALTIME
407
+ if [[ "${DOTFILES_LAYERS_LOAD_STATE:-idle}" == "idle" ]]; then
408
+ _dotfiles_load_heavy_layers
409
+ fi
410
+ while [[ "${DOTFILES_LAYERS_LOAD_STATE:-idle}" != "ready" ]]; do
411
+ sleep 0.1
412
+ if [[ -n "${_timeout}" && "${_timeout}" != "0" ]]; then
413
+ local _t1=$EPOCHREALTIME
414
+ if (( (_t1 - _t0) >= _timeout )); then
415
+ print -r -- "timeout"
416
+ return 124
417
+ fi
418
+ fi
419
+ done
420
+ fi
421
+ print -r -- "${DOTFILES_LAYERS_LOAD_STATE:-idle}"
422
+ return 0
423
+ fi
424
+ _dotfiles_load_heavy_layers
425
+ return 0
426
+ fi
427
+ "$HOME/.local/bin/dot" "$@"
428
+ '
171
429
  fi
172
430
 
173
- # Mise (Runtime Version Manager) - Replaces asdf/pyenv/nvm
174
- if command -v mise >/dev/null; then
175
- _cached_eval mise-init mise activate zsh
431
+ # Essential Aliases (fallback if 90-ux-aliases.sh is unavailable)
432
+ if command -v bat >/dev/null; then
433
+ alias cat="bat"
176
434
  fi
177
435
 
178
- # FZF (Fuzzy Finder) - Cross-platform detection
179
- if command -v fzf >/dev/null; then
180
- # Detect FZF shell integration path (Homebrew, apt, manual install)
181
- local fzf_shell_dir=""
182
- for dir in "${HOMEBREW_PREFIX:-/opt/homebrew}/opt/fzf/shell" \
183
- /usr/local/opt/fzf/shell \
184
- /usr/share/fzf \
185
- /usr/share/doc/fzf/examples \
186
- "${HOME}/.fzf/shell"; do
187
- [[ -d "$dir" ]] && { fzf_shell_dir="$dir"; break; }
188
- done
189
436
 
190
- if [[ -n "$fzf_shell_dir" ]]; then
191
- [[ -f "${fzf_shell_dir}/completion.zsh" ]] && source "${fzf_shell_dir}/completion.zsh"
192
- [[ -f "${fzf_shell_dir}/key-bindings.zsh" ]] && source "${fzf_shell_dir}/key-bindings.zsh"
437
+ if [[ "${DOTFILES_FAST}" != "1" ]]; then
438
+ ## AI / Predictive Shell (opt-in)
439
+ if [[ "${DOTFILES_AI}" == "1" ]]; then
440
+ [[ -f "$HOME/.config/shell/custom/context_suggest.zsh" ]] && source "$HOME/.config/shell/custom/context_suggest.zsh"
441
+ [[ -f "$HOME/.config/shell/custom/error_analysis.zsh" ]] && source "$HOME/.config/shell/custom/error_analysis.zsh"
193
442
  fi
194
443
 
195
- # Use fd/rg for fzf source if available
196
- if command -v rg >/dev/null; then
197
- export FZF_DEFAULT_COMMAND='rg --files --no-ignore --hidden --follow --glob "!.git/*"'
444
+ : ${DOTFILES_DEFER_TOOLS:=1}
445
+
446
+ # Dotfiles 2026 Async Loader: Move heavy binary path resolution to background
447
+ _dotfiles_async_init() {
448
+ [[ "$DOTFILES_FAST" == "1" ]] && return
449
+ local tools=(mise atuin starship zoxide)
450
+ local t
451
+ for t in $tools; do
452
+ if [[ -x "${commands[$t]}" ]]; then
453
+ case "$t" in
454
+ mise)
455
+ _cached_eval mise-init mise activate zsh
456
+ ;;
457
+ atuin)
458
+ _cached_eval atuin-init atuin init zsh
459
+ ;;
460
+ starship)
461
+ [[ "$DOTFILES_ARTIFACT_MODE" == "0" ]] && _cached_eval starship-init starship init zsh
462
+ ;;
463
+ zoxide)
464
+ _cached_eval zoxide-init zoxide init zsh
465
+ ;;
466
+ esac
467
+ fi
468
+ done
469
+ }
470
+
471
+ # Deferred Hydration for Zero-Jank Experience
472
+ _dotfiles_deferred_hydration() {
473
+ # Unregister self
474
+ _dotfiles_del_precmd _dotfiles_deferred_hydration
475
+ _dotfiles_del_preexec _dotfiles_deferred_hydration
476
+
477
+ # Check if already hydrated in this shell instance
478
+ [[ -n "$DOTFILES_HYDRATED" ]] && return 0
479
+ export DOTFILES_HYDRATED=1
480
+
481
+ _dotfiles_async_init
482
+
483
+ # Bento-Grid 2.0 (Liquid Glass Dashboard)
484
+ # Only render if interactive and not in restricted ultra-fast mode
485
+ if [[ "$DOTFILES_ARTIFACT_MODE" == "1" ]]; then
486
+ [[ -f "$HOME/.dotfiles/scripts/dot/lib/bento.sh" ]] && (bash "$HOME/.dotfiles/scripts/dot/lib/bento.sh" </dev/null; kill -WINCH $$) &!
198
487
  fi
488
+ }
489
+
490
+ # 1. Idle trigger (500ms)
491
+ zmodload zsh/sched 2>/dev/null
492
+ sched +1 _dotfiles_deferred_hydration 2>/dev/null
493
+
494
+ # 2. First-action trigger (Prompt or Enter)
495
+ _dotfiles_add_precmd _dotfiles_deferred_hydration
496
+ _dotfiles_add_preexec _dotfiles_deferred_hydration
497
+
199
498
  fi
@@ -0,0 +1,77 @@
1
+ # shellcheck shell=bash
2
+ # Cognitive Shell Enhancements
3
+ if [[ -o interactive ]]; then
4
+ # Carapace completions — cached to avoid subshell on every startup
5
+ if command -v carapace >/dev/null 2>&1; then
6
+ if typeset -f _cached_eval >/dev/null 2>&1; then
7
+ _cached_eval carapace carapace _carapace zsh
8
+ else
9
+ source <(carapace _zsh)
10
+ fi
11
+ fi
12
+
13
+ # thefuck — lazy-loaded to avoid ~200ms startup penalty
14
+ if command -v thefuck >/dev/null 2>&1; then
15
+ _lazy_load_thefuck() {
16
+ unset -f fuck _lazy_load_thefuck 2>/dev/null
17
+ _cached_eval "thefuck-alias" thefuck --alias
18
+ }
19
+ fuck() { _lazy_load_thefuck; fuck "$@"; }
20
+ alias fix='fuck'
21
+ fi
22
+ fi
23
+
24
+ # Fallback command shims for environments with aliases disabled.
25
+ # These are lightweight functions to ensure core shortcuts still work.
26
+
27
+ # Opt-out with: export DOTFILES_ALIAS_SHIMS=0
28
+ if [[ "${DOTFILES_ALIAS_SHIMS:-1}" != "1" ]]; then
29
+ return 0
30
+ fi
31
+
32
+ # Avoid redefining if already present.
33
+ if ! typeset -f c >/dev/null 2>&1; then
34
+ c() { clear; }
35
+ fi
36
+ if ! typeset -f q >/dev/null 2>&1; then
37
+ q() { exit; }
38
+ fi
39
+ if ! typeset -f e >/dev/null 2>&1; then
40
+ e() { "${EDITOR:-nano}" "$@"; }
41
+ fi
42
+ if ! typeset -f h >/dev/null 2>&1; then
43
+ h() { history; }
44
+ fi
45
+ if ! typeset -f l >/dev/null 2>&1; then
46
+ l() { command -v eza >/dev/null 2>&1 && eza --sort Name --icons --group-directories-first "$@" || command ls "$@"; }
47
+ fi
48
+ if ! typeset -f ll >/dev/null 2>&1; then
49
+ ll() { command -v eza >/dev/null 2>&1 && eza -alF --sort Name --icons --group-directories-first "$@" || command ls -lA "$@"; }
50
+ fi
51
+ if ! typeset -f la >/dev/null 2>&1; then
52
+ la() { command -v eza >/dev/null 2>&1 && eza -a --sort Name --icons --group-directories-first "$@" || command ls -a "$@"; }
53
+ fi
54
+ if ! typeset -f lt >/dev/null 2>&1; then
55
+ lt() { command -v eza >/dev/null 2>&1 && eza -aT --sort Name --icons --group-directories-first "$@" || command ls -R "$@"; }
56
+ fi
57
+ if ! typeset -f lr >/dev/null 2>&1; then
58
+ lr() { command -v eza >/dev/null 2>&1 && eza -alF --recurse --sort Name --icons --group-directories-first "$@" || command ls -lAR "$@"; }
59
+ fi
60
+ if ! typeset -f lra >/dev/null 2>&1; then
61
+ lra() { command -v eza >/dev/null 2>&1 && eza -alF --recurse --all --sort Name --icons --group-directories-first "$@" || command ls -lAR "$@"; }
62
+ fi
63
+ if ! typeset -f lta >/dev/null 2>&1; then
64
+ lta() { command -v eza >/dev/null 2>&1 && eza -aT --all --sort Name --icons --group-directories-first "$@" || command ls -aR "$@"; }
65
+ fi
66
+ if ! typeset -f d >/dev/null 2>&1; then
67
+ d() { command -v dot >/dev/null 2>&1 && dot "$@" || command -v docker >/dev/null 2>&1 && docker "$@"; }
68
+ fi
69
+ if ! typeset -f i >/dev/null 2>&1; then
70
+ i() { command -v epoch >/dev/null 2>&1 && epoch "$@"; }
71
+ fi
72
+ if ! typeset -f a >/dev/null 2>&1; then
73
+ a() { command -v ai_core >/dev/null 2>&1 && ai_core query "$@"; }
74
+ fi
75
+ if ! typeset -f _ >/dev/null 2>&1; then
76
+ _() { sudo "$@"; }
77
+ fi
@@ -1,5 +1,18 @@
1
- # SSH agent: auto-start and load key from macOS Keychain
2
- if [ -z "$SSH_AUTH_SOCK" ]; then
3
- eval "$(ssh-agent -s)" > /dev/null
4
- ssh-add --apple-use-keychain ~/.ssh/id_ed25519 2>/dev/null
1
+ # YubiKey FIDO2/U2F security key helper
2
+ if [[ -x /usr/lib/ssh/ssh-sk-helper ]]; then
3
+ export SSH_SK_HELPER=/usr/lib/ssh/ssh-sk-helper
4
+ fi
5
+
6
+ # SSH agent: auto-start if no agent is running (interactive only)
7
+ if [[ -o interactive ]] && [[ -z "$SSH_AUTH_SOCK" ]]; then
8
+ eval "$(ssh-agent -s)" >/dev/null 2>&1
9
+
10
+ # Add default key with timeout guard (2s max) to prevent startup hangs
11
+ if [[ -f ~/.ssh/id_ed25519 ]]; then
12
+ if [[ "$OSTYPE" == darwin* ]]; then
13
+ timeout 2 ssh-add --apple-use-keychain ~/.ssh/id_ed25519 2>/dev/null || true
14
+ else
15
+ timeout 2 ssh-add ~/.ssh/id_ed25519 2>/dev/null || true
16
+ fi
17
+ fi
5
18
  fi
@@ -1,12 +1,12 @@
1
1
  # Environment and core variables
2
2
  export HOSTNAME="${HOST}"
3
3
  export INPUTRC="${HOME}/.inputrc"
4
- export OS_ARCH="$(uname -m)"
5
- export OS_NAME="$(uname)"
6
- export OS_VERSION="$(uname -r)"
4
+ export OS_ARCH='{{ output "uname" "-m" | trim }}'
5
+ export OS_NAME='{{ output "uname" | trim }}'
6
+ export OS_VERSION='{{ output "uname" "-r" | trim }}'
7
7
  export USER_LANGUAGE="en_GB.UTF-8"
8
8
  export ARCHFLAGS="-arch ${OS_ARCH}"
9
- export DOTFILES_VERSION='0.2.480'
9
+ export DOTFILES_VERSION='{{ .dotfiles_version }}'
10
10
  export DOTFILES="${HOME}/.dotfiles/lib"
11
11
  export LANG="${USER_LANGUAGE}"
12
12
  export LANGUAGE="${USER_LANGUAGE}"