@sebastienrousseau/dotfiles 0.2.481 → 0.2.500

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. package/CHANGELOG.md +122 -32
  2. package/LICENSE +1 -1
  3. package/README.md +211 -242
  4. package/docs/.vitepress/reports/localization-readability-audit.md +69 -0
  5. package/docs/AI.md +102 -0
  6. package/docs/COPYRIGHT +2 -2
  7. package/docs/NAMING_CONVENTIONS.md +95 -0
  8. package/docs/README.md +58 -249
  9. package/docs/adr/ADR-004-cli-architecture.md +2 -2
  10. package/docs/adr/ADR-006-shell-selection.md +2 -2
  11. package/docs/adr/ADR-007-multi-shell-parity.md +53 -0
  12. package/docs/adr/ADR-008-alias-system-architecture.md +85 -0
  13. package/docs/adr/README.md +2 -3
  14. package/docs/architecture/ARCHITECTURE.md +113 -0
  15. package/docs/architecture/INTEROP.md +36 -0
  16. package/docs/architecture/REPO_LAYOUT.md +237 -0
  17. package/docs/architecture/WALKTHROUGH.md +82 -0
  18. package/docs/architecture/fleet-deployment.md +73 -0
  19. package/docs/archive/EUXIS_2026_REVIEW.md +119 -0
  20. package/docs/archive/MILESTONE_v0.2.493.md +43 -0
  21. package/docs/{PLAN.md → archive/PLAN.md} +1 -1
  22. package/docs/guides/INSTALL.md +140 -0
  23. package/docs/{NEOVIM_IDE_GUIDE.md → guides/NEOVIM_IDE_GUIDE.md} +12 -12
  24. package/docs/guides/THEMING.md +222 -0
  25. package/docs/{TROUBLESHOOTING.md → guides/TROUBLESHOOTING.md} +36 -0
  26. package/docs/{WSL2_NIX_TROUBLESHOOTING.md → guides/WSL2_NIX_TROUBLESHOOTING.md} +8 -8
  27. package/docs/index.md +39 -0
  28. package/docs/interop/A2A.md +32 -0
  29. package/docs/manual/00-introduction.md +85 -0
  30. package/docs/manual/01-concepts/01-architecture.md +134 -0
  31. package/docs/manual/01-concepts/02-trust-model.md +178 -0
  32. package/docs/manual/01-concepts/03-theme-engine.md +182 -0
  33. package/docs/manual/01-concepts/04-fleet.md +142 -0
  34. package/docs/manual/01-concepts/05-self-healing.md +197 -0
  35. package/docs/manual/02-tutorials/01-first-install.md +192 -0
  36. package/docs/manual/02-tutorials/02-add-wallpaper.md +211 -0
  37. package/docs/manual/02-tutorials/03-create-profile.md +238 -0
  38. package/docs/manual/02-tutorials/04-encrypt-secret.md +275 -0
  39. package/docs/manual/02-tutorials/05-deploy-fleet.md +279 -0
  40. package/docs/manual/03-reference/01-dot-cli.md +413 -0
  41. package/docs/manual/03-reference/02-config-files.md +259 -0
  42. package/docs/manual/03-reference/03-environment.md +120 -0
  43. package/docs/manual/03-reference/04-templates.md +184 -0
  44. package/docs/manual/03-reference/05-feature-flags.md +118 -0
  45. package/docs/manual/04-cookbook/01-recipes.md +281 -0
  46. package/docs/manual/04-cookbook/02-troubleshooting.md +319 -0
  47. package/docs/manual/04-cookbook/03-faq.md +167 -0
  48. package/docs/manual/05-appendices/A-platform-matrix.md +97 -0
  49. package/docs/manual/05-appendices/B-security-checklist.md +78 -0
  50. package/docs/manual/05-appendices/C-glossary.md +36 -0
  51. package/docs/manual/05-appendices/D-bibliography.md +54 -0
  52. package/docs/manual/05-appendices/E-license.md +34 -0
  53. package/docs/manual/_toc.yml +58 -0
  54. package/docs/manual/command-index.md +58 -0
  55. package/docs/manual/concept-index.md +164 -0
  56. package/docs/operations/ATTESTATION.md +39 -0
  57. package/docs/operations/MAINTENANCE.md +59 -0
  58. package/docs/operations/MIGRATION.md +101 -0
  59. package/docs/operations/OPERATIONS.md +164 -0
  60. package/docs/operations/RELIABILITY.md +116 -0
  61. package/docs/{ROADMAP.md → operations/ROADMAP.md} +11 -11
  62. package/docs/operations/TESTING.md +195 -0
  63. package/docs/operations/TRACEABILITY.md +31 -0
  64. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +61 -0
  65. package/docs/operations/VERSION_SYNC.md +344 -0
  66. package/docs/{ALIASES.md → reference/ALIASES.md} +2 -6
  67. package/docs/reference/ALIASES_CHEATSHEET.md +28 -0
  68. package/docs/reference/ALIASES_DEPRECATIONS.md +9 -0
  69. package/docs/reference/FEATURES.md +62 -0
  70. package/docs/reference/FONTS.md +108 -0
  71. package/docs/reference/PROFILES.md +65 -0
  72. package/docs/{SCREENSHOTS.md → reference/SCREENSHOTS.md} +26 -25
  73. package/docs/reference/SCRIPTS.md +67 -0
  74. package/docs/reference/SUPPORT_MATRIX.md +74 -0
  75. package/docs/reference/THEMES.md +113 -0
  76. package/docs/reference/TOOLS.md +105 -0
  77. package/docs/reference/UTILS.md +151 -0
  78. package/docs/security/AI_ACT_COMPLIANCE.md +90 -0
  79. package/docs/security/AUTOMATION_SECRETS.md +22 -0
  80. package/docs/security/COMPLIANCE.md +453 -0
  81. package/docs/security/ENCRYPTION.md +52 -0
  82. package/docs/security/FMEA.md +155 -0
  83. package/docs/security/INCIDENT_RESPONSE.md +575 -0
  84. package/docs/security/KEYS.md +45 -0
  85. package/docs/security/MCP_POLICY.md +69 -0
  86. package/docs/security/POLICY_RELEASES.md +33 -0
  87. package/docs/security/README.md +24 -0
  88. package/docs/security/SECRETS.md +146 -0
  89. package/docs/security/SECURITY.md +41 -0
  90. package/docs/security/SECURITY_CHECKLIST.md +44 -0
  91. package/docs/security/SOUP_REGISTER.md +32 -0
  92. package/docs/security/THREAT_MODEL.md +120 -0
  93. package/docs/security/VERIFICATION_VALIDATION.md +224 -0
  94. package/docs/themes/README.md +3 -17
  95. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +26 -0
  96. package/docs/themes/hero-shot.svg +78 -0
  97. package/dot_config/.module-manifest.json +69 -0
  98. package/dot_config/ai/identity.md +20 -0
  99. package/dot_config/ai/patterns/architect.md +14 -0
  100. package/dot_config/ai/patterns/hardener.md +13 -0
  101. package/dot_config/ai/patterns/refactor.md +13 -0
  102. package/dot_config/aider/aider.conf.yml +1 -1
  103. package/dot_config/alacritty/alacritty.toml.tmpl +41 -469
  104. package/dot_config/atuin/config.toml +18 -1
  105. package/dot_config/bat/config +16 -1
  106. package/dot_config/claude/mcp_servers.json +3 -32
  107. package/dot_config/dotfiles/agent-card.json +29 -0
  108. package/dot_config/dotfiles/agent-profiles.json +92 -0
  109. package/dot_config/dotfiles/boot/README.md +1 -1
  110. package/dot_config/dotfiles/grub/README.md +1 -1
  111. package/dot_config/dotfiles/lock/README.md +1 -1
  112. package/dot_config/dotfiles/mcp-lock.json +33 -0
  113. package/dot_config/dotfiles/mcp-policy.json +52 -0
  114. package/dot_config/dotfiles/mcp-registry.json +47 -0
  115. package/dot_config/dotfiles/model-registry.json +20 -0
  116. package/dot_config/dotfiles/policy-bundles.json +38 -0
  117. package/dot_config/dotfiles/prompt-registry.json +16 -0
  118. package/dot_config/dotfiles/versions.env +18 -0
  119. package/dot_config/environment.d/50-ssh-agent.conf +2 -0
  120. package/dot_config/environment.d/90-wayland.conf +19 -0
  121. package/dot_config/firefox/user.js.tmpl +58 -0
  122. package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +9 -0
  123. package/dot_config/fish/completions/dot.fish.tmpl +115 -0
  124. package/dot_config/fish/conf.d/000-perf-cache.fish +56 -0
  125. package/dot_config/fish/conf.d/aliases.fish.tmpl +77 -0
  126. package/dot_config/fish/conf.d/env.fish.tmpl +48 -0
  127. package/dot_config/fish/conf.d/functions.fish.tmpl +22 -0
  128. package/dot_config/fish/conf.d/init.fish.tmpl +151 -0
  129. package/dot_config/fish/config.fish.tmpl +44 -0
  130. package/dot_config/fish/fish_plugins +1 -0
  131. package/dot_config/fish/functions/_.fish +3 -0
  132. package/dot_config/fish/functions/_cached_eval.fish +58 -0
  133. package/dot_config/fish/functions/als.fish +46 -0
  134. package/dot_config/fish/functions/bg-upgrade.fish +7 -0
  135. package/dot_config/fish/functions/c.fish +3 -0
  136. package/dot_config/fish/functions/cat.fish +9 -0
  137. package/dot_config/fish/functions/d.fish +7 -0
  138. package/dot_config/fish/functions/dot.fish +34 -0
  139. package/dot_config/fish/functions/h.fish +3 -0
  140. package/dot_config/fish/functions/l.fish +7 -0
  141. package/dot_config/fish/functions/la.fish +7 -0
  142. package/dot_config/fish/functions/ll.fish +7 -0
  143. package/dot_config/fish/functions/log_error.fish +13 -0
  144. package/dot_config/fish/functions/log_info.fish +13 -0
  145. package/dot_config/fish/functions/lr.fish +7 -0
  146. package/dot_config/fish/functions/lra.fish +7 -0
  147. package/dot_config/fish/functions/ls.fish +7 -0
  148. package/dot_config/fish/functions/lt.fish +7 -0
  149. package/dot_config/fish/functions/lta.fish +7 -0
  150. package/dot_config/fish/functions/notify-run.fish +11 -0
  151. package/dot_config/fish/functions/q.fish +3 -0
  152. package/dot_config/fish/functions/silent-run.fish +7 -0
  153. package/dot_config/fish/functions/yy.fish +8 -0
  154. package/dot_config/fontconfig/fonts.conf.tmpl +13 -0
  155. package/dot_config/foot/foot.ini.tmpl +33 -0
  156. package/dot_config/fuzzel/fuzzel.ini.tmpl +18 -0
  157. package/dot_config/fzf/fzf.zsh +48 -0
  158. package/dot_config/ghostty/config.tmpl +69 -565
  159. package/dot_config/git/allowed_signers.tmpl +18 -0
  160. package/dot_config/git/commit-template +10 -0
  161. package/dot_config/gnupg/{gpg-agent.conf.tmpl → gpg-agent.conf} +3 -3
  162. package/dot_config/goose/config.yaml +2 -2
  163. package/dot_config/gtk-3.0/gtk.css.tmpl +59 -180
  164. package/dot_config/gtk-3.0/settings.ini.tmpl +5 -44
  165. package/dot_config/gtk-4.0/gtk.css.tmpl +79 -136
  166. package/dot_config/gtk-4.0/settings.ini.tmpl +5 -8
  167. package/dot_config/ipython/profile_default/ipython_config.py +19 -0
  168. package/dot_config/just/justfile +18 -0
  169. package/dot_config/kanshi/config.tmpl +22 -0
  170. package/dot_config/kitty/kitty.conf.tmpl +44 -508
  171. package/dot_config/lazygit/config.yml +18 -6
  172. package/dot_config/mako/config +47 -0
  173. package/dot_config/micro/settings.json +3 -0
  174. package/dot_config/mimeapps.list +77 -0
  175. package/dot_config/mise/config.toml +63 -5
  176. package/dot_config/mongosh/mongoshrc.js +1 -0
  177. package/dot_config/mpv/input.conf +47 -0
  178. package/dot_config/mpv/mpv.conf +47 -0
  179. package/dot_config/niri/config.kdl.tmpl +327 -0
  180. package/dot_config/nushell/aliases.nu +18 -0
  181. package/dot_config/nushell/completions.nu.tmpl +52 -0
  182. package/dot_config/nushell/config.nu.tmpl +86 -0
  183. package/dot_config/nushell/env.nu.tmpl +94 -0
  184. package/dot_config/nushell/functions.nu.tmpl +17 -0
  185. package/dot_config/nvim/init.lua +14 -0
  186. package/dot_config/nvim/lazy-lock.json +45 -14
  187. package/dot_config/nvim/lua/config/autocmds.lua +45 -1
  188. package/dot_config/nvim/lua/config/keymaps.lua +13 -8
  189. package/dot_config/nvim/lua/config/lazy.lua +22 -12
  190. package/dot_config/nvim/lua/config/options.lua +1 -0
  191. package/dot_config/nvim/lua/plugins/ai.lua +75 -0
  192. package/dot_config/nvim/lua/plugins/coding.lua +11 -29
  193. package/dot_config/nvim/lua/plugins/completion.lua +60 -0
  194. package/dot_config/nvim/lua/plugins/dap.lua +215 -4
  195. package/dot_config/nvim/lua/plugins/editor.lua +6 -10
  196. package/dot_config/nvim/lua/plugins/git.lua +1 -0
  197. package/dot_config/nvim/lua/plugins/lsp.lua +16 -81
  198. package/dot_config/nvim/lua/plugins/markdown.lua +1 -0
  199. package/dot_config/nvim/lua/plugins/rust.lua +1 -0
  200. package/dot_config/nvim/lua/plugins/sessions.lua +1 -0
  201. package/dot_config/nvim/lua/plugins/ui.lua +23 -51
  202. package/dot_config/paru/paru.conf +10 -0
  203. package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +81 -0
  204. package/dot_config/pueue/pueue.yml +34 -0
  205. package/dot_config/raycast/README.md +1 -1
  206. package/dot_config/ripgrep/ripgreprc +21 -0
  207. package/dot_config/shell/00-core-paths.sh.tmpl +62 -24
  208. package/dot_config/shell/05-core-safety.sh +47 -0
  209. package/dot_config/shell/10-secrets.sh +40 -0
  210. package/dot_config/shell/40-fzf-defaults.sh.tmpl +16 -0
  211. package/dot_config/shell/40-ls-colors.sh +48 -0
  212. package/dot_config/shell/50-logic-functions-core.sh.tmpl +10 -0
  213. package/dot_config/shell/51-logic-functions-extra.sh.tmpl +64 -0
  214. package/dot_config/shell/90-ux-aliases.sh.tmpl +90 -5
  215. package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +33 -2
  216. package/dot_config/shell/Brewfile.cli +8 -0
  217. package/dot_config/shell/README.md +9 -9
  218. package/dot_config/shell/als_data.txt.tmpl +65 -0
  219. package/dot_config/shell/custom/auto_ls.zsh +20 -0
  220. package/dot_config/shell/custom/context_suggest.zsh +50 -50
  221. package/dot_config/shell/custom/error_analysis.zsh +29 -29
  222. package/dot_config/starship.toml.tmpl +85 -7
  223. package/dot_config/swaylock/config +43 -0
  224. package/dot_config/systemd/user/dotfiles-maintenance.service +8 -0
  225. package/dot_config/systemd/user/dotfiles-maintenance.timer +11 -0
  226. package/dot_config/systemd/user/pueued.service +12 -0
  227. package/dot_config/systemd/user/ssh-agent.service +12 -0
  228. package/dot_config/tmux/tmux.conf.tmpl +80 -38
  229. package/dot_config/topgrade.toml.tmpl +54 -0
  230. package/dot_config/user-dirs.dirs +9 -0
  231. package/dot_config/vscode/settings.json.tmpl +9 -50
  232. package/dot_config/waybar/config.jsonc.tmpl +90 -0
  233. package/dot_config/waybar/style.css.tmpl +211 -0
  234. package/dot_config/wezterm/wezterm.lua.tmpl +31 -203
  235. package/dot_config/xdg-desktop-portal/niri-portals.conf +5 -0
  236. package/dot_config/yazi/keymap.toml +67 -0
  237. package/dot_config/yazi/theme.toml +102 -0
  238. package/dot_config/zathura/zathurarc +52 -0
  239. package/dot_config/zellij/{config.kdl → config.kdl.tmpl} +1 -1
  240. package/dot_config/zsh/dot_zprofile +1 -7
  241. package/dot_config/zsh/dot_zshenv +2 -3
  242. package/dot_config/zsh/dot_zshrc.tmpl +368 -69
  243. package/dot_config/zsh/rc.d/00-alias-shims.zsh +77 -0
  244. package/dot_config/zsh/rc.d/05-ssh-agent.zsh +17 -4
  245. package/dot_config/zsh/rc.d/10-env.zsh.tmpl +4 -4
  246. package/dot_config/zsh/rc.d/20-zinit.zsh +65 -0
  247. package/dot_config/zsh/rc.d/30-options.zsh.tmpl +101 -30
  248. package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +32 -0
  249. package/dot_local/bin/__pycache__/executable_dot-load-benchmark-ptycpython-312.pyc +0 -0
  250. package/dot_local/bin/executable_ai-update +195 -0
  251. package/dot_local/bin/executable_ai_core +113 -91
  252. package/dot_local/bin/executable_antigravity +11 -0
  253. package/dot_local/bin/executable_b64 +61 -36
  254. package/dot_local/bin/executable_bm +77 -0
  255. package/dot_local/bin/executable_cb +39 -0
  256. package/dot_local/bin/executable_dot +543 -132
  257. package/dot_local/bin/executable_dot-ai +36 -0
  258. package/dot_local/bin/executable_dot-bootstrap +77 -0
  259. package/dot_local/bin/executable_dot-launch-or-focus +52 -0
  260. package/dot_local/bin/executable_dot-load-benchmark +31 -0
  261. package/dot_local/bin/executable_dot-load-benchmark-pty +77 -0
  262. package/dot_local/bin/executable_dot-theme-sync +952 -0
  263. package/dot_local/bin/executable_dot_completion +2 -0
  264. package/dot_local/bin/executable_dtags +28 -0
  265. package/dot_local/bin/executable_epoch +43 -38
  266. package/dot_local/bin/executable_extract +32 -99
  267. package/dot_local/bin/executable_gbd +52 -0
  268. package/dot_local/bin/executable_gd +42 -0
  269. package/dot_local/bin/executable_git-ai-commit +35 -20
  270. package/dot_local/bin/executable_git-ai-diff +33 -18
  271. package/dot_local/bin/executable_gl +101 -0
  272. package/dot_local/bin/executable_hash +56 -18
  273. package/dot_local/bin/executable_hashsum +160 -0
  274. package/dot_local/bin/executable_hex +44 -8
  275. package/dot_local/bin/executable_jsonv +34 -10
  276. package/dot_local/bin/executable_jwt +22 -6
  277. package/dot_local/bin/executable_kill-port +18 -2
  278. package/dot_local/bin/executable_lorem +21 -6
  279. package/dot_local/bin/executable_mkscript +35 -0
  280. package/dot_local/bin/executable_monitor +56 -0
  281. package/dot_local/bin/{executable_ip → executable_myip} +16 -2
  282. package/dot_local/bin/executable_notify +22 -0
  283. package/dot_local/bin/executable_open +36 -0
  284. package/dot_local/bin/executable_pw +27 -0
  285. package/dot_local/bin/executable_rec-start +46 -0
  286. package/dot_local/bin/executable_rec-stop +35 -0
  287. package/dot_local/bin/executable_regex +49 -13
  288. package/dot_local/bin/executable_start-niri +8 -0
  289. package/dot_local/bin/executable_tmux-sessionizer +276 -149
  290. package/dot_local/bin/executable_tour +112 -74
  291. package/dot_local/bin/executable_up +21 -0
  292. package/dot_local/bin/executable_update +45 -11
  293. package/dot_local/bin/executable_uuid +37 -7
  294. package/dot_local/bin/executable_win +32 -0
  295. package/dot_local/bin/executable_yamlv +25 -7
  296. package/dot_local/share/bash-completion/completions/dot +62 -44
  297. package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
  298. package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
  299. package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
  300. package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
  301. package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
  302. package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
  303. package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
  304. package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
  305. package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
  306. package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
  307. package/dot_local/share/man/man1/dot.1 +149 -0
  308. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +64 -0
  309. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +18 -0
  310. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +13 -0
  311. package/dot_local/share/wayland-sessions/niri.desktop.tmpl +6 -0
  312. package/dot_local/share/zsh/completions/_dot +283 -0
  313. package/install.sh +297 -210
  314. package/package.json +17 -5
  315. package/scripts/ci/check-copyright-headers.sh +96 -0
  316. package/scripts/ci/guard-gitleaks-checkout.sh +57 -0
  317. package/scripts/ci/install-chezmoi-verified.sh +64 -0
  318. package/scripts/ci/validate-ci-config.sh +41 -39
  319. package/scripts/demo/record.sh +3 -2
  320. package/scripts/diagnostics/a2a-conformance.sh +162 -0
  321. package/scripts/diagnostics/alias-governance.sh +137 -0
  322. package/scripts/diagnostics/aliases-cheatsheet.sh +73 -0
  323. package/scripts/diagnostics/aliases-manifest.sh +31 -0
  324. package/scripts/diagnostics/benchmark.sh +209 -29
  325. package/scripts/diagnostics/conflicts.sh +72 -0
  326. package/scripts/diagnostics/doctor-unified.sh +38 -0
  327. package/scripts/diagnostics/doctor.sh +491 -65
  328. package/scripts/diagnostics/drift-dashboard.sh +17 -6
  329. package/scripts/diagnostics/health.sh +351 -110
  330. package/scripts/diagnostics/history-analysis.sh +12 -4
  331. package/scripts/diagnostics/mcp-doctor.sh +575 -0
  332. package/scripts/diagnostics/perf.sh +225 -0
  333. package/scripts/diagnostics/scorecard.sh +118 -0
  334. package/scripts/diagnostics/secret-governance.sh +58 -0
  335. package/scripts/diagnostics/security-score.sh +139 -93
  336. package/scripts/diagnostics/smoke-test.sh +87 -0
  337. package/scripts/diagnostics/snapshot.sh +89 -0
  338. package/scripts/diagnostics/verify.sh +107 -0
  339. package/scripts/diagnostics/verify_state.sh +2 -2
  340. package/scripts/diagnostics/version-locks.sh +79 -0
  341. package/scripts/diagnostics/workstation-attestation.sh +181 -0
  342. package/scripts/docs/build-manual.sh +883 -0
  343. package/scripts/docs/check-manual.sh +213 -0
  344. package/scripts/dot/commands/agent.sh +465 -0
  345. package/scripts/dot/commands/ai.sh +416 -0
  346. package/scripts/dot/commands/aliases.sh +250 -0
  347. package/scripts/dot/commands/appearance.sh +21 -4
  348. package/scripts/dot/commands/core.sh +59 -4
  349. package/scripts/dot/commands/diagnostics.sh +132 -3
  350. package/scripts/dot/commands/fleet.sh +399 -0
  351. package/scripts/dot/commands/lint.sh +177 -0
  352. package/scripts/dot/commands/manual.sh +168 -0
  353. package/scripts/dot/commands/meta.sh +148 -17
  354. package/scripts/dot/commands/patterns.sh +54 -0
  355. package/scripts/dot/commands/restore.sh +57 -35
  356. package/scripts/dot/commands/secrets.sh +151 -9
  357. package/scripts/dot/commands/security.sh +3 -0
  358. package/scripts/dot/commands/tools.sh +268 -27
  359. package/scripts/dot/data/alias-deprecations.tsv +2 -0
  360. package/scripts/dot/lib/bento.sh +49 -0
  361. package/scripts/dot/lib/log.sh +194 -0
  362. package/scripts/dot/lib/platform.sh +98 -0
  363. package/scripts/dot/lib/ui.sh +507 -0
  364. package/scripts/dot/lib/utils.sh +318 -18
  365. package/scripts/fonts/install-nerd-fonts.sh +19 -10
  366. package/scripts/fonts/patch-fonts.sh +1 -0
  367. package/scripts/git-hooks/install.sh +11 -0
  368. package/scripts/git-hooks/pre-commit +12 -0
  369. package/scripts/git-hooks/pre-commit-audit.sh +145 -0
  370. package/scripts/git-hooks/pre-push +29 -0
  371. package/scripts/git-hooks/prepare-commit-msg +29 -0
  372. package/scripts/lib/secrets_provider.sh +158 -0
  373. package/scripts/maintenance/check-updates.sh +131 -0
  374. package/scripts/ops/ai-setup.sh +55 -0
  375. package/scripts/ops/bundle.sh +77 -0
  376. package/scripts/ops/chaos.sh +49 -0
  377. package/scripts/ops/chezmoi-apply.sh +245 -17
  378. package/scripts/ops/chezmoi-diff.sh +1 -0
  379. package/scripts/ops/chezmoi-remove.sh +2 -0
  380. package/scripts/ops/chezmoi-update.sh +34 -2
  381. package/scripts/ops/heal-chezmoi.sh +51 -0
  382. package/scripts/ops/heal-system.sh +128 -0
  383. package/scripts/ops/heal-tools.sh +340 -0
  384. package/scripts/ops/heal.sh +98 -342
  385. package/scripts/ops/post-apply-repair.sh +106 -0
  386. package/scripts/ops/prewarm.sh +127 -0
  387. package/scripts/ops/release.sh +252 -0
  388. package/scripts/ops/rollback.sh +86 -28
  389. package/scripts/ops/setup.sh +137 -0
  390. package/scripts/ops/teleport.sh +2 -1
  391. package/scripts/qa/coverage-baseline.sh +60 -0
  392. package/scripts/qa/docs-coverage.sh +111 -0
  393. package/scripts/qa/reliability-audit.sh +138 -0
  394. package/scripts/qa/traceability-coverage.sh +116 -0
  395. package/scripts/qa/validate-examples.sh +26 -0
  396. package/scripts/qa/wsl-contract.sh +11 -0
  397. package/scripts/release/package-policy-bundles.sh +125 -0
  398. package/scripts/secrets/age-init.sh +1 -0
  399. package/scripts/secrets/create-secrets-file.sh +1 -0
  400. package/scripts/secrets/encrypt-ssh-key.sh +1 -0
  401. package/scripts/security/backup.sh +44 -4
  402. package/scripts/security/dns-doh.sh +36 -14
  403. package/scripts/security/encryption-check.sh +27 -12
  404. package/scripts/security/enforce-policies.sh +11 -16
  405. package/scripts/security/firewall.sh +76 -20
  406. package/scripts/security/lock-configs.sh +2 -2
  407. package/scripts/security/lock-screen.sh +40 -18
  408. package/scripts/security/manage-secrets.sh +42 -29
  409. package/scripts/security/ssh-cert.sh +203 -0
  410. package/scripts/security/telemetry-kill.sh +40 -18
  411. package/scripts/security/usb-safety.sh +37 -15
  412. package/scripts/theme/apply-gnome-theme.sh +87 -56
  413. package/scripts/theme/extract-theme.py +677 -0
  414. package/scripts/theme/install-boot-logo.sh +1 -0
  415. package/scripts/theme/install-catppuccin-themes.sh +57 -33
  416. package/scripts/theme/install-cursors.sh +1 -0
  417. package/scripts/theme/install-file-icons.sh +1 -0
  418. package/scripts/theme/install-grub-theme.sh +11 -1
  419. package/scripts/theme/install-lock-icon.sh +1 -0
  420. package/scripts/theme/merge-wallpaper.sh +141 -0
  421. package/scripts/theme/rebuild-themes.sh +309 -0
  422. package/scripts/theme/switch.sh +308 -137
  423. package/scripts/theme/wallpaper-rotate.sh +66 -12
  424. package/scripts/theme/wallpaper-sync.sh +386 -31
  425. package/scripts/tools/cmatrix.sh +1 -0
  426. package/scripts/tools/detect-collisions.py +1 -1
  427. package/scripts/tools/emoji-picker.sh +4 -1
  428. package/scripts/tools/figlet-banner.sh +1 -0
  429. package/scripts/tools/log-rotate.sh +2 -1
  430. package/scripts/tools/lolcat-wrap.sh +1 -0
  431. package/scripts/tools/pipes.sh +1 -0
  432. package/scripts/tuning/linux.sh +23 -13
  433. package/scripts/tuning/macos.sh +13 -4
  434. package/scripts/uninstall.sh +85 -0
  435. package/scripts/version-sync.sh +487 -0
  436. package/templates/chezmoi-data/geekom-a9.toml.example +21 -0
  437. package/templates/chezmoi-data/mac-m1.toml.example +16 -0
  438. package/templates/chezmoi-data/mac-t2-linux.toml.example +21 -0
  439. package/templates/chezmoi-data/surface-pro-7p.toml.example +21 -0
  440. package/templates/projects/go/.github/workflows/ci.yml +31 -0
  441. package/templates/projects/go/README.md +1 -1
  442. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +1 -0
  443. package/templates/projects/go/go.sum +0 -0
  444. package/templates/projects/molecule/README.md +1 -1
  445. package/templates/projects/node/.github/workflows/ci.yml +30 -0
  446. package/templates/projects/node/README.md +1 -1
  447. package/templates/projects/node/package-lock.json +12 -0
  448. package/templates/projects/node/src/index.js +1 -0
  449. package/templates/projects/packer/README.md +1 -1
  450. package/templates/projects/python/.github/workflows/ci.yml +34 -0
  451. package/templates/projects/python/README.md +1 -1
  452. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
  453. package/templates/projects/python/tests/test_basic.py +1 -0
  454. package/docs/ARCHITECTURE.md +0 -229
  455. package/docs/COMPLIANCE.md +0 -47
  456. package/docs/FEATURES.md +0 -166
  457. package/docs/FONTS.md +0 -147
  458. package/docs/INSTALL.md +0 -119
  459. package/docs/KEYS.md +0 -40
  460. package/docs/OPERATIONS.md +0 -130
  461. package/docs/PR_DESCRIPTION.md +0 -149
  462. package/docs/SECRETS.md +0 -76
  463. package/docs/SECURITY.md +0 -30
  464. package/docs/SECURITY_CHECKLIST.md +0 -25
  465. package/docs/TASK.md +0 -99
  466. package/docs/TESTING.md +0 -190
  467. package/docs/TOOLS.md +0 -146
  468. package/docs/UTILS.md +0 -105
  469. package/docs/WALKTHROUGH.md +0 -165
  470. package/dot_config/clippy.toml +0 -55
  471. package/dot_config/dotfiles/versions.env.tmpl +0 -19
  472. package/dot_config/firefox/user.js +0 -8
  473. package/dot_config/git/config.tmpl +0 -77
  474. package/dot_config/go/aliases.sh +0 -61
  475. package/dot_config/go/env.sh +0 -24
  476. package/dot_config/ice/README.md +0 -13
  477. package/dot_config/ipython/profile_default/ipython_config.py.tmpl +0 -5
  478. package/dot_config/lsd/config.yaml +0 -19
  479. package/dot_config/nvim/snippets/all.lua +0 -9
  480. package/dot_config/nvim/snippets/python.lua +0 -16
  481. package/dot_config/shell/00-container-detect.sh +0 -53
  482. package/dot_config/shell/05-core-safety.sh.tmpl +0 -13
  483. package/dot_config/shell/40-ls-colors.sh.tmpl +0 -31
  484. package/dot_config/shell/90-theme-switch.sh +0 -70
  485. package/dot_config/topgrade/topgrade.toml.tmpl +0 -42
  486. package/dot_config/waybar/style.css +0 -8
  487. package/dot_config/zsh/rc.d/20-zinit.zsh.tmpl +0 -22
  488. package/dot_local/bin/executable_zig-install +0 -89
  489. package/dot_local/bin/voice_ops +0 -7
  490. package/scripts/ops/health-check.sh +0 -380
  491. package/scripts/tests/README.md +0 -241
  492. package/scripts/tests/benchmark.sh +0 -91
  493. package/scripts/tests/framework/assertions.sh +0 -283
  494. package/scripts/tests/framework/mocks.sh +0 -201
  495. package/scripts/tests/framework/test_runner.sh +0 -189
  496. package/scripts/tests/integration/test_install.sh +0 -237
  497. package/scripts/tests/performance/benchmark_runner.sh +0 -156
  498. package/scripts/tests/performance/regression_check.sh +0 -73
  499. package/scripts/tests/performance/stress_test.sh +0 -65
  500. package/scripts/tests/test-aliases.sh +0 -25
  501. package/scripts/tests/test-docker.sh +0 -48
  502. package/scripts/tests/unit/test_ai_aliases.sh +0 -158
  503. package/scripts/tests/unit/test_ai_cli_checks.sh +0 -47
  504. package/scripts/tests/unit/test_backup.sh +0 -227
  505. package/scripts/tests/unit/test_case_functions.sh +0 -238
  506. package/scripts/tests/unit/test_cd_aliases.sh +0 -367
  507. package/scripts/tests/unit/test_dot_cli.sh +0 -217
  508. package/scripts/tests/unit/test_encode64.sh +0 -67
  509. package/scripts/tests/unit/test_environment.sh +0 -78
  510. package/scripts/tests/unit/test_extract.sh +0 -163
  511. package/scripts/tests/unit/test_framework_edge_cases.sh +0 -113
  512. package/scripts/tests/unit/test_genpass.sh +0 -298
  513. package/scripts/tests/unit/test_install_edge_cases.sh +0 -167
  514. package/scripts/tests/unit/test_installers.sh +0 -172
  515. package/scripts/tests/unit/test_keygen.sh +0 -68
  516. package/scripts/tests/unit/test_logging.sh +0 -96
  517. package/scripts/tests/unit/test_os_detection_comprehensive.sh +0 -388
  518. package/scripts/tests/unit/test_package_managers_comprehensive.sh +0 -321
  519. package/scripts/tests/unit/test_prependpath.sh +0 -66
  520. package/scripts/tests/unit/test_prependpath_refactored.sh +0 -89
  521. package/scripts/tests/unit/test_rd.sh +0 -230
  522. package/scripts/tests/unit/test_security_fixes.sh +0 -130
  523. package/scripts/tests/unit/test_security_scripts.sh +0 -87
  524. package/scripts/tests/unit/test_template_validation.sh +0 -238
  525. package/scripts/tests/unit/test_utility_functions.sh +0 -144
  526. package/scripts/tests/unit/test_wave1_alias_split.sh +0 -132
  527. package/scripts/tests/unit/test_wave1_ci_pinning.sh +0 -61
  528. package/scripts/tests/unit/test_wave1_gitleaks_config.sh +0 -52
  529. package/scripts/tests/unit/test_wave1_heal_fixes.sh +0 -97
  530. package/scripts/tests/unit/test_wave1_install_gpg.sh +0 -35
  531. package/scripts/tests/unit/test_wave1_zshenv_path.sh +0 -89
  532. package/scripts/tests/unit/test_wave1_zshrc_lazy_hook.sh +0 -115
  533. package/scripts/tests/unit/test_wave2_dot_new_guard.sh +0 -75
  534. package/scripts/tests/unit/test_zipf.sh +0 -76
  535. /package/docs/{LEGACY_ROADMAP.md → archive/LEGACY_ROADMAP.md} +0 -0
  536. /package/docs/{REPO_AUDIT.md → archive/REPO_AUDIT.md} +0 -0
  537. /package/docs/{KEY_ROTATION.md → security/KEY_ROTATION.md} +0 -0
  538. /package/dot_config/ansible/{ansible.cfg.tmpl → ansible.cfg} +0 -0
  539. /package/dot_config/docker/{config.json.tmpl → config.json} +0 -0
  540. /package/dot_config/k9s/{config.yaml.tmpl → config.yaml} +0 -0
  541. /package/dot_config/pypoetry/{config.toml.tmpl → config.toml} +0 -0
  542. /package/dot_config/{pyrightconfig.json.tmpl → pyrightconfig.json} +0 -0
  543. /package/dot_config/tflint/{tflint.hcl.tmpl → tflint.hcl} +0 -0
  544. /package/dot_config/yarn/{yarnrc.yml.tmpl → yarnrc.yml} +0 -0
  545. /package/dot_config/zsh/rc.d/{40-bell.zsh.tmpl → 40-bell.zsh} +0 -0
  546. /package/dot_config/zsh/rc.d/{50-login-fortune.zsh.tmpl → 50-login-fortune.zsh} +0 -0
@@ -0,0 +1,101 @@
1
+ #!/usr/bin/env bash
2
+ # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
3
+ ## gl — Interactive git log browser with fzf + delta.
4
+ ##
5
+ ## Searches both commit messages AND code changes (OR'd).
6
+ ## Smart case: case-sensitive if query has uppercase.
7
+ ##
8
+ ## # Usage
9
+ ## gl # Browse full log
10
+ ## gl --side # Side-by-side delta mode
11
+ ## gl [git log flags] # Pass any git log flags through
12
+ ##
13
+ ## # Keybindings
14
+ ## Enter Show commit diff (paged)
15
+ ## Ctrl+O Open commit in browser (GitHub/GitLab/Bitbucket)
16
+ ## Ctrl+Y Copy commit hash to clipboard
17
+
18
+ set -euo pipefail
19
+
20
+ for cmd in fzf delta git; do
21
+ if ! command -v "$cmd" &>/dev/null; then
22
+ echo "gl requires $cmd" >&2
23
+ exit 1
24
+ fi
25
+ done
26
+
27
+ # R5: validate git repository
28
+ if ! git rev-parse --is-inside-work-tree &>/dev/null; then
29
+ echo "gl: not a git repository" >&2
30
+ exit 1
31
+ fi
32
+
33
+ # Open a commit URL in the default browser.
34
+ open_commit_url() {
35
+ local commit="${1}"
36
+ [[ -z "${commit}" ]] && return
37
+
38
+ local branch remote remote_url normalized_url
39
+ branch="$(git branch --show-current 2>/dev/null || echo "main")"
40
+ remote="$(git config --get "branch.${branch}.remote" 2>/dev/null || echo "origin")"
41
+ remote_url="$(git remote get-url "${remote}" 2>/dev/null || true)"
42
+ [[ -z "${remote_url}" ]] && return
43
+
44
+ # Normalize SSH/HTTPS/git@ URLs to https://
45
+ normalized_url="$(sed -E \
46
+ 's|^(git@|https?://|ssh://git@)([:/]+)?||; s|\.git/?$||; s|:|/|; s|^|https://|; s|/+|/|g; s|https:/|https://|; s|/$||' \
47
+ <<<"${remote_url}")"
48
+
49
+ local commit_path
50
+ case "${normalized_url}" in
51
+ *gitlab*) commit_path="-/commit/${commit}" ;;
52
+ *bitbucket*) commit_path="commits/${commit}" ;;
53
+ *) commit_path="commit/${commit}" ;;
54
+ esac
55
+
56
+ open "${normalized_url}/${commit_path}" 2>/dev/null || xdg-open "${normalized_url}/${commit_path}" 2>/dev/null || true
57
+ }
58
+ export -f open_commit_url
59
+
60
+ GIT_ARGS=()
61
+
62
+ for arg in "$@"; do
63
+ if [[ "${arg}" == "--side" ]]; then
64
+ export DELTA_FEATURES="${DELTA_FEATURES:-} side-by-side"
65
+ else
66
+ GIT_ARGS+=("${arg}")
67
+ fi
68
+ done
69
+
70
+ GIT_ARGS+=("--color=always" "--date=short")
71
+
72
+ # %at is a hidden timestamp for sorting. COLOR changes per result type.
73
+ FORMAT="%at %C(magenta)%h %C(green)%ad %C(COLOR)> %C(reset)%s"
74
+ FORMAT_MESSAGE="${FORMAT//COLOR/blue}"
75
+ FORMAT_CODE="${FORMAT//COLOR/yellow}"
76
+
77
+ STRIP_TIMESTAMP="cut -d ' ' -f 2-"
78
+
79
+ # shellcheck disable=SC2124
80
+ GIT_LOG_DEFAULT="git log --pretty='${FORMAT_MESSAGE}' ${GIT_ARGS[*]} | ${STRIP_TIMESTAMP}"
81
+
82
+ fzf \
83
+ --border --border-label " [ Enter: Show | Ctrl+O: Browser | Ctrl+Y: Copy hash ] " \
84
+ --disabled --no-sort --query "" \
85
+ --bind "start:reload(${GIT_LOG_DEFAULT})" \
86
+ --bind "change:reload:sleep 0.15
87
+ query={q};
88
+ if [ -z \"\${query}\" ]; then
89
+ ${GIT_LOG_DEFAULT}
90
+ else
91
+ [[ \"\${query}\" =~ [A-Z] ]] && case= || case=\"--regexp-ignore-case\"
92
+ (git log \${case} --pretty='${FORMAT_CODE}' ${GIT_ARGS[*]} -G \"\${query}\"
93
+ git log \${case} --pretty='${FORMAT_MESSAGE}' ${GIT_ARGS[*]} --grep \"\${query}\") |
94
+ sort --numeric-sort --reverse --unique --key 1,1 |
95
+ ${STRIP_TIMESTAMP}
96
+ fi" \
97
+ --bind "enter:execute(git show {1} -- | delta --paging always)" \
98
+ --bind "ctrl-o:execute-silent(bash -c 'source ${0}; open_commit_url {1}')" \
99
+ --bind "ctrl-y:execute-silent(printf '%s' {1} | cb)" \
100
+ --preview "git show {1} -- | delta --width=\${FZF_PREVIEW_COLUMNS}" \
101
+ --preview-window="right:70%" || true
@@ -34,15 +34,44 @@ ALL_MODE=false
34
34
 
35
35
  while [[ $# -gt 0 ]]; do
36
36
  case "$1" in
37
- -m|--md5) ALGO="md5"; shift ;;
38
- -1|--sha1) ALGO="sha1"; shift ;;
39
- -2|--sha256) ALGO="sha256"; shift ;;
40
- -5|--sha512) ALGO="sha512"; shift ;;
41
- -a|--all) ALL_MODE=true; shift ;;
42
- -f|--file) FILE_MODE=true; shift ;;
43
- -c|--check) CHECK_MODE=true; EXPECTED="$2"; shift 2 ;;
44
- -h|--help) usage; exit 0 ;;
45
- -*) echo "Unknown option: $1"; usage; exit 1 ;;
37
+ -m | --md5)
38
+ ALGO="md5"
39
+ shift
40
+ ;;
41
+ -1 | --sha1)
42
+ ALGO="sha1"
43
+ shift
44
+ ;;
45
+ -2 | --sha256)
46
+ ALGO="sha256"
47
+ shift
48
+ ;;
49
+ -5 | --sha512)
50
+ ALGO="sha512"
51
+ shift
52
+ ;;
53
+ -a | --all)
54
+ ALL_MODE=true
55
+ shift
56
+ ;;
57
+ -f | --file)
58
+ FILE_MODE=true
59
+ shift
60
+ ;;
61
+ -c | --check)
62
+ CHECK_MODE=true
63
+ EXPECTED="$2"
64
+ shift 2
65
+ ;;
66
+ -h | --help)
67
+ usage
68
+ exit 0
69
+ ;;
70
+ -*)
71
+ echo "Unknown option: $1"
72
+ usage
73
+ exit 1
74
+ ;;
46
75
  *) break ;;
47
76
  esac
48
77
  done
@@ -52,23 +81,31 @@ get_hash_cmd() {
52
81
  local algo="$1"
53
82
  case "$algo" in
54
83
  md5)
55
- if command -v md5sum >/dev/null 2>&1; then echo "md5sum"
56
- elif command -v md5 >/dev/null 2>&1; then echo "md5 -q"
84
+ if command -v md5sum >/dev/null 2>&1; then
85
+ echo "md5sum"
86
+ elif command -v md5 >/dev/null 2>&1; then
87
+ echo "md5 -q"
57
88
  else echo "openssl md5 -r"; fi
58
89
  ;;
59
90
  sha1)
60
- if command -v sha1sum >/dev/null 2>&1; then echo "sha1sum"
61
- elif command -v shasum >/dev/null 2>&1; then echo "shasum -a 1"
91
+ if command -v sha1sum >/dev/null 2>&1; then
92
+ echo "sha1sum"
93
+ elif command -v shasum >/dev/null 2>&1; then
94
+ echo "shasum -a 1"
62
95
  else echo "openssl sha1 -r"; fi
63
96
  ;;
64
97
  sha256)
65
- if command -v sha256sum >/dev/null 2>&1; then echo "sha256sum"
66
- elif command -v shasum >/dev/null 2>&1; then echo "shasum -a 256"
98
+ if command -v sha256sum >/dev/null 2>&1; then
99
+ echo "sha256sum"
100
+ elif command -v shasum >/dev/null 2>&1; then
101
+ echo "shasum -a 256"
67
102
  else echo "openssl sha256 -r"; fi
68
103
  ;;
69
104
  sha512)
70
- if command -v sha512sum >/dev/null 2>&1; then echo "sha512sum"
71
- elif command -v shasum >/dev/null 2>&1; then echo "shasum -a 512"
105
+ if command -v sha512sum >/dev/null 2>&1; then
106
+ echo "sha512sum"
107
+ elif command -v shasum >/dev/null 2>&1; then
108
+ echo "shasum -a 512"
72
109
  else echo "openssl sha512 -r"; fi
73
110
  ;;
74
111
  esac
@@ -77,7 +114,8 @@ get_hash_cmd() {
77
114
  compute_hash() {
78
115
  local algo="$1"
79
116
  local input="$2"
80
- local cmd=$(get_hash_cmd "$algo")
117
+ local cmd
118
+ cmd=$(get_hash_cmd "$algo")
81
119
 
82
120
  if $FILE_MODE; then
83
121
  $cmd "$input" | awk '{print $1}'
@@ -0,0 +1,160 @@
1
+ #!/usr/bin/env bash
2
+ # shellcheck disable=SC2034
3
+ ## Hash Calculator — Compute cryptographic hashes of strings or files.
4
+ ##
5
+ ## Supports MD5, SHA1, SHA256, and SHA512 algorithms.
6
+ ## Can verify hashes and show all algorithms at once.
7
+ ##
8
+ ## # Requirements
9
+ ## - md5sum/sha*sum (Linux) or shasum/md5 (macOS)
10
+ ##
11
+ ## # Usage
12
+ ## hashsum "string" # SHA256 of string (default)
13
+ ## hashsum -f file.txt # SHA256 of file
14
+ ## hashsum -a "string" # All algorithms
15
+ ## hashsum -c HASH "string" # Verify hash matches
16
+ ## hashsum -1 "string" # SHA1 hash
17
+ ## hashsum -5 "string" # SHA512 hash
18
+ ##
19
+ ## # Platform Notes
20
+ ## - Linux: Uses md5sum, sha*sum
21
+ ## - macOS: Uses md5 -q, shasum -a
22
+
23
+ set -euo pipefail
24
+
25
+ # --- UI Theme ---
26
+ CYAN='\033[38;5;86m'
27
+ GREEN='\033[38;5;84m'
28
+ RED='\033[38;5;203m'
29
+ GRAY='\033[38;5;244m'
30
+ NC='\033[0m'
31
+
32
+ usage() {
33
+ echo "Usage: hashsum [options] [input]"
34
+ echo " -m, --md5 MD5"
35
+ echo " -1, --sha1 SHA1"
36
+ echo " -2, --sha256 SHA256 (default)"
37
+ echo " -5, --sha512 SHA512"
38
+ echo " -a, --all Show all hashes"
39
+ echo " -f, --file Hash a file"
40
+ echo " -c, --check Verify hash (expects: -c <hash> <input>)"
41
+ echo " -h, --help Show help"
42
+ echo ""
43
+ echo "Note: This tool was renamed from 'hash' to avoid shell builtin collisions."
44
+ }
45
+
46
+ get_cmd() {
47
+ case "$1" in
48
+ md5)
49
+ command -v md5sum >/dev/null && echo "md5sum" || echo "md5 -q"
50
+ ;;
51
+ sha1)
52
+ command -v sha1sum >/dev/null && echo "sha1sum" || echo "shasum -a 1"
53
+ ;;
54
+ sha256)
55
+ command -v sha256sum >/dev/null && echo "sha256sum" || echo "shasum -a 256"
56
+ ;;
57
+ sha512)
58
+ command -v sha512sum >/dev/null && echo "sha512sum" || echo "shasum -a 512"
59
+ ;;
60
+ *)
61
+ echo "openssl $1 -r"
62
+ ;;
63
+ esac
64
+ }
65
+
66
+ ALGO="sha256"
67
+ FILE_MODE=false
68
+ CHECK_MODE=false
69
+ ALL_MODE=false
70
+ EXPECTED=""
71
+
72
+ while [[ $# -gt 0 ]]; do
73
+ case "$1" in
74
+ -m | --md5)
75
+ ALGO="md5"
76
+ shift
77
+ ;;
78
+ -1 | --sha1)
79
+ ALGO="sha1"
80
+ shift
81
+ ;;
82
+ -2 | --sha256)
83
+ ALGO="sha256"
84
+ shift
85
+ ;;
86
+ -5 | --sha512)
87
+ ALGO="sha512"
88
+ shift
89
+ ;;
90
+ -a | --all)
91
+ ALL_MODE=true
92
+ shift
93
+ ;;
94
+ -f | --file)
95
+ FILE_MODE=true
96
+ shift
97
+ ;;
98
+ -c | --check)
99
+ CHECK_MODE=true
100
+ EXPECTED="$2"
101
+ shift 2
102
+ ;;
103
+ -h | --help)
104
+ usage
105
+ exit 0
106
+ ;;
107
+ -*)
108
+ echo "Unknown option: $1"
109
+ usage
110
+ exit 1
111
+ ;;
112
+ *) break ;;
113
+ esac
114
+ done
115
+
116
+ compute() {
117
+ local cmd
118
+ cmd=$(get_cmd "$1")
119
+ if $FILE_MODE; then
120
+ $cmd "$2" | awk '{print $1}'
121
+ else
122
+ echo -n "$2" | $cmd | awk '{print $1}'
123
+ fi
124
+ }
125
+
126
+ if [[ $# -gt 0 ]]; then
127
+ INPUT="$1"
128
+ else
129
+ read -r INPUT
130
+ fi
131
+
132
+ if $FILE_MODE && [[ ! -f "$INPUT" ]]; then
133
+ echo "File not found: $INPUT"
134
+ exit 1
135
+ fi
136
+
137
+ if $ALL_MODE; then
138
+ for a in md5 sha1 sha256 sha512; do
139
+ printf "${CYAN}%-8s${NC} %s\n" "$a:" "$(compute "$a" "$INPUT")"
140
+ done
141
+ exit 0
142
+ fi
143
+
144
+ if $CHECK_MODE; then
145
+ COMPUTED=$(compute "$ALGO" "$INPUT")
146
+ EXPECTED_LOWER=$(echo "$EXPECTED" | tr '[:upper:]' '[:lower:]')
147
+ COMPUTED_LOWER=$(echo "$COMPUTED" | tr '[:upper:]' '[:lower:]')
148
+
149
+ if [[ "$EXPECTED_LOWER" == "$COMPUTED_LOWER" ]]; then
150
+ printf '%b\n' "${GREEN}Hash matches${NC}"
151
+ exit 0
152
+ else
153
+ printf '%b\n' "${RED}Hash mismatch${NC}"
154
+ echo " Expected: $EXPECTED"
155
+ echo " Got: $COMPUTED"
156
+ exit 1
157
+ fi
158
+ fi
159
+
160
+ compute "$ALGO" "$INPUT"
@@ -1,6 +1,23 @@
1
1
  #!/usr/bin/env bash
2
- # Hex viewer/converter
3
- # Usage: hex <file> | hex -e <string> | hex -d <hex>
2
+ ## Hex Viewer — View files in hexadecimal or convert strings to/from hex.
3
+ ##
4
+ ## Multi-mode hex utility supporting file viewing, string encoding,
5
+ ## and hex decoding. Colorized output available with bat.
6
+ ##
7
+ ## # Requirements
8
+ ## - xxd: Primary hex converter (vim package)
9
+ ## - hexdump or od: Fallback converters
10
+ ## - bat (optional): For colorized output
11
+ ##
12
+ ## # Usage
13
+ ## hex file.bin # View file in hex
14
+ ## hex -e "hello" # String to hex
15
+ ## hex -d "68656c6c6f" # Hex to string
16
+ ## cat file | hex # View stdin in hex
17
+ ## hex -c -n 32 file.bin # Colorized, 32 bytes per line
18
+ ##
19
+ ## # Platform Notes
20
+ ## - All platforms: Requires xxd, hexdump, or od
4
21
 
5
22
  set -euo pipefail
6
23
 
@@ -27,12 +44,31 @@ BYTES_PER_LINE=16
27
44
 
28
45
  while [[ $# -gt 0 ]]; do
29
46
  case "$1" in
30
- -e|--encode) MODE="encode"; shift ;;
31
- -d|--decode) MODE="decode"; shift ;;
32
- -c|--color) COLOR=true; shift ;;
33
- -n|--length) BYTES_PER_LINE="$2"; shift 2 ;;
34
- -h|--help) usage; exit 0 ;;
35
- -*) echo "Unknown option: $1"; usage; exit 1 ;;
47
+ -e | --encode)
48
+ MODE="encode"
49
+ shift
50
+ ;;
51
+ -d | --decode)
52
+ MODE="decode"
53
+ shift
54
+ ;;
55
+ -c | --color)
56
+ COLOR=true
57
+ shift
58
+ ;;
59
+ -n | --length)
60
+ BYTES_PER_LINE="$2"
61
+ shift 2
62
+ ;;
63
+ -h | --help)
64
+ usage
65
+ exit 0
66
+ ;;
67
+ -*)
68
+ echo "Unknown option: $1"
69
+ usage
70
+ exit 1
71
+ ;;
36
72
  *) break ;;
37
73
  esac
38
74
  done
@@ -1,6 +1,21 @@
1
1
  #!/usr/bin/env bash
2
- # JSON validator and formatter
3
- # Usage: jsonv <file> | jsonv (reads stdin) | jsonv --format <file>
2
+ ## JSON Validator — Validate and optionally format JSON data.
3
+ ##
4
+ ## Validates JSON syntax and reports success or failure.
5
+ ## Supports formatting output and quiet mode for scripts.
6
+ ##
7
+ ## # Requirements
8
+ ## - jq: Primary JSON processor (recommended)
9
+ ## - python3: Fallback JSON validator
10
+ ##
11
+ ## # Usage
12
+ ## jsonv file.json # Validate JSON file
13
+ ## jsonv < file.json # Validate from stdin
14
+ ## jsonv -f file.json # Validate and format
15
+ ## jsonv -q file.json # Quiet mode (exit code only)
16
+ ##
17
+ ## # Platform Notes
18
+ ## - All platforms: Requires jq or python3
4
19
 
5
20
  set -euo pipefail
6
21
 
@@ -9,9 +24,18 @@ QUIET=false
9
24
 
10
25
  while [[ $# -gt 0 ]]; do
11
26
  case "$1" in
12
- -f|--format) FORMAT=true; shift ;;
13
- -q|--quiet) QUIET=true; shift ;;
14
- -*) echo "Unknown option: $1"; exit 1 ;;
27
+ -f | --format)
28
+ FORMAT=true
29
+ shift
30
+ ;;
31
+ -q | --quiet)
32
+ QUIET=true
33
+ shift
34
+ ;;
35
+ -*)
36
+ echo "Unknown option: $1"
37
+ exit 1
38
+ ;;
15
39
  *) break ;;
16
40
  esac
17
41
  done
@@ -20,13 +44,13 @@ validate_json() {
20
44
  local input="$1"
21
45
  if command -v jq >/dev/null 2>&1; then
22
46
  if $FORMAT; then
23
- jq '.' <<< "$input"
47
+ jq '.' <<<"$input"
24
48
  else
25
- jq -e '.' <<< "$input" >/dev/null 2>&1
49
+ jq -e '.' <<<"$input" >/dev/null 2>&1
26
50
  fi
27
51
  elif command -v python3 >/dev/null 2>&1; then
28
52
  if $FORMAT; then
29
- python3 -m json.tool <<< "$input"
53
+ python3 -m json.tool <<<"$input"
30
54
  else
31
55
  python3 -c "import json; json.loads('''$input''')" 2>/dev/null
32
56
  fi
@@ -46,9 +70,9 @@ else
46
70
  fi
47
71
 
48
72
  if validate_json "$INPUT"; then
49
- $QUIET || echo "Valid JSON ($SOURCE)"
73
+ $QUIET || echo "Valid JSON ($SOURCE)"
50
74
  exit 0
51
75
  else
52
- echo "Invalid JSON ($SOURCE)"
76
+ echo "Invalid JSON ($SOURCE)"
53
77
  exit 1
54
78
  fi
@@ -1,6 +1,22 @@
1
1
  #!/usr/bin/env bash
2
- # JWT token decoder
3
- # Usage: jwt <token> | jwt (reads from stdin)
2
+ ## JWT Decoder — Decode and inspect JWT tokens.
3
+ ##
4
+ ## Decodes JWT header and payload, checks expiration status,
5
+ ## and displays token metadata. Does not verify signatures.
6
+ ##
7
+ ## # Requirements
8
+ ## - base64: Core utility for decoding
9
+ ## - jq (optional): For JSON formatting
10
+ ## - python3 (optional): Fallback JSON formatter
11
+ ##
12
+ ## # Usage
13
+ ## jwt "eyJhbG..." # Decode JWT token
14
+ ## jwt < token.txt # Decode from stdin
15
+ ## echo "Bearer xxx" | jwt # Handles Bearer prefix
16
+ ##
17
+ ## # Platform Notes
18
+ ## - macOS: Uses base64 -D for decode
19
+ ## - Linux: Uses base64 -d for decode
4
20
 
5
21
  set -euo pipefail
6
22
 
@@ -11,7 +27,7 @@ decode_base64url() {
11
27
  if [[ $mod -eq 2 ]]; then input="${input}=="; fi
12
28
  if [[ $mod -eq 3 ]]; then input="${input}="; fi
13
29
  # Convert URL-safe to standard base64
14
- echo "$input" | tr '-_' '+/' | base64 -d 2>/dev/null || base64 -D <<< "$(echo "$input" | tr '-_' '+/')"
30
+ echo "$input" | tr '-_' '+/' | base64 -d 2>/dev/null || base64 -D <<<"$(echo "$input" | tr '-_' '+/')"
15
31
  }
16
32
 
17
33
  format_json() {
@@ -36,7 +52,7 @@ TOKEN="${TOKEN#Bearer }"
36
52
  TOKEN="${TOKEN#bearer }"
37
53
 
38
54
  # Split into parts
39
- IFS='.' read -ra PARTS <<< "$TOKEN"
55
+ IFS='.' read -ra PARTS <<<"$TOKEN"
40
56
 
41
57
  if [[ ${#PARTS[@]} -lt 2 ]]; then
42
58
  echo "Error: Invalid JWT format"
@@ -61,9 +77,9 @@ if command -v jq >/dev/null 2>&1; then
61
77
  NOW=$(date +%s)
62
78
  EXP_DATE=$(date -d "@$EXP" 2>/dev/null || date -r "$EXP" 2>/dev/null)
63
79
  if [[ $EXP -lt $NOW ]]; then
64
- echo "⚠️ Token EXPIRED at: $EXP_DATE"
80
+ echo "Token EXPIRED at: $EXP_DATE"
65
81
  else
66
- echo "Token expires at: $EXP_DATE"
82
+ echo "Token expires at: $EXP_DATE"
67
83
  fi
68
84
  fi
69
85
 
@@ -1,6 +1,22 @@
1
1
  #!/usr/bin/env bash
2
- # Kill process running on specified port
3
- # Usage: kill-port <port> [--force]
2
+ ## Kill Port Terminate processes listening on a specified port.
3
+ ##
4
+ ## Finds and kills processes bound to a given port number.
5
+ ## Supports both graceful (SIGTERM) and forced (SIGKILL) termination.
6
+ ##
7
+ ## # Requirements
8
+ ## - lsof, ss, or netstat: For finding processes
9
+ ## - kill: For process termination
10
+ ## - ps: For process information display
11
+ ##
12
+ ## # Usage
13
+ ## kill-port 3000 # Kill process on port 3000
14
+ ## kill-port 8080 --force # Force kill (SIGKILL)
15
+ ## kill-port 443 # May require sudo for privileged ports
16
+ ##
17
+ ## # Platform Notes
18
+ ## - Linux: Uses lsof or ss
19
+ ## - macOS: Uses lsof
4
20
 
5
21
  set -euo pipefail
6
22
 
@@ -1,6 +1,21 @@
1
1
  #!/usr/bin/env bash
2
- # Lorem ipsum text generator
3
- # Usage: lorem [words|sentences|paragraphs] [count]
2
+ ## Lorem Ipsum Generator — Generate placeholder text.
3
+ ##
4
+ ## Generates lorem ipsum text in words, sentences, or paragraphs.
5
+ ## Useful for testing layouts and content rendering.
6
+ ##
7
+ ## # Requirements
8
+ ## - bash 4+: For array operations
9
+ ##
10
+ ## # Usage
11
+ ## lorem # 1 paragraph
12
+ ## lorem p 3 # 3 paragraphs
13
+ ## lorem words 10 # 10 words
14
+ ## lorem sentences 5 # 5 sentences
15
+ ## lorem w 50 # 50 words (short form)
16
+ ##
17
+ ## # Platform Notes
18
+ ## - All platforms: Pure bash implementation
4
19
 
5
20
  set -euo pipefail
6
21
 
@@ -59,7 +74,7 @@ TYPE="${1:-paragraphs}"
59
74
  COUNT="${2:-1}"
60
75
 
61
76
  case "$TYPE" in
62
- w|word|words)
77
+ w | word | words)
63
78
  for ((i = 0; i < COUNT; i++)); do
64
79
  if [[ $i -eq 0 ]]; then
65
80
  word=$(random_word)
@@ -70,18 +85,18 @@ case "$TYPE" in
70
85
  done
71
86
  echo
72
87
  ;;
73
- s|sentence|sentences)
88
+ s | sentence | sentences)
74
89
  for ((i = 0; i < COUNT; i++)); do
75
90
  generate_sentence
76
91
  done
77
92
  ;;
78
- p|paragraph|paragraphs)
93
+ p | paragraph | paragraphs)
79
94
  for ((i = 0; i < COUNT; i++)); do
80
95
  generate_paragraph
81
96
  [[ $i -lt $((COUNT - 1)) ]] && echo
82
97
  done
83
98
  ;;
84
- -h|--help)
99
+ -h | --help)
85
100
  echo "Usage: lorem [type] [count]"
86
101
  echo ""
87
102
  echo "Types:"
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env bash
2
+ # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
3
+ ## mkscript — Create a ready-to-go shell script.
4
+ ##
5
+ ## # Usage
6
+ ## mkscript hello
7
+ ## mkscript /tmp/myscript
8
+
9
+ set -euo pipefail
10
+
11
+ file="${1:-}"
12
+
13
+ if [[ -z "${file}" ]]; then
14
+ echo "Usage: mkscript <path>" >&2
15
+ exit 1
16
+ fi
17
+
18
+ if [[ -f "${file}" ]]; then
19
+ echo "${file} already exists, aborting." >&2
20
+ exit 1
21
+ fi
22
+
23
+ mkdir -p "$(dirname "${file}")"
24
+
25
+ cat >"${file}" <<'EOF'
26
+ #!/usr/bin/env bash
27
+ # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
28
+
29
+ set -euo pipefail
30
+
31
+ echo "hello world"
32
+ EOF
33
+
34
+ chmod +x "${file}"
35
+ echo "Created ${file}"