@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
@@ -1,314 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
3
- ## tmux-sessionizer — Fuzzy project session manager for tmux.
4
- ##
5
- ## Combines zoxide frecency, project directories, and active sessions
6
- ## into a single fzf picker with live previews.
7
- ##
8
- ## # Usage
9
- ## tmux-sessionizer # Interactive picker
10
- ## tmux-sessionizer /path/to/project # Create/switch directly
11
- ## tmux-sessionizer --kill # Kill a session interactively
12
- ##
13
- ## # Configuration
14
- ## TMUX_SESSIONIZER_DIRS Search paths (colon-separated)
15
- ## Default: ~/projects:~/work:~/src:~/.dotfiles
16
- ##
17
- ## # Keybindings (inside fzf)
18
- ## Enter Switch to session
19
- ## Ctrl-X Kill selected session
20
- ## Ctrl-N New session from directory
21
- ## Ctrl-R Refresh list
22
-
23
- set -euo pipefail
24
-
25
- # --- Configuration ---
26
- SESSIONIZER_DIRS="${TMUX_SESSIONIZER_DIRS:-$HOME/projects:$HOME/work:$HOME/src:$HOME/.dotfiles}"
27
-
28
- # --- Colors ---
29
- readonly DIM=$'\033[2m'
30
- readonly BOLD=$'\033[1m'
31
- readonly GREEN=$'\033[32m'
32
- readonly BLUE=$'\033[34m'
33
- readonly RED=$'\033[31m'
34
- readonly NC=$'\033[0m'
35
-
36
- # --- Dependency checks ---
37
- for cmd in fzf tmux; do
38
- if ! command -v "$cmd" &>/dev/null; then
39
- echo "${RED}Error:${NC} $cmd required" >&2
40
- exit 1
41
- fi
42
- done
43
-
44
- # --- Helper functions ---
45
-
46
- # Get project directories from configured paths
47
- get_project_dirs() {
48
- local paths
49
- IFS=':' read -ra paths <<<"$SESSIONIZER_DIRS"
50
- for path in "${paths[@]}"; do
51
- local expanded="${path/#\~/$HOME}"
52
- [[ -d "$expanded" ]] && find "$expanded" -mindepth 1 -maxdepth 2 -type d 2>/dev/null | head -200
53
- done
54
- }
55
-
56
- # Get zoxide frecency results (most visited directories)
57
- get_zoxide_dirs() {
58
- if command -v zoxide &>/dev/null; then
59
- zoxide query --list 2>/dev/null | head -20
60
- fi
61
- }
62
-
63
- # Get active tmux sessions with metadata
64
- get_sessions() {
65
- tmux list-sessions -F "#{session_name}|#{session_windows}w|#{?session_attached,attached,}" 2>/dev/null || true
66
- }
67
-
68
- # Build the combined list with icons and labels
69
- build_list() {
70
- local sessions projects zoxide_dirs
71
-
72
- # Active sessions (top priority, green icon)
73
- sessions=$(get_sessions)
74
- if [[ -n "$sessions" ]]; then
75
- while IFS='|' read -r name windows attached; do
76
- local icon="● "
77
- local suffix="${DIM}${windows}${NC}"
78
- [[ -n "$attached" ]] && suffix="${suffix} ${GREEN}${attached}${NC}"
79
- printf '%b\n' "${GREEN}${icon}${NC}${BOLD}${name}${NC} ${suffix}"
80
- done <<<"$sessions"
81
- fi
82
-
83
- # Zoxide frecent directories (blue icon, deduplicated against sessions)
84
- zoxide_dirs=$(get_zoxide_dirs)
85
- if [[ -n "$zoxide_dirs" ]]; then
86
- while IFS= read -r dir; do
87
- [[ ! -d "$dir" ]] && continue
88
- local name
89
- name=$(basename "$dir" | tr '.' '_' | tr -cd '[:alnum:]._-')
90
- # Skip if already an active session
91
- if tmux has-session -t="$name" 2>/dev/null; then
92
- continue
93
- fi
94
- printf '%b\n' "${BLUE}◆ ${NC}${name} ${DIM}${dir}${NC}"
95
- done <<<"$zoxide_dirs"
96
- fi
97
-
98
- # Project directories (dim icon, deduplicated)
99
- projects=$(get_project_dirs)
100
- if [[ -n "$projects" ]]; then
101
- while IFS= read -r dir; do
102
- local name
103
- name=$(basename "$dir" | tr '.' '_' | tr -cd '[:alnum:]._-')
104
- # Skip if already listed
105
- if tmux has-session -t="$name" 2>/dev/null; then
106
- continue
107
- fi
108
- # Skip if already in zoxide list
109
- if [[ -n "$zoxide_dirs" ]] && echo "$zoxide_dirs" | grep -qF "$dir"; then
110
- continue
111
- fi
112
- printf '%b\n' "${DIM}○ ${NC}${name} ${DIM}${dir}${NC}"
113
- done <<<"$projects"
114
- fi
115
- }
116
-
117
- # Format session name from path
118
- format_name() {
119
- [[ -n "${1:-}" ]] || return 1 # R5: validate input
120
- local dir="$1"
121
- basename "$dir" | tr '.' '_' | tr -cd '[:alnum:]._-' | head -c 32
122
- }
123
-
124
- # Resolve the actual path from a selection line
125
- resolve_selection() {
126
- [[ -n "${1:-}" ]] || return 1 # R5: validate input
127
- local line="$1"
128
- # Strip ANSI codes
129
- local clean
130
- clean=$(echo "$line" | sed 's/\x1b\[[0-9;]*m//g')
131
-
132
- # Extract the name (second field after icon)
133
- local name path
134
- name=$(echo "$clean" | awk '{print $2}')
135
- path=$(echo "$clean" | awk '{print $3}')
136
-
137
- # If it's an active session, just return the name
138
- if tmux has-session -t="$name" 2>/dev/null; then
139
- echo "session:$name"
140
- return
141
- fi
142
-
143
- # If path exists, return it
144
- if [[ -n "$path" && -d "$path" ]]; then
145
- echo "dir:$path"
146
- return
147
- fi
148
-
149
- # Try to find the directory by name
150
- local found
151
- found=$(get_project_dirs 2>/dev/null | grep "/${name}$" | head -1)
152
- if [[ -n "$found" ]]; then
153
- echo "dir:$found"
154
- return
155
- fi
156
-
157
- # Try zoxide
158
- if command -v zoxide &>/dev/null; then
159
- found=$(zoxide query "$name" 2>/dev/null || true)
160
- if [[ -n "$found" && -d "$found" ]]; then
161
- echo "dir:$found"
162
- return
163
- fi
164
- fi
165
-
166
- echo "name:$name"
167
- }
168
-
169
- # Switch to or create a session
170
- switch_to() {
171
- [[ -n "${1:-}" ]] || return 1 # R5: validate input
172
- local target="$1"
173
- local type="${target%%:*}"
174
- local value="${target#*:}"
175
-
176
- local session_name
177
-
178
- case "$type" in
179
- session)
180
- session_name="$value"
181
- ;;
182
- dir)
183
- session_name=$(format_name "$value")
184
- if ! tmux has-session -t="$session_name" 2>/dev/null; then
185
- tmux new-session -ds "$session_name" -c "$value"
186
- # Record in zoxide
187
- command -v zoxide &>/dev/null && zoxide add "$value" 2>/dev/null || true
188
- fi
189
- ;;
190
- name)
191
- session_name="$value"
192
- if ! tmux has-session -t="$session_name" 2>/dev/null; then
193
- tmux new-session -ds "$session_name"
194
- fi
195
- ;;
196
- esac
197
-
198
- if [[ -z "${TMUX:-}" ]]; then
199
- tmux attach-session -t "$session_name"
200
- else
201
- tmux switch-client -t "$session_name"
202
- fi
203
- }
204
-
205
- # Kill a session interactively
206
- kill_session() {
207
- local sessions
208
- sessions=$(tmux list-sessions -F "#{session_name}" 2>/dev/null || true)
209
- if [[ -z "$sessions" ]]; then
210
- echo "No active sessions."
211
- return
212
- fi
213
-
214
- local selected
215
- selected=$(echo "$sessions" | fzf \
216
- --header "Kill session" \
217
- --prompt "Session > " \
218
- --height 40% \
219
- --reverse \
220
- --no-preview \
221
- --no-sort) || return 0
222
-
223
- if [[ -n "$selected" ]]; then
224
- tmux kill-session -t "$selected"
225
- echo "${RED}Killed:${NC} $selected"
226
- fi
227
- }
228
-
229
- # --- Preview command for fzf ---
230
- preview_cmd() {
231
- local line="$1"
232
- local clean
233
- clean=$(echo "$line" | sed 's/\x1b\[[0-9;]*m//g')
234
- local name path
235
- name=$(echo "$clean" | awk '{print $2}')
236
- path=$(echo "$clean" | awk '{print $3}')
237
-
238
- # If it's an active session, show pane content
239
- if tmux has-session -t="$name" 2>/dev/null; then
240
- echo "━━━ Session: $name ━━━"
241
- tmux list-windows -t "$name" -F " #I: #W #{?window_active,●,○}" 2>/dev/null
242
- echo ""
243
- tmux capture-pane -pt "$name" -p 2>/dev/null | head -20
244
- elif [[ -n "$path" && -d "$path" ]]; then
245
- echo "━━━ Directory: $path ━━━"
246
- # Show git info if available
247
- if [[ -d "$path/.git" ]]; then
248
- echo " Branch: $(git -C "$path" branch --show-current 2>/dev/null)"
249
- echo " Commits: $(git -C "$path" rev-list --count HEAD 2>/dev/null)"
250
- echo ""
251
- fi
252
- ls -la "$path" 2>/dev/null | head -15
253
- else
254
- echo "No preview available"
255
- fi
256
- }
257
- export -f preview_cmd
258
-
259
- # --- Main ---
260
- main() {
261
- # Handle flags
262
- case "${1:-}" in
263
- --kill | -k)
264
- kill_session
265
- return
266
- ;;
267
- --help | -h)
268
- echo "${BOLD}tmux-sessionizer${NC} — fuzzy project session manager"
269
- echo ""
270
- echo "Usage: tmux-sessionizer [path | --kill | --help]"
271
- echo ""
272
- echo "Keybindings:"
273
- echo " Enter Switch to session"
274
- echo " Ctrl-X Kill selected session"
275
- return
276
- ;;
277
- esac
278
-
279
- # Direct path argument
280
- if [[ $# -eq 1 && -d "$1" ]]; then
281
- switch_to "dir:$1"
282
- return
283
- fi
284
-
285
- # Interactive picker
286
- local list
287
- list=$(build_list)
288
-
289
- if [[ -z "$list" ]]; then
290
- echo "${RED}No sessions or directories found.${NC}" >&2
291
- exit 1
292
- fi
293
-
294
- local selected
295
- selected=$(
296
- printf '%b\n' "$list" | fzf \
297
- --ansi \
298
- --header "tmux sessions (Ctrl-X: kill)" \
299
- --prompt "❱ " \
300
- --height 60% \
301
- --reverse \
302
- --no-sort \
303
- --no-preview \
304
- --bind "ctrl-x:execute-silent(tmux kill-session -t {2} 2>/dev/null)+reload(bash -c 'source $0; build_list')"
305
- ) || exit 0
306
-
307
- if [[ -n "$selected" ]]; then
308
- local target
309
- target=$(resolve_selection "$selected")
310
- switch_to "$target"
311
- fi
312
- }
313
-
314
- main "$@"
@@ -1,177 +0,0 @@
1
- #!/bin/sh
2
- # Interactive Tour using Gum
3
- # Part of Dotfiles v0.2.502
4
-
5
- set -eu
6
-
7
- if ! command -v gum >/dev/null; then
8
- echo "Error: 'gum' is not installed."
9
- case "$(uname -s)" in
10
- Darwin)
11
- echo "Install: brew install gum"
12
- ;;
13
- Linux)
14
- if command -v snap >/dev/null; then
15
- echo "Install: sudo snap install gum --classic"
16
- else
17
- echo "Install: go install github.com/charmbracelet/gum@latest"
18
- fi
19
- ;;
20
- *)
21
- echo "Install gum from: https://github.com/charmbracelet/gum"
22
- ;;
23
- esac
24
- exit 1
25
- fi
26
-
27
- if [ ! -t 1 ]; then
28
- echo "Error: This interactive tour requires a TTY."
29
- exit 1
30
- fi
31
-
32
- clear
33
-
34
- # Intro (match UI header style)
35
- banner='██████╗ ██████╗ ████████╗███████╗██╗██╗ ███████╗███████╗
36
- ██╔══██╗██╔═══██╗╚══██╔══╝██╔════╝██║██║ ██╔════╝██╔════╝
37
- ██║ ██║██║ ██║ ██║ █████╗ ██║██║ █████╗ ███████╗
38
- ██║ ██║██║ ██║ ██║ ██╔══╝ ██║██║ ██╔══╝ ╚════██║
39
- ██████╔╝╚██████╔╝ ██║ ██║ ██║███████╗███████╗███████║
40
- ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝
41
-
42
- v0.2.502 · Infrastructure‑grade shell environment'
43
-
44
- gum style \
45
- --foreground 212 --border-foreground 212 --border double \
46
- --align center --margin "1 2" --padding "1 2" \
47
- "$banner"
48
-
49
- echo ""
50
- gum confirm "Start a quick tour?" || exit 0
51
- clear
52
-
53
- # Slide 1: Shell & configuration
54
- gum style \
55
- --foreground 99 --border rounded --padding "1 2" --margin "1 2" \
56
- "Shell & configuration" \
57
- "Default shell: Fish. Change it in .chezmoidata.toml." \
58
- " " \
59
- "dot apply # Apply dotfiles" \
60
- "dot update # Pull and apply updates" \
61
- "dot diff # Review local changes" \
62
- "dot drift # Snapshot config drift" \
63
- "dot help # Browse all commands"
64
-
65
- echo ""
66
- gum confirm "Next: Check health" || exit 0
67
- clear
68
-
69
- # Slide 2: Diagnostics
70
- gum style \
71
- --foreground 75 --border rounded --padding "1 2" --margin "1 2" \
72
- "Check health" \
73
- "Know what’s working. See what needs attention." \
74
- " " \
75
- "dot doctor # Health checks" \
76
- "dot history # History analysis" \
77
- "dot benchmark # Startup timing"
78
-
79
- echo ""
80
- gum confirm "Next: Secrets" || exit 0
81
- clear
82
-
83
- # Slide 3: Secrets
84
- gum style \
85
- --foreground 214 --border rounded --padding "1 2" --margin "1 2" \
86
- "Secrets (age)" \
87
- "Keep sensitive data local and encrypted." \
88
- " " \
89
- "dot secrets-init # Create a key" \
90
- "dot secrets # Edit secrets" \
91
- "dot secrets-create # New encrypted file" \
92
- "dot ssh-key # Encrypt an SSH key"
93
-
94
- echo ""
95
- gum confirm "Next: Security (opt‑in)" || exit 0
96
- clear
97
-
98
- # Slide 4: Security (opt-in)
99
- gum style \
100
- --foreground 150 --border double --padding "1 2" --margin "1 2" \
101
- "Security (opt‑in)" \
102
- "Explicit by design. Nothing changes without your choice." \
103
- " " \
104
- "dot firewall # Firewall hardening" \
105
- "dot telemetry # Disable OS telemetry" \
106
- "dot dns-doh # DNS‑over‑HTTPS (Linux)" \
107
- "dot lock-screen # Idle lock settings" \
108
- "dot usb-safety # Disable automount" \
109
- "dot encrypt-check # Disk encryption status"
110
-
111
- echo ""
112
- gum confirm "Next: Themes & UX" || exit 0
113
- clear
114
-
115
- # Slide 5: Themes & UX
116
- gum style \
117
- --foreground 212 --border rounded --padding "1 2" --margin "1 2" \
118
- "Themes & UX" \
119
- "Make it yours without changing how it works." \
120
- " " \
121
- "dot theme # Switch theme" \
122
- "dot wallpaper # Apply wallpaper" \
123
- "dot fonts # Install Nerd Fonts" \
124
- "dot keys # Keybindings" \
125
- "dot tools # Curated utilities" \
126
- " " \
127
- "Edit ~/.dotfiles/.chezmoidata.toml for shell, features, and profiles."
128
-
129
- echo ""
130
- gum confirm "Next: Projects & Sandbox" || exit 0
131
- clear
132
-
133
- # Slide 6: Projects & Sandbox
134
- gum style \
135
- --foreground 111 --border rounded --padding "1 2" --margin "1 2" \
136
- "Projects & sandbox" \
137
- "Start quickly. Experiment safely." \
138
- " " \
139
- "dot new <lang> <name> # Templates: python, go, node" \
140
- "dot sandbox # Safe preview (Docker/Podman)" \
141
- "dot edit # Open source in editor"
142
-
143
- echo ""
144
- gum confirm "Next: Linting & Performance" || exit 0
145
- clear
146
-
147
- # Slide 7: Linting & Performance
148
- gum style \
149
- --foreground 214 --border rounded --padding "1 2" --margin "1 2" \
150
- "Linting & Performance" \
151
- "Keep your scripts clean and your shell fast." \
152
- " " \
153
- "dot lint # ShellCheck + shfmt" \
154
- "dot lint --fix # Auto-format scripts" \
155
- "dot lint --check # CI mode (exit 1 on failure)" \
156
- "dot benchmark --waterfall # Startup waterfall chart" \
157
- "dot perf # Quick performance timing"
158
-
159
- echo ""
160
- gum confirm "Next: Finish" || exit 0
161
- clear
162
-
163
- # Final summary
164
- gum style \
165
- --foreground 212 --border double --padding "1 2" --margin "1 2" \
166
- "You’re all set!" \
167
- " " \
168
- "Tip: run ‘dot update’ weekly to stay current."
169
-
170
- echo ""
171
- choice=$(gum choose "Run dot doctor" "Run dot benchmark" "Open docs" "Exit")
172
- case "$choice" in
173
- "Run dot doctor") exec dot doctor ;;
174
- "Run dot benchmark") exec dot benchmark ;;
175
- "Open docs") exec dot docs ;;
176
- "Exit") exit 0 ;;
177
- esac
@@ -1,23 +0,0 @@
1
- #!/bin/sh
2
- # Universal directory navigation with history support
3
- # Works across Bash, Zsh, and Fish
4
-
5
- set -eu
6
-
7
- levels=${1:-1}
8
- target=".."
9
-
10
- case "$levels" in
11
- 2) target="../.." ;;
12
- 3) target="../../.." ;;
13
- 4) target="../../../../.." ;;
14
- 5) target="../../../../../.." ;;
15
- *) target=".." ;;
16
- esac
17
-
18
- # If cd_with_history (a dotfiles function) is available, use it.
19
- # Since this script runs in a subshell, we can't easily call parent functions.
20
- # Instead, we just output the target or rely on the shell's own history.
21
-
22
- cd "$target" || exit 1
23
- $SHELL
@@ -1,142 +0,0 @@
1
- #!/usr/bin/env bash
2
- ## System Update — Update all system packages and tools.
3
- ##
4
- ## Comprehensive update utility for multiple package managers.
5
- ## Supports selective updates and combined operations.
6
- ##
7
- ## # Requirements
8
- ## - Various package managers (auto-detected)
9
- ## - sudo: For system package updates
10
- ##
11
- ## # Usage
12
- ## update # Update all detected managers
13
- ## update --brew # Update Homebrew only
14
- ## update --apt # Update APT only
15
- ## update --npm # Update NPM globals only
16
- ## update --cargo # Update Rust packages
17
- ## update --pip # Update Python packages
18
- ##
19
- ## # Platform Notes
20
- ## - macOS: Updates Homebrew, npm, cargo, pip
21
- ## - Linux: Updates apt/dnf, npm, cargo, pip
22
- ## - Also checks chezmoi dotfiles status
23
-
24
- set -euo pipefail
25
-
26
- CYAN='\033[0;36m'
27
- GREEN='\033[0;32m'
28
- YELLOW='\033[1;33m'
29
- NC='\033[0m'
30
-
31
- log_section() { printf '%b\n' "\n${CYAN}--- $1 ---${NC}"; }
32
- log_success() { printf '%b\n' "${GREEN}Done:${NC} $1"; }
33
- log_skip() { printf '%b\n' "${YELLOW}Skipped:${NC} $1"; }
34
-
35
- # Parse arguments
36
- UPDATE_ALL=true
37
- UPDATE_BREW=false
38
- UPDATE_APT=false
39
- UPDATE_NPM=false
40
- UPDATE_CARGO=false
41
- UPDATE_PIP=false
42
-
43
- for arg in "$@"; do
44
- case "$arg" in
45
- --all) UPDATE_ALL=true ;;
46
- --brew)
47
- UPDATE_BREW=true
48
- UPDATE_ALL=false
49
- ;;
50
- --apt)
51
- UPDATE_APT=true
52
- UPDATE_ALL=false
53
- ;;
54
- --npm)
55
- UPDATE_NPM=true
56
- UPDATE_ALL=false
57
- ;;
58
- --cargo)
59
- UPDATE_CARGO=true
60
- UPDATE_ALL=false
61
- ;;
62
- --pip)
63
- UPDATE_PIP=true
64
- UPDATE_ALL=false
65
- ;;
66
- esac
67
- done
68
-
69
- # Homebrew (macOS/Linux)
70
- if $UPDATE_ALL || $UPDATE_BREW; then
71
- if command -v brew >/dev/null 2>&1; then
72
- log_section "Homebrew"
73
- brew update
74
- brew upgrade
75
- brew cleanup
76
- log_success "Homebrew updated"
77
- else
78
- $UPDATE_BREW && log_skip "Homebrew not installed"
79
- fi
80
- fi
81
-
82
- # APT (Debian/Ubuntu)
83
- if $UPDATE_ALL || $UPDATE_APT; then
84
- if command -v apt >/dev/null 2>&1; then
85
- log_section "APT"
86
- sudo apt update
87
- sudo apt upgrade -y
88
- sudo apt autoremove -y
89
- log_success "APT packages updated"
90
- else
91
- $UPDATE_APT && log_skip "APT not available"
92
- fi
93
- fi
94
-
95
- # NPM global packages
96
- if $UPDATE_ALL || $UPDATE_NPM; then
97
- if command -v npm >/dev/null 2>&1; then
98
- log_section "NPM"
99
- npm update -g
100
- log_success "NPM packages updated"
101
- else
102
- $UPDATE_NPM && log_skip "NPM not installed"
103
- fi
104
- fi
105
-
106
- # Cargo (Rust)
107
- if $UPDATE_ALL || $UPDATE_CARGO; then
108
- if command -v cargo >/dev/null 2>&1; then
109
- log_section "Cargo"
110
- if command -v cargo-install-update >/dev/null 2>&1; then
111
- cargo install-update -a
112
- else
113
- echo " Install cargo-update for automatic updates: cargo install cargo-update"
114
- fi
115
- rustup update stable 2>/dev/null || true
116
- log_success "Rust toolchain updated"
117
- else
118
- $UPDATE_CARGO && log_skip "Cargo not installed"
119
- fi
120
- fi
121
-
122
- # Pip (Python)
123
- if $UPDATE_ALL || $UPDATE_PIP; then
124
- if command -v pip3 >/dev/null 2>&1; then
125
- log_section "Pip"
126
- pip3 list --outdated --format=json | python3 -c "import json,sys; print('\n'.join([p['name'] for p in json.load(sys.stdin)]))" 2>/dev/null | xargs -n1 pip3 install -U 2>/dev/null || true
127
- log_success "Pip packages updated"
128
- else
129
- $UPDATE_PIP && log_skip "Pip not installed"
130
- fi
131
- fi
132
-
133
- # Chezmoi (dotfiles)
134
- if $UPDATE_ALL; then
135
- if command -v chezmoi >/dev/null 2>&1; then
136
- log_section "Dotfiles"
137
- chezmoi update --apply=false 2>/dev/null || true
138
- log_success "Dotfiles checked"
139
- fi
140
- fi
141
-
142
- printf '%b\n' "\n${GREEN}Update complete!${NC}"