@sebastienrousseau/dotfiles 0.2.520 → 0.2.522

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 +52 -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
package/CHANGELOG.md CHANGED
@@ -4,6 +4,58 @@ This file documents all notable changes to this project.
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## v0.2.522 — 2026-09-21 (Unreleased)
8
+
9
+ ### Fixed
10
+
11
+ - Classify Ghostty's macOS-native mirror separately from chezmoi-managed files
12
+ so targeted theme changes do not fail on an unmanaged mirror. Preserve
13
+ renderer diagnostics with the transaction instead of discarding errors.
14
+ - Build Go helpers with private temporary directories despite stale shell/Go
15
+ settings; preserve existing binaries and report attempted build failures.
16
+ - Wait for tracked Treesitter parser work and fail headless Neovim upgrades on
17
+ plugin errors, registry failures, or install timeouts instead of quitting early.
18
+ - Reuse valid cached chezmoi binaries in CI by parsing the actual version
19
+ output; reject mismatched, malformed, prerelease, and failing binaries.
20
+ - Preserve upgrade summaries when the progress renderer exits: contain SIGPIPE,
21
+ keep stderr open, and fall back to plain step output. Failed upgrades now
22
+ return nonzero and explain detached, untracked, or dirty source checkouts.
23
+ - Declare the tree-sitter CLI required by current Neovim parser builds in the
24
+ managed mise defaults.
25
+ - Keep manual release uploads and checksum manifests in agreement, including
26
+ raw HTML, plain text, the search index, and the Markdown source archive.
27
+ - Fail manual publication on missing outputs or checksum mismatches; reject
28
+ empty and symlinked assets and exclude build intermediates from checksums.
29
+ - Add consumer-download, tamper, missing-output, and fast-build regressions
30
+ for the next sequential patch, v0.2.522.
31
+
32
+ ### Added
33
+
34
+ - Seventy-two deterministic rendered-config baselines covering six terminal/tmux
35
+ consumers, two wallpaper families, both appearance modes and three platform
36
+ inputs, checked on Linux and macOS CI hosts.
37
+ - A schema-defined inventory of 32 legacy theme transaction targets with
38
+ adapter, format, ownership and snapshot-rollback contracts. This is audit
39
+ evidence, not the future core's mutation authority.
40
+
41
+ ## v0.2.521 — 2026-09-20
42
+
43
+ ### Changed
44
+
45
+ - Began the production-hardening roadmap with an immutable release-identity
46
+ preflight, same-commit reusable workflows, and task-scoped GitHub
47
+ authentication instead of a globally inherited token.
48
+ - Promoted the verified, release-pinned installation path and tightened the
49
+ npm bootstrap artifact contract.
50
+ - Added pure theme plans plus serialized, journaled theme transactions with
51
+ pre-apply validation and automatic file/symlink rollback on required
52
+ failures.
53
+ - Hardened AI CLI theme adapters with typed outcomes, malformed-config
54
+ preservation, compare-before-commit writes, and global/per-provider opt-outs.
55
+ - Added an independently versioned palette audit covering truecolor, xterm-256,
56
+ focus/selection contrast, perceptual separation, and color-vision simulation
57
+ across all 228 themes; stabilized semantic status colors in both modes.
58
+
7
59
  ## v0.2.520 — 2026-09-13
8
60
 
9
61
  ### Added
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.
package/LICENSE-MIT ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Sebastien Rousseau
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  <p align="center">
16
16
  <a href="https://github.com/sebastienrousseau/dotfiles/actions"><img src="https://img.shields.io/github/actions/workflow/status/sebastienrousseau/dotfiles/ci.yml?style=for-the-badge&logo=githubactions&logoColor=white" alt="Build" /></a>
17
- <a href="https://github.com/sebastienrousseau/dotfiles/releases/latest"><img src="https://img.shields.io/badge/Version-v0.2.520-blue?style=for-the-badge&logo=semanticrelease&logoColor=white" alt="Version" /></a>
17
+ <a href="https://github.com/sebastienrousseau/dotfiles/releases/latest"><img src="https://img.shields.io/badge/Version-v0.2.522-blue?style=for-the-badge&logo=semanticrelease&logoColor=white" alt="Version" /></a>
18
18
  <a href="https://www.npmjs.com/package/@sebastienrousseau/dotfiles"><img src="https://img.shields.io/npm/v/@sebastienrousseau/dotfiles?style=for-the-badge&logo=npm&logoColor=white&label=npm" alt="npm" /></a>
19
19
  <a href="https://doc.dotfiles.io/"><img src="https://img.shields.io/badge/Manual-doc.dotfiles.io-66c2a5?style=for-the-badge&labelColor=555555&logo=materialformkdocs&logoColor=white" alt="Manual" /></a>
20
20
  <a href="https://github.com/sebastienrousseau/dotfiles/releases"><img src="https://img.shields.io/github/downloads/sebastienrousseau/dotfiles/total?style=for-the-badge&logo=github&logoColor=white" alt="Downloads" /></a>
@@ -23,7 +23,6 @@
23
23
  <a href="https://www.bestpractices.dev/projects/12840"><img src="https://img.shields.io/cii/level/12840?style=for-the-badge&logo=linuxfoundation&logoColor=white&label=OpenSSF%20Best%20Practices" alt="OpenSSF Best Practices" /></a>
24
24
  <a href="#license"><img src="https://img.shields.io/badge/License-Apache--2.0%20OR%20MIT-green?style=for-the-badge&logo=opensourceinitiative&logoColor=white" alt="License: Apache-2.0 OR MIT" /></a>
25
25
  <a href="#requirements"><img src="https://img.shields.io/badge/toolchain-bash%205.0%20%C2%B7%20chezmoi%202.40-93450a?style=for-the-badge&logo=gnubash&logoColor=white" alt="Minimum toolchain: bash 5.0, chezmoi 2.40" /></a>
26
- <a href="https://repology.org/project/dot-cli/versions"><img src="https://img.shields.io/repology/repositories/dot-cli?style=for-the-badge&label=Repology" alt="Repology" /></a>
27
26
  </p>
28
27
 
29
28
  ---
@@ -74,35 +73,29 @@
74
73
 
75
74
  ## Install
76
75
 
77
- ### One-line installer
76
+ ### Verified release installer
78
77
 
79
- ```bash
80
- bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/main/install.sh)"
81
- ```
82
-
83
- The script needs `git` and `curl`. It fetches a SHA256-verified
84
- `chezmoi` binary, clones this repository to `~/.dotfiles`, runs
85
- `chezmoi init --apply`, and puts `dot` on your `PATH`. It runs on
86
- macOS, Ubuntu, Debian, Arch, WSL2, and GitHub Codespaces, and it is
87
- idempotent: run it once or a hundred times, same machine state.
88
-
89
- ### Verified installer (recommended for primary workstations)
90
-
91
- Pin to a release tag, download the installer, check its SHA256
92
- against the value published with the release, then run it. The
93
- per-release hash and how it is generated are documented in
78
+ The default installation path is pinned to a release and fails before
79
+ execution if the installer bytes do not match the reviewed SHA256. Never pipe
80
+ the moving `main` branch directly into a shell. The per-release hash and its
81
+ release process are documented in
94
82
  [`docs/security/INSTALL_VERIFICATION.md`](docs/security/INSTALL_VERIFICATION.md).
95
83
 
96
84
  ```bash
97
85
  curl -fsSL -o /tmp/dotfiles-install.sh \
98
- https://raw.githubusercontent.com/sebastienrousseau/dotfiles/v0.2.520/install.sh
99
- echo "3b5d1332fb07a1261da117e53f69acc0097c3d9bd676fc9f53a000257b72978e /tmp/dotfiles-install.sh" \
100
- | shasum -a 256 -c
86
+ https://github.com/sebastienrousseau/dotfiles/releases/download/v0.2.522/dotfiles-install-0.2.522.sh
87
+ if command -v sha256sum >/dev/null 2>&1; then
88
+ echo "07ef5a3fbf3a98d7cb4cf6dc787ecce516121ca5a33b5ac793645bdcab6eaf03 /tmp/dotfiles-install.sh" | sha256sum -c -
89
+ else
90
+ echo "07ef5a3fbf3a98d7cb4cf6dc787ecce516121ca5a33b5ac793645bdcab6eaf03 /tmp/dotfiles-install.sh" | shasum -a 256 -c -
91
+ fi
101
92
  bash /tmp/dotfiles-install.sh
102
93
  ```
103
94
 
104
- The verified path also needs `shasum` or `sha256sum`. The one-line
105
- form above skips this check; use it for sandboxes and ephemeral CI.
95
+ The script needs `git`, `curl`, and `sha256sum` or `shasum`. It downloads a
96
+ checksum-verified `chezmoi` binary, clones the pinned release to
97
+ `~/.dotfiles`, applies it, and puts `dot` on `PATH`. The installer is
98
+ idempotent across macOS, Ubuntu, Debian, Arch, WSL2, and GitHub Codespaces.
106
99
 
107
100
  ### Pre-built release archive (`dot` CLI only)
108
101
 
@@ -113,10 +106,10 @@ directory. The archive
113
106
  carries SLSA build provenance (keyless, via Fulcio + Rekor):
114
107
 
115
108
  ```bash
116
- gh release download v0.2.520 --repo sebastienrousseau/dotfiles --pattern 'dot-*.tar.gz'
117
- gh attestation verify dot-0.2.520.tar.gz --repo sebastienrousseau/dotfiles
118
- tar -xzf dot-0.2.520.tar.gz
119
- make -C dot-0.2.520 install PREFIX=/usr/local
109
+ gh release download v0.2.522 --repo sebastienrousseau/dotfiles --pattern 'dot-*.tar.gz'
110
+ gh attestation verify dot-0.2.522.tar.gz --repo sebastienrousseau/dotfiles
111
+ tar -xzf dot-0.2.522.tar.gz
112
+ make -C dot-0.2.522 install PREFIX=/usr/local
120
113
  ```
121
114
 
122
115
  [`release-install-smoke.yml`](.github/workflows/release-install-smoke.yml)
@@ -177,8 +170,9 @@ air-gapped host; unpack it and run `./install.sh --force`.
177
170
  Silent install (no prompts):
178
171
 
179
172
  ```bash
173
+ # After downloading and verifying /tmp/dotfiles-install.sh as shown above:
180
174
  DOTFILES_SILENT=1 DOTFILES_NONINTERACTIVE=1 \
181
- bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/main/install.sh)"
175
+ bash /tmp/dotfiles-install.sh --force
182
176
  ```
183
177
 
184
178
  Docker sandbox:
@@ -257,7 +251,8 @@ back.
257
251
  ## Quick Start
258
252
 
259
253
  ```bash
260
- bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/main/install.sh)"
254
+ # First download and verify /tmp/dotfiles-install.sh as shown in Install.
255
+ bash /tmp/dotfiles-install.sh
261
256
  dot doctor # audit tools, paths, portability, security
262
257
  dot learn # interactive tour of shells, secrets, themes, performance
263
258
  dot theme rebuild # generate themes from the wallpapers on this machine
@@ -307,10 +302,10 @@ every push.
307
302
 
308
303
  ```bash
309
304
  # The framework (everything, chezmoi-managed)
310
- bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/main/install.sh)"
305
+ bash /tmp/dotfiles-install.sh # after the verified download above
311
306
 
312
307
  # Only the dot CLI, from the attested release archive
313
- gh release download v0.2.520 --repo sebastienrousseau/dotfiles --pattern 'dot-*.tar.gz'
308
+ gh release download v0.2.522 --repo sebastienrousseau/dotfiles --pattern 'dot-*.tar.gz'
314
309
 
315
310
  # The Go satellites are (re)built on apply by
316
311
  # defaults/run_onchange_24-build-dot-ui.sh.tmpl
@@ -357,7 +352,7 @@ What the repository can show today:
357
352
  - **Bash line coverage floor 58%** measured by pure `xtrace`, no
358
353
  kcov, ratcheted up slice by slice with the history recorded in
359
354
  [`coverage.yml`](.github/workflows/coverage.yml).
360
- - **51 workflows**, every third-party action SHA-pinned, Harden
355
+ - **53 workflows**, every third-party action SHA-pinned, Harden
361
356
  Runner in every one of them.
362
357
 
363
358
  The gaps, so nobody has to find them:
@@ -644,13 +639,24 @@ regenerated.
644
639
 
645
640
  ```bash
646
641
  dot theme # interactive picker (paired themes only)
642
+ dot theme set maui # select a family and follow OS appearance
643
+ dot theme plan maui --mode auto --json # inspect the pure transaction plan
647
644
  dot theme tahoe-dark # switch directly
648
645
  dot theme toggle # swap dark and light within the current family
646
+ dot theme mode light # pin a manual appearance
647
+ dot theme mode auto # resume following the OS appearance
649
648
  dot theme family # cycle between theme families
650
- dot theme sync # follow the OS dark/light setting
649
+ dot theme sync # enable auto mode and sync immediately
651
650
  dot theme rebuild # regenerate from current wallpapers
652
651
  ```
653
652
 
653
+ Maui is the default family. Its dynamic HEIC supplies both wallpaper
654
+ appearances, while the resolved `maui-light` or `maui-dark` palette keeps
655
+ terminals and applications aligned. On macOS, a LaunchAgent watches the
656
+ system appearance preference and reruns the sync automatically. Runtime
657
+ selection is machine-local in `~/.config/chezmoi/chezmoi.toml`, so using the
658
+ picker does not modify the dotfiles checkout.
659
+
654
660
  On theme switch, every managed surface updates. Terminals: Ghostty,
655
661
  Alacritty, Kitty, WezTerm, Warp, iTerm2, tmux. Editors: Neovim and
656
662
  VS Code. The theme also sets GTK and icon themes, the macOS accent
@@ -861,7 +867,7 @@ design is
861
867
 
862
868
  ```toml
863
869
  # defaults/.chezmoidata.toml — repo-wide defaults, schema-checked in CI
864
- dotfiles_version = "0.2.520"
870
+ dotfiles_version = "0.2.522"
865
871
 
866
872
  [features]
867
873
  alias_wrapper = false # confirm destructive aliases
@@ -1126,7 +1132,7 @@ corpus lives beside the harnesses under
1126
1132
  | `release-install-smoke.yml` / `release-distribute-*.yml` | release | Clean-install smoke on Ubuntu + macOS; Homebrew, Scoop, AUR fan-out |
1127
1133
  | `npm-publish.yml` / `manual-publish.yml` / `pages.yml` | release, push | npm via OIDC trusted publishing; the manual in nine formats; the site |
1128
1134
 
1129
- 51 workflows in total; the cadence and the composite actions are
1135
+ 53 workflows in total; the cadence and the composite actions are
1130
1136
  documented in
1131
1137
  [`docs/operations/CI_CADENCE.md`](docs/operations/CI_CADENCE.md) and
1132
1138
  [`docs/operations/CI_COMPOSITES.md`](docs/operations/CI_COMPOSITES.md).
@@ -1210,7 +1216,7 @@ architectural level, not behind opt-in flags. The full analysis is
1210
1216
  tag reference is the SLSA generator reusable workflow, which its
1211
1217
  maintainers require to be referenced by release tag
1212
1218
  ([`docs/security/CI_PINNING.md`](docs/security/CI_PINNING.md)).
1213
- - **Harden Runner in all 51 workflows**, six jobs in egress-block
1219
+ - **Harden Runner in all 53 workflows**, six jobs in egress-block
1214
1220
  mode with an explicit endpoint list
1215
1221
  ([`docs/security/CI_EGRESS_ALLOWLIST.md`](docs/security/CI_EGRESS_ALLOWLIST.md)).
1216
1222
  - **Releases carry provenance:** SLSA L3 build attestation on the
@@ -1349,6 +1355,6 @@ See [CHANGELOG.md](CHANGELOG.md) for release history.
1349
1355
  ---
1350
1356
 
1351
1357
  **THE ARCHITECT** ᛫ [Sebastien Rousseau](https://sebastienrousseau.com)
1352
- **THE ENGINE** ᛞ [EUXIS](https://euxis.co) ᛫ Enterprise Unified Execution Intelligence System
1358
+ **THE ENGINE** ᛞ [EUXIS](https://github.com/sebastienrousseau/euxis) ᛫ Enterprise Unified Execution Intelligence System
1353
1359
 
1354
1360
  <p align="right"><a href="#contents">Back to Top</a></p>
package/install.sh CHANGED
@@ -71,7 +71,7 @@ show_help() {
71
71
  Usage: install.sh [version] [options]
72
72
 
73
73
  Arguments:
74
- version The version (tag or branch) to install (default: v0.2.520)
74
+ version The version (tag or branch) to install (default: v0.2.522)
75
75
 
76
76
  Options:
77
77
  --help Show this help message
@@ -87,7 +87,7 @@ EOF
87
87
  }
88
88
 
89
89
  main() {
90
- local version="v0.2.520"
90
+ local version="v0.2.522"
91
91
  local version_set=0
92
92
  local minimal=0
93
93
  local provision="${DOTFILES_PROVISION:-0}"
@@ -117,7 +117,7 @@ main() {
117
117
  # like `foobar` doesn't trigger a 30s+ network download attempt.
118
118
  # Caught by the install.sh fuzz harness (#881).
119
119
  if [[ ! "$arg" =~ ^v?[0-9]+\.[0-9]+\.[0-9]+([-+][a-zA-Z0-9.-]+)?$ ]]; then
120
- error "Unrecognized positional argument '$arg' — expected a semver version (e.g. v0.2.520)."
120
+ error "Unrecognized positional argument '$arg' — expected a semver version (e.g. v0.2.522)."
121
121
  fi
122
122
  version="$arg"
123
123
  version_set=1
@@ -196,6 +196,68 @@ main() {
196
196
  fi
197
197
  }
198
198
 
199
+ # Standalone checksum-verified chezmoi bootstrap. Keep this implementation
200
+ # in the entry point so a release-pinned install.sh remains self-contained;
201
+ # repository and npm installs may use the identical helper script below.
202
+ install_chezmoi_verified_embedded() {
203
+ local chezmoi_version="$1"
204
+ local destination="$2"
205
+ local os arch asset checksums_asset base_url temp_dir checksum_line
206
+
207
+ os="$(uname -s | tr '[:upper:]' '[:lower:]')"
208
+ arch="$(uname -m)"
209
+ case "$os" in
210
+ linux | darwin) ;;
211
+ *)
212
+ echo "Unsupported OS for chezmoi bootstrap: $os" >&2
213
+ return 1
214
+ ;;
215
+ esac
216
+ case "$arch" in
217
+ x86_64 | amd64) arch="amd64" ;;
218
+ arm64 | aarch64) arch="arm64" ;;
219
+ *)
220
+ echo "Unsupported architecture for chezmoi bootstrap: $arch" >&2
221
+ return 1
222
+ ;;
223
+ esac
224
+
225
+ asset="chezmoi_${chezmoi_version}_${os}_${arch}.tar.gz"
226
+ checksums_asset="chezmoi_${chezmoi_version}_checksums.txt"
227
+ base_url="https://github.com/twpayne/chezmoi/releases/download/v${chezmoi_version}"
228
+ temp_dir="$(umask 077 && mktemp -d)"
229
+
230
+ if ! (
231
+ set -e
232
+ if ! curl --proto '=https' --tlsv1.2 -fsSL \
233
+ -o "$temp_dir/checksums.txt" "$base_url/$checksums_asset"; then
234
+ curl --proto '=https' --tlsv1.2 -fsSL \
235
+ -o "$temp_dir/checksums.txt" "$base_url/checksums.txt"
236
+ fi
237
+ curl --proto '=https' --tlsv1.2 -fsSL \
238
+ -o "$temp_dir/$asset" "$base_url/$asset"
239
+ checksum_line="$(grep -E "[[:space:]]${asset}$" "$temp_dir/checksums.txt" | head -n 1 || true)"
240
+ [[ -n "$checksum_line" ]] || {
241
+ echo "Checksum entry not found for $asset" >&2
242
+ exit 1
243
+ }
244
+ cd "$temp_dir"
245
+ if command -v sha256sum >/dev/null 2>&1; then
246
+ printf '%s\n' "$checksum_line" | sha256sum -c -
247
+ else
248
+ printf '%s\n' "$checksum_line" | shasum -a 256 -c -
249
+ fi
250
+ tar -xzf "$asset" chezmoi
251
+ mkdir -p "$destination"
252
+ install -m 755 chezmoi "$destination/chezmoi"
253
+ ); then
254
+ rm -rf "$temp_dir"
255
+ return 1
256
+ fi
257
+
258
+ rm -rf "$temp_dir"
259
+ }
260
+
199
261
  # 3. Install Chezmoi (in parallel with other checks where possible)
200
262
  install_chezmoi() {
201
263
  if command -v chezmoi >/dev/null; then
@@ -231,11 +293,15 @@ main() {
231
293
  fi
232
294
  return 0
233
295
  fi
234
- echo "" >&2
235
- echo " tools/ci/install-chezmoi-verified.sh is missing; cannot verify chezmoi bootstrap." >&2
236
- echo " Install chezmoi manually (brew install chezmoi / official binary)" >&2
237
- echo " and re-run install.sh." >&2
238
- return 1
296
+ echo " Using embedded checksum verifier..."
297
+ if ! install_chezmoi_verified_embedded "${CHEZMOI_VERSION:-2.47.1}" "$bin_dir"; then
298
+ echo "" >&2
299
+ echo " The embedded checksum-verified chezmoi bootstrap failed." >&2
300
+ echo " Refusing to fall back to an unverified remote script." >&2
301
+ echo " Install chezmoi manually from https://www.chezmoi.io/install/" >&2
302
+ return 1
303
+ fi
304
+ return 0
239
305
  fi
240
306
  }
241
307
 
@@ -369,7 +435,7 @@ main() {
369
435
  # 6. Initialize & Apply
370
436
  step "Applying Configuration..."
371
437
 
372
- # ── Auto-migration for v0.2.520 reorg ─────────────────────────────────
438
+ # ── Auto-migration for v0.2.522 reorg ─────────────────────────────────
373
439
  # If the user is upgrading from a pre-0.2.503 install, run the
374
440
  # migration script BEFORE `chezmoi apply` so the reorg's source-
375
441
  # path moves don't cause chezmoi to delete deployed files.
@@ -378,7 +444,7 @@ main() {
378
444
  for migrate_src in "$SOURCE_DIR" "$LEGACY_SOURCE_DIR"; do
379
445
  migrate_script="$migrate_src/install/migrate/migrate-v0_2-to-v0_2_503.sh"
380
446
  if [[ -x "$migrate_script" ]]; then
381
- echo " Running v0.2.520 migration (idempotent; safe on fresh installs)..."
447
+ echo " Running v0.2.522 migration (idempotent; safe on fresh installs)..."
382
448
  "$migrate_script" || echo " migration exited non-zero — continuing apply"
383
449
  break
384
450
  fi
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@sebastienrousseau/dotfiles",
3
- "version": "0.2.520",
3
+ "version": "0.2.522",
4
4
  "description": "The Trusted Shell Platform — Universal dotfiles managed by Chezmoi. Features Bash & Zsh for macOS, Linux & WSL. Rust modern tooling & enterprise-grade security.",
5
5
  "main": "install.sh",
6
6
  "bin": {
7
7
  "dotfiles-install": "./install.sh"
8
8
  },
9
9
  "scripts": {
10
+ "prepack": "node scripts/qa/verify-npm-package.mjs",
10
11
  "test": "bash ./scripts/qa/reliability-audit.sh",
11
12
  "test:quick": "bash ./scripts/qa/reliability-audit.sh --quick",
12
13
  "test:unit": "bash ./scripts/qa/reliability-audit.sh --unit-only",
@@ -66,13 +67,12 @@
66
67
  },
67
68
  "files": [
68
69
  "install.sh",
70
+ "tools/ci/install-chezmoi-verified.sh",
71
+ "tools/README.md",
69
72
  "README.md",
70
- "LICENSE",
73
+ "LICENSE-APACHE",
74
+ "LICENSE-MIT",
71
75
  "CHANGELOG.md",
72
- "docs/",
73
- "dot_config/",
74
- "dot_local/",
75
- "scripts/",
76
- "templates/"
76
+ "package.json"
77
77
  ]
78
78
  }