@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
@@ -0,0 +1,65 @@
1
+ # Zinit plugin manager
2
+ [[ "${DOTFILES_FAST:-0}" == "1" ]] && return 0
3
+ [[ "${DOTFILES_ULTRA_FAST:-0}" == "1" ]] && return 0
4
+
5
+ ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit/zinit.git"
6
+
7
+ _dotfiles_zinit_git_policy() {
8
+ [[ -d "$ZINIT_HOME/.git" ]] || return 0
9
+ command git -C "$ZINIT_HOME" config --local merge.verifySignatures false >/dev/null 2>&1 || true
10
+ }
11
+
12
+ _dotfiles_zinit_init() {
13
+ if [[ ! -f "$ZINIT_HOME/zinit.zsh" ]]; then
14
+ print -P "%F{33}▓▒░ %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f"
15
+ command mkdir -p "$(dirname "$ZINIT_HOME")" && command chmod g-rwX "$(dirname "$ZINIT_HOME")"
16
+ command git clone https://github.com/zdharma-continuum/zinit "$ZINIT_HOME" && \
17
+ print -P "%F{33}▓▒░ %F{34}Installation successful.%f%b" || \
18
+ print -P "%F{160}▓▒░ The clone has failed.%f%b"
19
+ fi
20
+
21
+ _dotfiles_zinit_git_policy
22
+
23
+ source "$ZINIT_HOME/zinit.zsh"
24
+ autoload -Uz _zinit
25
+ (( ${+_comps} )) && _comps[zinit]=_zinit
26
+
27
+ # Load Zsh Plugins (Turbo mode - deferred loading, pinned to stable releases)
28
+ zinit ice wait lucid ver"0.8.0"
29
+ zinit light zsh-users/zsh-syntax-highlighting
30
+ zinit ice wait lucid ver"v0.7.1" atload"_zsh_autosuggest_start"
31
+ zinit light zsh-users/zsh-autosuggestions
32
+ zinit ice wait lucid ver"0.35.0" blockf atpull"zinit creinstall -q ."
33
+ zinit light zsh-users/zsh-completions
34
+ }
35
+
36
+ # Defer Zinit init for faster first prompt (opt-out by setting DOTFILES_DEFER_ZINIT=0)
37
+ : ${DOTFILES_DEFER_ZINIT:=1}
38
+ : ${DOTFILES_DEFER_ZINIT_MODE:=preexec}
39
+
40
+ if [[ "${DOTFILES_DEFER_ZINIT}" == "1" ]]; then
41
+ # Stub to auto-load zinit on first call (e.g. by topgrade)
42
+ zinit() {
43
+ unfunction zinit
44
+ _dotfiles_zinit_init
45
+ zinit "$@"
46
+ }
47
+
48
+ _dotfiles_zinit_deferred() {
49
+ if [[ "${DOTFILES_DEFER_ZINIT_MODE}" == "preexec" ]]; then
50
+ _dotfiles_del_preexec _dotfiles_zinit_deferred
51
+ else
52
+ _dotfiles_del_precmd _dotfiles_zinit_deferred
53
+ fi
54
+ # If zinit was already loaded via the stub, this is a no-op
55
+ (( ${+functions[zinit]} )) && [[ "$(whence -w zinit)" == "zinit: function" ]] || _dotfiles_zinit_init
56
+ }
57
+
58
+ if [[ "${DOTFILES_DEFER_ZINIT_MODE}" == "preexec" ]]; then
59
+ _dotfiles_add_preexec _dotfiles_zinit_deferred
60
+ else
61
+ _dotfiles_add_precmd _dotfiles_zinit_deferred
62
+ fi
63
+ else
64
+ _dotfiles_zinit_init
65
+ fi
@@ -1,7 +1,4 @@
1
1
  # Zsh history and options
2
- # Set secure default umask (077 = owner only, 022 = standard)
3
- umask 022
4
-
5
2
  HISTFILE="${HOME}/.zsh_history"
6
3
  HISTSIZE=10000
7
4
  SAVEHIST=10000
@@ -14,6 +11,8 @@ setopt HIST_REDUCE_BLANKS
14
11
  setopt EXTENDED_HISTORY
15
12
  setopt SHARE_HISTORY
16
13
  setopt APPEND_HISTORY
14
+ setopt HIST_SAVE_BY_COPY
15
+ setopt INTERACTIVE_COMMENTS
17
16
 
18
17
  setopt AUTO_CD
19
18
  setopt AUTO_PUSHD
@@ -42,12 +41,12 @@ fi
42
41
  if [[ -z ${fpath[(r)${ZSH_COMPLETIONS_DIR}]} ]]; then
43
42
  fpath=("${ZSH_COMPLETIONS_DIR}" "${fpath[@]}")
44
43
  fi
45
- if [[ -f "${HOME}/.local/bin/executable_dot_completion" ]]; then
46
- fpath=("${HOME}/.local/bin" "${fpath[@]}")
47
- fi
44
+ {{- /* Node.js version manager: configured via .chezmoidata.toml tools.node_manager */ -}}
45
+ {{- $node_mgr := default "mise" .tools.node_manager -}}
46
+ {{- if eq $node_mgr "fnm" }}
48
47
  # fnm (Fast Node Manager)
49
48
  # Initialize early so Node + corepack use the expected version.
50
- if command -v fnm >/dev/null; then
49
+ if [[ "${DOTFILES_FAST:-0}" != "1" ]] && [[ "${DOTFILES_ULTRA_FAST:-0}" != "1" ]] && command -v fnm >/dev/null; then
51
50
  if [[ ! -f "${ZSH_COMPLETIONS_DIR}/_fnm" ]]; then
52
51
  command fnm completions --shell zsh >| "${ZSH_COMPLETIONS_DIR}/_fnm"
53
52
  fi
@@ -62,11 +61,29 @@ if command -v fnm >/dev/null; then
62
61
  pnpm() { _lazy_load_fnm; command pnpm "$@"; }
63
62
  pnpx() { _lazy_load_fnm; command pnpx "$@"; }
64
63
  fi
64
+ {{- end }}
65
+ {{- /* When node_manager = "mise", Node.js is handled by mise activate in dot_zshrc.tmpl */}}
65
66
 
67
+ # Completions: pre-warmed by `dot prewarm`, generated on-demand as fallback
68
+ if [[ "${DOTFILES_FAST:-0}" != "1" ]] && [[ "${DOTFILES_ULTRA_FAST:-0}" != "1" ]]; then
69
+ [[ ! -f "${ZSH_COMPLETIONS_DIR}/_gh" ]] && command -v gh >/dev/null &&
70
+ command gh completion -s zsh >| "${ZSH_COMPLETIONS_DIR}/_gh"
71
+ [[ ! -f "${ZSH_COMPLETIONS_DIR}/_just" ]] && command -v just >/dev/null &&
72
+ command just --completions zsh >| "${ZSH_COMPLETIONS_DIR}/_just"
73
+ [[ ! -f "${ZSH_COMPLETIONS_DIR}/_chezmoi" ]] && command -v chezmoi >/dev/null &&
74
+ command chezmoi completion zsh >| "${ZSH_COMPLETIONS_DIR}/_chezmoi"
75
+ [[ ! -f "${ZSH_COMPLETIONS_DIR}/_kubectl" ]] && command -v kubectl >/dev/null &&
76
+ command kubectl completion zsh >| "${ZSH_COMPLETIONS_DIR}/_kubectl"
77
+ [[ ! -f "${ZSH_COMPLETIONS_DIR}/_atuin" ]] && command -v atuin >/dev/null &&
78
+ command atuin gen-completions --shell zsh --out-dir "${ZSH_COMPLETIONS_DIR}" 2>/dev/null
79
+ [[ ! -f "${ZSH_COMPLETIONS_DIR}/_mise" ]] && command -v mise >/dev/null &&
80
+ command mise completions zsh >| "${ZSH_COMPLETIONS_DIR}/_mise" 2>/dev/null
81
+ fi
66
82
 
67
- # Lazy-load NVM (if fnm is not installed)
68
- if ! command -v fnm >/dev/null; then
69
- export NVM_DIR="${NVM_DIR:-$HOME/.nvm}"
83
+ {{- if eq $node_mgr "nvm" }}
84
+ # Lazy-load NVM
85
+ export NVM_DIR="${NVM_DIR:-$HOME/.nvm}"
86
+ if [[ "${DOTFILES_FAST:-0}" != "1" ]] && [[ "${DOTFILES_ULTRA_FAST:-0}" != "1" ]]; then
70
87
  if [[ -s "${NVM_DIR}/nvm.sh" ]]; then
71
88
  _lazy_load_nvm() {
72
89
  unfunction node npm npx nvm _lazy_load_nvm 2>/dev/null
@@ -83,10 +100,11 @@ if ! command -v fnm >/dev/null; then
83
100
  npx() { _lazy_load_nvm; command npx "$@"; }
84
101
  fi
85
102
  fi
103
+ {{- end }}
86
104
 
87
105
  # Lazy-load SDKMAN
88
106
  export SDKMAN_DIR="${SDKMAN_DIR:-$HOME/.sdkman}"
89
- if [[ -s "${SDKMAN_DIR}/bin/sdkman-init.sh" && -z "${functions[sdk]:-}" ]]; then
107
+ if [[ "${DOTFILES_FAST:-0}" != "1" ]] && [[ "${DOTFILES_ULTRA_FAST:-0}" != "1" ]] && [[ -s "${SDKMAN_DIR}/bin/sdkman-init.sh" && -z "${functions[sdk]:-}" ]]; then
90
108
  _lazy_load_sdkman() {
91
109
  unfunction sdk _lazy_load_sdkman 2>/dev/null
92
110
  # shellcheck disable=SC1090
@@ -94,30 +112,83 @@ if [[ -s "${SDKMAN_DIR}/bin/sdkman-init.sh" && -z "${functions[sdk]:-}" ]]; then
94
112
  }
95
113
  sdk() { _lazy_load_sdkman; sdk "$@"; }
96
114
  fi
97
- # Defer compinit to first prompt — saves ~37ms off startup
98
- autoload -Uz compinit add-zsh-hook
99
- _deferred_compinit() {
100
- add-zsh-hook -d precmd _deferred_compinit
101
- if [[ -n ${ZDOTDIR}/.zcompdump(#qN.mh+24) ]]; then
102
- compinit
115
+ # Defer compinit to first prompt — opt-in for max performance
116
+ : ${DOTFILES_ENABLE_COMPINIT:=0}
117
+ : ${DOTFILES_DEFER_COMPINIT:=1}
118
+ if [[ "${DOTFILES_ENABLE_COMPINIT}" == "1" ]] && [[ "${DOTFILES_FAST:-0}" != "1" ]] && [[ "${DOTFILES_ULTRA_FAST:-0}" != "1" ]]; then
119
+ autoload -Uz compinit
120
+ _deferred_compinit() {
121
+ if [[ "${DOTFILES_DEFER_COMPINIT}" == "1" ]]; then
122
+ _dotfiles_del_preexec _deferred_compinit
123
+ else
124
+ _dotfiles_del_precmd _deferred_compinit
125
+ fi
126
+ if [[ -n ${ZDOTDIR}/.zcompdump(#qN.mh+24) ]]; then
127
+ compinit
128
+ else
129
+ compinit -C
130
+ fi
131
+ # Compile zcompdump to bytecode in background for faster subsequent loads
132
+ { [[ ! -f "${ZDOTDIR}/.zcompdump.zwc" || "${ZDOTDIR}/.zcompdump" -nt "${ZDOTDIR}/.zcompdump.zwc" ]] && zcompile "${ZDOTDIR}/.zcompdump" } &!
133
+ }
134
+ if [[ "${DOTFILES_DEFER_COMPINIT}" == "1" ]]; then
135
+ _dotfiles_add_preexec _deferred_compinit
103
136
  else
104
- compinit -C
137
+ _dotfiles_add_precmd _deferred_compinit
105
138
  fi
106
- # Compile zcompdump to bytecode in background for faster subsequent loads
107
- { [[ ! -f "${ZDOTDIR}/.zcompdump.zwc" || "${ZDOTDIR}/.zcompdump" -nt "${ZDOTDIR}/.zcompdump.zwc" ]] && zcompile "${ZDOTDIR}/.zcompdump" } &!
108
- }
109
- add-zsh-hook precmd _deferred_compinit
110
139
 
111
- zstyle ':completion:*' menu select
112
- zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
113
- zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
114
- zstyle ':completion:*' special-dirs true
115
- zstyle ':completion:*' verbose yes
140
+ zstyle ':completion:*' menu select
141
+ zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
142
+ zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
143
+ zstyle ':completion:*' special-dirs true
144
+ zstyle ':completion:*' verbose yes
145
+ fi
116
146
 
117
- autoload -Uz colors && colors
147
+ # Colors (opt-in; enables $fg/$bg variables)
148
+ : ${DOTFILES_ENABLE_COLORS:=0}
149
+ if [[ "${DOTFILES_ENABLE_COLORS}" == "1" ]]; then
150
+ : ${DOTFILES_DEFER_COLORS:=1}
151
+ if [[ "${DOTFILES_DEFER_COLORS}" == "1" ]]; then
152
+ _dotfiles_colors_zle_init() {
153
+ zle -D zle-line-init
154
+ # Skip when running -c (no prompt)
155
+ [[ -n "${ZSH_EXECUTION_STRING:-}" ]] && return 0
156
+ autoload -Uz colors && colors
157
+ }
158
+ zle -N zle-line-init _dotfiles_colors_zle_init
159
+ else
160
+ autoload -Uz colors && colors
161
+ fi
162
+ fi
118
163
  unsetopt correct_all
119
164
 
165
+ # fzf integration
166
+ if [[ "${DOTFILES_FAST:-0}" != "1" ]] && [[ "${DOTFILES_ULTRA_FAST:-0}" != "1" ]]; then
167
+ if [[ -f "${HOME}/.config/fzf/fzf.zsh" ]]; then
168
+ source "${HOME}/.config/fzf/fzf.zsh"
169
+ elif [[ -f "${HOME}/.fzf.zsh" ]]; then
170
+ source "${HOME}/.fzf.zsh"
171
+ fi
172
+ fi
173
+
174
+ # Explicit fzf bindings (fallback if not already set by fzf)
175
+ if [[ "${DOTFILES_FAST:-0}" != "1" ]] && [[ "${DOTFILES_ULTRA_FAST:-0}" != "1" ]] && command -v fzf >/dev/null; then
176
+ bindkey -M viins -s '^T' 'fzf^M'
177
+ bindkey -M viins -s '^R' 'fzf^M'
178
+ fi
179
+
120
180
  # direnv (directory environments)
121
- if command -v direnv >/dev/null; then
122
- _cached_eval direnv-hook direnv hook zsh
181
+ if [[ "${DOTFILES_FAST:-0}" != "1" ]] && [[ "${DOTFILES_ULTRA_FAST:-0}" != "1" ]] && command -v direnv >/dev/null; then
182
+ # Custom quiet hook: suppress direnv status chatter on every prompt/chdir.
183
+ _dotfiles_direnv_hook() {
184
+ # Fast path: skip direnv in dotfiles unless flake mode is explicitly enabled.
185
+ if [[ "${PWD:A}" == "${HOME}/.dotfiles"* ]] && [[ "${DOTFILES_USE_FLAKE:-0}" != "1" ]] && [[ "${CI:-0}" != "1" ]]; then
186
+ return 0
187
+ fi
188
+ trap -- '' SIGINT
189
+ eval "$(direnv export zsh 2>/dev/null)"
190
+ trap - SIGINT
191
+ }
192
+ autoload -Uz add-zsh-hook
193
+ add-zsh-hook chpwd _dotfiles_direnv_hook
123
194
  fi
@@ -0,0 +1,32 @@
1
+ # Smart Alias Function (High-Fidelity TUI)
2
+ alias_wrapper() {
3
+ if [[ $# -eq 0 ]]; then
4
+ # Find gum cmd dynamically if needed
5
+ local gum_cmd
6
+ gum_cmd=$(command -v gum 2>/dev/null || (command -v mise >/dev/null && mise which "aqua:charmbracelet/gum" 2>/dev/null))
7
+
8
+ if [[ -n "$gum_cmd" ]]; then
9
+ # Use printf to get a literal tab
10
+ local tab=$'\t'
11
+
12
+ # Extract aliases, format as Tab separated, ensure only 2 columns, and pipe to gum table
13
+ builtin alias | sed -E "s/^([^=]+)='?([^']*)'?$/\1${tab}\2/" |
14
+ while IFS=$tab read -r alias_name cmd_body; do
15
+ if [[ -n "$alias_name" && -n "$cmd_body" ]]; then
16
+ # Ensure no extra tabs in body and exactly one tab total
17
+ local clean_cmd="${cmd_body//$tab/ }"
18
+ printf "%s\t%s\n" "$alias_name" "$clean_cmd"
19
+ fi
20
+ done |
21
+ "$gum_cmd" table --separator "${tab}" --print --columns "Alias,Command" --widths 15,60 \
22
+ --border rounded --border.foreground 212 --header.foreground 212
23
+ elif command -v bat >/dev/null 2>&1; then
24
+ builtin alias | bat -l sh --style=plain
25
+ else
26
+ builtin alias
27
+ fi
28
+ else
29
+ builtin alias "$@"
30
+ fi
31
+ }
32
+ alias alias=alias_wrapper
@@ -0,0 +1,195 @@
1
+ #!/usr/bin/env bash
2
+ ## AI Update — Dotfiles AI workflow updater for cross-platform environments.
3
+ ##
4
+ ## Updates all AI-related tools and runtimes including mise, npm globals,
5
+ ## pipx tools, Ollama, and LM Studio. Auto-detects installation methods.
6
+ ##
7
+ ## # Requirements
8
+ ## - curl: For downloading updates
9
+ ## - sudo: For system-level updates (Linux)
10
+ ## - zstd: For Ollama archive extraction (Linux)
11
+ ##
12
+ ## # Usage
13
+ ## ai-update # Update all AI tools
14
+ ##
15
+ ## # Platform Notes
16
+ ## - macOS: Updates via Homebrew where applicable
17
+ ## - Linux: Updates via APT, manual binaries, or pipx
18
+ ## - WSL: Full Linux support
19
+
20
+ set -euo pipefail
21
+
22
+ # --- Configuration & Theme ---
23
+ CYAN=''
24
+ PURPLE=''
25
+ GREEN=''
26
+ YELLOW=''
27
+ RED=''
28
+ GRAY=''
29
+ NC=''
30
+ BOLD=''
31
+
32
+ # --- UI Components ---
33
+ log_header() {
34
+ printf '%b\n' "
35
+ ${BOLD}${PURPLE}Updating AI Environment${NC}"
36
+ printf '%b\n' "${GRAY}-----------------------------------------------------------${NC}"
37
+ }
38
+
39
+ step() { echo -ne "${CYAN}->${NC} ${BOLD}$1...${NC} "; }
40
+ ok() { printf '%b\n' "${GREEN}done${NC}"; }
41
+ skip() { printf '%b\n' "${YELLOW}skipped${NC} ${GRAY}($1)${NC}"; }
42
+ err() { printf '%b\n' "${RED}error${NC}
43
+ ${RED}$1${NC}"; }
44
+
45
+ # --- Initialization ---
46
+ log_header
47
+
48
+ # Pre-auth sudo to avoid mid-script interruptions
49
+ if [[ "$(uname -s)" == "Linux" ]]; then
50
+ step "Authenticating sudo"
51
+ if sudo -v; then ok; else
52
+ err "Sudo required for system updates"
53
+ exit 1
54
+ fi
55
+ fi
56
+
57
+ # --- 1. mise Core (Multi-Method Detection) ---
58
+ if command -v mise >/dev/null 2>&1; then
59
+ step "Checking mise core"
60
+ if [[ "$(uname -s)" == "Linux" ]] && command -v pacman >/dev/null 2>&1 && pacman -Qs mise >/dev/null 2>&1; then
61
+ # Handle Arch/CachyOS AUR/Official package
62
+ sudo pacman -S --noconfirm mise >/dev/null 2>&1 || true
63
+ ok
64
+ elif [[ "$(uname -s)" == "Linux" ]] && command -v dpkg >/dev/null 2>&1 && dpkg -s mise >/dev/null 2>&1; then
65
+ # Handle your ZorinOS APT installation
66
+ sudo apt update -y -o Dir::Etc::sourcelist="sources.list.d/jdx.list" >/dev/null 2>&1 || true
67
+ sudo apt install --only-upgrade -y mise >/dev/null 2>&1
68
+ ok
69
+ elif command -v brew >/dev/null 2>&1 && brew list mise >/dev/null 2>&1; then
70
+ # Handle macOS/Linux Brew installation
71
+ brew upgrade mise >/dev/null 2>&1
72
+ ok
73
+ else
74
+ # Fallback for standalone binary installation
75
+ if mise self-update -y >/dev/null 2>&1; then ok; else skip "manual update needed"; fi
76
+ fi
77
+ else
78
+ skip "mise not found"
79
+ fi
80
+
81
+ # --- 2. System & Language Packages ---
82
+
83
+ # Homebrew
84
+ if command -v brew >/dev/null 2>&1; then
85
+ step "Homebrew packages"
86
+ brew update >/dev/null && brew upgrade --quiet >/dev/null
87
+ ok
88
+ fi
89
+
90
+ # NPM Globals (via mise)
91
+ if command -v mise >/dev/null 2>&1; then
92
+ step "NPM (claude, gemini, etc)"
93
+ mise exec node -- npm update -g --audit=false >/dev/null 2>&1
94
+ ok
95
+
96
+ step "Kiro CLI"
97
+ if [[ "$(uname -s)" == "Darwin" ]]; then
98
+ skip "managed by Kiro app bundle via mise plugin"
99
+ elif mise upgrade kiro-cli >/dev/null 2>&1; then
100
+ ok
101
+ else
102
+ skip "mise plugin update unavailable"
103
+ fi
104
+ fi
105
+
106
+ # Pipx (aider, sgpt)
107
+ if command -v pipx >/dev/null 2>&1; then
108
+ step "Pipx tools"
109
+ pipx upgrade-all >/dev/null 2>&1
110
+ ok
111
+ fi
112
+
113
+ # --- 3. Specialized AI Binaries ---
114
+
115
+ # Ollama (Verified Manual Override)
116
+ if command -v ollama >/dev/null 2>&1; then
117
+ if [[ "$(uname -s)" == "Linux" ]]; then
118
+ step "Ollama (Manual Deployment)"
119
+ arch="$(uname -m)"
120
+ case "$arch" in
121
+ x86_64 | amd64) ollama_arch="amd64" ;;
122
+ aarch64 | arm64) ollama_arch="arm64" ;;
123
+ *) ollama_arch="" ;;
124
+ esac
125
+
126
+ if [[ -n "$ollama_arch" ]]; then
127
+ # Check for updates by comparing local vs remote version
128
+ current_ver="$(ollama --version | awk '{print $NF}' | tr -d '[:space:]')"
129
+ # This is a bit slow but safer than downloading every time
130
+ latest_ver="$(curl -fsSL -I https://github.com/ollama/ollama/releases/latest | grep -i location | sed 's/.*\/v//;s/
131
+
132
+ if [[ "$current_ver" == "$latest_ver" ]]; then
133
+ skip "already up to date"
134
+ else
135
+ tmp_tar="$(umask 077 && mktemp)"
136
+ trap 'rm -f "$tmp_tar"' EXIT
137
+ tar_url="https://ollama.com/download/ollama-linux-${ollama_arch}.tar.zst"
138
+
139
+ if curl -fsSL --retry 2 "$tar_url" -o "$tmp_tar" && zstd -t "$tmp_tar" >/dev/null 2>&1; then
140
+ # Stop service safely
141
+ if command -v systemctl >/dev/null 2>&1; then
142
+ sudo systemctl stop ollama 2>/dev/null || true
143
+ fi
144
+
145
+ # Extract
146
+ zstd -dc "$tmp_tar" | sudo tar -x -C /usr/local >/dev/null
147
+
148
+ # Ensure permissions
149
+ sudo chmod +x /usr/local/bin/ollama
150
+
151
+ # Restart if systemd exists
152
+ if command -v systemctl >/dev/null 2>&1; then
153
+ sudo systemctl daemon-reload
154
+ sudo systemctl start ollama 2>/dev/null || true
155
+ fi
156
+ ok
157
+ else
158
+ err "Integrity check failed"
159
+ fi
160
+ fi
161
+ else
162
+ skip "unsupported arch"
163
+ fi
164
+ else
165
+ # macOS users typically use the .app or Brew
166
+ step "Ollama (macOS)"
167
+ if command -v brew >/dev/null 2>&1 && brew upgrade ollama --cask >/dev/null 2>&1; then
168
+ ok
169
+ else
170
+ skip "Update via App"
171
+ fi
172
+ fi
173
+ fi
174
+
175
+ # LM Studio Runtime
176
+ if command -v lms >/dev/null 2>&1; then
177
+ step "LM Studio Runtime"
178
+ lms runtime update >/dev/null 2>&1
179
+ ok
180
+ fi
181
+
182
+ # --- 4. Final Summary ---
183
+ printf '%b\n' "${GRAY}-----------------------------------------------------------${NC}"
184
+ printf '%b\n' "${GREEN}${BOLD}Dotfiles Environment Ready${NC}"
185
+
186
+ # Version Report
187
+ printf '%b\n' "
188
+ ${BOLD}System Version Status:${NC}"
189
+ printf "%b%-12s%b %s\n" "${GRAY}" "Node:" "${NC}" "$(node -v 2>/dev/null || echo 'N/A')"
190
+ printf "%b%-12s%b %s\n" "${GRAY}" "Kiro:" "${NC}" "$(kiro-cli --version 2>/dev/null | awk '{print $NF}' || echo 'N/A')"
191
+ printf "%b%-12s%b %s\n" "${GRAY}" "Ollama:" "${NC}" "$(ollama --version 2>/dev/null | awk '{print $NF}' || echo 'N/A')"
192
+ printf "%b%-12s%b %s\n" "${GRAY}" "Pipx:" "${NC}" "$(pipx --version 2>/dev/null || echo 'N/A')"
193
+ printf "%b%-12s%b %s\n" "${GRAY}" "Mise:" "${NC}" "$(mise --version 2>/dev/null | awk '{print $1}' || echo 'N/A')"
194
+
195
+ trap - EXIT