@sebastienrousseau/dotfiles 0.2.520 → 0.2.521

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 (323) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/LICENSE-APACHE +190 -0
  3. package/LICENSE-MIT +21 -0
  4. package/README.md +43 -37
  5. package/install.sh +76 -10
  6. package/package.json +7 -7
  7. package/tools/README.md +49 -0
  8. package/tools/ci/install-chezmoi-verified.sh +68 -0
  9. package/docs/.vitepress/reports/localization-readability-audit.md +0 -73
  10. package/docs/AI.md +0 -179
  11. package/docs/ARCHITECTURE.md +0 -117
  12. package/docs/CNAME +0 -1
  13. package/docs/CONFIG_STRATEGY.md +0 -124
  14. package/docs/COPYRIGHT +0 -7
  15. package/docs/ECOSYSTEM.md +0 -220
  16. package/docs/GOLD-STANDARD-AUDIT.md +0 -352
  17. package/docs/GOVERNANCE.md +0 -98
  18. package/docs/MAINTAINERS.md +0 -41
  19. package/docs/MINIMUM-TOOLCHAIN.md +0 -100
  20. package/docs/NAMING_CONVENTIONS.md +0 -102
  21. package/docs/OPENCODE.md +0 -127
  22. package/docs/README.md +0 -84
  23. package/docs/STRUCTURE.md +0 -102
  24. package/docs/adr/ADR-001-ci-cd-pipeline.md +0 -118
  25. package/docs/adr/ADR-002-shell-performance.md +0 -130
  26. package/docs/adr/ADR-003-security-first.md +0 -158
  27. package/docs/adr/ADR-004-cli-architecture.md +0 -171
  28. package/docs/adr/ADR-005-chezmoi-choice.md +0 -99
  29. package/docs/adr/ADR-006-shell-selection.md +0 -124
  30. package/docs/adr/ADR-007-multi-shell-parity.md +0 -62
  31. package/docs/adr/ADR-008-alias-system-architecture.md +0 -95
  32. package/docs/adr/ADR-009-wallpaper-driven-theming.md +0 -131
  33. package/docs/adr/ADR-010-starship-transient-prompt.md +0 -144
  34. package/docs/adr/ADR-011-nushell-tier3-keep.md +0 -144
  35. package/docs/adr/ADR-012-ai-fleet-local-proxy.md +0 -79
  36. package/docs/adr/README.md +0 -40
  37. package/docs/architecture/AI_COST_OPTIMIZATION.md +0 -144
  38. package/docs/architecture/ARCHITECTURE.md +0 -20
  39. package/docs/architecture/INTEROP.md +0 -44
  40. package/docs/architecture/REPO_LAYOUT.md +0 -241
  41. package/docs/architecture/WALKTHROUGH.md +0 -86
  42. package/docs/architecture/fleet-deployment.md +0 -77
  43. package/docs/archive/EUXIS_2026_REVIEW.md +0 -127
  44. package/docs/archive/LEGACY_ROADMAP.md +0 -6
  45. package/docs/archive/MILESTONE_v0.2.493.md +0 -47
  46. package/docs/archive/PLAN.md +0 -199
  47. package/docs/archive/REPO_AUDIT.md +0 -31
  48. package/docs/articles/.pages +0 -6
  49. package/docs/articles/2026-07-05-custom-mkdocs-material-dark-theme.md +0 -216
  50. package/docs/articles/2026-07-05-fish-startup-abbr.md +0 -153
  51. package/docs/articles/2026-07-05-master-to-main-rename-runbook.md +0 -128
  52. package/docs/articles/index.md +0 -36
  53. package/docs/guides/INSTALL.md +0 -144
  54. package/docs/guides/MACOS_ICLOUD_SYMLINKS.md +0 -121
  55. package/docs/guides/NEOVIM_IDE_GUIDE.md +0 -61
  56. package/docs/guides/THEMING.md +0 -230
  57. package/docs/guides/TROUBLESHOOTING.md +0 -176
  58. package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +0 -792
  59. package/docs/index.md +0 -132
  60. package/docs/interop/A2A.md +0 -39
  61. package/docs/interop/POWERSHELL.md +0 -102
  62. package/docs/manual/00-introduction.md +0 -89
  63. package/docs/manual/01-concepts/01-architecture.md +0 -138
  64. package/docs/manual/01-concepts/02-trust-model.md +0 -183
  65. package/docs/manual/01-concepts/03-theme-engine.md +0 -186
  66. package/docs/manual/01-concepts/04-fleet.md +0 -148
  67. package/docs/manual/01-concepts/05-self-healing.md +0 -204
  68. package/docs/manual/02-tutorials/01-first-install.md +0 -197
  69. package/docs/manual/02-tutorials/02-add-wallpaper.md +0 -216
  70. package/docs/manual/02-tutorials/03-create-profile.md +0 -244
  71. package/docs/manual/02-tutorials/04-encrypt-secret.md +0 -281
  72. package/docs/manual/02-tutorials/05-deploy-fleet.md +0 -283
  73. package/docs/manual/03-reference/01-dot-cli.md +0 -475
  74. package/docs/manual/03-reference/02-config-files.md +0 -265
  75. package/docs/manual/03-reference/03-environment.md +0 -124
  76. package/docs/manual/03-reference/04-templates.md +0 -190
  77. package/docs/manual/03-reference/05-feature-flags.md +0 -187
  78. package/docs/manual/04-cookbook/01-recipes.md +0 -285
  79. package/docs/manual/04-cookbook/02-troubleshooting.md +0 -351
  80. package/docs/manual/04-cookbook/03-faq.md +0 -175
  81. package/docs/manual/05-appendices/A-platform-matrix.md +0 -101
  82. package/docs/manual/05-appendices/B-security-checklist.md +0 -85
  83. package/docs/manual/05-appendices/C-glossary.md +0 -40
  84. package/docs/manual/05-appendices/D-bibliography.md +0 -58
  85. package/docs/manual/05-appendices/E-license.md +0 -38
  86. package/docs/manual/_toc.yml +0 -58
  87. package/docs/manual/command-index.md +0 -175
  88. package/docs/manual/concept-index.md +0 -170
  89. package/docs/manual/index.md +0 -66
  90. package/docs/migration/README.md +0 -81
  91. package/docs/migration/from-bare-git-repo.md +0 -156
  92. package/docs/migration/from-gnu-stow.md +0 -165
  93. package/docs/migration/from-plain-chezmoi.md +0 -148
  94. package/docs/migration/from-yadm.md +0 -187
  95. package/docs/operations/ARCHITECTURE_ROADMAP.md +0 -7
  96. package/docs/operations/ATTESTATION.md +0 -44
  97. package/docs/operations/CI_CADENCE.md +0 -107
  98. package/docs/operations/CI_COMPOSITES.md +0 -156
  99. package/docs/operations/COMPLETIONS.md +0 -123
  100. package/docs/operations/COVERAGE.md +0 -204
  101. package/docs/operations/DRIFT.md +0 -107
  102. package/docs/operations/HARD_AUDIT_2026.md +0 -631
  103. package/docs/operations/MAINTENANCE.md +0 -63
  104. package/docs/operations/MANIFEST.md +0 -127
  105. package/docs/operations/MIGRATION.md +0 -109
  106. package/docs/operations/OPERATIONS.md +0 -188
  107. package/docs/operations/PERFORMANCE.md +0 -133
  108. package/docs/operations/PERFORMANCE_BUDGETS.md +0 -196
  109. package/docs/operations/REGISTRY.md +0 -90
  110. package/docs/operations/RELEASE_PIPELINE.md +0 -128
  111. package/docs/operations/RELIABILITY.md +0 -122
  112. package/docs/operations/RFC_v0_2_503_reorganization.md +0 -280
  113. package/docs/operations/ROADMAP.md +0 -10
  114. package/docs/operations/ROADMAP_2026.md +0 -7
  115. package/docs/operations/ROADMAP_V0_2_503.md +0 -10
  116. package/docs/operations/TESTING.md +0 -216
  117. package/docs/operations/TRACEABILITY.md +0 -44
  118. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +0 -65
  119. package/docs/operations/VERSION_SYNC.md +0 -393
  120. package/docs/packaging.md +0 -222
  121. package/docs/reference/ALIASES.md +0 -131
  122. package/docs/reference/ALIASES_CHEATSHEET.md +0 -32
  123. package/docs/reference/ALIASES_DEPRECATIONS.md +0 -13
  124. package/docs/reference/FEATURE-MATRIX.md +0 -646
  125. package/docs/reference/FEATURES.md +0 -66
  126. package/docs/reference/FONTS.md +0 -112
  127. package/docs/reference/POWERSHELL_PARITY.md +0 -82
  128. package/docs/reference/PROFILES.md +0 -69
  129. package/docs/reference/SCREENSHOTS.md +0 -121
  130. package/docs/reference/SCRIPTS.md +0 -71
  131. package/docs/reference/SUPPORT_MATRIX.md +0 -80
  132. package/docs/reference/THEMES.md +0 -117
  133. package/docs/reference/TOOLS.md +0 -110
  134. package/docs/reference/UTILS.md +0 -243
  135. package/docs/registry.json +0 -6
  136. package/docs/schema/dot-env-v1.json +0 -110
  137. package/docs/schema/dot-registry-v1.json +0 -33
  138. package/docs/security/AI_ACT_COMPLIANCE.md +0 -94
  139. package/docs/security/AUDIT_BYPASS.md +0 -103
  140. package/docs/security/AUTOMATION_SECRETS.md +0 -26
  141. package/docs/security/CI_EGRESS_ALLOWLIST.md +0 -127
  142. package/docs/security/CI_PINNING.md +0 -129
  143. package/docs/security/COMMIT_SIGNING.md +0 -138
  144. package/docs/security/COMPLIANCE.md +0 -458
  145. package/docs/security/DEPS_DEV_EXCEPTIONS.md +0 -86
  146. package/docs/security/DISCLOSURE.md +0 -130
  147. package/docs/security/ENCRYPTION.md +0 -57
  148. package/docs/security/FMEA.md +0 -159
  149. package/docs/security/FUZZING.md +0 -209
  150. package/docs/security/HISTORY_FILTERING.md +0 -132
  151. package/docs/security/INCIDENT_RESPONSE.md +0 -579
  152. package/docs/security/INSTALL_VERIFICATION.md +0 -122
  153. package/docs/security/KEYS.md +0 -49
  154. package/docs/security/KEY_ROTATION.md +0 -303
  155. package/docs/security/MCP_POLICY.md +0 -78
  156. package/docs/security/POLICY_RELEASES.md +0 -37
  157. package/docs/security/README.md +0 -28
  158. package/docs/security/SCORECARD.md +0 -195
  159. package/docs/security/SECRETS.md +0 -158
  160. package/docs/security/SECURITY.md +0 -45
  161. package/docs/security/SECURITY_CHECKLIST.md +0 -55
  162. package/docs/security/SHELL_EXEMPTIONS.md +0 -145
  163. package/docs/security/SOUP_REGISTER.md +0 -36
  164. package/docs/security/THREAT_MODEL.md +0 -130
  165. package/docs/security/VERIFICATION_VALIDATION.md +0 -228
  166. package/docs/security/VERIFY_RELEASE.md +0 -201
  167. package/docs/security/security-pubkey.asc +0 -15
  168. package/docs/stylesheets/extra.css +0 -444
  169. package/docs/themes/README.md +0 -10
  170. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +0 -30
  171. package/docs/themes/hero-shot.svg +0 -78
  172. package/scripts/README.md +0 -123
  173. package/scripts/ci/check-copyright-headers.sh +0 -8
  174. package/scripts/ci/check-shell-preamble.sh +0 -8
  175. package/scripts/ci/guard-gitleaks-checkout.sh +0 -8
  176. package/scripts/demo/record.sh +0 -43
  177. package/scripts/diagnostics/a2a-conformance.sh +0 -163
  178. package/scripts/diagnostics/alias-governance.sh +0 -165
  179. package/scripts/diagnostics/aliases-cheatsheet.sh +0 -74
  180. package/scripts/diagnostics/aliases-manifest.sh +0 -77
  181. package/scripts/diagnostics/attest-verify.sh +0 -147
  182. package/scripts/diagnostics/benchmark.sh +0 -408
  183. package/scripts/diagnostics/conflicts.sh +0 -73
  184. package/scripts/diagnostics/doctor-unified.sh +0 -43
  185. package/scripts/diagnostics/doctor.sh +0 -797
  186. package/scripts/diagnostics/drift-dashboard.sh +0 -203
  187. package/scripts/diagnostics/health.sh +0 -656
  188. package/scripts/diagnostics/history-analysis.sh +0 -86
  189. package/scripts/diagnostics/mcp-doctor.sh +0 -582
  190. package/scripts/diagnostics/perf.sh +0 -453
  191. package/scripts/diagnostics/scorecard.sh +0 -120
  192. package/scripts/diagnostics/secret-governance.sh +0 -65
  193. package/scripts/diagnostics/security-score.sh +0 -467
  194. package/scripts/diagnostics/smoke-test.sh +0 -88
  195. package/scripts/diagnostics/snapshot.sh +0 -90
  196. package/scripts/diagnostics/verify.sh +0 -108
  197. package/scripts/diagnostics/verify_state.sh +0 -73
  198. package/scripts/diagnostics/version-locks.sh +0 -94
  199. package/scripts/diagnostics/workstation-attestation.sh +0 -212
  200. package/scripts/dot/commands/agent.sh +0 -535
  201. package/scripts/dot/commands/agents.sh +0 -352
  202. package/scripts/dot/commands/ai.sh +0 -600
  203. package/scripts/dot/commands/aliases.sh +0 -277
  204. package/scripts/dot/commands/appearance.sh +0 -110
  205. package/scripts/dot/commands/completion.sh +0 -171
  206. package/scripts/dot/commands/core.sh +0 -217
  207. package/scripts/dot/commands/diagnostics.sh +0 -265
  208. package/scripts/dot/commands/env-emit.sh +0 -203
  209. package/scripts/dot/commands/fleet.sh +0 -711
  210. package/scripts/dot/commands/init.sh +0 -185
  211. package/scripts/dot/commands/lint.sh +0 -208
  212. package/scripts/dot/commands/manual.sh +0 -169
  213. package/scripts/dot/commands/meta.sh +0 -438
  214. package/scripts/dot/commands/patterns.sh +0 -55
  215. package/scripts/dot/commands/registry.sh +0 -455
  216. package/scripts/dot/commands/restore.sh +0 -232
  217. package/scripts/dot/commands/secrets.sh +0 -296
  218. package/scripts/dot/commands/security.sh +0 -102
  219. package/scripts/dot/commands/tools.sh +0 -570
  220. package/scripts/dot/data/alias-deprecations.tsv +0 -2
  221. package/scripts/dot/powershell/Dot.psm1 +0 -319
  222. package/scripts/fonts/install-nerd-fonts.sh +0 -75
  223. package/scripts/fonts/patch-fonts.sh +0 -36
  224. package/scripts/git-hooks/install.sh +0 -12
  225. package/scripts/git-hooks/pre-commit +0 -12
  226. package/scripts/git-hooks/pre-commit-audit.sh +0 -146
  227. package/scripts/git-hooks/pre-push +0 -105
  228. package/scripts/git-hooks/prepare-commit-msg +0 -29
  229. package/scripts/lib/secrets_provider.sh +0 -200
  230. package/scripts/nvim/headless-upgrade.lua +0 -81
  231. package/scripts/ops/ai-setup.sh +0 -71
  232. package/scripts/ops/bundle.sh +0 -104
  233. package/scripts/ops/chaos.sh +0 -50
  234. package/scripts/ops/chezmoi-apply.sh +0 -333
  235. package/scripts/ops/chezmoi-diff.sh +0 -16
  236. package/scripts/ops/chezmoi-remove.sh +0 -46
  237. package/scripts/ops/chezmoi-update.sh +0 -67
  238. package/scripts/ops/heal-chezmoi.sh +0 -87
  239. package/scripts/ops/heal-system.sh +0 -129
  240. package/scripts/ops/heal-tools.sh +0 -297
  241. package/scripts/ops/heal.sh +0 -223
  242. package/scripts/ops/post-apply-repair.sh +0 -107
  243. package/scripts/ops/prewarm.sh +0 -128
  244. package/scripts/ops/release.sh +0 -262
  245. package/scripts/ops/rollback.sh +0 -613
  246. package/scripts/ops/setup.sh +0 -138
  247. package/scripts/ops/teleport.sh +0 -34
  248. package/scripts/qa/check-feature-matrix.sh +0 -296
  249. package/scripts/qa/check-version-consistency.sh +0 -12
  250. package/scripts/qa/coverage-baseline.sh +0 -61
  251. package/scripts/qa/docs-coverage.sh +0 -118
  252. package/scripts/qa/examples-coverage.sh +0 -94
  253. package/scripts/qa/powershell-contract.ps1 +0 -95
  254. package/scripts/qa/reliability-audit.sh +0 -139
  255. package/scripts/qa/scorecard-snapshot.sh +0 -128
  256. package/scripts/qa/traceability-coverage.sh +0 -124
  257. package/scripts/qa/validate-examples.sh +0 -90
  258. package/scripts/qa/wsl-contract.sh +0 -12
  259. package/scripts/secrets/age-init.sh +0 -82
  260. package/scripts/secrets/create-secrets-file.sh +0 -46
  261. package/scripts/secrets/encrypt-ssh-key.sh +0 -44
  262. package/scripts/security/backup.sh +0 -58
  263. package/scripts/security/check-disclosure-key-expiry.sh +0 -111
  264. package/scripts/security/dns-doh.sh +0 -52
  265. package/scripts/security/encryption-check.sh +0 -55
  266. package/scripts/security/enforce-policies.sh +0 -552
  267. package/scripts/security/firewall.sh +0 -91
  268. package/scripts/security/lock-configs.sh +0 -67
  269. package/scripts/security/lock-screen.sh +0 -56
  270. package/scripts/security/manage-secrets.sh +0 -429
  271. package/scripts/security/ssh-cert.sh +0 -204
  272. package/scripts/security/telemetry-kill.sh +0 -51
  273. package/scripts/security/usb-safety.sh +0 -52
  274. package/scripts/theme/apply-gnome-theme.sh +0 -333
  275. package/scripts/theme/extract-heic-frames.sh +0 -115
  276. package/scripts/theme/extract-theme.py +0 -1020
  277. package/scripts/theme/install-boot-logo.sh +0 -63
  278. package/scripts/theme/install-catppuccin-themes.sh +0 -371
  279. package/scripts/theme/install-cursors.sh +0 -26
  280. package/scripts/theme/install-file-icons.sh +0 -27
  281. package/scripts/theme/install-grub-theme.sh +0 -62
  282. package/scripts/theme/install-lock-icon.sh +0 -31
  283. package/scripts/theme/merge-wallpaper.sh +0 -146
  284. package/scripts/theme/rebuild-themes.sh +0 -603
  285. package/scripts/theme/switch.sh +0 -476
  286. package/scripts/theme/wallpaper-rotate.sh +0 -137
  287. package/scripts/theme/wallpaper-sync.sh +0 -690
  288. package/scripts/tools/cmatrix.sh +0 -22
  289. package/scripts/tools/detect-collisions.py +0 -103
  290. package/scripts/tools/emoji-picker.sh +0 -49
  291. package/scripts/tools/figlet-banner.sh +0 -19
  292. package/scripts/tools/log-rotate.sh +0 -31
  293. package/scripts/tools/lolcat-wrap.sh +0 -20
  294. package/scripts/tools/pipes.sh +0 -49
  295. package/scripts/tuning/linux.sh +0 -186
  296. package/scripts/tuning/macos.sh +0 -56
  297. package/scripts/uninstall.sh +0 -86
  298. package/scripts/verify-release-versions +0 -156
  299. package/scripts/version-sync.sh +0 -714
  300. package/templates/chezmoi-data/geekom-a9.toml.example +0 -21
  301. package/templates/chezmoi-data/mac-m1.toml.example +0 -16
  302. package/templates/chezmoi-data/mac-t2-linux.toml.example +0 -21
  303. package/templates/chezmoi-data/surface-pro-7p.toml.example +0 -21
  304. package/templates/projects/go/.github/workflows/ci.yml +0 -31
  305. package/templates/projects/go/README.md +0 -7
  306. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +0 -8
  307. package/templates/projects/go/go.mod +0 -3
  308. package/templates/projects/go/go.sum +0 -0
  309. package/templates/projects/molecule/README.md +0 -7
  310. package/templates/projects/molecule/converge.yml +0 -7
  311. package/templates/projects/molecule/molecule.yml +0 -16
  312. package/templates/projects/node/.github/workflows/ci.yml +0 -30
  313. package/templates/projects/node/README.md +0 -7
  314. package/templates/projects/node/package-lock.json +0 -12
  315. package/templates/projects/node/package.json +0 -10
  316. package/templates/projects/node/src/index.js +0 -3
  317. package/templates/projects/packer/README.md +0 -15
  318. package/templates/projects/packer/main.pkr.hcl +0 -15
  319. package/templates/projects/python/.github/workflows/ci.yml +0 -34
  320. package/templates/projects/python/README.md +0 -7
  321. package/templates/projects/python/pyproject.toml +0 -25
  322. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +0 -2
  323. package/templates/projects/python/tests/test_basic.py +0 -3
@@ -1,444 +0,0 @@
1
- /* ──────────────────────────────────────────────────────────────────────────
2
- * doc.dotfiles.io — custom theme
3
- * Dark + terminal-green palette on MkDocs Material.
4
- * Inspired by the polish of docs.n8n.io / GitHub docs dark, adapted to
5
- * Material's structure.
6
- * ────────────────────────────────────────────────────────────────────── */
7
-
8
- /* -- font stack ------------------------------------------------------------ */
9
- @import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap");
10
-
11
- :root {
12
- --dot-font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI",
13
- "Helvetica Neue", Arial, sans-serif;
14
- --dot-font-code: "JetBrains Mono", ui-monospace, SFMono-Regular, "SF Mono",
15
- Menlo, Consolas, monospace;
16
-
17
- --dot-green: #7ee787; /* terminal green */
18
- --dot-green-bright: #b0f5b7; /* hover / focused */
19
- --dot-green-dim: #4a9153; /* muted / secondary */
20
- --dot-green-rgb: 126, 231, 135;
21
-
22
- --dot-bg: #0b0e14; /* base */
23
- --dot-bg-elev: #111621; /* elevated card */
24
- --dot-bg-elev-2: #161b26; /* higher elevation */
25
- --dot-border: #1f2937;
26
- --dot-border-strong: #2b3646;
27
-
28
- --dot-fg: #e4e7ec;
29
- --dot-fg-muted: #94a3b8;
30
- --dot-fg-subtle: #64748b;
31
- }
32
-
33
- /* -- global typography ----------------------------------------------------- */
34
- body,
35
- .md-typeset {
36
- font-family: var(--dot-font-body);
37
- font-feature-settings: "ss01", "cv11";
38
- -webkit-font-smoothing: antialiased;
39
- -moz-osx-font-smoothing: grayscale;
40
- }
41
-
42
- .md-typeset code,
43
- .md-typeset kbd,
44
- .md-typeset pre,
45
- code {
46
- font-family: var(--dot-font-code);
47
- font-feature-settings: "calt", "ss20";
48
- }
49
-
50
- /* -- dark palette override (slate) ---------------------------------------- */
51
- [data-md-color-scheme="slate"] {
52
- --md-hue: 210;
53
- --md-default-bg-color: var(--dot-bg);
54
- --md-default-fg-color: var(--dot-fg);
55
- --md-default-fg-color--light: var(--dot-fg-muted);
56
- --md-default-fg-color--lighter: var(--dot-fg-subtle);
57
- --md-default-fg-color--lightest: hsla(210, 20%, 40%, 0.3);
58
-
59
- --md-primary-fg-color: var(--dot-green);
60
- --md-primary-fg-color--light: var(--dot-green-bright);
61
- --md-primary-fg-color--dark: var(--dot-green-dim);
62
- --md-primary-bg-color: var(--dot-bg);
63
- --md-primary-bg-color--light: var(--dot-bg-elev);
64
-
65
- --md-accent-fg-color: var(--dot-green-bright);
66
- --md-accent-fg-color--transparent: rgba(126, 231, 135, 0.1);
67
- --md-accent-bg-color: var(--dot-bg);
68
- --md-accent-bg-color--light: var(--dot-bg-elev);
69
-
70
- --md-typeset-a-color: var(--dot-green);
71
-
72
- --md-code-bg-color: var(--dot-bg-elev-2);
73
- --md-code-fg-color: var(--dot-fg);
74
- --md-code-hl-color: rgba(126, 231, 135, 0.12);
75
- --md-code-hl-color--light: rgba(126, 231, 135, 0.08);
76
-
77
- /* Admonitions */
78
- --md-admonition-bg-color: var(--dot-bg-elev);
79
- --md-admonition-fg-color: var(--dot-fg);
80
-
81
- /* Footer */
82
- --md-footer-bg-color: #050710;
83
- --md-footer-bg-color--dark: #030509;
84
- }
85
-
86
- /* -- header --------------------------------------------------------------- */
87
- .md-header {
88
- background-color: rgba(11, 14, 20, 0.92);
89
- backdrop-filter: saturate(180%) blur(12px);
90
- -webkit-backdrop-filter: saturate(180%) blur(12px);
91
- border-bottom: 1px solid var(--dot-border);
92
- box-shadow: none;
93
- }
94
-
95
- .md-header[data-md-state="shadow"] {
96
- box-shadow: 0 1px 0 var(--dot-border);
97
- }
98
-
99
- .md-header__title {
100
- font-weight: 600;
101
- letter-spacing: -0.01em;
102
- }
103
-
104
- .md-header__button.md-logo :is(img, svg) {
105
- color: var(--dot-green);
106
- fill: var(--dot-green);
107
- height: 1.6rem;
108
- width: 1.6rem;
109
- }
110
-
111
- /* -- tabs --------------------------------------------------------------- */
112
- .md-tabs {
113
- background-color: rgba(11, 14, 20, 0.85);
114
- border-bottom: 1px solid var(--dot-border);
115
- }
116
-
117
- .md-tabs__link {
118
- color: var(--dot-fg-muted);
119
- opacity: 1;
120
- font-size: 0.75rem;
121
- font-weight: 500;
122
- transition: color 120ms ease;
123
- }
124
-
125
- .md-tabs__link:hover,
126
- .md-tabs__link--active {
127
- color: var(--dot-green-bright);
128
- }
129
-
130
- .md-tabs__link--active {
131
- position: relative;
132
- }
133
- .md-tabs__link--active::after {
134
- content: "";
135
- position: absolute;
136
- left: 0;
137
- right: 0;
138
- bottom: -2px;
139
- height: 2px;
140
- background: linear-gradient(90deg, transparent, var(--dot-green), transparent);
141
- }
142
-
143
- /* -- sidebar (left nav) --------------------------------------------------- */
144
- .md-nav__title {
145
- font-size: 0.68rem;
146
- font-weight: 700;
147
- text-transform: uppercase;
148
- letter-spacing: 0.05em;
149
- color: var(--dot-fg-subtle);
150
- padding-top: 1.2rem;
151
- }
152
-
153
- .md-nav__link {
154
- color: var(--dot-fg-muted);
155
- transition: color 120ms ease, background-color 120ms ease;
156
- border-radius: 6px;
157
- padding: 4px 8px;
158
- margin: 1px 0;
159
- }
160
- .md-nav__link:hover {
161
- color: var(--dot-fg);
162
- background: rgba(126, 231, 135, 0.06);
163
- }
164
- .md-nav__link--active,
165
- .md-nav__link.md-nav__link--active {
166
- color: var(--dot-green-bright);
167
- background: rgba(126, 231, 135, 0.1);
168
- font-weight: 500;
169
- }
170
-
171
- /* -- right TOC ------------------------------------------------------------ */
172
- .md-nav--secondary .md-nav__title {
173
- border-left: 2px solid var(--dot-border);
174
- background: transparent;
175
- }
176
- .md-nav--secondary .md-nav__link--active {
177
- border-left: 2px solid var(--dot-green);
178
- color: var(--dot-green-bright);
179
- background: transparent;
180
- }
181
-
182
- /* -- content -------------------------------------------------------------- */
183
- .md-typeset h1,
184
- .md-typeset h2,
185
- .md-typeset h3,
186
- .md-typeset h4 {
187
- font-family: var(--dot-font-body);
188
- letter-spacing: -0.02em;
189
- color: var(--dot-fg);
190
- }
191
-
192
- .md-typeset h1 {
193
- font-weight: 700;
194
- font-size: 2.2rem;
195
- line-height: 1.15;
196
- margin-bottom: 0.6em;
197
- background: linear-gradient(180deg, #ffffff 0%, #cbd5e1 100%);
198
- -webkit-background-clip: text;
199
- background-clip: text;
200
- color: transparent;
201
- }
202
-
203
- .md-typeset h2 {
204
- font-weight: 600;
205
- font-size: 1.6rem;
206
- margin-top: 2.4em;
207
- padding-top: 0.4em;
208
- border-top: 1px solid var(--dot-border);
209
- }
210
-
211
- .md-typeset h3 {
212
- font-weight: 600;
213
- font-size: 1.2rem;
214
- color: var(--dot-green-bright);
215
- }
216
-
217
- .md-typeset a {
218
- text-decoration: none;
219
- border-bottom: 1px solid transparent;
220
- transition: border-color 120ms ease, color 120ms ease;
221
- }
222
- .md-typeset a:hover {
223
- border-bottom-color: var(--dot-green-bright);
224
- color: var(--dot-green-bright);
225
- }
226
-
227
- /* -- code blocks ---------------------------------------------------------- */
228
- .md-typeset pre > code,
229
- .md-typeset .highlight pre {
230
- background-color: var(--dot-bg-elev-2);
231
- border: 1px solid var(--dot-border);
232
- border-radius: 8px;
233
- }
234
- .md-typeset code {
235
- background-color: rgba(126, 231, 135, 0.08);
236
- border: 1px solid rgba(126, 231, 135, 0.15);
237
- color: var(--dot-green-bright);
238
- border-radius: 4px;
239
- padding: 0.1em 0.35em;
240
- font-size: 0.88em;
241
- }
242
- .md-typeset pre > code {
243
- background: transparent;
244
- border: none;
245
- color: var(--dot-fg);
246
- padding: 0;
247
- }
248
-
249
- /* -- tables --------------------------------------------------------------- */
250
- .md-typeset table:not([class]) {
251
- border: 1px solid var(--dot-border);
252
- border-radius: 8px;
253
- overflow: hidden;
254
- font-size: 0.8rem;
255
- }
256
- .md-typeset table:not([class]) th {
257
- background: var(--dot-bg-elev);
258
- color: var(--dot-fg);
259
- font-weight: 600;
260
- border-bottom: 1px solid var(--dot-border-strong);
261
- }
262
- .md-typeset table:not([class]) tr:hover {
263
- background: rgba(126, 231, 135, 0.03);
264
- }
265
-
266
- /* -- admonitions ---------------------------------------------------------- */
267
- .md-typeset .admonition,
268
- .md-typeset details {
269
- background: var(--dot-bg-elev);
270
- border: 1px solid var(--dot-border);
271
- border-left: 3px solid var(--dot-green);
272
- border-radius: 8px;
273
- box-shadow: none;
274
- }
275
- .md-typeset .admonition-title,
276
- .md-typeset summary {
277
- background: transparent;
278
- border-bottom: 1px solid var(--dot-border);
279
- font-weight: 600;
280
- }
281
-
282
- /* -- grid cards ----------------------------------------------------------- */
283
- .md-typeset .grid.cards > :is(ul, ol) > li,
284
- .md-typeset .grid.cards > .card {
285
- background: var(--dot-bg-elev);
286
- border: 1px solid var(--dot-border);
287
- border-radius: 12px;
288
- padding: 1.2rem;
289
- transition: transform 180ms ease, border-color 180ms ease,
290
- box-shadow 180ms ease, background 180ms ease;
291
- position: relative;
292
- overflow: hidden;
293
- }
294
- .md-typeset .grid.cards > :is(ul, ol) > li::before {
295
- content: "";
296
- position: absolute;
297
- inset: 0;
298
- background: radial-gradient(
299
- circle at top left,
300
- rgba(126, 231, 135, 0.06),
301
- transparent 60%
302
- );
303
- opacity: 0;
304
- transition: opacity 220ms ease;
305
- pointer-events: none;
306
- }
307
- .md-typeset .grid.cards > :is(ul, ol) > li:hover {
308
- transform: translateY(-2px);
309
- border-color: rgba(126, 231, 135, 0.35);
310
- background: var(--dot-bg-elev-2);
311
- box-shadow: 0 8px 24px -8px rgba(0, 0, 0, 0.5),
312
- 0 0 0 1px rgba(126, 231, 135, 0.08) inset;
313
- }
314
- .md-typeset .grid.cards > :is(ul, ol) > li:hover::before {
315
- opacity: 1;
316
- }
317
- .md-typeset .grid.cards > :is(ul, ol) > li > :first-child {
318
- margin-top: 0;
319
- }
320
- .md-typeset .grid.cards > :is(ul, ol) > li strong {
321
- color: var(--dot-green-bright);
322
- font-weight: 600;
323
- font-size: 1rem;
324
- display: block;
325
- margin-bottom: 0.4rem;
326
- }
327
- .md-typeset .grid.cards > :is(ul, ol) > li .twemoji,
328
- .md-typeset .grid.cards > :is(ul, ol) > li svg {
329
- color: var(--dot-green);
330
- fill: var(--dot-green);
331
- height: 1.4rem;
332
- width: 1.4rem;
333
- margin-bottom: 0.6rem;
334
- }
335
-
336
- /* -- hero banner (used by landing page) ----------------------------------- */
337
- .dot-hero {
338
- padding: 3rem 0 2.4rem;
339
- margin: -1.6rem -0.8rem 2.4rem;
340
- text-align: center;
341
- border-bottom: 1px solid var(--dot-border);
342
- position: relative;
343
- background: radial-gradient(
344
- ellipse 60% 100% at 50% 0%,
345
- rgba(126, 231, 135, 0.08),
346
- transparent 70%
347
- );
348
- }
349
- .dot-hero h1 {
350
- font-size: 3rem;
351
- line-height: 1.05;
352
- margin-bottom: 0.4em;
353
- padding: 0;
354
- border: none;
355
- }
356
- .dot-hero .tagline {
357
- font-size: 1.1rem;
358
- color: var(--dot-fg-muted);
359
- max-width: 40rem;
360
- margin: 0 auto 1.4rem;
361
- }
362
- .dot-hero .buttons {
363
- display: flex;
364
- gap: 0.6rem;
365
- justify-content: center;
366
- flex-wrap: wrap;
367
- }
368
- .dot-hero .buttons a {
369
- display: inline-flex;
370
- align-items: center;
371
- gap: 0.4rem;
372
- padding: 0.6rem 1.1rem;
373
- border-radius: 8px;
374
- font-weight: 500;
375
- font-size: 0.9rem;
376
- text-decoration: none;
377
- border: 1px solid var(--dot-border-strong);
378
- color: var(--dot-fg);
379
- transition: all 160ms ease;
380
- }
381
- .dot-hero .buttons a.primary {
382
- background: var(--dot-green);
383
- color: var(--dot-bg);
384
- border-color: var(--dot-green);
385
- font-weight: 600;
386
- }
387
- .dot-hero .buttons a.primary:hover {
388
- background: var(--dot-green-bright);
389
- border-color: var(--dot-green-bright);
390
- transform: translateY(-1px);
391
- }
392
- .dot-hero .buttons a:not(.primary):hover {
393
- border-color: var(--dot-green);
394
- color: var(--dot-green-bright);
395
- }
396
-
397
- /* -- search --------------------------------------------------------------- */
398
- .md-search__form {
399
- background: var(--dot-bg-elev);
400
- border: 1px solid var(--dot-border);
401
- border-radius: 8px;
402
- }
403
- .md-search__form:hover,
404
- .md-search__input:focus + .md-search__icon,
405
- .md-search__form:focus-within {
406
- border-color: var(--dot-green);
407
- background: var(--dot-bg-elev-2);
408
- }
409
- .md-search__input {
410
- color: var(--dot-fg);
411
- }
412
- .md-search__input::placeholder {
413
- color: var(--dot-fg-subtle);
414
- }
415
-
416
- /* -- footer --------------------------------------------------------------- */
417
- .md-footer {
418
- border-top: 1px solid var(--dot-border);
419
- }
420
- .md-footer-meta {
421
- background: var(--dot-bg);
422
- border-top: 1px solid var(--dot-border);
423
- }
424
- .md-copyright {
425
- color: var(--dot-fg-subtle);
426
- font-size: 0.72rem;
427
- }
428
-
429
- /* -- scrollbar (webkit) --------------------------------------------------- */
430
- ::-webkit-scrollbar {
431
- width: 10px;
432
- height: 10px;
433
- }
434
- ::-webkit-scrollbar-track {
435
- background: transparent;
436
- }
437
- ::-webkit-scrollbar-thumb {
438
- background: var(--dot-border-strong);
439
- border-radius: 8px;
440
- border: 2px solid var(--dot-bg);
441
- }
442
- ::-webkit-scrollbar-thumb:hover {
443
- background: var(--dot-green-dim);
444
- }
@@ -1,10 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # Theme Gallery
6
-
7
- Themes are auto-generated from your wallpapers — the available set depends on what's present on your system. Run `dot theme list` to see what's discovered.
8
-
9
- See [Theme Reference](../reference/THEMES.md) for the wallpaper-driven engine.
10
- See [Theming Guide](../guides/THEMING.md) for setup, switching, and the K-Means CIELAB pipeline.
@@ -1,30 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # Visual Integrity Report
6
-
7
- Generated: 2026-04-08
8
- Scope: terminal theme SSOT, shell first-paint path, font rendering, and cross-platform template intent.
9
-
10
- | Metric | Current | Target | Status |
11
- | :--- | :--- | :--- | :--- |
12
- | Contrast (APCA) | `macos-monterey-dark` body text `Lc 90+`, critical UI `Lc 95+` | `Lc 75+` body, `Lc 90+` critical | Pass |
13
- | Startup Time | `bash 25ms`, `zsh 35ms`, `fish 25ms` | `< 100ms` | Pass |
14
- | Color DeltaE | SSOT palette unified across Ghostty/Kitty/Alacritty/WezTerm; no runtime probe yet | `< 2.0` | Needs instrumentation |
15
-
16
- ## Findings
17
-
18
- - Theme colors are already centralized in `.chezmoidata/themes.toml`, but accessibility intent was implicit. The active theme now carries explicit OKLCH/APCA metadata.
19
- - First-prompt Fish initialization still performed live CLI work when cache artifacts were present. The prompt path now sources prewarmed cache files first and only regenerates on cache miss.
20
- - Terminal templates were palette-consistent, but rendering policy was inconsistent. macOS now prefers Display P3 and CoreText-friendly metrics; Linux/Wayland templates prefer more conservative opacity and FreeType-safe fallbacks.
21
-
22
- ## Edge Cases
23
-
24
- - Wayland fontconfig now sets `rgba` declaratively from feature flags to avoid color fringing on mixed-density Linux panels.
25
- - Ghostty, Kitty, Alacritty, and WezTerm now share the same terminal ramp while allowing platform-specific font fallback and window-compositor behavior.
26
- - WSL parity is still template-capable, but DeltaE validation is not yet automated against Windows Terminal serialization.
27
-
28
- ## Next Step
29
-
30
- Implement a small palette audit utility that computes APCA and DeltaE from `.chezmoidata/themes.toml` so the report can become test-backed rather than declarative.
@@ -1,78 +0,0 @@
1
- <svg width="800" height="450" viewBox="0 0 800 450" xmlns="http://www.w3.org/2000/svg">
2
- <!-- Background Shadow -->
3
- <rect x="10" y="10" width="780" height="430" rx="12" fill="rgba(0,0,0,0.3)" filter="blur(10px)" />
4
-
5
- <!-- Terminal Window -->
6
- <rect x="20" y="20" width="760" height="410" rx="10" fill="#1e1e2e" stroke="#313244" stroke-width="1" />
7
-
8
- <!-- Window Title Bar -->
9
- <path d="M20 30 a10 10 0 0 1 10 -10 h740 a10 10 0 0 1 10 10 v20 h-760 z" fill="#181825" />
10
-
11
- <!-- macOS Buttons -->
12
- <circle cx="40" cy="35" r="6" fill="#f38ba8" />
13
- <circle cx="60" cy="35" r="6" fill="#fab387" />
14
- <circle cx="80" cy="35" r="6" fill="#a6e3a1" />
15
-
16
- <!-- Title -->
17
- <text x="400" y="38" font-family="JetBrains Mono, monospace" font-size="12" fill="#bac2de" text-anchor="middle">~/.dotfiles — zsh</text>
18
-
19
- <!-- Mock Terminal Content -->
20
- <g font-family="JetBrains Mono, monospace" font-size="13">
21
- <!-- Prompt + command -->
22
- <text x="40" y="75" fill="#a6e3a1">&#10148;</text>
23
- <text x="60" y="75" fill="#cdd6f4">dot doctor</text>
24
-
25
- <!-- Section: Dotfiles Core -->
26
- <text x="40" y="105" fill="#89b4fa" font-weight="bold">Dotfiles Core</text>
27
- <text x="40" y="125" fill="#a6e3a1"> &#10003; chezmoi</text>
28
- <text x="220" y="125" fill="#585b70">2.47.1 (mise)</text>
29
- <text x="40" y="145" fill="#a6e3a1"> &#10003; git</text>
30
- <text x="220" y="145" fill="#585b70">2.49.0 (system)</text>
31
- <text x="40" y="165" fill="#a6e3a1"> &#10003; age encryption</text>
32
- <text x="220" y="165" fill="#585b70">key present</text>
33
-
34
- <!-- Section: Shell Environment -->
35
- <text x="40" y="195" fill="#89b4fa" font-weight="bold">Shell Environment</text>
36
- <text x="40" y="215" fill="#a6e3a1"> &#10003; zsh</text>
37
- <text x="220" y="215" fill="#585b70">5.9.0 (system)</text>
38
- <text x="40" y="235" fill="#a6e3a1"> &#10003; starship</text>
39
- <text x="220" y="235" fill="#585b70">1.22.1 (mise)</text>
40
- <text x="40" y="255" fill="#a6e3a1"> &#10003; zoxide</text>
41
- <text x="220" y="255" fill="#585b70">0.9.7 (mise)</text>
42
-
43
- <!-- Section: CLI Tools -->
44
- <text x="420" y="105" fill="#89b4fa" font-weight="bold">CLI Tools</text>
45
- <text x="420" y="125" fill="#a6e3a1"> &#10003; rg (ripgrep)</text>
46
- <text x="600" y="125" fill="#585b70">14.1.1</text>
47
- <text x="420" y="145" fill="#a6e3a1"> &#10003; bat</text>
48
- <text x="600" y="145" fill="#585b70">0.25.0</text>
49
- <text x="420" y="165" fill="#a6e3a1"> &#10003; fzf</text>
50
- <text x="600" y="165" fill="#585b70">0.60.3</text>
51
-
52
- <!-- Section: Security -->
53
- <text x="420" y="195" fill="#89b4fa" font-weight="bold">Security</text>
54
- <text x="420" y="215" fill="#a6e3a1"> &#10003; SSH keys</text>
55
- <text x="600" y="215" fill="#585b70">ed25519</text>
56
- <text x="420" y="235" fill="#a6e3a1"> &#10003; GPG signing</text>
57
- <text x="600" y="235" fill="#585b70">configured</text>
58
- <text x="420" y="255" fill="#a6e3a1"> &#10003; secrets (age)</text>
59
- <text x="600" y="255" fill="#585b70">encrypted</text>
60
-
61
- <!-- Performance line -->
62
- <text x="40" y="290" fill="#89b4fa" font-weight="bold">Performance</text>
63
- <text x="40" y="310" fill="#a6e3a1"> &#10003; zsh startup</text>
64
- <text x="220" y="310" fill="#585b70">12ms</text>
65
-
66
- <!-- Score -->
67
- <text x="40" y="350" fill="#a6e3a1" font-weight="bold">Score: 95/100 — Excellent</text>
68
- <text x="40" y="370" fill="#585b70">18 passed, 0 errors, 1 warning</text>
69
-
70
- <!-- New prompt -->
71
- <text x="40" y="405" fill="#a6e3a1">&#10148;</text>
72
- <text x="60" y="405" fill="#cdd6f4">~/.dotfiles</text>
73
- <text x="170" y="405" fill="#f5c2e7">on main</text>
74
- <rect x="275" y="393" width="8" height="16" fill="#cdd6f4">
75
- <animate attributeName="opacity" values="1;0;1" dur="1s" repeatCount="indefinite" />
76
- </rect>
77
- </g>
78
- </svg>
package/scripts/README.md DELETED
@@ -1,123 +0,0 @@
1
- # `scripts/` — Framework Code
2
-
3
- Everything in this directory is **framework code**. Nothing here
4
- deploys to `~/`; chezmoi ignores the whole tree (see
5
- `.chezmoiignore`). Scripts are invoked by the `dot` CLI, by CI
6
- workflows, by `chezmoi apply` hooks, or by hand.
7
-
8
- ## Subtree map
9
-
10
- Per the repository reorg (RFC `docs/operations/RFC_v0_2_503_reorganization.md`),
11
- **repo-only ops** (CI, release, maintenance, docs-generation) have
12
- moved to the top-level `tools/` tree. `scripts/` retains the
13
- **runtime-invoked** scripts that the `dot` CLI dispatches to plus a
14
- few specialised subtrees.
15
-
16
- ### `scripts/` (CLI dispatch + specialised subtrees)
17
-
18
- | Path | Purpose | Touched by |
19
- |---|---|---|
20
- | `scripts/dot/commands/` | Per-subcommand handlers for the `dot` CLI. Sources `lib/dot/*.sh` (moved out of this tree in the Phase 1 reorg). | Dispatched by `bin/dot` |
21
- | `scripts/dot/powershell/` | Native PowerShell module (`Dot.psm1`) exporting `Get-DotVersion` / `Invoke-DotHelp` / `Test-DotAgentsSync`. | `bin/dot.ps1` |
22
- | `scripts/dot/data/` | Per-command static data (registry seeds, palette tables). | `scripts/dot/commands/*` |
23
- | `scripts/lib/` | Cross-cutting library helpers reused across multiple scripts. Example: `secrets_provider.sh` (keychain / pass / age dispatch). | `scripts/dot/commands/*`, ops scripts |
24
- | `scripts/diagnostics/` | `doctor.sh` and its helpers — long-form environment health check. | `dot doctor` |
25
- | `scripts/security/` | Security-domain ops: `check-disclosure-key-expiry.sh`, `lock-configs.sh`, etc. | `dot security`, CI |
26
- | `scripts/secrets/` | Secret-bucket utilities (rotation, audit). | `dot secrets` subcommands |
27
- | `scripts/theme/` | Wallpaper-to-palette extraction logic. | `dot theme rebuild` |
28
- | `scripts/tools/` | Tool-helpers shipped via `dot tools` (e.g. `cmatrix.sh`, `emoji-picker.sh`, `figlet-banner.sh`, `log-rotate.sh`). Runtime-invoked. | `dot tools`, `dot env` |
29
- | `scripts/tuning/` | Opt-in OS tuning scripts (`macos.sh`, `linux.sh`). | `dot tune`, manual invocation |
30
- | `scripts/ops/` | Repo-wide ops: `rollback.sh`, etc. | `dot rollback`, maintenance |
31
- | `scripts/fonts/` | Nerd Font install helpers. | `dot fonts` |
32
- | `scripts/git-hooks/` | Git hooks not managed by chezmoi (kept here for portable install). | `install/provision/*` |
33
- | `scripts/qa/` | Quality-assurance helpers (PowerShell contract tests, version-consistency checks, scorecard snapshot, etc). | `.github/workflows/pr-signature.yml`, `powershell-contract.yml`, doc-drift |
34
- | `scripts/demo/` | Demonstration helpers (recordings, screenshots). | Manual |
35
- | `scripts/version-sync.sh` | Bulk version-string propagator (`scripts/qa/check-version-consistency.sh` is the verifier). | Release flow |
36
- | `scripts/uninstall.sh` | Reverse-of-`install.sh` — user-invoked. | Manual |
37
-
38
- ### `tools/` (repo-only ops, not distributable)
39
-
40
- | Path | Purpose | Touched by |
41
- |---|---|---|
42
- | `tools/ci/` | CI-only helpers: `dot-cli-startup-bench.sh`, `install-chezmoi-verified.sh`, `windows-smoke-test.ps1`, `run-coverage.sh`, etc. | `.github/workflows/*` |
43
- | `tools/release/` | Release-time tasks. | Release workflow |
44
- | `tools/maintenance/` | Recurring upkeep: `check-updates.sh`, etc. | Cron, manual |
45
- | `tools/docs/` | Documentation-generation helpers (manual builds, screenshot CI, `generate-command-index.sh`). | `manual-publish.yml`, `dot manual`, doc-drift |
46
-
47
- ## `scripts/dot/` breakdown
48
-
49
- The `dot` CLI is implemented as `bin/dot`
50
- (dispatcher) + `scripts/dot/commands/<cmd>.sh` (per-command
51
- handlers) + `lib/dot/*.sh` (shared helpers — moved out of
52
- `scripts/dot/lib/` in the Phase 1 reorg per the
53
- [reorganisation RFC](../docs/operations/RFC_v0_2_503_reorganization.md)).
54
-
55
- | Path | Purpose |
56
- |---|---|
57
- | `scripts/dot/commands/` | One file per `dot <cmd>` subcommand. Each defines a `cmd_<name>()` function the dispatcher calls. Sources the library via `$SCRIPT_DIR/../../../lib/dot/<X>.sh`. |
58
- | `scripts/dot/powershell/` | Native PowerShell module — see top-level table. |
59
- | **`lib/dot/utils.sh`** | Common helpers (resolve_source_dir, validate_name, die, run_script, etc.). |
60
- | **`lib/dot/ui.sh`** | Single source of truth for CLI output (ui_ok/warn/err/info, ui_header, ui_table_*, ui_spinner_*, ui_confirm, ...). |
61
- | **`lib/dot/platform.sh`** | OS / shell / WSL detection, path translation. |
62
- | **`lib/dot/log.sh`** | Structured logging (JSONL audit log when `DOTFILES_AUDIT_LOG=1`). |
63
- | **`lib/dot/bento.sh`** | The "bento box" layout primitive used by `dot health` and friends. |
64
-
65
- ## Adding a new subcommand
66
-
67
- 1. Create `scripts/dot/commands/<name>.sh`:
68
-
69
- ```bash
70
- #!/usr/bin/env bash
71
- # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
72
- set -euo pipefail
73
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
74
- # shellcheck source=../lib/utils.sh
75
- source "$SCRIPT_DIR/../lib/utils.sh"
76
-
77
- dot_ui_command_banner "<Title>" "${1:-}"
78
-
79
- cmd_<name>() {
80
- # ...
81
- }
82
-
83
- cmd_<name>_help() {
84
- cat <<-EOF
85
- Usage: dot <name> [args]
86
- # ...
87
- EOF
88
- }
89
- ```
90
-
91
- 2. Add a dispatch arm in `bin/dot`:
92
-
93
- ```bash
94
- <name>) load_commands "<name>"; cmd_<name> "$@" ;;
95
- ```
96
-
97
- 3. Document it in `docs/manual/03-reference/01-dot-cli.md` and add
98
- to `docs/manual/command-index.md`.
99
-
100
- 4. Add a help-table entry in `bin/dot`'s
101
- help renderer.
102
-
103
- 5. Add a unit test under `tests/unit/<domain>/test_<name>.sh`
104
- (run with `./tests/framework/test_runner.sh`).
105
-
106
- ## Conventions
107
-
108
- - **Shell style**: 2-space indent, `set -euo pipefail`, shellcheck-clean
109
- with the project's flags (`--severity=error -e SC1091 -e SC2030 -e SC2031`).
110
- - **Formatting**: `shfmt -i 2 -ci`.
111
- - **Output**: NEVER `printf` raw ANSI. Source `scripts/dot/lib/ui.sh`
112
- and use `ui_ok`, `ui_table_*`, etc.
113
- - **Exit codes**: 1 = bad usage, 2 = no provider / dependency missing,
114
- 3 = empty result / not found, ≥4 = provider-specific. Document
115
- per-command in the help text.
116
- - **Validation**: Always `validate_name "$arg" "tool name"` before
117
- passing user input to `mise`, `gh`, `ssh`, etc.
118
-
119
- ## See also
120
-
121
- - `../docs/STRUCTURE.md` — full repository map.
122
- - `docs/manual/03-reference/01-dot-cli.md` — every `dot <cmd>` documented.
123
- - `scripts/dot/lib/ui.sh` — the UI primitive library (always source this for output).