@sebastienrousseau/dotfiles 0.2.502 → 0.2.503

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 (412) hide show
  1. package/CHANGELOG.md +83 -9
  2. package/LICENSE +21 -1283
  3. package/README.md +5 -3
  4. package/docs/CONFIG_STRATEGY.md +124 -0
  5. package/docs/COPYRIGHT +1 -1
  6. package/docs/GOVERNANCE.md +98 -0
  7. package/docs/MAINTAINERS.md +41 -0
  8. package/docs/OPENCODE.md +127 -0
  9. package/docs/README.md +2 -0
  10. package/docs/STRUCTURE.md +102 -0
  11. package/docs/adr/ADR-011-nushell-tier3-keep.md +2 -2
  12. package/docs/architecture/AI_COST_OPTIMIZATION.md +143 -0
  13. package/docs/architecture/REPO_LAYOUT.md +8 -8
  14. package/docs/archive/MILESTONE_v0.2.493.md +1 -1
  15. package/docs/index.md +2 -2
  16. package/docs/interop/POWERSHELL.md +1 -1
  17. package/docs/manual/00-introduction.md +1 -1
  18. package/docs/manual/01-concepts/02-trust-model.md +1 -1
  19. package/docs/manual/03-reference/02-config-files.md +2 -2
  20. package/docs/manual/_toc.yml +1 -1
  21. package/docs/manual/command-index.md +72 -59
  22. package/docs/operations/CI_COMPOSITES.md +2 -2
  23. package/docs/operations/COMPLETIONS.md +2 -2
  24. package/docs/operations/COVERAGE.md +5 -5
  25. package/docs/operations/HARD_AUDIT_2026.md +11 -11
  26. package/docs/operations/MAINTENANCE.md +3 -3
  27. package/docs/operations/MANIFEST.md +127 -0
  28. package/docs/operations/RELEASE_PIPELINE.md +130 -0
  29. package/docs/operations/RFC_v0_2_503_reorganization.md +280 -0
  30. package/docs/operations/ROADMAP_2026.md +6 -6
  31. package/docs/operations/ROADMAP_V0_2_503.md +134 -0
  32. package/docs/operations/TESTING.md +17 -0
  33. package/docs/operations/TRACEABILITY.md +6 -3
  34. package/docs/operations/VERSION_SYNC.md +4 -4
  35. package/docs/reference/POWERSHELL_PARITY.md +8 -7
  36. package/docs/schema/dot-env-v1.json +110 -0
  37. package/docs/security/CI_EGRESS_ALLOWLIST.md +1 -1
  38. package/docs/security/CI_PINNING.md +17 -9
  39. package/docs/security/DEPS_DEV_EXCEPTIONS.md +2 -2
  40. package/docs/security/FUZZING.md +114 -0
  41. package/docs/security/INSTALL_VERIFICATION.md +2 -2
  42. package/docs/security/POLICY_RELEASES.md +2 -2
  43. package/docs/security/SCORECARD.md +58 -3
  44. package/docs/security/SHELL_EXEMPTIONS.md +4 -4
  45. package/docs/security/VERIFY_RELEASE.md +201 -0
  46. package/install.sh +27 -5
  47. package/package.json +1 -1
  48. package/scripts/README.md +123 -0
  49. package/scripts/ci/check-copyright-headers.sh +4 -93
  50. package/scripts/ci/check-shell-preamble.sh +4 -103
  51. package/scripts/ci/guard-gitleaks-checkout.sh +4 -54
  52. package/scripts/diagnostics/a2a-conformance.sh +4 -4
  53. package/scripts/diagnostics/alias-governance.sh +1 -1
  54. package/scripts/diagnostics/aliases-cheatsheet.sh +2 -2
  55. package/scripts/diagnostics/benchmark.sh +4 -4
  56. package/scripts/diagnostics/conflicts.sh +2 -2
  57. package/scripts/diagnostics/doctor-unified.sh +2 -2
  58. package/scripts/diagnostics/doctor.sh +10 -10
  59. package/scripts/diagnostics/drift-dashboard.sh +2 -2
  60. package/scripts/diagnostics/health.sh +4 -4
  61. package/scripts/diagnostics/history-analysis.sh +2 -2
  62. package/scripts/diagnostics/mcp-doctor.sh +10 -7
  63. package/scripts/diagnostics/perf.sh +4 -4
  64. package/scripts/diagnostics/scorecard.sh +4 -4
  65. package/scripts/diagnostics/security-score.sh +2 -2
  66. package/scripts/diagnostics/smoke-test.sh +2 -2
  67. package/scripts/diagnostics/snapshot.sh +2 -2
  68. package/scripts/diagnostics/verify.sh +4 -4
  69. package/scripts/diagnostics/version-locks.sh +2 -2
  70. package/scripts/diagnostics/workstation-attestation.sh +14 -14
  71. package/scripts/dot/commands/agent.sh +8 -0
  72. package/scripts/dot/commands/agents.sh +14 -4
  73. package/scripts/dot/commands/ai.sh +144 -25
  74. package/scripts/dot/commands/appearance.sh +2 -2
  75. package/scripts/dot/commands/core.sh +2 -2
  76. package/scripts/dot/commands/diagnostics.sh +5 -5
  77. package/scripts/dot/commands/env-emit.sh +202 -0
  78. package/scripts/dot/commands/fleet.sh +12 -11
  79. package/scripts/dot/commands/init.sh +4 -4
  80. package/scripts/dot/commands/lint.sh +9 -4
  81. package/scripts/dot/commands/manual.sh +3 -3
  82. package/scripts/dot/commands/meta.sh +12 -6
  83. package/scripts/dot/commands/patterns.sh +2 -2
  84. package/scripts/dot/commands/registry.sh +4 -4
  85. package/scripts/dot/commands/restore.sh +4 -4
  86. package/scripts/dot/commands/secrets.sh +4 -3
  87. package/scripts/dot/commands/security.sh +2 -2
  88. package/scripts/dot/commands/tools.sh +13 -3
  89. package/scripts/dot/powershell/Dot.psm1 +199 -0
  90. package/scripts/fonts/install-nerd-fonts.sh +2 -2
  91. package/scripts/git-hooks/pre-commit-audit.sh +2 -2
  92. package/scripts/git-hooks/pre-push +13 -0
  93. package/scripts/ops/ai-setup.sh +1 -1
  94. package/scripts/ops/bundle.sh +2 -2
  95. package/scripts/ops/chaos.sh +2 -2
  96. package/scripts/ops/chezmoi-apply.sh +4 -4
  97. package/scripts/ops/heal.sh +4 -4
  98. package/scripts/ops/post-apply-repair.sh +2 -2
  99. package/scripts/ops/prewarm.sh +2 -2
  100. package/scripts/ops/release.sh +4 -4
  101. package/scripts/ops/rollback.sh +4 -4
  102. package/scripts/ops/setup.sh +2 -2
  103. package/scripts/qa/check-version-consistency.sh +123 -0
  104. package/scripts/qa/coverage-baseline.sh +1 -1
  105. package/scripts/qa/docs-coverage.sh +2 -2
  106. package/scripts/qa/powershell-contract.ps1 +1 -1
  107. package/scripts/qa/scorecard-snapshot.sh +127 -0
  108. package/scripts/security/backup.sh +2 -2
  109. package/scripts/security/dns-doh.sh +4 -4
  110. package/scripts/security/encryption-check.sh +4 -4
  111. package/scripts/security/enforce-policies.sh +2 -2
  112. package/scripts/security/firewall.sh +4 -4
  113. package/scripts/security/lock-screen.sh +4 -4
  114. package/scripts/security/manage-secrets.sh +2 -2
  115. package/scripts/security/ssh-cert.sh +2 -2
  116. package/scripts/security/telemetry-kill.sh +4 -4
  117. package/scripts/security/usb-safety.sh +4 -4
  118. package/scripts/theme/extract-heic-frames.sh +114 -0
  119. package/scripts/theme/rebuild-themes.sh +8 -1
  120. package/scripts/theme/switch.sh +13 -6
  121. package/scripts/theme/wallpaper-sync.sh +297 -93
  122. package/scripts/tuning/linux.sh +2 -2
  123. package/scripts/tuning/macos.sh +2 -2
  124. package/scripts/version-sync.sh +55 -7
  125. package/dot_config/.module-manifest.json +0 -69
  126. package/dot_config/ai/identity.md +0 -23
  127. package/dot_config/ai/patterns/architect.md +0 -16
  128. package/dot_config/ai/patterns/hardener.md +0 -15
  129. package/dot_config/ai/patterns/refactor.md +0 -15
  130. package/dot_config/aider/aider.conf.yml +0 -32
  131. package/dot_config/alacritty/alacritty.toml.tmpl +0 -55
  132. package/dot_config/ansible/ansible.cfg +0 -11
  133. package/dot_config/atuin/config.toml.tmpl +0 -47
  134. package/dot_config/bat/config +0 -23
  135. package/dot_config/brave-flags.conf.tmpl +0 -7
  136. package/dot_config/btop/btop.conf +0 -16
  137. package/dot_config/btop/themes/tokyonight.theme +0 -34
  138. package/dot_config/bun/bunfig.toml.tmpl +0 -33
  139. package/dot_config/claude/mcp_servers.json +0 -20
  140. package/dot_config/containers/containers.conf +0 -14
  141. package/dot_config/curl/dot_curlrc +0 -18
  142. package/dot_config/dlv/config.yml +0 -39
  143. package/dot_config/docker/config.json +0 -15
  144. package/dot_config/dotfiles/agent-card.json +0 -29
  145. package/dot_config/dotfiles/agent-profiles.json +0 -92
  146. package/dot_config/dotfiles/boot/README.md +0 -13
  147. package/dot_config/dotfiles/grub/README.md +0 -13
  148. package/dot_config/dotfiles/lock/README.md +0 -13
  149. package/dot_config/dotfiles/mcp-lock.json +0 -33
  150. package/dot_config/dotfiles/mcp-policy.json +0 -52
  151. package/dot_config/dotfiles/mcp-registry.json +0 -47
  152. package/dot_config/dotfiles/model-registry.json +0 -20
  153. package/dot_config/dotfiles/policy-bundles.json +0 -38
  154. package/dot_config/dotfiles/prompt-registry.json +0 -16
  155. package/dot_config/dotfiles/versions.env +0 -18
  156. package/dot_config/duf/duf.conf +0 -6
  157. package/dot_config/duti/defaults.duti +0 -5
  158. package/dot_config/emoji/emoji.txt +0 -34
  159. package/dot_config/environment.d/50-ssh-agent.conf +0 -2
  160. package/dot_config/environment.d/90-wayland.conf +0 -19
  161. package/dot_config/fastfetch/config.jsonc +0 -28
  162. package/dot_config/firefox/user.js.tmpl +0 -58
  163. package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +0 -9
  164. package/dot_config/fish/completions/dot.fish.tmpl +0 -115
  165. package/dot_config/fish/conf.d/000-perf-cache.fish +0 -56
  166. package/dot_config/fish/conf.d/aliases.fish.tmpl +0 -77
  167. package/dot_config/fish/conf.d/direnv.fish +0 -4
  168. package/dot_config/fish/conf.d/env.fish.tmpl +0 -48
  169. package/dot_config/fish/conf.d/functions.fish.tmpl +0 -22
  170. package/dot_config/fish/conf.d/init.fish.tmpl +0 -172
  171. package/dot_config/fish/conf.d/mise-activate.fish +0 -5
  172. package/dot_config/fish/config.fish.tmpl +0 -44
  173. package/dot_config/fish/fish_plugins +0 -1
  174. package/dot_config/fish/functions/_.fish +0 -3
  175. package/dot_config/fish/functions/_cached_eval.fish +0 -131
  176. package/dot_config/fish/functions/_cached_eval_clear.fish +0 -17
  177. package/dot_config/fish/functions/als.fish +0 -46
  178. package/dot_config/fish/functions/bg-upgrade.fish +0 -7
  179. package/dot_config/fish/functions/c.fish +0 -3
  180. package/dot_config/fish/functions/cat.fish +0 -9
  181. package/dot_config/fish/functions/d.fish +0 -7
  182. package/dot_config/fish/functions/dot.fish +0 -34
  183. package/dot_config/fish/functions/h.fish +0 -3
  184. package/dot_config/fish/functions/l.fish +0 -7
  185. package/dot_config/fish/functions/la.fish +0 -7
  186. package/dot_config/fish/functions/ll.fish +0 -7
  187. package/dot_config/fish/functions/log_error.fish +0 -13
  188. package/dot_config/fish/functions/log_info.fish +0 -13
  189. package/dot_config/fish/functions/lr.fish +0 -7
  190. package/dot_config/fish/functions/lra.fish +0 -7
  191. package/dot_config/fish/functions/ls.fish +0 -7
  192. package/dot_config/fish/functions/lt.fish +0 -7
  193. package/dot_config/fish/functions/lta.fish +0 -7
  194. package/dot_config/fish/functions/notify-run.fish +0 -11
  195. package/dot_config/fish/functions/q.fish +0 -3
  196. package/dot_config/fish/functions/silent-run.fish +0 -7
  197. package/dot_config/fish/functions/yy.fish +0 -8
  198. package/dot_config/flatpak/flatpak.list +0 -4
  199. package/dot_config/fontconfig/fonts.conf.tmpl +0 -57
  200. package/dot_config/foot/foot.ini.tmpl +0 -33
  201. package/dot_config/fuzzel/fuzzel.ini.tmpl +0 -18
  202. package/dot_config/fzf/fzf.zsh +0 -48
  203. package/dot_config/gem/gemrc +0 -9
  204. package/dot_config/gh/config.yml +0 -12
  205. package/dot_config/ghostty/config.tmpl +0 -165
  206. package/dot_config/git/allowed_signers.tmpl +0 -18
  207. package/dot_config/git/attributes +0 -12
  208. package/dot_config/git/commit-template +0 -10
  209. package/dot_config/git/hooks/executable_commit-msg +0 -146
  210. package/dot_config/git/ignore +0 -27
  211. package/dot_config/gnupg/gpg-agent.conf +0 -11
  212. package/dot_config/go/golangci.yml +0 -118
  213. package/dot_config/go/gopls.json +0 -30
  214. package/dot_config/goose/config.yaml +0 -29
  215. package/dot_config/gtk-3.0/gtk.css.tmpl +0 -184
  216. package/dot_config/gtk-3.0/settings.ini.tmpl +0 -27
  217. package/dot_config/gtk-4.0/gtk.css.tmpl +0 -252
  218. package/dot_config/gtk-4.0/settings.ini.tmpl +0 -18
  219. package/dot_config/htop/htoprc +0 -20
  220. package/dot_config/inputrc +0 -2
  221. package/dot_config/ipython/profile_default/ipython_config.py +0 -19
  222. package/dot_config/just/justfile +0 -122
  223. package/dot_config/k9s/config.yaml +0 -65
  224. package/dot_config/k9s/skins/catppuccin-mocha.yaml +0 -116
  225. package/dot_config/kanshi/config.tmpl +0 -22
  226. package/dot_config/karabiner/karabiner.json +0 -14
  227. package/dot_config/kitty/kitty.conf.tmpl +0 -53
  228. package/dot_config/lazydocker/config.yml +0 -186
  229. package/dot_config/lazygit/config.yml +0 -35
  230. package/dot_config/mako/config +0 -47
  231. package/dot_config/mas/masapps.txt +0 -5
  232. package/dot_config/micro/settings.json +0 -3
  233. package/dot_config/mimeapps.list +0 -77
  234. package/dot_config/minikube/config.json +0 -13
  235. package/dot_config/mise/config.toml +0 -99
  236. package/dot_config/mongosh/mongoshrc.js +0 -68
  237. package/dot_config/mpv/input.conf +0 -47
  238. package/dot_config/mpv/mpv.conf +0 -47
  239. package/dot_config/mycli/myclirc +0 -67
  240. package/dot_config/nano/nanorc +0 -28
  241. package/dot_config/ncdu/config +0 -12
  242. package/dot_config/niri/config.kdl.tmpl +0 -327
  243. package/dot_config/nushell/aliases.nu +0 -18
  244. package/dot_config/nushell/cached_eval.nu +0 -80
  245. package/dot_config/nushell/completions.nu.tmpl +0 -52
  246. package/dot_config/nushell/config.nu.tmpl +0 -86
  247. package/dot_config/nushell/env.nu.tmpl +0 -102
  248. package/dot_config/nushell/functions.nu.tmpl +0 -17
  249. package/dot_config/nvim/init.lua +0 -18
  250. package/dot_config/nvim/lazy-lock.json +0 -58
  251. package/dot_config/nvim/lua/config/autocmds.lua +0 -107
  252. package/dot_config/nvim/lua/config/keymaps.lua +0 -92
  253. package/dot_config/nvim/lua/config/lazy.lua +0 -44
  254. package/dot_config/nvim/lua/config/options.lua +0 -49
  255. package/dot_config/nvim/lua/plugins/ai.lua +0 -75
  256. package/dot_config/nvim/lua/plugins/coding.lua +0 -216
  257. package/dot_config/nvim/lua/plugins/completion.lua +0 -60
  258. package/dot_config/nvim/lua/plugins/dap.lua +0 -412
  259. package/dot_config/nvim/lua/plugins/editor.lua +0 -55
  260. package/dot_config/nvim/lua/plugins/git.lua +0 -10
  261. package/dot_config/nvim/lua/plugins/lsp.lua +0 -156
  262. package/dot_config/nvim/lua/plugins/markdown.lua +0 -18
  263. package/dot_config/nvim/lua/plugins/rust.lua +0 -34
  264. package/dot_config/nvim/lua/plugins/sessions.lua +0 -33
  265. package/dot_config/nvim/lua/plugins/ui.lua +0 -509
  266. package/dot_config/paru/paru.conf +0 -10
  267. package/dot_config/pip/pip.conf.tmpl +0 -32
  268. package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +0 -81
  269. package/dot_config/pueue/pueue.yml +0 -34
  270. package/dot_config/pypoetry/config.toml +0 -6
  271. package/dot_config/pyrightconfig.json +0 -5
  272. package/dot_config/raycast/README.md +0 -13
  273. package/dot_config/redis/redisclirc +0 -41
  274. package/dot_config/ripgrep/ripgreprc +0 -21
  275. package/dot_config/shell/00-core-paths.sh.tmpl +0 -141
  276. package/dot_config/shell/05-core-safety.sh +0 -48
  277. package/dot_config/shell/10-secrets.sh +0 -41
  278. package/dot_config/shell/40-fzf-defaults.sh.tmpl +0 -17
  279. package/dot_config/shell/40-ls-colors.sh +0 -49
  280. package/dot_config/shell/50-logic-functions-core.sh.tmpl +0 -11
  281. package/dot_config/shell/50-logic-functions.sh.tmpl +0 -11
  282. package/dot_config/shell/51-logic-functions-extra.sh.tmpl +0 -65
  283. package/dot_config/shell/90-ux-aliases.sh.tmpl +0 -121
  284. package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +0 -55
  285. package/dot_config/shell/Brewfile +0 -207
  286. package/dot_config/shell/Brewfile.cask +0 -92
  287. package/dot_config/shell/Brewfile.cli +0 -127
  288. package/dot_config/shell/README.md +0 -284
  289. package/dot_config/shell/als_data.txt.tmpl +0 -65
  290. package/dot_config/shell/custom/auto_ls.zsh +0 -20
  291. package/dot_config/shell/custom/context_suggest.zsh +0 -68
  292. package/dot_config/shell/custom/error_analysis.zsh +0 -45
  293. package/dot_config/sops/dot_sops.yaml +0 -23
  294. package/dot_config/starship.toml.tmpl +0 -202
  295. package/dot_config/swaylock/config +0 -43
  296. package/dot_config/systemd/user/dotfiles-maintenance.service +0 -8
  297. package/dot_config/systemd/user/dotfiles-maintenance.timer +0 -11
  298. package/dot_config/systemd/user/pueued.service +0 -12
  299. package/dot_config/systemd/user/ssh-agent.service +0 -12
  300. package/dot_config/task/Taskfile.yml +0 -86
  301. package/dot_config/tflint/tflint.hcl +0 -9
  302. package/dot_config/tmux/tmux.conf.tmpl +0 -223
  303. package/dot_config/topgrade.toml.tmpl +0 -54
  304. package/dot_config/user-dirs.dirs +0 -10
  305. package/dot_config/vscode/extensions.txt +0 -11
  306. package/dot_config/vscode/settings.json.tmpl +0 -82
  307. package/dot_config/waybar/config.jsonc.tmpl +0 -90
  308. package/dot_config/waybar/style.css.tmpl +0 -211
  309. package/dot_config/wezterm/wezterm.lua.tmpl +0 -64
  310. package/dot_config/wget/wgetrc +0 -12
  311. package/dot_config/xdg-desktop-portal/niri-portals.conf +0 -5
  312. package/dot_config/yarn/yarnrc.yml +0 -36
  313. package/dot_config/yazi/keymap.toml +0 -67
  314. package/dot_config/yazi/theme.toml +0 -102
  315. package/dot_config/yazi/yazi.toml +0 -40
  316. package/dot_config/zathura/zathurarc +0 -52
  317. package/dot_config/zellij/config.kdl.tmpl +0 -79
  318. package/dot_config/zsh/dot_zprofile +0 -7
  319. package/dot_config/zsh/dot_zshenv +0 -5
  320. package/dot_config/zsh/dot_zshrc.tmpl +0 -688
  321. package/dot_config/zsh/rc.d/00-alias-shims.zsh +0 -99
  322. package/dot_config/zsh/rc.d/05-ssh-agent.zsh +0 -18
  323. package/dot_config/zsh/rc.d/10-env.zsh.tmpl +0 -28
  324. package/dot_config/zsh/rc.d/20-zinit.zsh +0 -65
  325. package/dot_config/zsh/rc.d/30-options.zsh.tmpl +0 -214
  326. package/dot_config/zsh/rc.d/40-bell.zsh +0 -20
  327. package/dot_config/zsh/rc.d/50-login-fortune.zsh +0 -9
  328. package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +0 -32
  329. package/dot_local/bin/executable_ai-update +0 -195
  330. package/dot_local/bin/executable_ai_core +0 -152
  331. package/dot_local/bin/executable_antigravity +0 -11
  332. package/dot_local/bin/executable_b64 +0 -84
  333. package/dot_local/bin/executable_bm +0 -79
  334. package/dot_local/bin/executable_cb +0 -39
  335. package/dot_local/bin/executable_dot +0 -636
  336. package/dot_local/bin/executable_dot-ai +0 -36
  337. package/dot_local/bin/executable_dot-bootstrap +0 -76
  338. package/dot_local/bin/executable_dot-launch-or-focus +0 -52
  339. package/dot_local/bin/executable_dot-load-benchmark +0 -31
  340. package/dot_local/bin/executable_dot-load-benchmark-pty +0 -77
  341. package/dot_local/bin/executable_dot-theme-sync +0 -952
  342. package/dot_local/bin/executable_dot_completion +0 -57
  343. package/dot_local/bin/executable_dtags +0 -28
  344. package/dot_local/bin/executable_epoch +0 -67
  345. package/dot_local/bin/executable_extract +0 -41
  346. package/dot_local/bin/executable_gbd +0 -52
  347. package/dot_local/bin/executable_gd +0 -42
  348. package/dot_local/bin/executable_git-ai-commit +0 -175
  349. package/dot_local/bin/executable_git-ai-diff +0 -169
  350. package/dot_local/bin/executable_gl +0 -101
  351. package/dot_local/bin/executable_hash +0 -161
  352. package/dot_local/bin/executable_hashsum +0 -160
  353. package/dot_local/bin/executable_hex +0 -115
  354. package/dot_local/bin/executable_jsonv +0 -78
  355. package/dot_local/bin/executable_jwt +0 -94
  356. package/dot_local/bin/executable_kill-port +0 -75
  357. package/dot_local/bin/executable_lorem +0 -118
  358. package/dot_local/bin/executable_mkscript +0 -35
  359. package/dot_local/bin/executable_monitor +0 -56
  360. package/dot_local/bin/executable_myip +0 -51
  361. package/dot_local/bin/executable_notify +0 -24
  362. package/dot_local/bin/executable_open +0 -38
  363. package/dot_local/bin/executable_pw +0 -27
  364. package/dot_local/bin/executable_rec-start +0 -46
  365. package/dot_local/bin/executable_rec-stop +0 -35
  366. package/dot_local/bin/executable_regex +0 -132
  367. package/dot_local/bin/executable_start-niri +0 -8
  368. package/dot_local/bin/executable_tmux-sessionizer +0 -314
  369. package/dot_local/bin/executable_tour +0 -177
  370. package/dot_local/bin/executable_up +0 -23
  371. package/dot_local/bin/executable_update +0 -142
  372. package/dot_local/bin/executable_uuid +0 -87
  373. package/dot_local/bin/executable_win +0 -32
  374. package/dot_local/bin/executable_yamlv +0 -57
  375. package/dot_local/share/bash-completion/completions/dot +0 -72
  376. package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
  377. package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
  378. package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
  379. package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
  380. package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
  381. package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
  382. package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
  383. package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
  384. package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
  385. package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
  386. package/dot_local/share/man/man1/dot.1 +0 -149
  387. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +0 -64
  388. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +0 -18
  389. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +0 -13
  390. package/dot_local/share/wayland-sessions/niri.desktop.tmpl +0 -6
  391. package/dot_local/share/zsh/completions/.keep +0 -0
  392. package/dot_local/share/zsh/completions/_dot +0 -287
  393. package/scripts/ci/check-dangerous-chmod.sh +0 -19
  394. package/scripts/ci/check-deps-dev.sh +0 -236
  395. package/scripts/ci/check-insecure-tls.sh +0 -61
  396. package/scripts/ci/check-regression-traceability.sh +0 -67
  397. package/scripts/ci/dot-cli-startup-bench.sh +0 -126
  398. package/scripts/ci/install-chezmoi-verified.sh +0 -67
  399. package/scripts/ci/lint-reusable-pins.sh +0 -78
  400. package/scripts/ci/run-coverage.sh +0 -451
  401. package/scripts/ci/validate-chezmoidata.sh +0 -25
  402. package/scripts/ci/validate-ci-config.sh +0 -224
  403. package/scripts/ci/windows-smoke-test.ps1 +0 -136
  404. package/scripts/docs/build-manual.sh +0 -883
  405. package/scripts/docs/check-manual.sh +0 -213
  406. package/scripts/dot/lib/bento.sh +0 -50
  407. package/scripts/dot/lib/log.sh +0 -200
  408. package/scripts/dot/lib/platform.sh +0 -112
  409. package/scripts/dot/lib/ui.sh +0 -650
  410. package/scripts/dot/lib/utils.sh +0 -377
  411. package/scripts/maintenance/check-updates.sh +0 -131
  412. package/scripts/release/package-policy-bundles.sh +0 -125
@@ -1,688 +0,0 @@
1
- # .dotfiles (v{{ .dotfiles_version }}) - <https://dotfiles.io>
2
- # Made With ❤️ in London, United Kingdom
3
- # Designed by
4
- # Copyright (c) 2015-2026. All rights reserved.
5
- # License: MIT
6
-
7
- # Performance optimization - skip if not interactive
8
- [[ -o interactive ]] || return
9
-
10
- # Only source once if being re-sourced (in the same shell scope)
11
- if [[ -v DOTFILES_SOURCED ]]; then
12
- return
13
- fi
14
- DOTFILES_SOURCED=1
15
-
16
- {{- /* Input Validation: Ensure crucial variables are set */ -}}
17
- {{- if not .chezmoi.homeDir -}}
18
- {{- fail "Critical Error: .chezmoi.homeDir is not set!" -}}
19
- {{- end -}}
20
-
21
- {{- if eq .chezmoi.os "darwin" }}
22
- export FORCE_COLOR_OS="macOS"
23
- {{- else if eq .chezmoi.os "linux" }}
24
- export FORCE_COLOR_OS="Linux"
25
- {{- else if eq .chezmoi.os "windows" }}
26
- export FORCE_COLOR_OS="Windows"
27
- {{- end }}
28
-
29
- {{- $profile := default "laptop" .profile -}}
30
- {{- $features := default (dict "zsh" true "nvim" true "tmux" true "gui" true "secrets" true) .features -}}
31
- {{- $theme := default "big-sur-dark" .theme -}}
32
- {{- $strict_mode := default false (index . "strict_mode") -}}
33
- {{- $enabled := list -}}
34
- {{- range $k, $v := $features }}{{- if $v }}{{- $enabled = append $enabled $k }}{{- end }}{{- end }}
35
-
36
- export DOTFILES_PROFILE="{{ $profile }}"
37
- export DOTFILES_FEATURES="{{ join "," $enabled }}"
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
107
-
108
- _SHELL_CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/zsh"
109
- [[ -d "$_SHELL_CACHE" ]] || mkdir -p "$_SHELL_CACHE"
110
-
111
- # Append a timing event to ${XDG_STATE_HOME:-~/.local/state}/dotfiles/eval-timings.jsonl.
112
- # Read by `dot perf --by-tool` to attribute startup time per tool.
113
- _cached_eval_log_timing() {
114
- emulate -L zsh
115
- setopt no_clobber 2>/dev/null && unsetopt no_clobber
116
- local label="$1" t0="$2" t1="$3" rc="${4:-0}" shell="${5:-zsh}"
117
- local log_dir="${XDG_STATE_HOME:-$HOME/.local/state}/dotfiles"
118
- [[ -d "$log_dir" ]] || mkdir -p "$log_dir" 2>/dev/null || return 0
119
- local logfile="$log_dir/eval-timings.jsonl"
120
- [[ -f "$logfile" ]] || touch "$logfile" 2>/dev/null || return 0
121
- local ms_int=0
122
- if [[ -n "$t0" && -n "$t1" ]]; then
123
- ms_int=$(printf '%.0f' "$(( (t1 - t0) * 1000 ))" 2>/dev/null) || ms_int=0
124
- fi
125
- printf '{"ts":"%s","shell":"%s","label":"%s","ms":%s,"rc":%s}\n' \
126
- "$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$shell" "$label" "$ms_int" "$rc" \
127
- >> "$logfile" 2>/dev/null || true
128
- }
129
-
130
- # Cache and source a tool's init output, with mtime/realpath/file-arg invalidation.
131
- #
132
- # Runs <cmd args...> on cache miss, vets the output for shell-injection
133
- # patterns, writes atomically, sources, and precompiles via zcompile in
134
- # the background. Cache invalidates when the binary's mtime is newer,
135
- # its realpath has changed (PATH-shadow swap), or a file-path argument
136
- # is newer than the cache.
137
- #
138
- # @arg $1 string Cache label (cache file: $_SHELL_CACHE/<label>.zsh)
139
- # @arg $2..N string Command and args to run on cache miss
140
- # @env EVALCACHE_DISABLE Set to "true" to bypass cache read AND write
141
- # @env EVALCACHE_TIMING Set to "1" to log per-call timing for `dot perf --by-tool`
142
- # @stdout Sourced cache content
143
- # @stderr Warning on init failure or suspicious-output rejection
144
- # @exitcode 0 Cache hit, successful regeneration, or successful bypass
145
- # @exitcode 1 Suspicious pattern detected in init output
146
- # @exitcode * Init command's exit code on non-zero return
147
- _cached_eval() {
148
- if [[ "$EVALCACHE_TIMING" != "1" ]]; then
149
- _cached_eval_impl "$@"
150
- return
151
- fi
152
- zmodload zsh/datetime 2>/dev/null
153
- local _ce_t0="${EPOCHREALTIME:-$(date +%s.%N 2>/dev/null || echo 0)}"
154
- _cached_eval_impl "$@"
155
- local _ce_rc=$?
156
- local _ce_t1="${EPOCHREALTIME:-$(date +%s.%N 2>/dev/null || echo 0)}"
157
- _cached_eval_log_timing "${1:-unknown}" "$_ce_t0" "$_ce_t1" "$_ce_rc" "zsh"
158
- return $_ce_rc
159
- }
160
-
161
- _cached_eval_impl() {
162
- local label=$1; shift
163
-
164
- # Debug bypass: skip cache read AND write entirely.
165
- # Set EVALCACHE_DISABLE=true to eval directly without touching cache files.
166
- if [[ "$EVALCACHE_DISABLE" == "true" ]]; then
167
- eval "$("$@" 2>/dev/null)"
168
- return $?
169
- fi
170
-
171
- local cache="$_SHELL_CACHE/${label}.zsh"
172
- local pin="${cache}.bin"
173
- local bin="${commands[$1]}"
174
- local real_bin=""
175
- [[ -n "$bin" ]] && real_bin=${bin:A}
176
-
177
- # Cache is valid when: it exists non-empty, the binary is not newer than it,
178
- # the recorded realpath (if any) still matches the current realpath, and no
179
- # file-path argument has been modified since cache write.
180
- local cache_valid=1
181
- if [[ ! -s "$cache" ]]; then
182
- cache_valid=0
183
- elif [[ -n "$bin" && "$bin" -nt "$cache" ]]; then
184
- cache_valid=0
185
- elif [[ -f "$pin" && -n "$real_bin" ]]; then
186
- local pinned_real
187
- pinned_real=$(<"$pin")
188
- [[ -n "$pinned_real" && "$pinned_real" != "$real_bin" ]] && cache_valid=0
189
- fi
190
- if (( cache_valid )); then
191
- local arg
192
- for arg in "${@:2}"; do
193
- if [[ -f "$arg" && "$arg" -nt "$cache" ]]; then
194
- cache_valid=0
195
- break
196
- fi
197
- done
198
- fi
199
-
200
- if (( cache_valid )); then
201
- source "$cache"
202
- return
203
- fi
204
-
205
- local init_output rc
206
- init_output=$("$@" 2>/dev/null)
207
- rc=$?
208
- if (( rc != 0 )); then
209
- print -u2 "[WARN] $label init exited $rc; not caching"
210
- return $rc
211
- fi
212
-
213
- # Reject suspicious patterns indicating malicious payloads
214
- local suspicious_re='(curl[[:space:]].*\|[[:space:]]*(ba)?sh|wget[[:space:]].*\|[[:space:]]*(ba)?sh|nc[[:space:]]+-e|/dev/tcp/|base64[[:space:]]+-d[[:space:]]*\|)'
215
- if printf '%s\n' "$init_output" | LC_ALL=C grep -Eqs -- "$suspicious_re"; then
216
- print -u2 "[WARN] Suspicious output from $label init, skipping"
217
- return 1
218
- fi
219
-
220
- # `mktemp` instead of `${cache}.tmp.$$` — under PID recycling (very
221
- # rare but possible) two concurrent shells with the same $$ could
222
- # otherwise race on the same temp file. mktemp gives a unique name.
223
- # Use `>|` so we overwrite the just-created mktemp file even when the
224
- # user has `setopt noclobber` (see dot_config/shell/05-core-safety.sh).
225
- local _tmp _tmp_pin
226
- _tmp="$(mktemp "${cache}.XXXXXX")" || return 1
227
- print -r -- "$init_output" >| "$_tmp" && mv "$_tmp" "$cache" || { rm -f "$_tmp"; return 1; }
228
- if [[ -n "$real_bin" ]]; then
229
- _tmp_pin="$(mktemp "${pin}.XXXXXX")" || return 1
230
- print -r -- "$real_bin" >| "$_tmp_pin" && mv "$_tmp_pin" "$pin" || { rm -f "$_tmp_pin"; return 1; }
231
- fi
232
- source "$cache"
233
- { zcompile "$cache" } &!
234
- }
235
-
236
- # Clear cache files written by _cached_eval.
237
- #
238
- # Safe by design: only deletes *.zsh / *.zsh.bin / *.zwc files in
239
- # $_SHELL_CACHE, leaving any unrelated content untouched.
240
- #
241
- # @noargs
242
- # @stdout Single-line summary: "Cleared N cached eval file(s) from <dir>"
243
- # @exitcode 0 Always (no-op when cache dir doesn't exist)
244
- _cached_eval_clear() {
245
- local cache_dir="$_SHELL_CACHE"
246
- [[ -d "$cache_dir" ]] || return 0
247
- local count=0 f
248
- for f in "$cache_dir"/*.zsh(N) "$cache_dir"/*.zsh.bin(N) "$cache_dir"/*.zwc(N); do
249
- rm -f -- "$f" && (( count++ ))
250
- done
251
- printf 'Cleared %d cached eval file(s) from %s\n' "$count" "$cache_dir"
252
- }
253
-
254
- # Lazy-load helper for user-supplied slow tools.
255
- #
256
- # Usage in ~/.config/zsh/rc.d/99-local.zsh:
257
- # _dot_lazy nvm nvm node npm npx # nvm.sh sourced on first nvm/node/npm/npx call
258
- # _dot_lazy pyenv pyenv python python3 pip pip3
259
- # _dot_lazy conda conda
260
- #
261
- # First arg is the "trigger" — also the function name that bootstraps
262
- # the real tool. Remaining args are the commands that, when invoked,
263
- # bootstrap the trigger then re-exec the command. Bootstrap functions
264
- # must export `_DOT_LAZY_<TRIGGER>_LOADED` so subsequent calls bypass
265
- # the stub.
266
- #
267
- # Why this matters: every `eval "$(slowtool init zsh)"` at startup
268
- # costs 50-200ms; lazy-load defers that to first use, keeping
269
- # `dot version` cold-start under 100ms.
270
- _dot_lazy() {
271
- local trigger="$1"; shift || return 1
272
- local cmd
273
- for cmd in "$trigger" "$@"; do
274
- # shellcheck disable=SC2139,SC2140
275
- eval "$cmd() {
276
- local _trigger=\"$trigger\"
277
- local _loaded_var=\"_DOT_LAZY_\${(U)_trigger//[^A-Z0-9]/_}_LOADED\"
278
- if [[ -z \${(P)_loaded_var} ]]; then
279
- # Unset every stub so the real binary takes over.
280
- local _c
281
- for _c in \"$trigger\" $@; do
282
- unset -f -- \"\$_c\" 2>/dev/null
283
- done
284
- # User must define a __dot_lazy_init_<trigger> bootstrap.
285
- local _init=\"__dot_lazy_init_\${_trigger//-/_}\"
286
- if (( \${+functions[\$_init]} )); then
287
- \"\$_init\" || return \$?
288
- fi
289
- export \"\$_loaded_var=1\"
290
- fi
291
- command \"$cmd\" \"\$@\"
292
- }"
293
- done
294
- }
295
-
296
- # Lightweight precmd hook manager (faster than add-zsh-hook)
297
- _dotfiles_add_precmd() {
298
- local fn="$1"
299
- [[ -z "$fn" ]] && return 0
300
- precmd_functions=(${precmd_functions:#$fn} "$fn")
301
- }
302
-
303
- _dotfiles_del_precmd() {
304
- local fn="$1"
305
- [[ -z "$fn" ]] && return 0
306
- precmd_functions=(${precmd_functions:#$fn})
307
- }
308
-
309
- # ==============================================================================
310
- # Dotfiles 2026: Zero-Jank & Artifact-Only Mode Foundation
311
- # ==============================================================================
312
- export DOTFILES_ARTIFACT_MODE="${DOTFILES_ARTIFACT_MODE:-0}"
313
-
314
- if [[ "$DOTFILES_ARTIFACT_MODE" == "1" ]]; then
315
- # The Canvas: Strip away all visual noise.
316
- export PROMPT="%F{green}➜ %f"
317
- export RPROMPT=""
318
- # Suppress all background job notifications
319
- setopt NO_NOTIFY
320
- setopt NO_MONITOR
321
- fi
322
- # ==============================================================================
323
-
324
- # Lightweight preexec hook manager
325
- _dotfiles_add_preexec() {
326
- local fn="$1"
327
- [[ -z "$fn" ]] && return 0
328
- preexec_functions=(${preexec_functions:#$fn} "$fn")
329
- }
330
-
331
- _dotfiles_del_preexec() {
332
- local fn="$1"
333
- [[ -z "$fn" ]] && return 0
334
- preexec_functions=(${preexec_functions:#$fn})
335
- }
336
-
337
- ## 🆅🅰🆁🅸🅰🆁🅸🅰🅱🅻🅴🆂 - Core variables, plugins, and options
338
- ZSH_RC_DIR="${HOME}/.config/zsh/rc.d"
339
- if [[ -d "${ZSH_RC_DIR}" ]]; then
340
- for rc_file in "${ZSH_RC_DIR}"/**/*.zsh(N); do
341
- source "${rc_file}"
342
- done
343
- fi
344
-
345
- # User-local rc.d extensions (not managed by chezmoi)
346
- if [[ -d "${ZDOTDIR:-$HOME/.config/zsh}/rc.d.local" ]]; then
347
- for _rc_local in "${ZDOTDIR:-$HOME/.config/zsh}"/rc.d.local/*.zsh(N); do
348
- source "$_rc_local"
349
- done
350
- unset _rc_local
351
- fi
352
-
353
- ###############################
354
- # Performance: Auto-Zcompile #
355
- ###############################
356
- zcompile_many() {
357
- local f
358
- for f; do
359
- # Compile if source is newer than .zwc or .zwc doesn't exist
360
- if [[ -f "$f" ]]; then
361
- if [[ ! -f "${f}.zwc" || "$f" -nt "${f}.zwc" ]]; then
362
- zcompile "$f"
363
- fi
364
- fi
365
- done
366
- }
367
-
368
- # Compile main config and generated files in background
369
- if [[ -o interactive ]]; then
370
- (
371
- zcompile_many "${HOME}/.zshrc" \
372
- "${HOME}/.config/shell/aliases.sh" \
373
- "${HOME}/.config/shell/paths.sh" \
374
- "${HOME}/.config/shell/functions.sh" \
375
- "${HOME}/.config/shell/00-core-paths.sh" \
376
- "${HOME}/.config/shell/05-core-safety.sh" \
377
- "${HOME}/.config/shell/40-ls-colors.sh" \
378
- "${HOME}/.config/shell/50-logic-functions-core.sh" \
379
- "${HOME}/.config/shell/90-ux-aliases.sh" \
380
- /opt/homebrew/opt/fzf/shell/completion.zsh \
381
- /opt/homebrew/opt/fzf/shell/key-bindings.zsh &
382
- )
383
- fi
384
-
385
- # Legacy Loader (Disabled in favor of Chezmoi Universal Config)
386
- # _DOTFILES_CACHE="${HOME}/.zsh_dotfiles_cache"
387
- # load_dotfiles() { ... }
388
- # load_dotfiles
389
-
390
- # Remove duplicates in zsh $PATH
391
- typeset -aU path
392
-
393
- # Load local customizations if they exist
394
- [[ -f "${HOME}/.zshrc.local" ]] && source "${HOME}/.zshrc.local"
395
-
396
- # Vendor / Enterprise Hooks (Site-local overrides)
397
- # Supports drop-in configs from system management tools
398
- if [[ -d "/etc/dotfiles/defaults.d" ]]; then
399
- for hook in /etc/dotfiles/defaults.d/*.sh(N); do
400
- source "$hook"
401
- done
402
- fi
403
-
404
- # Load Chezmoi-managed Universal Configuration Layers (Lexical Order)
405
- # 00-19: Core (Paths, Safety)
406
- # 20-49: Middleware (Exports, Options)
407
- # 50-89: Toolchain & Logic (Functions, Rust tools)
408
- # 90-99: UX (Aliases, Prompts)
409
- #
410
- # Optimized loading of core configurations + eager aliases
411
- if [[ "${DOTFILES_FAST}" == "1" ]]; then
412
- _core_layers=(00-core-paths 05-core-safety)
413
- else
414
- _core_layers=(00-core-paths 05-core-safety 90-ux-aliases)
415
- fi
416
- for core_layer in "${_core_layers[@]}"; do
417
- [[ -f "${HOME}/.config/shell/${core_layer}.sh" ]] && source "${HOME}/.config/shell/${core_layer}.sh"
418
- done
419
- unset _core_layers
420
-
421
- # Starship prompt (eager — must survive cache clears for consistent UI)
422
- if [[ "$DOTFILES_ARTIFACT_MODE" != "1" ]] && (( ${+commands[starship]} )); then
423
- _cached_eval starship-init starship init zsh
424
- # Transient Prompt: collapse the prompt of past commands to the
425
- # [character] glyph after Enter, reducing scrollback noise.
426
- #
427
- # Forward-compatibility hook. Starship's `enable_transience` function
428
- # is currently defined only by `starship init fish` (upstream issue
429
- # starship/starship#3522 tracks the zsh equivalent). On zsh the
430
- # `${+functions[enable_transience]}` guard evaluates to 0, so the
431
- # block silently no-ops. When upstream ships the zsh-side function,
432
- # this code activates automatically — no zshrc change needed.
433
- #
434
- # The `_DOTFILES_STARSHIP_TRANSIENT` flag prevents the lazy-hydration
435
- # path below (which also re-runs starship init) from binding the
436
- # widgets twice.
437
- if [[ -z "${_DOTFILES_STARSHIP_TRANSIENT:-}" ]] && (( ${+functions[enable_transience]} )); then
438
- enable_transience
439
- _DOTFILES_STARSHIP_TRANSIENT=1
440
- fi
441
- fi
442
-
443
- # User-local modules (aliases, functions — not managed by chezmoi)
444
- for _mod_dir in "${XDG_CONFIG_HOME:-$HOME/.config}/dotfiles/modules.d"/*(N/); do
445
- for _mod_file in "$_mod_dir"/*.sh(N); do
446
- source "$_mod_file"
447
- done
448
- done
449
- unset _mod_dir _mod_file
450
-
451
- if [[ "${DOTFILES_FAST}" != "1" ]]; then
452
- # On-demand loading of heavy layers (functions + aliases only when needed)
453
- DOTFILES_LAYERS_LOADED=0
454
- DOTFILES_LAYERS_LOAD_STATE=idle
455
- unset DOTFILES_LAYERS_LOAD_STATUS
456
- _dotfiles_load_heavy_layers_stage1() {
457
- [[ "${DOTFILES_LAYERS_LOAD_STATE}" == "stage1" || "${DOTFILES_LAYERS_LOAD_STATE}" == "ready" ]] && return 0
458
- DOTFILES_LAYERS_LOAD_STATE=loading
459
- unset DOTFILES_LAYERS_LOAD_STATUS
460
- [[ -f "${HOME}/.config/shell/10-secrets.sh" ]] && source "${HOME}/.config/shell/10-secrets.sh"
461
- [[ -f "${HOME}/.config/shell/40-ls-colors.sh" ]] && source "${HOME}/.config/shell/40-ls-colors.sh"
462
- [[ -f "${HOME}/.config/shell/50-logic-functions-core.sh" ]] && source "${HOME}/.config/shell/50-logic-functions-core.sh"
463
- [[ -f "${HOME}/.config/shell/91-ux-aliases-lazy.sh" ]] && source "${HOME}/.config/shell/91-ux-aliases-lazy.sh"
464
- DOTFILES_LAYERS_LOAD_STATE=stage1
465
- }
466
-
467
- _dotfiles_load_heavy_layers_stage2() {
468
- [[ "${DOTFILES_LAYERS_LOAD_STATE}" == "ready" ]] && return 0
469
- [[ -f "${HOME}/.config/shell/51-logic-functions-extra.sh" ]] && source "${HOME}/.config/shell/51-logic-functions-extra.sh"
470
- # Compile extra functions for faster future loads
471
- if command -v zcompile >/dev/null 2>&1; then
472
- { [[ ! -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" } &!
473
- fi
474
- DOTFILES_LAYERS_LOAD_STATE=ready
475
- DOTFILES_LAYERS_LOAD_STATUS=ready
476
- export DOTFILES_LAYERS_LOAD_STATUS
477
- }
478
-
479
- _dotfiles_prewarm_groups() {
480
- local -a _groups
481
- _groups=(${(s:,:)DOTFILES_LAYERS_PREWARM})
482
- local g
483
- for g in "${_groups[@]}"; do
484
- [[ -z "$g" ]] && continue
485
- if (( ${+functions[_dotfiles_load_group_${g}]} )); then
486
- "_dotfiles_load_group_${g}"
487
- fi
488
- done
489
- }
490
-
491
- _dotfiles_load_heavy_layers() {
492
- [[ "${DOTFILES_LAYERS_LOADED}" == "1" ]] && return 0
493
- DOTFILES_LAYERS_LOADED=1
494
- _dotfiles_load_heavy_layers_stage1
495
- _dotfiles_load_heavy_layers_stage2
496
- }
497
-
498
- # Optional background prewarm for heavy layers (idle after first prompt)
499
- _dotfiles_schedule_heavy_layers() {
500
- if [[ "${DOTFILES_LAYERS_LOAD}" == "background" ]]; then
501
- if [[ -n "${ZSH_EXECUTION_STRING:-}" ]]; then
502
- (sleep 1; _dotfiles_load_heavy_layers_stage1; _dotfiles_load_heavy_layers_stage2; _dotfiles_prewarm_groups) &
503
- else
504
- zmodload zsh/sched 2>/dev/null || return 0
505
- sched +1 _dotfiles_load_heavy_layers_stage1
506
- sched +2 _dotfiles_load_heavy_layers_stage2
507
- # Prewarm selected groups after stage2 loads stubs
508
- sched +3 _dotfiles_prewarm_groups
509
- fi
510
- fi
511
- }
512
- # Compatibility: use add-zsh-hook when available (tests rely on this)
513
- autoload -Uz add-zsh-hook
514
- _load_deferred_layers() {
515
- if (( ${+functions[add-zsh-hook]} )); then
516
- add-zsh-hook -d precmd _load_deferred_layers
517
- else
518
- _dotfiles_del_precmd _load_deferred_layers
519
- fi
520
- _dotfiles_schedule_heavy_layers
521
- }
522
- if (( ${+functions[add-zsh-hook]} )); then
523
- add-zsh-hook precmd _load_deferred_layers
524
- else
525
- _dotfiles_add_precmd _load_deferred_layers
526
- fi
527
-
528
- # Capture existing command_not_found handler (if any)
529
- if (( ${+functions[command_not_found_handler]} )); then
530
- functions[_dotfiles_prev_command_not_found_handler]="${functions[command_not_found_handler]}"
531
- fi
532
-
533
- command_not_found_handler() {
534
- local cmd="$1"
535
- shift || true
536
-
537
- if [[ "${DOTFILES_LAYERS_LOADED}" != "1" ]]; then
538
- _dotfiles_load_heavy_layers_stage1
539
- if (( ${+functions[$cmd]} )); then
540
- "$cmd" "$@"
541
- return $?
542
- fi
543
- if alias "$cmd" >/dev/null 2>&1; then
544
- local -a _args
545
- _args=("$@")
546
- eval "$cmd ${(@q)_args}"
547
- unset _args
548
- return $?
549
- fi
550
- _dotfiles_load_heavy_layers_stage2
551
- if (( ${+functions[$cmd]} )); then
552
- "$cmd" "$@"
553
- return $?
554
- fi
555
- if alias "$cmd" >/dev/null 2>&1; then
556
- local -a _args2
557
- _args2=("$@")
558
- eval "$cmd ${(@q)_args2}"
559
- unset _args2
560
- return $?
561
- fi
562
- fi
563
-
564
- if (( ${+functions[_dotfiles_prev_command_not_found_handler]} )); then
565
- _dotfiles_prev_command_not_found_handler "$cmd" "$@"
566
- return $?
567
- fi
568
-
569
- print -r -- "zsh: command not found: ${cmd}" >&2
570
- return 127
571
- }
572
-
573
- # dot load: force heavy layers now
574
- unalias dot 2>/dev/null
575
- functions[dot]='
576
- if [[ "$1" == "load" ]]; then
577
- if [[ "$2" == "--background" ]]; then
578
- DOTFILES_LAYERS_LOAD=background
579
- _dotfiles_schedule_heavy_layers
580
- return 0
581
- fi
582
- if [[ "$2" == "--status" ]]; then
583
- if [[ "$3" == "--watch" ]]; then
584
- local _timeout="${4:-5}"
585
- local _t0=$EPOCHREALTIME
586
- if [[ "${DOTFILES_LAYERS_LOAD_STATE:-idle}" == "idle" ]]; then
587
- _dotfiles_load_heavy_layers
588
- fi
589
- while [[ "${DOTFILES_LAYERS_LOAD_STATE:-idle}" != "ready" ]]; do
590
- sleep 0.1
591
- if [[ -n "${_timeout}" && "${_timeout}" != "0" ]]; then
592
- local _t1=$EPOCHREALTIME
593
- if (( (_t1 - _t0) >= _timeout )); then
594
- print -r -- "timeout"
595
- return 124
596
- fi
597
- fi
598
- done
599
- fi
600
- print -r -- "${DOTFILES_LAYERS_LOAD_STATE:-idle}"
601
- return 0
602
- fi
603
- _dotfiles_load_heavy_layers
604
- return 0
605
- fi
606
- "$HOME/.local/bin/dot" "$@"
607
- '
608
- fi
609
-
610
- # Essential Aliases (fallback if 90-ux-aliases.sh is unavailable)
611
- if command -v bat >/dev/null; then
612
- alias cat="bat"
613
- fi
614
-
615
-
616
- if [[ "${DOTFILES_FAST}" != "1" ]]; then
617
- ## AI / Predictive Shell (opt-in)
618
- if [[ "${DOTFILES_AI}" == "1" ]]; then
619
- [[ -f "$HOME/.config/shell/custom/context_suggest.zsh" ]] && source "$HOME/.config/shell/custom/context_suggest.zsh"
620
- [[ -f "$HOME/.config/shell/custom/error_analysis.zsh" ]] && source "$HOME/.config/shell/custom/error_analysis.zsh"
621
- fi
622
-
623
- : ${DOTFILES_DEFER_TOOLS:=1}
624
-
625
- # Dotfiles 2026 Async Loader: Move heavy binary path resolution to background
626
- _dotfiles_async_init() {
627
- [[ "$DOTFILES_FAST" == "1" ]] && return
628
- local tools=(mise atuin starship zoxide)
629
- local t
630
- for t in $tools; do
631
- if [[ -x "${commands[$t]}" ]]; then
632
- case "$t" in
633
- mise)
634
- _cached_eval mise-init mise activate zsh
635
- ;;
636
- atuin)
637
- _cached_eval atuin-init atuin init zsh
638
- ;;
639
- starship)
640
- if [[ "$DOTFILES_ARTIFACT_MODE" == "0" ]]; then
641
- _cached_eval starship-init starship init zsh
642
- if [[ -z "${_DOTFILES_STARSHIP_TRANSIENT:-}" ]] && (( ${+functions[enable_transience]} )); then
643
- enable_transience
644
- _DOTFILES_STARSHIP_TRANSIENT=1
645
- fi
646
- fi
647
- ;;
648
- zoxide)
649
- _cached_eval zoxide-init zoxide init zsh
650
- ;;
651
- esac
652
- fi
653
- done
654
- # mise/atuin/etc emit `export PATH=...` which bypasses zsh's -U flag on
655
- # the `path` array — re-apply uniqueness to drop any duplicates baked
656
- # into the cached output (e.g. system paths inherited from a dirty
657
- # parent shell).
658
- typeset -U path
659
- }
660
-
661
- # Deferred Hydration for Zero-Jank Experience
662
- _dotfiles_deferred_hydration() {
663
- # Unregister self
664
- _dotfiles_del_precmd _dotfiles_deferred_hydration
665
- _dotfiles_del_preexec _dotfiles_deferred_hydration
666
-
667
- # Check if already hydrated in this shell instance
668
- [[ -n "$DOTFILES_HYDRATED" ]] && return 0
669
- export DOTFILES_HYDRATED=1
670
-
671
- _dotfiles_async_init
672
-
673
- # Bento-Grid 2.0 (Liquid Glass Dashboard)
674
- # Only render if interactive and not in restricted ultra-fast mode
675
- if [[ "$DOTFILES_ARTIFACT_MODE" == "1" ]]; then
676
- [[ -f "$HOME/.dotfiles/scripts/dot/lib/bento.sh" ]] && (bash "$HOME/.dotfiles/scripts/dot/lib/bento.sh" </dev/null; kill -WINCH $$) &!
677
- fi
678
- }
679
-
680
- # 1. Idle trigger (500ms)
681
- zmodload zsh/sched 2>/dev/null
682
- sched +1 _dotfiles_deferred_hydration 2>/dev/null
683
-
684
- # 2. First-action trigger (Prompt or Enter)
685
- _dotfiles_add_precmd _dotfiles_deferred_hydration
686
- _dotfiles_add_preexec _dotfiles_deferred_hydration
687
-
688
- fi