@sebastienrousseau/dotfiles 0.2.519 → 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 (306) hide show
  1. package/CHANGELOG.md +200 -0
  2. package/LICENSE-APACHE +190 -0
  3. package/{LICENSE → LICENSE-MIT} +1 -1
  4. package/README.md +1172 -166
  5. package/install.sh +77 -11
  6. package/package.json +8 -8
  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/CNAME +0 -1
  12. package/docs/CONFIG_STRATEGY.md +0 -124
  13. package/docs/COPYRIGHT +0 -7
  14. package/docs/GOVERNANCE.md +0 -98
  15. package/docs/MAINTAINERS.md +0 -41
  16. package/docs/NAMING_CONVENTIONS.md +0 -102
  17. package/docs/OPENCODE.md +0 -127
  18. package/docs/README.md +0 -84
  19. package/docs/STRUCTURE.md +0 -102
  20. package/docs/adr/ADR-001-ci-cd-pipeline.md +0 -118
  21. package/docs/adr/ADR-002-shell-performance.md +0 -130
  22. package/docs/adr/ADR-003-security-first.md +0 -158
  23. package/docs/adr/ADR-004-cli-architecture.md +0 -171
  24. package/docs/adr/ADR-005-chezmoi-choice.md +0 -99
  25. package/docs/adr/ADR-006-shell-selection.md +0 -124
  26. package/docs/adr/ADR-007-multi-shell-parity.md +0 -62
  27. package/docs/adr/ADR-008-alias-system-architecture.md +0 -95
  28. package/docs/adr/ADR-009-wallpaper-driven-theming.md +0 -131
  29. package/docs/adr/ADR-010-starship-transient-prompt.md +0 -144
  30. package/docs/adr/ADR-011-nushell-tier3-keep.md +0 -144
  31. package/docs/adr/ADR-012-ai-fleet-local-proxy.md +0 -79
  32. package/docs/adr/README.md +0 -40
  33. package/docs/architecture/AI_COST_OPTIMIZATION.md +0 -144
  34. package/docs/architecture/ARCHITECTURE.md +0 -117
  35. package/docs/architecture/INTEROP.md +0 -44
  36. package/docs/architecture/REPO_LAYOUT.md +0 -241
  37. package/docs/architecture/WALKTHROUGH.md +0 -86
  38. package/docs/architecture/fleet-deployment.md +0 -77
  39. package/docs/archive/EUXIS_2026_REVIEW.md +0 -127
  40. package/docs/archive/LEGACY_ROADMAP.md +0 -6
  41. package/docs/archive/MILESTONE_v0.2.493.md +0 -47
  42. package/docs/archive/PLAN.md +0 -199
  43. package/docs/archive/REPO_AUDIT.md +0 -31
  44. package/docs/articles/.pages +0 -6
  45. package/docs/articles/2026-07-05-custom-mkdocs-material-dark-theme.md +0 -216
  46. package/docs/articles/2026-07-05-fish-startup-abbr.md +0 -153
  47. package/docs/articles/2026-07-05-master-to-main-rename-runbook.md +0 -128
  48. package/docs/articles/index.md +0 -36
  49. package/docs/guides/INSTALL.md +0 -144
  50. package/docs/guides/NEOVIM_IDE_GUIDE.md +0 -61
  51. package/docs/guides/THEMING.md +0 -230
  52. package/docs/guides/TROUBLESHOOTING.md +0 -176
  53. package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +0 -792
  54. package/docs/index.md +0 -132
  55. package/docs/interop/A2A.md +0 -39
  56. package/docs/interop/POWERSHELL.md +0 -102
  57. package/docs/manual/00-introduction.md +0 -89
  58. package/docs/manual/01-concepts/01-architecture.md +0 -138
  59. package/docs/manual/01-concepts/02-trust-model.md +0 -183
  60. package/docs/manual/01-concepts/03-theme-engine.md +0 -186
  61. package/docs/manual/01-concepts/04-fleet.md +0 -148
  62. package/docs/manual/01-concepts/05-self-healing.md +0 -204
  63. package/docs/manual/02-tutorials/01-first-install.md +0 -197
  64. package/docs/manual/02-tutorials/02-add-wallpaper.md +0 -216
  65. package/docs/manual/02-tutorials/03-create-profile.md +0 -244
  66. package/docs/manual/02-tutorials/04-encrypt-secret.md +0 -281
  67. package/docs/manual/02-tutorials/05-deploy-fleet.md +0 -283
  68. package/docs/manual/03-reference/01-dot-cli.md +0 -450
  69. package/docs/manual/03-reference/02-config-files.md +0 -265
  70. package/docs/manual/03-reference/03-environment.md +0 -124
  71. package/docs/manual/03-reference/04-templates.md +0 -190
  72. package/docs/manual/03-reference/05-feature-flags.md +0 -187
  73. package/docs/manual/04-cookbook/01-recipes.md +0 -285
  74. package/docs/manual/04-cookbook/02-troubleshooting.md +0 -351
  75. package/docs/manual/04-cookbook/03-faq.md +0 -175
  76. package/docs/manual/05-appendices/A-platform-matrix.md +0 -101
  77. package/docs/manual/05-appendices/B-security-checklist.md +0 -85
  78. package/docs/manual/05-appendices/C-glossary.md +0 -40
  79. package/docs/manual/05-appendices/D-bibliography.md +0 -58
  80. package/docs/manual/05-appendices/E-license.md +0 -38
  81. package/docs/manual/_toc.yml +0 -58
  82. package/docs/manual/command-index.md +0 -155
  83. package/docs/manual/concept-index.md +0 -168
  84. package/docs/manual/index.md +0 -66
  85. package/docs/operations/ARCHITECTURE_ROADMAP.md +0 -7
  86. package/docs/operations/ATTESTATION.md +0 -44
  87. package/docs/operations/CI_CADENCE.md +0 -107
  88. package/docs/operations/CI_COMPOSITES.md +0 -156
  89. package/docs/operations/COMPLETIONS.md +0 -123
  90. package/docs/operations/COVERAGE.md +0 -204
  91. package/docs/operations/DRIFT.md +0 -107
  92. package/docs/operations/HARD_AUDIT_2026.md +0 -631
  93. package/docs/operations/MAINTENANCE.md +0 -63
  94. package/docs/operations/MANIFEST.md +0 -127
  95. package/docs/operations/MIGRATION.md +0 -109
  96. package/docs/operations/OPERATIONS.md +0 -188
  97. package/docs/operations/PERFORMANCE.md +0 -133
  98. package/docs/operations/REGISTRY.md +0 -90
  99. package/docs/operations/RELEASE_PIPELINE.md +0 -128
  100. package/docs/operations/RELIABILITY.md +0 -122
  101. package/docs/operations/RFC_v0_2_503_reorganization.md +0 -280
  102. package/docs/operations/ROADMAP.md +0 -10
  103. package/docs/operations/ROADMAP_2026.md +0 -7
  104. package/docs/operations/ROADMAP_V0_2_503.md +0 -10
  105. package/docs/operations/TESTING.md +0 -216
  106. package/docs/operations/TRACEABILITY.md +0 -43
  107. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +0 -65
  108. package/docs/operations/VERSION_SYNC.md +0 -393
  109. package/docs/reference/ALIASES.md +0 -131
  110. package/docs/reference/ALIASES_CHEATSHEET.md +0 -32
  111. package/docs/reference/ALIASES_DEPRECATIONS.md +0 -13
  112. package/docs/reference/FEATURES.md +0 -66
  113. package/docs/reference/FONTS.md +0 -112
  114. package/docs/reference/POWERSHELL_PARITY.md +0 -82
  115. package/docs/reference/PROFILES.md +0 -69
  116. package/docs/reference/SCREENSHOTS.md +0 -121
  117. package/docs/reference/SCRIPTS.md +0 -71
  118. package/docs/reference/SUPPORT_MATRIX.md +0 -80
  119. package/docs/reference/THEMES.md +0 -117
  120. package/docs/reference/TOOLS.md +0 -110
  121. package/docs/reference/UTILS.md +0 -242
  122. package/docs/registry.json +0 -6
  123. package/docs/schema/dot-env-v1.json +0 -110
  124. package/docs/schema/dot-registry-v1.json +0 -33
  125. package/docs/security/AI_ACT_COMPLIANCE.md +0 -94
  126. package/docs/security/AUDIT_BYPASS.md +0 -103
  127. package/docs/security/AUTOMATION_SECRETS.md +0 -26
  128. package/docs/security/CI_EGRESS_ALLOWLIST.md +0 -127
  129. package/docs/security/CI_PINNING.md +0 -129
  130. package/docs/security/COMMIT_SIGNING.md +0 -138
  131. package/docs/security/COMPLIANCE.md +0 -458
  132. package/docs/security/DEPS_DEV_EXCEPTIONS.md +0 -86
  133. package/docs/security/DISCLOSURE.md +0 -130
  134. package/docs/security/ENCRYPTION.md +0 -57
  135. package/docs/security/FMEA.md +0 -159
  136. package/docs/security/FUZZING.md +0 -114
  137. package/docs/security/HISTORY_FILTERING.md +0 -132
  138. package/docs/security/INCIDENT_RESPONSE.md +0 -579
  139. package/docs/security/INSTALL_VERIFICATION.md +0 -122
  140. package/docs/security/KEYS.md +0 -49
  141. package/docs/security/KEY_ROTATION.md +0 -303
  142. package/docs/security/MCP_POLICY.md +0 -78
  143. package/docs/security/POLICY_RELEASES.md +0 -37
  144. package/docs/security/README.md +0 -28
  145. package/docs/security/SCORECARD.md +0 -195
  146. package/docs/security/SECRETS.md +0 -158
  147. package/docs/security/SECURITY.md +0 -45
  148. package/docs/security/SECURITY_CHECKLIST.md +0 -55
  149. package/docs/security/SHELL_EXEMPTIONS.md +0 -145
  150. package/docs/security/SOUP_REGISTER.md +0 -36
  151. package/docs/security/THREAT_MODEL.md +0 -130
  152. package/docs/security/VERIFICATION_VALIDATION.md +0 -228
  153. package/docs/security/VERIFY_RELEASE.md +0 -201
  154. package/docs/security/security-pubkey.asc +0 -15
  155. package/docs/stylesheets/extra.css +0 -444
  156. package/docs/themes/README.md +0 -10
  157. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +0 -30
  158. package/docs/themes/hero-shot.svg +0 -78
  159. package/scripts/README.md +0 -123
  160. package/scripts/ci/check-copyright-headers.sh +0 -8
  161. package/scripts/ci/check-shell-preamble.sh +0 -8
  162. package/scripts/ci/guard-gitleaks-checkout.sh +0 -8
  163. package/scripts/demo/record.sh +0 -43
  164. package/scripts/diagnostics/a2a-conformance.sh +0 -163
  165. package/scripts/diagnostics/alias-governance.sh +0 -138
  166. package/scripts/diagnostics/aliases-cheatsheet.sh +0 -74
  167. package/scripts/diagnostics/aliases-manifest.sh +0 -77
  168. package/scripts/diagnostics/benchmark.sh +0 -408
  169. package/scripts/diagnostics/conflicts.sh +0 -73
  170. package/scripts/diagnostics/doctor-unified.sh +0 -39
  171. package/scripts/diagnostics/doctor.sh +0 -751
  172. package/scripts/diagnostics/drift-dashboard.sh +0 -202
  173. package/scripts/diagnostics/health.sh +0 -623
  174. package/scripts/diagnostics/history-analysis.sh +0 -86
  175. package/scripts/diagnostics/mcp-doctor.sh +0 -582
  176. package/scripts/diagnostics/perf.sh +0 -453
  177. package/scripts/diagnostics/scorecard.sh +0 -119
  178. package/scripts/diagnostics/secret-governance.sh +0 -65
  179. package/scripts/diagnostics/security-score.sh +0 -467
  180. package/scripts/diagnostics/smoke-test.sh +0 -88
  181. package/scripts/diagnostics/snapshot.sh +0 -90
  182. package/scripts/diagnostics/verify.sh +0 -108
  183. package/scripts/diagnostics/verify_state.sh +0 -73
  184. package/scripts/diagnostics/version-locks.sh +0 -94
  185. package/scripts/diagnostics/workstation-attestation.sh +0 -187
  186. package/scripts/dot/commands/agent.sh +0 -485
  187. package/scripts/dot/commands/agents.sh +0 -336
  188. package/scripts/dot/commands/ai.sh +0 -587
  189. package/scripts/dot/commands/aliases.sh +0 -277
  190. package/scripts/dot/commands/appearance.sh +0 -110
  191. package/scripts/dot/commands/completion.sh +0 -134
  192. package/scripts/dot/commands/core.sh +0 -217
  193. package/scripts/dot/commands/diagnostics.sh +0 -265
  194. package/scripts/dot/commands/env-emit.sh +0 -203
  195. package/scripts/dot/commands/fleet.sh +0 -688
  196. package/scripts/dot/commands/init.sh +0 -185
  197. package/scripts/dot/commands/lint.sh +0 -208
  198. package/scripts/dot/commands/manual.sh +0 -169
  199. package/scripts/dot/commands/meta.sh +0 -333
  200. package/scripts/dot/commands/patterns.sh +0 -55
  201. package/scripts/dot/commands/registry.sh +0 -419
  202. package/scripts/dot/commands/restore.sh +0 -232
  203. package/scripts/dot/commands/secrets.sh +0 -296
  204. package/scripts/dot/commands/security.sh +0 -102
  205. package/scripts/dot/commands/tools.sh +0 -556
  206. package/scripts/dot/data/alias-deprecations.tsv +0 -2
  207. package/scripts/dot/powershell/Dot.psm1 +0 -319
  208. package/scripts/fonts/install-nerd-fonts.sh +0 -75
  209. package/scripts/fonts/patch-fonts.sh +0 -36
  210. package/scripts/git-hooks/install.sh +0 -12
  211. package/scripts/git-hooks/pre-commit +0 -12
  212. package/scripts/git-hooks/pre-commit-audit.sh +0 -146
  213. package/scripts/git-hooks/pre-push +0 -105
  214. package/scripts/git-hooks/prepare-commit-msg +0 -29
  215. package/scripts/lib/secrets_provider.sh +0 -185
  216. package/scripts/ops/ai-setup.sh +0 -71
  217. package/scripts/ops/bundle.sh +0 -104
  218. package/scripts/ops/chaos.sh +0 -50
  219. package/scripts/ops/chezmoi-apply.sh +0 -333
  220. package/scripts/ops/chezmoi-diff.sh +0 -16
  221. package/scripts/ops/chezmoi-remove.sh +0 -46
  222. package/scripts/ops/chezmoi-update.sh +0 -63
  223. package/scripts/ops/heal-chezmoi.sh +0 -87
  224. package/scripts/ops/heal-system.sh +0 -129
  225. package/scripts/ops/heal-tools.sh +0 -297
  226. package/scripts/ops/heal.sh +0 -223
  227. package/scripts/ops/post-apply-repair.sh +0 -107
  228. package/scripts/ops/prewarm.sh +0 -128
  229. package/scripts/ops/release.sh +0 -262
  230. package/scripts/ops/rollback.sh +0 -604
  231. package/scripts/ops/setup.sh +0 -138
  232. package/scripts/ops/teleport.sh +0 -34
  233. package/scripts/qa/check-version-consistency.sh +0 -124
  234. package/scripts/qa/coverage-baseline.sh +0 -61
  235. package/scripts/qa/docs-coverage.sh +0 -112
  236. package/scripts/qa/examples-coverage.sh +0 -94
  237. package/scripts/qa/powershell-contract.ps1 +0 -95
  238. package/scripts/qa/reliability-audit.sh +0 -139
  239. package/scripts/qa/scorecard-snapshot.sh +0 -128
  240. package/scripts/qa/traceability-coverage.sh +0 -117
  241. package/scripts/qa/validate-examples.sh +0 -27
  242. package/scripts/qa/wsl-contract.sh +0 -12
  243. package/scripts/secrets/age-init.sh +0 -82
  244. package/scripts/secrets/create-secrets-file.sh +0 -46
  245. package/scripts/secrets/encrypt-ssh-key.sh +0 -44
  246. package/scripts/security/backup.sh +0 -58
  247. package/scripts/security/check-disclosure-key-expiry.sh +0 -111
  248. package/scripts/security/dns-doh.sh +0 -52
  249. package/scripts/security/encryption-check.sh +0 -55
  250. package/scripts/security/enforce-policies.sh +0 -335
  251. package/scripts/security/firewall.sh +0 -91
  252. package/scripts/security/lock-configs.sh +0 -67
  253. package/scripts/security/lock-screen.sh +0 -56
  254. package/scripts/security/manage-secrets.sh +0 -429
  255. package/scripts/security/ssh-cert.sh +0 -204
  256. package/scripts/security/telemetry-kill.sh +0 -51
  257. package/scripts/security/usb-safety.sh +0 -52
  258. package/scripts/theme/apply-gnome-theme.sh +0 -333
  259. package/scripts/theme/extract-heic-frames.sh +0 -115
  260. package/scripts/theme/extract-theme.py +0 -742
  261. package/scripts/theme/install-boot-logo.sh +0 -63
  262. package/scripts/theme/install-catppuccin-themes.sh +0 -371
  263. package/scripts/theme/install-cursors.sh +0 -26
  264. package/scripts/theme/install-file-icons.sh +0 -27
  265. package/scripts/theme/install-grub-theme.sh +0 -62
  266. package/scripts/theme/install-lock-icon.sh +0 -31
  267. package/scripts/theme/merge-wallpaper.sh +0 -146
  268. package/scripts/theme/rebuild-themes.sh +0 -544
  269. package/scripts/theme/switch.sh +0 -449
  270. package/scripts/theme/wallpaper-rotate.sh +0 -137
  271. package/scripts/theme/wallpaper-sync.sh +0 -690
  272. package/scripts/tools/cmatrix.sh +0 -22
  273. package/scripts/tools/detect-collisions.py +0 -103
  274. package/scripts/tools/emoji-picker.sh +0 -49
  275. package/scripts/tools/figlet-banner.sh +0 -19
  276. package/scripts/tools/log-rotate.sh +0 -31
  277. package/scripts/tools/lolcat-wrap.sh +0 -20
  278. package/scripts/tools/pipes.sh +0 -49
  279. package/scripts/tuning/linux.sh +0 -186
  280. package/scripts/tuning/macos.sh +0 -56
  281. package/scripts/uninstall.sh +0 -86
  282. package/scripts/version-sync.sh +0 -654
  283. package/templates/chezmoi-data/geekom-a9.toml.example +0 -21
  284. package/templates/chezmoi-data/mac-m1.toml.example +0 -16
  285. package/templates/chezmoi-data/mac-t2-linux.toml.example +0 -21
  286. package/templates/chezmoi-data/surface-pro-7p.toml.example +0 -21
  287. package/templates/projects/go/.github/workflows/ci.yml +0 -31
  288. package/templates/projects/go/README.md +0 -7
  289. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +0 -8
  290. package/templates/projects/go/go.mod +0 -3
  291. package/templates/projects/go/go.sum +0 -0
  292. package/templates/projects/molecule/README.md +0 -7
  293. package/templates/projects/molecule/converge.yml +0 -7
  294. package/templates/projects/molecule/molecule.yml +0 -16
  295. package/templates/projects/node/.github/workflows/ci.yml +0 -30
  296. package/templates/projects/node/README.md +0 -7
  297. package/templates/projects/node/package-lock.json +0 -12
  298. package/templates/projects/node/package.json +0 -10
  299. package/templates/projects/node/src/index.js +0 -3
  300. package/templates/projects/packer/README.md +0 -15
  301. package/templates/projects/packer/main.pkr.hcl +0 -15
  302. package/templates/projects/python/.github/workflows/ci.yml +0 -34
  303. package/templates/projects/python/README.md +0 -7
  304. package/templates/projects/python/pyproject.toml +0 -25
  305. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +0 -2
  306. package/templates/projects/python/tests/test_basic.py +0 -3
package/CHANGELOG.md CHANGED
@@ -2,8 +2,206 @@
2
2
 
3
3
  This file documents all notable changes to this project.
4
4
 
5
+ ## Unreleased
6
+
7
+ ## v0.2.521 — 2026-09-20
8
+
9
+ ### Changed
10
+
11
+ - Began the production-hardening roadmap with an immutable release-identity
12
+ preflight, same-commit reusable workflows, and task-scoped GitHub
13
+ authentication instead of a globally inherited token.
14
+ - Promoted the verified, release-pinned installation path and tightened the
15
+ npm bootstrap artifact contract.
16
+ - Added pure theme plans plus serialized, journaled theme transactions with
17
+ pre-apply validation and automatic file/symlink rollback on required
18
+ failures.
19
+ - Hardened AI CLI theme adapters with typed outcomes, malformed-config
20
+ preservation, compare-before-commit writes, and global/per-provider opt-outs.
21
+ - Added an independently versioned palette audit covering truecolor, xterm-256,
22
+ focus/selection contrast, perceptual separation, and color-vision simulation
23
+ across all 228 themes; stabilized semantic status colors in both modes.
24
+
25
+ ## v0.2.520 — 2026-09-13
26
+
27
+ ### Added
28
+
29
+ - `docs/guides/MACOS_ICLOUD_SYMLINKS.md`, documenting what the hook does, the
30
+ cases it refuses, and how to resolve each one by hand.
31
+ - A safety regression suite and a unit suite for the hook, covering the refusal
32
+ paths that the destructive version never had.
33
+ - Performance budgets for the shell startup path, with the budget table and its
34
+ rationale in `docs/operations/PERFORMANCE_BUDGETS.md`.
35
+ - A gate-integrity regression test asserting that the safety checks cannot be
36
+ disabled without a test failing.
37
+ - `dot mcp serve` — a real stdio Model Context Protocol server, where the
38
+ published card had previously described one that did not exist. Full
39
+ lifecycle with version negotiation across three protocol revisions,
40
+ `tools/list`, `tools/call`, resources and logging, with proper JSON-RPC
41
+ error objects. All four tools are read-only and run from closed argument
42
+ vectors without a shell; the mutating operations are deliberately
43
+ unreachable. Go, standard library only.
44
+ - A feature matrix covering every routable command, flag, environment
45
+ variable and config key, each row naming the regression test, benchmark,
46
+ example and manual section that covers it. The gate fails when a command
47
+ gains no row, or when a row names a test or example that does not exist,
48
+ so coverage cannot be claimed in the table without being written.
49
+ - `dot attest --verify` (`--json|-j`, `--max-age|-a`): checks a workstation
50
+ evidence record against the attestation policy by running `lib/wasm-tools`
51
+ as WebAssembly under `wasmtime`. The module gets stdin, stdout and a clock
52
+ and nothing else — no filesystem, no network, no environment — so the
53
+ verdict does not depend on the tools installed on the machine under review.
54
+ Eleven checks cover evidence freshness, the required identity fields, the
55
+ git signing configuration, the agent profile and MCP health.
56
+ - `scripts/diagnostics/attest-verify.sh`, the caller behind that flag: it
57
+ resolves the module and the runtime, builds the module on demand when a
58
+ Rust toolchain is present, and forwards an evidence file, a pipe, or a
59
+ fresh `dot attest --json`.
60
+ - `dot-sys` gained a real `wasm32-wasip1` target, a general JSON reader
61
+ (`dot_sys::json`), an RFC 3339 UTC parser (`dot_sys::time`), the policy
62
+ itself (`dot_sys::attest`), a `verify` subcommand, `--help` and
63
+ `--version`, two more fuzz targets (`fuzz_json`, `fuzz_verify`), a fourth
64
+ example, a second benchmark suite, and `tests/wasm.rs`, which executes the
65
+ built module in a runtime rather than merely inspecting the artefact.
66
+ - `rust.yml` gained a `wasm` job: clippy for the target, a build, an
67
+ execution assertion, the WebAssembly integration tests, the shell caller's
68
+ test, and the `.wasm` uploaded as an artefact.
69
+
70
+ ### Changed
71
+
72
+ - Bash line coverage went from 59% to **98.14%**. Roughly half of that came
73
+ from fixing the measurement rather than adding tests: untraceable lines sat
74
+ in the denominator, 540 of 706 test files discarded their traces through
75
+ `2>&1`, silent timeout kills were counted as passes, and the sweep's `PS4`
76
+ truncated at 100 characters so the figure depended on how long your checkout
77
+ path was. Correcting those alone moved it 59.36% to 72.29% with no new test
78
+ written. Both Go modules are at 100%, where fuzzing found four defects.
79
+ - The terminal palette now takes more than one colour from the wallpaper.
80
+ `term.bg` had two distinct values across all 228 themes; it now has 36, and
81
+ the status bar carries a secondary and tertiary alongside the accent. The
82
+ background is *tinted* rather than replaced — lightness is unchanged, so the
83
+ low-eye-strain surface the engine was built around is preserved, and
84
+ `DOTFILES_TERM_TINT=0` restores the flat neutrals.
85
+ - Rust is no longer managed by mise. Its plugin exports `RUSTUP_TOOLCHAIN`,
86
+ which silently overrides `rust-toolchain.toml` in every project — a
87
+ repository pinned to 1.98.0 was being built with 1.97.1, and a local "all
88
+ green" said nothing about CI. rustup governs instead, so each project's own
89
+ pin is honoured.
90
+ - `~/.cargo/config.toml` no longer sets a global `target-dir`. Cargo takes an
91
+ exclusive lock on it, so every repository sharing one path serialised: a
92
+ build in one project blocked `cargo test` in another, and cargo prints
93
+ nothing while it waits, so it read as a hang. sccache recovers the shared
94
+ dependency cache without the lock.
95
+ - mise's tool directories are promoted above Homebrew and the shims on `PATH`,
96
+ fused into the existing dedup pass rather than added as a second walk.
97
+
98
+ ### Fixed
99
+
100
+ - AI provider dispatch now uses the installed CLIs' prompt modes; OpenCode
101
+ installs through its native mise backend. Noninteractive status checks no
102
+ longer open terminal pickers. Reviewed upstream installer checksums are refreshed.
103
+ - Ollama prompts and interactive chat default to `qwen3.5:4b`; set
104
+ `DOTFILES_OLLAMA_MODEL` to select another downloaded model.
105
+ - Neovim configures the current Treesitter and mason-lspconfig APIs, preserves
106
+ custom debugger configurations, and uses Mason's Python debug adapter.
107
+ - Health checks recognize named SSH key pairs and the configured age identity;
108
+ doctor includes Codex and reports absent optional AI providers as information.
109
+ - Homebrew's rustup is available in the shared shell and Fish paths. Go uses
110
+ its system temporary directory instead of a potentially missing custom directory.
111
+ - Terminal test fixtures explicitly control `NO_COLOR`.
112
+
113
+ - `dot doctor`, `dot health`, `dot fleet`, the scorecard and the drift dashboard
114
+ no longer report permanent drift on macOS. The iCloud symlink hook is a
115
+ `run_before_` script that chezmoi lists as pending on every apply by design,
116
+ which made plain `chezmoi verify` exit 1 and every `chezmoi status` line
117
+ count read 1 on a fully synchronised machine. Those callers now pass
118
+ `--exclude=always`; files, directories, symlinks and `run_once`/`run_onchange`
119
+ scripts still count as drift.
120
+ - markdown-preview.nvim no longer blocks `dot upgrade`'s plugin sync. Its build
121
+ step ran `cd app && npm install`, which rewrote the upstream `app/yarn.lock`
122
+ on every build and left the checkout dirty, so Lazy refused to update it.
123
+ The spec now uses upstream's `mkdp#util#install`, which downloads the
124
+ prebuilt preview server and leaves the checkout untouched.
125
+
126
+ - Replaced the destructive mechanism behind the macOS iCloud symlink hook. The
127
+ previous implementation could remove real content from `~/Documents` and
128
+ `~/Desktop`; the replacement only ever removes an empty directory, refuses to
129
+ act on a non-empty one, and leaves an existing correct symlink untouched.
130
+ - Reported what it declined to do, and why, instead of failing silently.
131
+ - The health-probe record no longer claims `"engine": "wasm"` when it was
132
+ produced by a host binary. `ENGINE` is now `cfg`-selected, so the field
133
+ states where the bytes were actually computed: `wasm` from the module,
134
+ `native` from the host build. This is what makes the field evidence rather
135
+ than a label, and both halves are asserted in CI.
136
+ - Corrected the documentation that described `lib/wasm-tools` as vendored
137
+ third-party tooling or as "not actually WebAssembly": `docs/ECOSYSTEM.md`,
138
+ `docs/architecture/REPO_LAYOUT.md`, `docs/STRUCTURE.md`,
139
+ `docs/ARCHITECTURE.md`, `docs/reference/TOOLS.md` and `REUSE.toml`.
140
+ - `workbench.colorTheme` had been commented out on every machine this was
141
+ ever applied to. A template newline was chomped, welding the setting onto
142
+ the comment above it. Two thirds of the theme labels also named themes no
143
+ extension registers — "Tokyonight Mocha" and "Everforest Latte", where
144
+ Mocha and Latte are Catppuccin flavours rather than a general dark/light
145
+ suffix. The editor is now pinned to Catppuccin, and the icon theme ids are
146
+ the ones the extension actually declares.
147
+ - Twelve documented defects, each with a regression test proven to fail
148
+ against the unfixed code first: `dot theme set` aborting before its picker,
149
+ `dot fleet namespace set` reporting success while writing nothing,
150
+ `dot agent delegate` requiring a GNU `timeout` absent from stock macOS, a
151
+ registry cache keyed by path so changing the URL served a stale index for
152
+ six hours, and `dot doctor --audit` routing to a script not in the tree.
153
+ Two of the reported findings turned out to be wrong, and correcting them
154
+ was more useful than fixing them.
155
+ - `chezmoi apply` no longer silently discards edits made directly in `$HOME`.
156
+ Local drift is captured into the source instead of overwritten.
157
+ - macOS home folders (`~/Desktop`, `~/Documents`, `~/Public` and the rest) are
158
+ excluded from chezmoi management entirely, as a second layer beneath the
159
+ iCloud hook's own refusals.
160
+ - `docs-coverage.sh` and `traceability-coverage.sh` stopped masking their own
161
+ exit codes, so a failing gate now fails.
162
+ - `dot benchmark` is routed. Every layer but the router already had it.
163
+ - `dot upgrade` no longer hangs on a question nobody can see. Each phase's
164
+ output is captured to a log, so when `chezmoi update` met a locally edited
165
+ managed file it asked "has changed since chezmoi last wrote it?" on the
166
+ terminal's tty while the run looked merely slow. The step runner now closes
167
+ stdin and passes `--no-tty`, so the prompt fails fast, the step is marked
168
+ failed, and the surfaced tail names the fix (`chezmoi apply` to choose per
169
+ file, or `chezmoi update --force`).
170
+ - `dot upgrade`'s Neovim phase actually syncs plugins. `nvim -l` does not
171
+ load `init.lua`, so `scripts/nvim/headless-upgrade.lua` never found
172
+ lazy.nvim and logged "skipping plugin update" on every run. The phase now
173
+ passes `-u` with the user's `init.lua` (honouring `XDG_CONFIG_HOME` and
174
+ `NVIM_APPNAME`) ahead of `-l`, and reports a visible skip when there is no
175
+ config to load.
176
+ - `dot doctor` no longer warns about a missing `cargo-install-update` on a
177
+ machine that has no `cargo` for it to run through; the check now reports
178
+ "not needed" there and keeps warning where a Rust toolchain is present.
179
+
5
180
  ## v0.2.519 — 2026-08-13
6
181
 
182
+ ### Added
183
+
184
+ - Implemented the Model Context Protocol server the discovery card has always
185
+ advertised. `dot mcp serve` now speaks JSON-RPC 2.0 over newline-delimited
186
+ frames on stdin/stdout: `initialize`, `initialized`, `ping`, `tools/list`,
187
+ `tools/call`, `resources/list`, `resources/read`,
188
+ `resources/templates/list`, `logging/setLevel`, and a clean shutdown on EOF.
189
+ It is a third Go module, `defaults/dot_local/share/dot-mcp`, deployed to
190
+ `~/.local/bin/dot-mcp`.
191
+ - Served four read-only tools — `mcp-doctor`, `agent-mode`,
192
+ `workstation-attestation` and `fleet-status` — each a fixed `dot` argument
193
+ vector run without a shell, and five read-only resources covering the MCP
194
+ policy, the MCP registry, the agent profiles and both discovery cards.
195
+ Mutating paths are deliberately not exposed.
196
+
197
+ ### Changed
198
+
199
+ - Corrected `.well-known/mcp/server-card.json` to describe the server that now
200
+ exists: the stdio transport is `dot mcp serve` rather than the one-shot
201
+ `dot mcp --strict --json` audit, and the declared tools, resources and
202
+ capabilities are pinned to the running registry by tests that fail in both
203
+ directions. `entrypoints.mcp` in the A2A card was updated to match.
204
+
7
205
  ### Fixed
8
206
 
9
207
  - Rendered the Nerd Font check as a chezmoi template so its verified-download
@@ -297,9 +495,11 @@ headers across the source tree.
297
495
  to `batcat`/`fdfind`; a missing apt/dnf/pacman warns loudly instead of silently
298
496
  installing nothing; WSL gets a best-effort `wslu` install for `wslview`. fish
299
497
  and nushell now export `EDITOR`/`VISUAL`/`PAGER` to match the zsh/bash profile.
498
+ <!-- REUSE-IgnoreStart -->
300
499
  - **Licensing:** added `SPDX-License-Identifier: MIT` headers (SPDX-first / REUSE
301
500
  form) and normalized the copyright line to `Sebastien Rousseau` across 831
302
501
  repo-only source files; dropped the contradictory `All rights reserved.`.
502
+ <!-- REUSE-IgnoreEnd -->
303
503
  - **README** — fixed the OpenSSF Best Practices badge (was linking to the
304
504
  new-project form with a static label; now the live `cii/percentage/12840`
305
505
  endpoint linked to the real project).
package/LICENSE-APACHE ADDED
@@ -0,0 +1,190 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to the Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ Copyright 2026 Sebastien Rousseau
179
+
180
+ Licensed under the Apache License, Version 2.0 (the "License");
181
+ you may not use this file except in compliance with the License.
182
+ You may obtain a copy of the License at
183
+
184
+ http://www.apache.org/licenses/LICENSE-2.0
185
+
186
+ Unless required by applicable law or agreed to in writing, software
187
+ distributed under the License is distributed on an "AS IS" BASIS,
188
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
189
+ See the License for the specific language governing permissions and
190
+ limitations under the License.
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2015-2026 Sebastien Rousseau
3
+ Copyright (c) 2026 Sebastien Rousseau
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal