@sebastienrousseau/dotfiles 0.2.502 → 0.2.504

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 +109 -9
  2. package/LICENSE +21 -1283
  3. package/README.md +6 -4
  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 +118 -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 +5 -5
  56. package/scripts/diagnostics/conflicts.sh +2 -2
  57. package/scripts/diagnostics/doctor-unified.sh +3 -3
  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 +5 -5
  64. package/scripts/diagnostics/scorecard.sh +4 -4
  65. package/scripts/diagnostics/security-score.sh +25 -6
  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 +13 -3
  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 +156 -37
  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 +22 -16
  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 +3 -3
  92. package/scripts/git-hooks/pre-push +13 -0
  93. package/scripts/ops/ai-setup.sh +1 -1
  94. package/scripts/ops/bundle.sh +3 -3
  95. package/scripts/ops/chaos.sh +2 -2
  96. package/scripts/ops/chezmoi-apply.sh +12 -6
  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 +31 -2
  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 +74 -10
  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
@@ -0,0 +1,123 @@
1
+ # `scripts/` — Framework Code
2
+
3
+ Everything in this directory is **framework code**. Nothing here
4
+ deploys to `~/`; chezmoi ignores the whole tree (see
5
+ `.chezmoiignore`). Scripts are invoked by the `dot` CLI, by CI
6
+ workflows, by `chezmoi apply` hooks, or by hand.
7
+
8
+ ## Subtree map
9
+
10
+ Per the repository reorg (RFC `docs/operations/RFC_v0_2_503_reorganization.md`),
11
+ **repo-only ops** (CI, release, maintenance, docs-generation) have
12
+ moved to the top-level `tools/` tree. `scripts/` retains the
13
+ **runtime-invoked** scripts that the `dot` CLI dispatches to plus a
14
+ few specialised subtrees.
15
+
16
+ ### `scripts/` (CLI dispatch + specialised subtrees)
17
+
18
+ | Path | Purpose | Touched by |
19
+ |---|---|---|
20
+ | `scripts/dot/commands/` | Per-subcommand handlers for the `dot` CLI. Sources `lib/dot/*.sh` (moved out of this tree in the Phase 1 reorg). | Dispatched by `bin/dot` |
21
+ | `scripts/dot/powershell/` | Native PowerShell module (`Dot.psm1`) exporting `Get-DotVersion` / `Invoke-DotHelp` / `Test-DotAgentsSync`. | `bin/dot.ps1` |
22
+ | `scripts/dot/data/` | Per-command static data (registry seeds, palette tables). | `scripts/dot/commands/*` |
23
+ | `scripts/lib/` | Cross-cutting library helpers reused across multiple scripts. Example: `secrets_provider.sh` (keychain / pass / age dispatch). | `scripts/dot/commands/*`, ops scripts |
24
+ | `scripts/diagnostics/` | `doctor.sh` and its helpers — long-form environment health check. | `dot doctor` |
25
+ | `scripts/security/` | Security-domain ops: `check-disclosure-key-expiry.sh`, `lock-configs.sh`, etc. | `dot security`, CI |
26
+ | `scripts/secrets/` | Secret-bucket utilities (rotation, audit). | `dot secrets` subcommands |
27
+ | `scripts/theme/` | Wallpaper-to-palette extraction logic. | `dot theme rebuild` |
28
+ | `scripts/tools/` | Tool-helpers shipped via `dot tools` (e.g. `cmatrix.sh`, `emoji-picker.sh`, `figlet-banner.sh`, `log-rotate.sh`). Runtime-invoked. | `dot tools`, `dot env` |
29
+ | `scripts/tuning/` | Opt-in OS tuning scripts (`macos.sh`, `linux.sh`). | `dot tune`, manual invocation |
30
+ | `scripts/ops/` | Repo-wide ops: `rollback.sh`, etc. | `dot rollback`, maintenance |
31
+ | `scripts/fonts/` | Nerd Font install helpers. | `dot fonts` |
32
+ | `scripts/git-hooks/` | Git hooks not managed by chezmoi (kept here for portable install). | `install/provision/*` |
33
+ | `scripts/qa/` | Quality-assurance helpers (PowerShell contract tests, version-consistency checks, scorecard snapshot, etc). | `.github/workflows/pr-signature.yml`, `powershell-contract.yml`, doc-drift |
34
+ | `scripts/demo/` | Demonstration helpers (recordings, screenshots). | Manual |
35
+ | `scripts/version-sync.sh` | Bulk version-string propagator (`scripts/qa/check-version-consistency.sh` is the verifier). | Release flow |
36
+ | `scripts/uninstall.sh` | Reverse-of-`install.sh` — user-invoked. | Manual |
37
+
38
+ ### `tools/` (repo-only ops, not distributable)
39
+
40
+ | Path | Purpose | Touched by |
41
+ |---|---|---|
42
+ | `tools/ci/` | CI-only helpers: `dot-cli-startup-bench.sh`, `install-chezmoi-verified.sh`, `windows-smoke-test.ps1`, `run-coverage.sh`, etc. | `.github/workflows/*` |
43
+ | `tools/release/` | Release-time tasks. | Release workflow |
44
+ | `tools/maintenance/` | Recurring upkeep: `check-updates.sh`, etc. | Cron, manual |
45
+ | `tools/docs/` | Documentation-generation helpers (manual builds, screenshot CI, `generate-command-index.sh`). | `manual-publish.yml`, `dot manual`, doc-drift |
46
+
47
+ ## `scripts/dot/` breakdown
48
+
49
+ The `dot` CLI is implemented as `bin/dot`
50
+ (dispatcher) + `scripts/dot/commands/<cmd>.sh` (per-command
51
+ handlers) + `lib/dot/*.sh` (shared helpers — moved out of
52
+ `scripts/dot/lib/` in the Phase 1 reorg per the
53
+ [reorganisation RFC](../docs/operations/RFC_v0_2_503_reorganization.md)).
54
+
55
+ | Path | Purpose |
56
+ |---|---|
57
+ | `scripts/dot/commands/` | One file per `dot <cmd>` subcommand. Each defines a `cmd_<name>()` function the dispatcher calls. Sources the library via `$SCRIPT_DIR/../../../lib/dot/<X>.sh`. |
58
+ | `scripts/dot/powershell/` | Native PowerShell module — see top-level table. |
59
+ | **`lib/dot/utils.sh`** | Common helpers (resolve_source_dir, validate_name, die, run_script, etc.). |
60
+ | **`lib/dot/ui.sh`** | Single source of truth for CLI output (ui_ok/warn/err/info, ui_header, ui_table_*, ui_spinner_*, ui_confirm, ...). |
61
+ | **`lib/dot/platform.sh`** | OS / shell / WSL detection, path translation. |
62
+ | **`lib/dot/log.sh`** | Structured logging (JSONL audit log when `DOTFILES_AUDIT_LOG=1`). |
63
+ | **`lib/dot/bento.sh`** | The "bento box" layout primitive used by `dot health` and friends. |
64
+
65
+ ## Adding a new subcommand
66
+
67
+ 1. Create `scripts/dot/commands/<name>.sh`:
68
+
69
+ ```bash
70
+ #!/usr/bin/env bash
71
+ # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
72
+ set -euo pipefail
73
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
74
+ # shellcheck source=../lib/utils.sh
75
+ source "$SCRIPT_DIR/../lib/utils.sh"
76
+
77
+ dot_ui_command_banner "<Title>" "${1:-}"
78
+
79
+ cmd_<name>() {
80
+ # ...
81
+ }
82
+
83
+ cmd_<name>_help() {
84
+ cat <<-EOF
85
+ Usage: dot <name> [args]
86
+ # ...
87
+ EOF
88
+ }
89
+ ```
90
+
91
+ 2. Add a dispatch arm in `bin/dot`:
92
+
93
+ ```bash
94
+ <name>) load_commands "<name>"; cmd_<name> "$@" ;;
95
+ ```
96
+
97
+ 3. Document it in `docs/manual/03-reference/01-dot-cli.md` and add
98
+ to `docs/manual/command-index.md`.
99
+
100
+ 4. Add a help-table entry in `bin/dot`'s
101
+ help renderer.
102
+
103
+ 5. Add a unit test under `tests/unit/<domain>/test_<name>.sh`
104
+ (run with `./tests/framework/test_runner.sh`).
105
+
106
+ ## Conventions
107
+
108
+ - **Shell style**: 2-space indent, `set -euo pipefail`, shellcheck-clean
109
+ with the project's flags (`--severity=error -e SC1091 -e SC2030 -e SC2031`).
110
+ - **Formatting**: `shfmt -i 2 -ci`.
111
+ - **Output**: NEVER `printf` raw ANSI. Source `scripts/dot/lib/ui.sh`
112
+ and use `ui_ok`, `ui_table_*`, etc.
113
+ - **Exit codes**: 1 = bad usage, 2 = no provider / dependency missing,
114
+ 3 = empty result / not found, ≥4 = provider-specific. Document
115
+ per-command in the help text.
116
+ - **Validation**: Always `validate_name "$arg" "tool name"` before
117
+ passing user input to `mise`, `gh`, `ssh`, etc.
118
+
119
+ ## See also
120
+
121
+ - `../docs/STRUCTURE.md` — full repository map.
122
+ - `docs/manual/03-reference/01-dot-cli.md` — every `dot <cmd>` documented.
123
+ - `scripts/dot/lib/ui.sh` — the UI primitive library (always source this for output).
@@ -1,96 +1,7 @@
1
1
  #!/usr/bin/env bash
2
2
  # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
3
- # Copyright header validator (zero-tolerance policy).
4
- #
5
- # Scans source files for a copyright header in the first 10 lines. Patterns
6
- # are deliberately narrow to avoid false positives on C-style `(c)` comments
7
- # or the word "token" appearing in running text.
8
- #
9
- # Usage:
10
- # check-copyright-headers.sh [--extensions=sh,lua,nix,...] [--excludes=REGEX]
11
- #
12
- # Exit codes:
13
- # 0 all files have a valid header
14
- # 1 one or more files are missing a header
15
- # 2 invalid invocation
16
-
3
+ # Compat shim: the canonical script moved to tools/ci/ during the repo reorg.
4
+ # Pinned reusable workflows on master still reference the old path;
5
+ # this delegates so they keep working until the next pin bump.
17
6
  set -euo pipefail
18
-
19
- EXTENSIONS_DEFAULT="sh,lua,nix,py,js,ts,go,rs,java,cpp,c,h,hpp"
20
- EXCLUDES_DEFAULT='(^|/)(node_modules|\.git|vendor|target|build)/|\.tmpl$|(^|/)\.chezmoitemplates/'
21
-
22
- EXTENSIONS="$EXTENSIONS_DEFAULT"
23
- EXCLUDES="$EXCLUDES_DEFAULT"
24
-
25
- for arg in "$@"; do
26
- case "$arg" in
27
- --extensions=*) EXTENSIONS="${arg#*=}" ;;
28
- --excludes=*) EXCLUDES="${arg#*=}" ;;
29
- -h | --help)
30
- sed -n '2,14p' "$0" | sed 's/^# \{0,1\}//'
31
- exit 0
32
- ;;
33
- *)
34
- echo "Unknown argument: $arg" >&2
35
- exit 2
36
- ;;
37
- esac
38
- done
39
-
40
- # Narrow patterns — each must be specific enough that running prose cannot match.
41
- # Deliberately DROPPED: bare "(c) " (false-positives in C comments),
42
- # bare "All rights reserved" (often appears in vendored prose).
43
- # Matched by `grep -F`, so these are literal strings.
44
- PATTERNS=(
45
- "Copyright (c)"
46
- "Copyright ©"
47
- "SPDX-License-Identifier:"
48
- "© "
49
- )
50
-
51
- # Build a ripgrep glob like `{*.sh,*.lua,*.nix}` from the comma list.
52
- IFS=',' read -r -a exts <<<"$EXTENSIONS"
53
- glob="{"
54
- for i in "${!exts[@]}"; do
55
- [[ $i -gt 0 ]] && glob+=","
56
- glob+="*.${exts[$i]}"
57
- done
58
- glob+="}"
59
-
60
- mapfile -t all_files < <(rg --files -g "$glob" 2>/dev/null || true)
61
-
62
- if [[ "${#all_files[@]}" -eq 0 ]]; then
63
- echo "::notice::No files matched extensions: $EXTENSIONS"
64
- exit 0
65
- fi
66
-
67
- missing=()
68
- for file in "${all_files[@]}"; do
69
- if [[ "$file" =~ $EXCLUDES ]]; then
70
- continue
71
- fi
72
-
73
- found=false
74
- # Read the first 10 lines once; search each pattern against that buffer.
75
- head_buf="$(head -n 10 "$file" 2>/dev/null || true)"
76
- for pattern in "${PATTERNS[@]}"; do
77
- if grep -qF -- "$pattern" <<<"$head_buf"; then
78
- found=true
79
- break
80
- fi
81
- done
82
-
83
- $found || missing+=("$file")
84
- done
85
-
86
- if [[ "${#missing[@]}" -gt 0 ]]; then
87
- echo "::error::Copyright header validation failed — ${#missing[@]} file(s) missing header"
88
- echo "Files missing a recognised copyright header:"
89
- printf ' - %s\n' "${missing[@]}"
90
- echo
91
- echo "Add ONE of the following to the first 10 lines:"
92
- printf ' - %s\n' "${PATTERNS[@]}"
93
- exit 1
94
- fi
95
-
96
- echo "::notice::All ${#all_files[@]} file(s) have a valid copyright header"
7
+ exec bash "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)/tools/ci/check-copyright-headers.sh" "$@"
@@ -1,106 +1,7 @@
1
1
  #!/usr/bin/env bash
2
2
  # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
3
- # =============================================================================
4
- # check-shell-preamble.sh Enforce `set -euo pipefail` (bash) / `set -eu` (sh)
5
- # on every executable shell script in the repo.
6
- #
7
- # Skip-rules:
8
- # * Sourced libraries that declare themselves as such via a "Sourced by ..."
9
- # header comment in the first 15 lines.
10
- # * Explicit opt-out via `# preamble:skip` marker in the first 15 lines
11
- # (used by completion files, init fragments, and other library code that
12
- # is loaded into the caller's shell context).
13
- # * Files under tests/ (the test runner sets shell options for its children).
14
- #
15
- # Invocation:
16
- # * pre-commit local hook (files passed as args)
17
- # * standalone: ./scripts/ci/check-shell-preamble.sh # full repo
18
- # ./scripts/ci/check-shell-preamble.sh file.sh # explicit
19
- # =============================================================================
20
-
3
+ # Compat shim: the canonical script moved to tools/ci/ during the repo reorg.
4
+ # Pinned reusable workflows on master still reference the old path;
5
+ # this delegates so they keep working until the next pin bump.
21
6
  set -euo pipefail
22
-
23
- check_one() {
24
- local f="$1"
25
-
26
- [[ -f "$f" ]] || return 0
27
-
28
- local shebang
29
- shebang="$(head -1 "$f" 2>/dev/null || true)"
30
-
31
- # Only check files with a bash or sh shebang.
32
- case "$shebang" in
33
- *bash*) ;;
34
- *sh) ;;
35
- *) return 0 ;;
36
- esac
37
-
38
- # Skip files declaring themselves as sourced libraries or opting out.
39
- if head -15 "$f" | grep -Eq '^# *(Sourced by |preamble:skip|shellcheck source-only)'; then
40
- return 0
41
- fi
42
-
43
- # Skip the test suite — tests are sourced by tests/framework/test_runner.sh
44
- # which manages shell options for its children.
45
- case "$f" in
46
- tests/*) return 0 ;;
47
- # Bulk-sourced fragments. These directories contain hundreds of
48
- # alias / function / PATH snippets that are sourced into the
49
- # caller's shell context — adding `set -e` locally would corrupt
50
- # the caller. Path-skipped en masse rather than annotated per-file
51
- # (would be 300+ marker comments).
52
- .chezmoitemplates/aliases/*) return 0 ;;
53
- .chezmoitemplates/functions/*) return 0 ;;
54
- .chezmoitemplates/paths/*) return 0 ;;
55
- # dot_config/shell/* and scripts/dot/lib/* are also sourced but
56
- # have explicit `# Sourced by` headers as of #854 (defense in
57
- # depth — the lint also accepts them on header alone).
58
- dot_local/bin/executable_dot_completion) return 0 ;; # zsh completion, sourced into shell
59
- esac
60
-
61
- # Required preamble lives within the first 50 lines (after optional docstring).
62
- local preamble_re
63
- case "$shebang" in
64
- *bash*)
65
- preamble_re='^[[:space:]]*set[[:space:]]+-([eu]+o[[:space:]]+pipefail|euo[[:space:]]+pipefail|eu[[:space:]]*$)'
66
- ;;
67
- *sh)
68
- preamble_re='^[[:space:]]*set[[:space:]]+-eu[o]?'
69
- ;;
70
- esac
71
-
72
- if ! head -50 "$f" | grep -Eq "$preamble_re"; then
73
- echo "MISSING preamble: $f"
74
- return 1
75
- fi
76
- }
77
-
78
- fail=0
79
- if [[ $# -gt 0 ]]; then
80
- for f in "$@"; do
81
- check_one "$f" || fail=1
82
- done
83
- else
84
- # Full-repo scan
85
- while IFS= read -r f; do
86
- check_one "$f" || fail=1
87
- done < <(git ls-files | grep -E '\.sh$|^dot_local/bin/executable_|^scripts/.+\.sh$')
88
- fi
89
-
90
- if [[ $fail -ne 0 ]]; then
91
- cat >&2 <<'MSG'
92
-
93
- Some shell scripts are missing the safety preamble.
94
- * bash → `set -euo pipefail`
95
- * sh → `set -eu`
96
-
97
- If the file is a sourced library, add this header to its first 15 lines:
98
- # Sourced by <parent>.sh; inherits set -euo pipefail
99
-
100
- If the file is a shell init fragment / completion that must NOT enforce its own
101
- options on the caller, add this marker instead:
102
- # preamble:skip
103
-
104
- MSG
105
- exit 1
106
- fi
7
+ exec bash "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)/tools/ci/check-shell-preamble.sh" "$@"
@@ -1,57 +1,7 @@
1
1
  #!/usr/bin/env bash
2
2
  # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
3
- # Guard against full-history gitleaks scans on manual runs.
4
- # This ensures workflow checkout remains shallow near gitleaks steps.
5
-
3
+ # Compat shim: the canonical script moved to tools/ci/ during the repo reorg.
4
+ # Pinned reusable workflows on master still reference the old path;
5
+ # this delegates so they keep working until the next pin bump.
6
6
  set -euo pipefail
7
-
8
- check_workflow() {
9
- local workflow="$1"
10
- local failed=0
11
- local line_no
12
-
13
- while IFS=: read -r line_no _; do
14
- local start end context
15
- start=$((line_no - 16))
16
- end=$((line_no + 2))
17
- if [[ "$start" -lt 1 ]]; then
18
- start=1
19
- fi
20
-
21
- context="$(sed -n "${start},${end}p" "$workflow")"
22
-
23
- if [[ "$context" != *"actions/checkout"* ]]; then
24
- echo "ERROR: $workflow:$line_no missing nearby checkout for gitleaks step."
25
- failed=1
26
- continue
27
- fi
28
-
29
- if [[ "$context" != *"fetch-depth: 1"* ]]; then
30
- echo "ERROR: $workflow:$line_no gitleaks step must use checkout fetch-depth: 1."
31
- failed=1
32
- fi
33
-
34
- if [[ "$context" == *"fetch-depth: 0"* ]]; then
35
- echo "ERROR: $workflow:$line_no gitleaks step contains forbidden fetch-depth: 0."
36
- failed=1
37
- fi
38
- done < <(grep -n "gitleaks/gitleaks-action" "$workflow" || true)
39
-
40
- return "$failed"
41
- }
42
-
43
- main() {
44
- local failed=0
45
-
46
- check_workflow ".github/workflows/ci.yml" || failed=1
47
- check_workflow ".github/workflows/security-enhanced.yml" || failed=1
48
-
49
- if [[ "$failed" -ne 0 ]]; then
50
- echo "Gitleaks checkout guard failed."
51
- exit 1
52
- fi
53
-
54
- echo "Gitleaks checkout guard passed."
55
- }
56
-
57
- main "$@"
7
+ exec bash "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)/tools/ci/guard-gitleaks-checkout.sh" "$@"
@@ -7,8 +7,8 @@ set -euo pipefail
7
7
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
8
  REPO_ROOT="${REPO_ROOT:-$(cd "$SCRIPT_DIR/../.." && pwd)}"
9
9
 
10
- # shellcheck source=../dot/lib/ui.sh
11
- source "$SCRIPT_DIR/../dot/lib/ui.sh"
10
+ # shellcheck source=../../lib/dot/ui.sh
11
+ source "$SCRIPT_DIR/../../lib/dot/ui.sh"
12
12
 
13
13
  JSON_MODE=0
14
14
  STRICT_MODE=0
@@ -35,8 +35,8 @@ command -v jq >/dev/null 2>&1 || {
35
35
 
36
36
  a2a_card="$REPO_ROOT/.well-known/agent-card.json"
37
37
  legacy_doc="$REPO_ROOT/.well-known/agent.json"
38
- internal_card="$REPO_ROOT/dot_config/dotfiles/agent-card.json"
39
- agent_profiles="$REPO_ROOT/dot_config/dotfiles/agent-profiles.json"
38
+ internal_card="$REPO_ROOT/defaults/dot_config/dotfiles/agent-card.json"
39
+ agent_profiles="$REPO_ROOT/defaults/dot_config/dotfiles/agent-profiles.json"
40
40
  status="healthy"
41
41
  issues=()
42
42
 
@@ -110,7 +110,7 @@ if [[ -f "$deprecations_file" ]]; then
110
110
  alias_found=1
111
111
  fi
112
112
  function_found=0
113
- if rg -q --glob '*.sh' --glob '*.aliases.sh' --glob '*.tmpl' "^[[:space:]]*(function[[:space:]]+)?${alias_name}[[:space:]]*\\(\\)" "$SCRIPT_DIR/../../.chezmoitemplates/aliases" "$SCRIPT_DIR/../../scripts/dot"; then
113
+ if rg -q --glob '*.sh' --glob '*.aliases.sh' --glob '*.tmpl' "^[[:space:]]*(function[[:space:]]+)?${alias_name}[[:space:]]*\\(\\)" "$SCRIPT_DIR/../../defaults/.chezmoitemplates/aliases" "$SCRIPT_DIR/../../scripts/dot"; then
114
114
  function_found=1
115
115
  fi
116
116
  if [[ $alias_found -eq 1 || $function_found -eq 1 ]]; then
@@ -3,9 +3,9 @@
3
3
  set -euo pipefail
4
4
 
5
5
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6
- # shellcheck source=../dot/lib/utils.sh
6
+ # shellcheck source=../../lib/dot/utils.sh
7
7
  # shellcheck disable=SC1091
8
- source "$SCRIPT_DIR/../dot/lib/utils.sh"
8
+ source "$SCRIPT_DIR/../../lib/dot/utils.sh"
9
9
 
10
10
  src_dir="$(require_source_dir)"
11
11
  manifest="$src_dir/scripts/diagnostics/aliases-manifest.sh"
@@ -41,15 +41,15 @@
41
41
  set -euo pipefail
42
42
 
43
43
  _cleanup_files=()
44
- trap 'rm -f "${_cleanup_files[@]}"' EXIT
44
+ trap 'set +u; rm -f "${_cleanup_files[@]}" 2>/dev/null; set -u' EXIT
45
45
 
46
46
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
47
- # shellcheck source=../dot/lib/ui.sh
47
+ # shellcheck source=../../lib/dot/ui.sh
48
48
  # shellcheck disable=SC1091
49
- source "$SCRIPT_DIR/../dot/lib/ui.sh"
50
- # shellcheck source=../dot/lib/log.sh
49
+ source "$SCRIPT_DIR/../../lib/dot/ui.sh"
50
+ # shellcheck source=../../lib/dot/log.sh
51
51
  # shellcheck disable=SC1091
52
- source "$SCRIPT_DIR/../dot/lib/log.sh"
52
+ source "$SCRIPT_DIR/../../lib/dot/log.sh"
53
53
  export DOT_COMMAND="benchmark"
54
54
 
55
55
  BENCHMARK_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/dotfiles/benchmarks"
@@ -6,9 +6,9 @@
6
6
  set -euo pipefail
7
7
 
8
8
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
9
- # shellcheck source=../dot/lib/ui.sh
9
+ # shellcheck source=../../lib/dot/ui.sh
10
10
  # shellcheck disable=SC1091
11
- source "$SCRIPT_DIR/../dot/lib/ui.sh"
11
+ source "$SCRIPT_DIR/../../lib/dot/ui.sh"
12
12
 
13
13
  ui_init
14
14
 
@@ -4,13 +4,13 @@
4
4
  set -euo pipefail
5
5
 
6
6
  _cleanup_files=()
7
- trap 'rm -f "${_cleanup_files[@]}"' EXIT
7
+ trap 'set +u; rm -f "${_cleanup_files[@]}" 2>/dev/null; set -u' EXIT
8
8
 
9
9
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
10
10
  REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
11
- # shellcheck source=../dot/lib/ui.sh
11
+ # shellcheck source=../../lib/dot/ui.sh
12
12
  # shellcheck disable=SC1091
13
- source "$SCRIPT_DIR/../dot/lib/ui.sh"
13
+ source "$SCRIPT_DIR/../../lib/dot/ui.sh"
14
14
  ui_init
15
15
 
16
16
  passthrough=()
@@ -19,15 +19,15 @@
19
19
  set -euo pipefail
20
20
 
21
21
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
22
- # shellcheck source=../dot/lib/ui.sh
22
+ # shellcheck source=../../lib/dot/ui.sh
23
23
  # shellcheck disable=SC1091
24
- source "$SCRIPT_DIR/../dot/lib/ui.sh"
25
- # shellcheck source=../dot/lib/platform.sh
24
+ source "$SCRIPT_DIR/../../lib/dot/ui.sh"
25
+ # shellcheck source=../../lib/dot/platform.sh
26
26
  # shellcheck disable=SC1091
27
- source "$SCRIPT_DIR/../dot/lib/platform.sh"
28
- # shellcheck source=../dot/lib/log.sh
27
+ source "$SCRIPT_DIR/../../lib/dot/platform.sh"
28
+ # shellcheck source=../../lib/dot/log.sh
29
29
  # shellcheck disable=SC1091
30
- source "$SCRIPT_DIR/../dot/lib/log.sh"
30
+ source "$SCRIPT_DIR/../../lib/dot/log.sh"
31
31
  export DOT_COMMAND="doctor"
32
32
 
33
33
  ui_init
@@ -607,11 +607,11 @@ if command -v zsh >/dev/null 2>&1; then
607
607
  fi
608
608
 
609
609
  # 4. PATH length. Each entry is searched on every command resolution.
610
- # A mise-managed dev machine routinely adds 50+ entries (one per tool
611
- # install path), so the warn/fail thresholds are set higher than a
612
- # lean baseline (40) would suggest.
610
+ # A mise-managed 2026 dev machine routinely adds 60-90 entries (one per
611
+ # installed tool version + per-shim path), so the warn/fail thresholds
612
+ # reflect that baseline rather than a lean default (~40).
613
613
  path_count=$(printf '%s' "${PATH:-}" | tr ':' '\n' | grep -c . || true)
614
- if [[ "$path_count" -le 60 ]]; then
614
+ if [[ "$path_count" -le 75 ]]; then
615
615
  _ok "PATH length" "$path_count entries"
616
616
  elif [[ "$path_count" -le 120 ]]; then
617
617
  _warn "PATH length" "$path_count entries — consider pruning"
@@ -30,9 +30,9 @@
30
30
  set -euo pipefail
31
31
 
32
32
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
33
- # shellcheck source=../dot/lib/ui.sh
33
+ # shellcheck source=../../lib/dot/ui.sh
34
34
  # shellcheck disable=SC1091
35
- source "$SCRIPT_DIR/../dot/lib/ui.sh"
35
+ source "$SCRIPT_DIR/../../lib/dot/ui.sh"
36
36
 
37
37
  JSON_MODE=0
38
38
  SHOW_DIFF="${DOTFILES_DRIFT_SHOW_DIFF:-0}"
@@ -6,12 +6,12 @@
6
6
  set -euo pipefail
7
7
 
8
8
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
9
- # shellcheck source=../dot/lib/ui.sh
9
+ # shellcheck source=../../lib/dot/ui.sh
10
10
  # shellcheck disable=SC1091
11
- source "$SCRIPT_DIR/../dot/lib/ui.sh"
12
- # shellcheck source=../dot/lib/log.sh
11
+ source "$SCRIPT_DIR/../../lib/dot/ui.sh"
12
+ # shellcheck source=../../lib/dot/log.sh
13
13
  # shellcheck disable=SC1091
14
- source "$SCRIPT_DIR/../dot/lib/log.sh"
14
+ source "$SCRIPT_DIR/../../lib/dot/log.sh"
15
15
 
16
16
  # Portable has_command (self-contained; no dependency on utils.sh)
17
17
  has_command() { command -v "$1" >/dev/null 2>&1; }
@@ -3,9 +3,9 @@
3
3
  set -euo pipefail
4
4
 
5
5
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6
- # shellcheck source=../dot/lib/ui.sh
6
+ # shellcheck source=../../lib/dot/ui.sh
7
7
  # shellcheck disable=SC1091
8
- source "$SCRIPT_DIR/../dot/lib/ui.sh"
8
+ source "$SCRIPT_DIR/../../lib/dot/ui.sh"
9
9
 
10
10
  histfile="${HISTFILE:-$HOME/.zsh_history}"
11
11
  db="${DOTFILES_HISTORY_DB:-$HOME/.local/share/dotfiles/history.sqlite}"
@@ -31,9 +31,9 @@
31
31
  set -euo pipefail
32
32
 
33
33
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
34
- # shellcheck source=../dot/lib/ui.sh
34
+ # shellcheck source=../../lib/dot/ui.sh
35
35
  # shellcheck disable=SC1091
36
- source "$SCRIPT_DIR/../dot/lib/ui.sh"
36
+ source "$SCRIPT_DIR/../../lib/dot/ui.sh"
37
37
 
38
38
  # Parse arguments
39
39
  STRICT_MODE=0
@@ -93,14 +93,17 @@ log_warn() {
93
93
  }
94
94
 
95
95
  MCP_CONFIG="${MCP_CONFIG:-$HOME/.config/claude/mcp_servers.json}"
96
- if [[ ! -f "$MCP_CONFIG" && -f "$HOME/.dotfiles/dot_config/claude/mcp_servers.json" ]]; then
97
- MCP_CONFIG="$HOME/.dotfiles/dot_config/claude/mcp_servers.json"
96
+ if [[ ! -f "$MCP_CONFIG" ]]; then
97
+ for cand in "$HOME/.dotfiles/defaults/dot_config/claude/mcp_servers.json" \
98
+ "$HOME/.dotfiles/dot_config/claude/mcp_servers.json"; do
99
+ [[ -f "$cand" ]] && MCP_CONFIG="$cand" && break
100
+ done
98
101
  fi
99
102
 
100
103
  REPO_ROOT="${REPO_ROOT:-$(cd "$SCRIPT_DIR/../.." && pwd)}"
101
- MCP_POLICY_CONFIG="${MCP_POLICY_CONFIG:-$REPO_ROOT/dot_config/dotfiles/mcp-policy.json}"
102
- MCP_LOCK_CONFIG="${MCP_LOCK_CONFIG:-$REPO_ROOT/dot_config/dotfiles/mcp-lock.json}"
103
- MCP_REGISTRY_CONFIG="${MCP_REGISTRY_CONFIG:-$REPO_ROOT/dot_config/dotfiles/mcp-registry.json}"
104
+ MCP_POLICY_CONFIG="${MCP_POLICY_CONFIG:-$REPO_ROOT/defaults/dot_config/dotfiles/mcp-policy.json}"
105
+ MCP_LOCK_CONFIG="${MCP_LOCK_CONFIG:-$REPO_ROOT/defaults/dot_config/dotfiles/mcp-lock.json}"
106
+ MCP_REGISTRY_CONFIG="${MCP_REGISTRY_CONFIG:-$REPO_ROOT/defaults/dot_config/dotfiles/mcp-registry.json}"
104
107
 
105
108
  if [[ "$JSON_MODE" -ne 1 ]]; then
106
109
  ui_init
@@ -6,15 +6,15 @@
6
6
  set -euo pipefail
7
7
 
8
8
  _cleanup_files=()
9
- trap 'rm -f "${_cleanup_files[@]}"' EXIT
9
+ trap 'set +u; rm -f "${_cleanup_files[@]}" 2>/dev/null; set -u' EXIT
10
10
 
11
11
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
12
- # shellcheck source=../dot/lib/ui.sh
12
+ # shellcheck source=../../lib/dot/ui.sh
13
13
  # shellcheck disable=SC1091
14
- source "$SCRIPT_DIR/../dot/lib/ui.sh"
15
- # shellcheck source=../dot/lib/log.sh
14
+ source "$SCRIPT_DIR/../../lib/dot/ui.sh"
15
+ # shellcheck source=../../lib/dot/log.sh
16
16
  # shellcheck disable=SC1091
17
- source "$SCRIPT_DIR/../dot/lib/log.sh"
17
+ source "$SCRIPT_DIR/../../lib/dot/log.sh"
18
18
  export DOT_COMMAND="perf"
19
19
 
20
20
  ui_init
@@ -6,12 +6,12 @@
6
6
  set -euo pipefail
7
7
 
8
8
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
9
- # shellcheck source=../dot/lib/ui.sh
9
+ # shellcheck source=../../lib/dot/ui.sh
10
10
  # shellcheck disable=SC1091
11
- source "$SCRIPT_DIR/../dot/lib/ui.sh"
12
- # shellcheck source=../dot/lib/log.sh
11
+ source "$SCRIPT_DIR/../../lib/dot/ui.sh"
12
+ # shellcheck source=../../lib/dot/log.sh
13
13
  # shellcheck disable=SC1091
14
- source "$SCRIPT_DIR/../dot/lib/log.sh"
14
+ source "$SCRIPT_DIR/../../lib/dot/log.sh"
15
15
  export DOT_COMMAND="scorecard"
16
16
 
17
17
  ui_init