@sebastienrousseau/dotfiles 0.2.520 → 0.2.521

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/LICENSE-APACHE +190 -0
  3. package/LICENSE-MIT +21 -0
  4. package/README.md +43 -37
  5. package/install.sh +76 -10
  6. package/package.json +7 -7
  7. package/tools/README.md +49 -0
  8. package/tools/ci/install-chezmoi-verified.sh +68 -0
  9. package/docs/.vitepress/reports/localization-readability-audit.md +0 -73
  10. package/docs/AI.md +0 -179
  11. package/docs/ARCHITECTURE.md +0 -117
  12. package/docs/CNAME +0 -1
  13. package/docs/CONFIG_STRATEGY.md +0 -124
  14. package/docs/COPYRIGHT +0 -7
  15. package/docs/ECOSYSTEM.md +0 -220
  16. package/docs/GOLD-STANDARD-AUDIT.md +0 -352
  17. package/docs/GOVERNANCE.md +0 -98
  18. package/docs/MAINTAINERS.md +0 -41
  19. package/docs/MINIMUM-TOOLCHAIN.md +0 -100
  20. package/docs/NAMING_CONVENTIONS.md +0 -102
  21. package/docs/OPENCODE.md +0 -127
  22. package/docs/README.md +0 -84
  23. package/docs/STRUCTURE.md +0 -102
  24. package/docs/adr/ADR-001-ci-cd-pipeline.md +0 -118
  25. package/docs/adr/ADR-002-shell-performance.md +0 -130
  26. package/docs/adr/ADR-003-security-first.md +0 -158
  27. package/docs/adr/ADR-004-cli-architecture.md +0 -171
  28. package/docs/adr/ADR-005-chezmoi-choice.md +0 -99
  29. package/docs/adr/ADR-006-shell-selection.md +0 -124
  30. package/docs/adr/ADR-007-multi-shell-parity.md +0 -62
  31. package/docs/adr/ADR-008-alias-system-architecture.md +0 -95
  32. package/docs/adr/ADR-009-wallpaper-driven-theming.md +0 -131
  33. package/docs/adr/ADR-010-starship-transient-prompt.md +0 -144
  34. package/docs/adr/ADR-011-nushell-tier3-keep.md +0 -144
  35. package/docs/adr/ADR-012-ai-fleet-local-proxy.md +0 -79
  36. package/docs/adr/README.md +0 -40
  37. package/docs/architecture/AI_COST_OPTIMIZATION.md +0 -144
  38. package/docs/architecture/ARCHITECTURE.md +0 -20
  39. package/docs/architecture/INTEROP.md +0 -44
  40. package/docs/architecture/REPO_LAYOUT.md +0 -241
  41. package/docs/architecture/WALKTHROUGH.md +0 -86
  42. package/docs/architecture/fleet-deployment.md +0 -77
  43. package/docs/archive/EUXIS_2026_REVIEW.md +0 -127
  44. package/docs/archive/LEGACY_ROADMAP.md +0 -6
  45. package/docs/archive/MILESTONE_v0.2.493.md +0 -47
  46. package/docs/archive/PLAN.md +0 -199
  47. package/docs/archive/REPO_AUDIT.md +0 -31
  48. package/docs/articles/.pages +0 -6
  49. package/docs/articles/2026-07-05-custom-mkdocs-material-dark-theme.md +0 -216
  50. package/docs/articles/2026-07-05-fish-startup-abbr.md +0 -153
  51. package/docs/articles/2026-07-05-master-to-main-rename-runbook.md +0 -128
  52. package/docs/articles/index.md +0 -36
  53. package/docs/guides/INSTALL.md +0 -144
  54. package/docs/guides/MACOS_ICLOUD_SYMLINKS.md +0 -121
  55. package/docs/guides/NEOVIM_IDE_GUIDE.md +0 -61
  56. package/docs/guides/THEMING.md +0 -230
  57. package/docs/guides/TROUBLESHOOTING.md +0 -176
  58. package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +0 -792
  59. package/docs/index.md +0 -132
  60. package/docs/interop/A2A.md +0 -39
  61. package/docs/interop/POWERSHELL.md +0 -102
  62. package/docs/manual/00-introduction.md +0 -89
  63. package/docs/manual/01-concepts/01-architecture.md +0 -138
  64. package/docs/manual/01-concepts/02-trust-model.md +0 -183
  65. package/docs/manual/01-concepts/03-theme-engine.md +0 -186
  66. package/docs/manual/01-concepts/04-fleet.md +0 -148
  67. package/docs/manual/01-concepts/05-self-healing.md +0 -204
  68. package/docs/manual/02-tutorials/01-first-install.md +0 -197
  69. package/docs/manual/02-tutorials/02-add-wallpaper.md +0 -216
  70. package/docs/manual/02-tutorials/03-create-profile.md +0 -244
  71. package/docs/manual/02-tutorials/04-encrypt-secret.md +0 -281
  72. package/docs/manual/02-tutorials/05-deploy-fleet.md +0 -283
  73. package/docs/manual/03-reference/01-dot-cli.md +0 -475
  74. package/docs/manual/03-reference/02-config-files.md +0 -265
  75. package/docs/manual/03-reference/03-environment.md +0 -124
  76. package/docs/manual/03-reference/04-templates.md +0 -190
  77. package/docs/manual/03-reference/05-feature-flags.md +0 -187
  78. package/docs/manual/04-cookbook/01-recipes.md +0 -285
  79. package/docs/manual/04-cookbook/02-troubleshooting.md +0 -351
  80. package/docs/manual/04-cookbook/03-faq.md +0 -175
  81. package/docs/manual/05-appendices/A-platform-matrix.md +0 -101
  82. package/docs/manual/05-appendices/B-security-checklist.md +0 -85
  83. package/docs/manual/05-appendices/C-glossary.md +0 -40
  84. package/docs/manual/05-appendices/D-bibliography.md +0 -58
  85. package/docs/manual/05-appendices/E-license.md +0 -38
  86. package/docs/manual/_toc.yml +0 -58
  87. package/docs/manual/command-index.md +0 -175
  88. package/docs/manual/concept-index.md +0 -170
  89. package/docs/manual/index.md +0 -66
  90. package/docs/migration/README.md +0 -81
  91. package/docs/migration/from-bare-git-repo.md +0 -156
  92. package/docs/migration/from-gnu-stow.md +0 -165
  93. package/docs/migration/from-plain-chezmoi.md +0 -148
  94. package/docs/migration/from-yadm.md +0 -187
  95. package/docs/operations/ARCHITECTURE_ROADMAP.md +0 -7
  96. package/docs/operations/ATTESTATION.md +0 -44
  97. package/docs/operations/CI_CADENCE.md +0 -107
  98. package/docs/operations/CI_COMPOSITES.md +0 -156
  99. package/docs/operations/COMPLETIONS.md +0 -123
  100. package/docs/operations/COVERAGE.md +0 -204
  101. package/docs/operations/DRIFT.md +0 -107
  102. package/docs/operations/HARD_AUDIT_2026.md +0 -631
  103. package/docs/operations/MAINTENANCE.md +0 -63
  104. package/docs/operations/MANIFEST.md +0 -127
  105. package/docs/operations/MIGRATION.md +0 -109
  106. package/docs/operations/OPERATIONS.md +0 -188
  107. package/docs/operations/PERFORMANCE.md +0 -133
  108. package/docs/operations/PERFORMANCE_BUDGETS.md +0 -196
  109. package/docs/operations/REGISTRY.md +0 -90
  110. package/docs/operations/RELEASE_PIPELINE.md +0 -128
  111. package/docs/operations/RELIABILITY.md +0 -122
  112. package/docs/operations/RFC_v0_2_503_reorganization.md +0 -280
  113. package/docs/operations/ROADMAP.md +0 -10
  114. package/docs/operations/ROADMAP_2026.md +0 -7
  115. package/docs/operations/ROADMAP_V0_2_503.md +0 -10
  116. package/docs/operations/TESTING.md +0 -216
  117. package/docs/operations/TRACEABILITY.md +0 -44
  118. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +0 -65
  119. package/docs/operations/VERSION_SYNC.md +0 -393
  120. package/docs/packaging.md +0 -222
  121. package/docs/reference/ALIASES.md +0 -131
  122. package/docs/reference/ALIASES_CHEATSHEET.md +0 -32
  123. package/docs/reference/ALIASES_DEPRECATIONS.md +0 -13
  124. package/docs/reference/FEATURE-MATRIX.md +0 -646
  125. package/docs/reference/FEATURES.md +0 -66
  126. package/docs/reference/FONTS.md +0 -112
  127. package/docs/reference/POWERSHELL_PARITY.md +0 -82
  128. package/docs/reference/PROFILES.md +0 -69
  129. package/docs/reference/SCREENSHOTS.md +0 -121
  130. package/docs/reference/SCRIPTS.md +0 -71
  131. package/docs/reference/SUPPORT_MATRIX.md +0 -80
  132. package/docs/reference/THEMES.md +0 -117
  133. package/docs/reference/TOOLS.md +0 -110
  134. package/docs/reference/UTILS.md +0 -243
  135. package/docs/registry.json +0 -6
  136. package/docs/schema/dot-env-v1.json +0 -110
  137. package/docs/schema/dot-registry-v1.json +0 -33
  138. package/docs/security/AI_ACT_COMPLIANCE.md +0 -94
  139. package/docs/security/AUDIT_BYPASS.md +0 -103
  140. package/docs/security/AUTOMATION_SECRETS.md +0 -26
  141. package/docs/security/CI_EGRESS_ALLOWLIST.md +0 -127
  142. package/docs/security/CI_PINNING.md +0 -129
  143. package/docs/security/COMMIT_SIGNING.md +0 -138
  144. package/docs/security/COMPLIANCE.md +0 -458
  145. package/docs/security/DEPS_DEV_EXCEPTIONS.md +0 -86
  146. package/docs/security/DISCLOSURE.md +0 -130
  147. package/docs/security/ENCRYPTION.md +0 -57
  148. package/docs/security/FMEA.md +0 -159
  149. package/docs/security/FUZZING.md +0 -209
  150. package/docs/security/HISTORY_FILTERING.md +0 -132
  151. package/docs/security/INCIDENT_RESPONSE.md +0 -579
  152. package/docs/security/INSTALL_VERIFICATION.md +0 -122
  153. package/docs/security/KEYS.md +0 -49
  154. package/docs/security/KEY_ROTATION.md +0 -303
  155. package/docs/security/MCP_POLICY.md +0 -78
  156. package/docs/security/POLICY_RELEASES.md +0 -37
  157. package/docs/security/README.md +0 -28
  158. package/docs/security/SCORECARD.md +0 -195
  159. package/docs/security/SECRETS.md +0 -158
  160. package/docs/security/SECURITY.md +0 -45
  161. package/docs/security/SECURITY_CHECKLIST.md +0 -55
  162. package/docs/security/SHELL_EXEMPTIONS.md +0 -145
  163. package/docs/security/SOUP_REGISTER.md +0 -36
  164. package/docs/security/THREAT_MODEL.md +0 -130
  165. package/docs/security/VERIFICATION_VALIDATION.md +0 -228
  166. package/docs/security/VERIFY_RELEASE.md +0 -201
  167. package/docs/security/security-pubkey.asc +0 -15
  168. package/docs/stylesheets/extra.css +0 -444
  169. package/docs/themes/README.md +0 -10
  170. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +0 -30
  171. package/docs/themes/hero-shot.svg +0 -78
  172. package/scripts/README.md +0 -123
  173. package/scripts/ci/check-copyright-headers.sh +0 -8
  174. package/scripts/ci/check-shell-preamble.sh +0 -8
  175. package/scripts/ci/guard-gitleaks-checkout.sh +0 -8
  176. package/scripts/demo/record.sh +0 -43
  177. package/scripts/diagnostics/a2a-conformance.sh +0 -163
  178. package/scripts/diagnostics/alias-governance.sh +0 -165
  179. package/scripts/diagnostics/aliases-cheatsheet.sh +0 -74
  180. package/scripts/diagnostics/aliases-manifest.sh +0 -77
  181. package/scripts/diagnostics/attest-verify.sh +0 -147
  182. package/scripts/diagnostics/benchmark.sh +0 -408
  183. package/scripts/diagnostics/conflicts.sh +0 -73
  184. package/scripts/diagnostics/doctor-unified.sh +0 -43
  185. package/scripts/diagnostics/doctor.sh +0 -797
  186. package/scripts/diagnostics/drift-dashboard.sh +0 -203
  187. package/scripts/diagnostics/health.sh +0 -656
  188. package/scripts/diagnostics/history-analysis.sh +0 -86
  189. package/scripts/diagnostics/mcp-doctor.sh +0 -582
  190. package/scripts/diagnostics/perf.sh +0 -453
  191. package/scripts/diagnostics/scorecard.sh +0 -120
  192. package/scripts/diagnostics/secret-governance.sh +0 -65
  193. package/scripts/diagnostics/security-score.sh +0 -467
  194. package/scripts/diagnostics/smoke-test.sh +0 -88
  195. package/scripts/diagnostics/snapshot.sh +0 -90
  196. package/scripts/diagnostics/verify.sh +0 -108
  197. package/scripts/diagnostics/verify_state.sh +0 -73
  198. package/scripts/diagnostics/version-locks.sh +0 -94
  199. package/scripts/diagnostics/workstation-attestation.sh +0 -212
  200. package/scripts/dot/commands/agent.sh +0 -535
  201. package/scripts/dot/commands/agents.sh +0 -352
  202. package/scripts/dot/commands/ai.sh +0 -600
  203. package/scripts/dot/commands/aliases.sh +0 -277
  204. package/scripts/dot/commands/appearance.sh +0 -110
  205. package/scripts/dot/commands/completion.sh +0 -171
  206. package/scripts/dot/commands/core.sh +0 -217
  207. package/scripts/dot/commands/diagnostics.sh +0 -265
  208. package/scripts/dot/commands/env-emit.sh +0 -203
  209. package/scripts/dot/commands/fleet.sh +0 -711
  210. package/scripts/dot/commands/init.sh +0 -185
  211. package/scripts/dot/commands/lint.sh +0 -208
  212. package/scripts/dot/commands/manual.sh +0 -169
  213. package/scripts/dot/commands/meta.sh +0 -438
  214. package/scripts/dot/commands/patterns.sh +0 -55
  215. package/scripts/dot/commands/registry.sh +0 -455
  216. package/scripts/dot/commands/restore.sh +0 -232
  217. package/scripts/dot/commands/secrets.sh +0 -296
  218. package/scripts/dot/commands/security.sh +0 -102
  219. package/scripts/dot/commands/tools.sh +0 -570
  220. package/scripts/dot/data/alias-deprecations.tsv +0 -2
  221. package/scripts/dot/powershell/Dot.psm1 +0 -319
  222. package/scripts/fonts/install-nerd-fonts.sh +0 -75
  223. package/scripts/fonts/patch-fonts.sh +0 -36
  224. package/scripts/git-hooks/install.sh +0 -12
  225. package/scripts/git-hooks/pre-commit +0 -12
  226. package/scripts/git-hooks/pre-commit-audit.sh +0 -146
  227. package/scripts/git-hooks/pre-push +0 -105
  228. package/scripts/git-hooks/prepare-commit-msg +0 -29
  229. package/scripts/lib/secrets_provider.sh +0 -200
  230. package/scripts/nvim/headless-upgrade.lua +0 -81
  231. package/scripts/ops/ai-setup.sh +0 -71
  232. package/scripts/ops/bundle.sh +0 -104
  233. package/scripts/ops/chaos.sh +0 -50
  234. package/scripts/ops/chezmoi-apply.sh +0 -333
  235. package/scripts/ops/chezmoi-diff.sh +0 -16
  236. package/scripts/ops/chezmoi-remove.sh +0 -46
  237. package/scripts/ops/chezmoi-update.sh +0 -67
  238. package/scripts/ops/heal-chezmoi.sh +0 -87
  239. package/scripts/ops/heal-system.sh +0 -129
  240. package/scripts/ops/heal-tools.sh +0 -297
  241. package/scripts/ops/heal.sh +0 -223
  242. package/scripts/ops/post-apply-repair.sh +0 -107
  243. package/scripts/ops/prewarm.sh +0 -128
  244. package/scripts/ops/release.sh +0 -262
  245. package/scripts/ops/rollback.sh +0 -613
  246. package/scripts/ops/setup.sh +0 -138
  247. package/scripts/ops/teleport.sh +0 -34
  248. package/scripts/qa/check-feature-matrix.sh +0 -296
  249. package/scripts/qa/check-version-consistency.sh +0 -12
  250. package/scripts/qa/coverage-baseline.sh +0 -61
  251. package/scripts/qa/docs-coverage.sh +0 -118
  252. package/scripts/qa/examples-coverage.sh +0 -94
  253. package/scripts/qa/powershell-contract.ps1 +0 -95
  254. package/scripts/qa/reliability-audit.sh +0 -139
  255. package/scripts/qa/scorecard-snapshot.sh +0 -128
  256. package/scripts/qa/traceability-coverage.sh +0 -124
  257. package/scripts/qa/validate-examples.sh +0 -90
  258. package/scripts/qa/wsl-contract.sh +0 -12
  259. package/scripts/secrets/age-init.sh +0 -82
  260. package/scripts/secrets/create-secrets-file.sh +0 -46
  261. package/scripts/secrets/encrypt-ssh-key.sh +0 -44
  262. package/scripts/security/backup.sh +0 -58
  263. package/scripts/security/check-disclosure-key-expiry.sh +0 -111
  264. package/scripts/security/dns-doh.sh +0 -52
  265. package/scripts/security/encryption-check.sh +0 -55
  266. package/scripts/security/enforce-policies.sh +0 -552
  267. package/scripts/security/firewall.sh +0 -91
  268. package/scripts/security/lock-configs.sh +0 -67
  269. package/scripts/security/lock-screen.sh +0 -56
  270. package/scripts/security/manage-secrets.sh +0 -429
  271. package/scripts/security/ssh-cert.sh +0 -204
  272. package/scripts/security/telemetry-kill.sh +0 -51
  273. package/scripts/security/usb-safety.sh +0 -52
  274. package/scripts/theme/apply-gnome-theme.sh +0 -333
  275. package/scripts/theme/extract-heic-frames.sh +0 -115
  276. package/scripts/theme/extract-theme.py +0 -1020
  277. package/scripts/theme/install-boot-logo.sh +0 -63
  278. package/scripts/theme/install-catppuccin-themes.sh +0 -371
  279. package/scripts/theme/install-cursors.sh +0 -26
  280. package/scripts/theme/install-file-icons.sh +0 -27
  281. package/scripts/theme/install-grub-theme.sh +0 -62
  282. package/scripts/theme/install-lock-icon.sh +0 -31
  283. package/scripts/theme/merge-wallpaper.sh +0 -146
  284. package/scripts/theme/rebuild-themes.sh +0 -603
  285. package/scripts/theme/switch.sh +0 -476
  286. package/scripts/theme/wallpaper-rotate.sh +0 -137
  287. package/scripts/theme/wallpaper-sync.sh +0 -690
  288. package/scripts/tools/cmatrix.sh +0 -22
  289. package/scripts/tools/detect-collisions.py +0 -103
  290. package/scripts/tools/emoji-picker.sh +0 -49
  291. package/scripts/tools/figlet-banner.sh +0 -19
  292. package/scripts/tools/log-rotate.sh +0 -31
  293. package/scripts/tools/lolcat-wrap.sh +0 -20
  294. package/scripts/tools/pipes.sh +0 -49
  295. package/scripts/tuning/linux.sh +0 -186
  296. package/scripts/tuning/macos.sh +0 -56
  297. package/scripts/uninstall.sh +0 -86
  298. package/scripts/verify-release-versions +0 -156
  299. package/scripts/version-sync.sh +0 -714
  300. package/templates/chezmoi-data/geekom-a9.toml.example +0 -21
  301. package/templates/chezmoi-data/mac-m1.toml.example +0 -16
  302. package/templates/chezmoi-data/mac-t2-linux.toml.example +0 -21
  303. package/templates/chezmoi-data/surface-pro-7p.toml.example +0 -21
  304. package/templates/projects/go/.github/workflows/ci.yml +0 -31
  305. package/templates/projects/go/README.md +0 -7
  306. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +0 -8
  307. package/templates/projects/go/go.mod +0 -3
  308. package/templates/projects/go/go.sum +0 -0
  309. package/templates/projects/molecule/README.md +0 -7
  310. package/templates/projects/molecule/converge.yml +0 -7
  311. package/templates/projects/molecule/molecule.yml +0 -16
  312. package/templates/projects/node/.github/workflows/ci.yml +0 -30
  313. package/templates/projects/node/README.md +0 -7
  314. package/templates/projects/node/package-lock.json +0 -12
  315. package/templates/projects/node/package.json +0 -10
  316. package/templates/projects/node/src/index.js +0 -3
  317. package/templates/projects/packer/README.md +0 -15
  318. package/templates/projects/packer/main.pkr.hcl +0 -15
  319. package/templates/projects/python/.github/workflows/ci.yml +0 -34
  320. package/templates/projects/python/README.md +0 -7
  321. package/templates/projects/python/pyproject.toml +0 -25
  322. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +0 -2
  323. package/templates/projects/python/tests/test_basic.py +0 -3
@@ -1,393 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # Version Synchronization System
6
-
7
- The version synchronization system ensures that all version references across the repository remain consistent with the version specified in `package.json`.
8
-
9
- ## Overview
10
-
11
- ### Problem Statement
12
-
13
- Large repositories often have version numbers scattered across multiple files:
14
-
15
- - README badges
16
- - Documentation headers
17
- - Feature version stamps
18
- - Configuration files
19
-
20
- Manually keeping these synchronized is error-prone and time-consuming.
21
-
22
- ### Solution Architecture
23
-
24
- This system provides automated version synchronization through:
25
-
26
- 1. **CI/CD Workflow** (`.github/workflows/sync-versions.yml`) - Automated synchronization on version changes
27
- 2. **Local Script** (`scripts/version-sync.sh`) - Manual synchronization and verification
28
- 3. **Verification System** - Ensures all references remain consistent
29
-
30
- ## Components
31
-
32
- ### 1. GitHub Actions Workflow
33
-
34
- **Location**: `.github/workflows/sync-versions.yml`
35
-
36
- **Triggers**:
37
-
38
- - Push to `main` branch when `package.json` changes
39
- - Pull requests affecting `package.json`
40
- - Manual dispatch with optional target version
41
-
42
- **Process**:
43
-
44
- 1. **Detect Changes** - Compares current vs previous `package.json` version
45
- 2. **Sync Versions** - Updates all markdown files with version references
46
- 3. **Verify Consistency** - Ensures all references match target version
47
- 4. **Commit & Push** - Automatically commits changes (except on PRs)
48
-
49
- **Features**:
50
-
51
- - Backup creation before changes
52
- - Comprehensive change reporting
53
- - PR comment integration
54
- - Artifact preservation for rollback
55
-
56
- ### 2. Local Synchronization Script
57
-
58
- **Location**: `scripts/version-sync.sh`
59
-
60
- **Usage**:
61
-
62
- ```bash
63
- # Sync to current package.json version
64
- ./scripts/version-sync.sh
65
-
66
- # Sync to specific version
67
- ./scripts/version-sync.sh 1.2.3
68
-
69
- # Preview changes without applying
70
- ./scripts/version-sync.sh --dry-run
71
-
72
- # Verify current consistency
73
- ./scripts/version-sync.sh --verify
74
- ```
75
-
76
- **Options**:
77
-
78
- - `--dry-run` - Preview changes without applying
79
- - `--verify` - Check version consistency only
80
- - `--backup` / `--no-backup` - Control backup creation
81
- - `--force` - Force sync even if no changes detected
82
-
83
- ### 3. Version Patterns
84
-
85
- The system recognizes and updates these patterns:
86
-
87
- #### README.md
88
-
89
- ```markdown
90
- [![Version](https://img.shields.io/badge/Version-v0.2.501-blue?style=for-the-badge)]
91
- ```
92
-
93
- #### Documentation Files
94
-
95
- ```markdown
96
- **Version**: v0.2.503
97
- **Dotfiles Version**: v0.2.503
98
- Version: v0.2.503
99
- version 0.2.485
100
- ```
101
-
102
- ## Integration Points
103
-
104
- ### CI/CD Pipeline Integration
105
-
106
- The workflow integrates with the existing CI pipeline:
107
-
108
- ```yaml
109
- # Existing CI workflow can depend on version sync
110
- needs: [sync-versions, lint-shell, test-linux]
111
- ```
112
-
113
- ### Git Hooks Integration
114
-
115
- For local development, add to `.git/hooks/pre-commit`:
116
-
117
- ```bash
118
- #!/bin/bash
119
- # Check version consistency before commits
120
- ./scripts/version-sync.sh --verify || {
121
- echo "Version inconsistency detected. Run: ./scripts/version-sync.sh"
122
- exit 1
123
- }
124
- ```
125
-
126
- ### Package.json Integration
127
-
128
- Version changes in `package.json` automatically trigger synchronization:
129
-
130
- ```json
131
- {
132
- "name": "@sebastienrousseau/dotfiles",
133
- "version": "0.2.485", // Changes here trigger sync
134
- "scripts": {
135
- "version-sync": "./scripts/version-sync.sh",
136
- "version-verify": "./scripts/version-sync.sh --verify"
137
- }
138
- }
139
- ```
140
-
141
- ## Workflow Examples
142
-
143
- ### Scenario 1: Version Bump
144
-
145
- ```bash
146
- # Developer updates package.json version
147
- npm version patch
148
-
149
- # Push to main
150
- git push origin main
151
-
152
- # GitHub Actions automatically:
153
- # 1. Detects version change
154
- # 2. Updates all markdown files
155
- # 3. Commits and pushes changes
156
- # 4. Verifies consistency
157
- ```
158
-
159
- ### Scenario 2: PR Review
160
-
161
- ```bash
162
- # PR with package.json changes
163
- # GitHub Actions automatically:
164
- # 1. Checks version consistency
165
- # 2. Reports any mismatches
166
- # 3. Comments on PR with sync status
167
- # 4. Provides diff preview
168
- ```
169
-
170
- ### Scenario 3: Manual Sync
171
-
172
- ```bash
173
- # Local development
174
- ./scripts/version-sync.sh --dry-run # Preview changes
175
- ./scripts/version-sync.sh # Apply changes
176
- ./scripts/version-sync.sh --verify # Confirm consistency
177
- ```
178
-
179
- ## File Detection Logic
180
-
181
- ### Automatic Discovery
182
-
183
- The system automatically discovers files containing version references:
184
-
185
- ```bash
186
- rg -l "v?[0-9]+\.[0-9]+\.[0-9]+" --type md
187
- ```
188
-
189
- ### Known Files
190
-
191
- These files are always included even if they don't currently contain versions:
192
-
193
- - `README.md`
194
- - `docs/reference/FEATURES.md`
195
- - Any file matching version patterns
196
-
197
- ### Exclusions
198
-
199
- Files that are intentionally excluded:
200
-
201
- - `CHANGELOG.md` - May contain historical versions
202
- - `package.json` - Source of truth
203
- - `docs/security/COMPLIANCE.md` - Includes external compliance spec versions
204
- - `docs/reference/FONTS.md` - Includes upstream font release versions
205
- - `docs/archive/LEGACY_ROADMAP.md` - Keeps historical release markers
206
- - `docs/archive/PLAN.md` - Captures multi-release planning references
207
- - `docs/operations/VERSION_SYNC.md` - Documentation examples and usage
208
- - `docs/architecture/WALKTHROUGH.md` - Contains environment-specific tag examples
209
- - `docs/guides/WSL2_NIX_TROUBLESHOOTING.md` - Contains IP addresses and version-like values
210
- - Binary files
211
- - Test fixtures
212
-
213
- ## Error Handling
214
-
215
- ### Common Issues
216
-
217
- #### Version Mismatch
218
-
219
- ```text
220
- ❌ Found inconsistent release in docs/reference/FEATURES.md: vX.Y.Z (expected: vA.B.C)
221
- ```
222
-
223
- **Solution**: Run `./scripts/version-sync.sh` to fix
224
-
225
- #### Missing Dependencies
226
-
227
- ```text
228
- ❌ jq is required but not installed
229
- ```
230
-
231
- **Solution**: Install dependencies (`jq`, `rg`)
232
-
233
- #### Permission Issues
234
-
235
- ```text
236
- ❌ Permission denied writing to README.md
237
- ```
238
-
239
- **Solution**: Check file permissions and Git status
240
-
241
- ### Recovery Procedures
242
-
243
- #### Rollback Changes
244
-
245
- ```bash
246
- # Restore from backup
247
- cp .version-sync-backup/README.md.*.backup README.md
248
-
249
- # Or restore from Git
250
- git checkout HEAD~1 -- README.md
251
- ```
252
-
253
- #### Force Resync
254
-
255
- ```bash
256
- ./scripts/version-sync.sh --force
257
- ```
258
-
259
- ## Monitoring & Maintenance
260
-
261
- ### Health Checks
262
-
263
- ```bash
264
- # Daily verification (add to cron)
265
- ./scripts/version-sync.sh --verify || echo "Version drift detected"
266
- ```
267
-
268
- ### Metrics Tracking
269
-
270
- The GitHub Actions workflow provides metrics:
271
-
272
- - Files scanned
273
- - Files updated
274
- - Verification status
275
- - Processing time
276
-
277
- ### Backup Strategy
278
-
279
- - Local backups in `.version-sync-backup/`
280
- - GitHub Actions artifacts (30-day retention)
281
- - Git history for rollback
282
-
283
- ## Security Considerations
284
-
285
- ### Token Permissions
286
-
287
- ```yaml
288
- permissions:
289
- contents: write # Required for commits
290
- pull-requests: write # Required for PR comments
291
- ```
292
-
293
- ### Validation
294
-
295
- - Version format validation (`x.y.z` pattern)
296
- - File path validation (no directory traversal)
297
- - Change verification before commit
298
-
299
- ### Audit Trail
300
-
301
- - All changes logged in Git history
302
- - GitHub Actions run history
303
- - Backup preservation
304
-
305
- ## Performance Optimization
306
-
307
- ### Caching Strategy
308
-
309
- - Git operations use shallow fetch when possible
310
- - Pattern compilation cached
311
- - File discovery optimized with `ripgrep`
312
-
313
- ### Parallel Processing
314
-
315
- - File processing is sequential but optimized
316
- - Git operations batched
317
- - Verification runs concurrently with updates
318
-
319
- ### Resource Usage
320
-
321
- - Typical run time: 30-60 seconds
322
- - Memory usage: <100MB
323
- - Network usage: Minimal (only Git operations)
324
-
325
- ## Future Enhancements
326
-
327
- ### Planned Features
328
-
329
- 1. **Smart Version Detection** - Semantic version awareness
330
- 2. **Template Support** - Custom version patterns
331
- 3. **Multi-Format Support** - YAML, JSON, TOML files
332
- 4. **Rollback Automation** - One-command rollback
333
- 5. **Integration Testing** - End-to-end workflow tests
334
-
335
- ### Extension Points
336
-
337
- - Custom pattern definitions
338
- - File-specific update rules
339
- - Pre/post-sync hooks
340
- - External validation services
341
-
342
- ## Troubleshooting
343
-
344
- ### Debug Mode
345
-
346
- ```bash
347
- # Enable verbose output
348
- DEBUG=1 ./scripts/version-sync.sh --dry-run
349
- ```
350
-
351
- ### Common Solutions
352
-
353
- | Issue | Solution |
354
- |-------|----------|
355
- | Script not executable | `chmod +x scripts/version-sync.sh` |
356
- | Missing tools | `apt install jq ripgrep` (Ubuntu) |
357
- | Permission denied | Check Git status and file permissions |
358
- | Workflow not triggering | Verify `package.json` changes are in push |
359
- | Changes not committed | Check branch protection rules |
360
-
361
- ### Log Analysis
362
-
363
- ```bash
364
- # View GitHub Actions logs
365
- gh run list --workflow=sync-versions.yml
366
- gh run view <run-id> --log
367
- ```
368
-
369
- ## Contributing
370
-
371
- ### Testing Changes
372
-
373
- ```bash
374
- # Test local changes
375
- ./scripts/version-sync.sh --dry-run
376
-
377
- # Test workflow changes (requires GitHub CLI)
378
- gh workflow run sync-versions.yml --ref feature-branch
379
- ```
380
-
381
- ### Adding New Patterns
382
-
383
- 1. Update pattern regex in script
384
- 2. Add test cases
385
- 3. Update documentation
386
- 4. Submit PR with examples
387
-
388
- ---
389
-
390
- **Last Updated**: 2026-02-15
391
- **Version**: v0.2.503
392
- **Maintainer**: Principal Automation Engineer
393
- **Status**: Production Ready ✅
package/docs/packaging.md DELETED
@@ -1,222 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- <!-- SPDX-License-Identifier: Apache-2.0 OR MIT -->
6
- <!-- Copyright (c) 2015-2026 Sebastien Rousseau -->
7
-
8
- # Packaging guide
9
-
10
- **Audience: distribution maintainers.** If you are packaging `dot` for
11
- Debian, Fedora, Arch, Homebrew, nixpkgs, Scoop, or anything else, this
12
- page is written for you. Everything a packager normally has to
13
- reverse-engineer — the licence grant, the toolchain floor, how the
14
- dependencies are pinned, how to build and test offline, and how to
15
- verify what you downloaded — is here.
16
-
17
- Existing packaging inputs live in [`pkg/`](https://github.com/sebastienrousseau/dotfiles/tree/main/pkg),
18
- one directory per format.
19
-
20
- ## What this software is
21
-
22
- A shell framework, not a compiled program. The shipped artefact is:
23
-
24
- - `bin/dot` — the CLI dispatcher (bash)
25
- - `lib/dot/`, `scripts/` — sourced bash libraries and subcommands
26
- - `share/man/man1/dot.1` — the man page, **generated** from the CLI's
27
- command registry at build time
28
- - `share/{bash-completion,zsh,fish}/…` — completions, also generated
29
- - `defaults/` — the chezmoi source tree the CLI applies to `$HOME`
30
-
31
- There is nothing to compile and no architecture-specific output. The
32
- release archive is `noarch`/`any`.
33
-
34
- ## Licence grant
35
-
36
- **`Apache-2.0 OR MIT`** — the SPDX expression declared in
37
- `package.json` and in `REUSE.toml`. Both full texts ship in the
38
- repository and in the release archive as `LICENSE-APACHE` and
39
- `LICENSE-MIT`, and `make install` places both under
40
- `$(PREFIX)/share/doc/dotfiles/`.
41
-
42
- This is a dual grant, not a conjunction: a downstream recipient may
43
- comply with **either** licence, at their option. For distributions
44
- that require a single choice, MIT is the permissive default; choose
45
- Apache-2.0 if you want the explicit patent grant.
46
-
47
- Per-file licensing is machine-readable via [REUSE](https://reuse.software/):
48
- `REUSE.toml` at the repository root annotates the tree, and
49
- `reuse lint` runs in CI. Vendored third-party material, where present,
50
- is annotated separately and keeps its own licence.
51
-
52
- ## Minimum toolchain
53
-
54
- Full policy, per-distro mapping, and the rules for when a floor may
55
- rise: [`MINIMUM-TOOLCHAIN.md`](MINIMUM-TOOLCHAIN.md). The short form
56
- for a packaging recipe:
57
-
58
- | Dependency | Minimum | Kind |
59
- |---|---|---|
60
- | `bash` | 3.2 | **required at runtime** |
61
- | `git` | 2.34 | required at runtime |
62
- | `curl` | any | required by the bootstrap path only |
63
- | `chezmoi` | 2.47.1 | **required at runtime** — the CLI is a control plane over chezmoi |
64
- | `zsh` / `fish` / `nushell` | 5.8 / 4.0 / 0.98 | optional; only if the user wants that shell's integration |
65
- | `jq`, `gum`, `starship`, `fzf` | any | optional; enable JSON output, rich prompts, and interactive pickers |
66
- | `go` | 1.23 | **build/test only** — fuzz harnesses and the two Go TUIs. Not needed to build or run the package. |
67
-
68
- Suggested dependency split for a distro package: `Depends: bash (>= 3.2),
69
- git (>= 2.34), chezmoi (>= 2.47.1)`; `Recommends: jq, zsh`;
70
- `Suggests: fish, nushell, gum, starship, fzf`.
71
-
72
- ## Dependency pin model
73
-
74
- Every dependency this project *builds and tests against* is pinned,
75
- and every pin is committed:
76
-
77
- | Surface | Pinned by | Notes |
78
- |---|---|---|
79
- | Development toolchain (node, go, rust, and ~20 CLI tools) | `mise.toml` + `mise.lock` + `mise-versions.lock.json` | mise is the package manager; the lock carries checksums |
80
- | Documentation build (Python) | `requirements-docs.txt` | Hash-pinned (`--require-hashes`-compatible), compiled from `requirements-docs.in` |
81
- | Node tooling | `package.json` | Dev-only |
82
- | Nix | `flake.lock`, `nix/flake.lock` | Root flake provides the dev shell; `nix/flake.nix` provides `packages.default` |
83
- | GitHub Actions | 40-hex commit SHA on every `uses:` | Enforced by `tools/ci/lint-reusable-pins.sh` and OpenSSF Scorecard |
84
- | Container bases | `FROM image:tag@sha256:<digest>` | Policy in [`security/CI_PINNING.md`](security/CI_PINNING.md) |
85
- | Binaries fetched during CI | `sha256sum -c` against a committed manifest | `security/remote-installers.sha256` |
86
-
87
- None of these are needed to *build the package*: the release archive
88
- is self-contained and its build has no network step. They exist so
89
- that the tests you may want to run are reproducible.
90
-
91
- Full provenance policy: [`supply-chain/README.md`](https://github.com/sebastienrousseau/dotfiles/blob/main/supply-chain/README.md).
92
-
93
- ## Building the package
94
-
95
- From a release tarball (recommended — it is the attested artefact):
96
-
97
- ```sh
98
- tar -xzf dot-0.2.520.tar.gz
99
- cd dot-0.2.520
100
- make install PREFIX=/usr DESTDIR="$pkgdir"
101
- ```
102
-
103
- From a git checkout:
104
-
105
- ```sh
106
- make # generates man page + completions into build/
107
- make install PREFIX=/usr DESTDIR="$pkgdir"
108
- ```
109
-
110
- Both honour `PREFIX` (default `/usr/local`) and `DESTDIR`, and install
111
- to FHS paths:
112
-
113
- ```
114
- $(DESTDIR)$(PREFIX)/bin/dot -> symlink into libexec
115
- $(DESTDIR)$(PREFIX)/lib/dotfiles/ program tree
116
- $(DESTDIR)$(PREFIX)/share/man/man1/dot.1
117
- $(DESTDIR)$(PREFIX)/share/bash-completion/completions/dot
118
- $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_dot
119
- $(DESTDIR)$(PREFIX)/share/fish/vendor_completions.d/dot.fish
120
- $(DESTDIR)$(PREFIX)/share/doc/dotfiles/{LICENSE-APACHE,LICENSE-MIT,README.md,CHANGELOG.md}
121
- ```
122
-
123
- Every directory is individually overridable — `BINDIR`, `MANDIR`,
124
- `DOCDIR`, `LIBEXECDIR`, `BASHCOMPDIR`, `ZSHCOMPDIR`, `FISHCOMPDIR` —
125
- for distributions whose layout differs. If your `BINDIR` and
126
- `LIBEXECDIR` are not siblings under `PREFIX`, also set `DOT_LINK` to
127
- the correct relative or absolute symlink target; `make install` fails
128
- loudly rather than leaving a dangling link.
129
-
130
- `make uninstall` removes exactly what `make install` placed.
131
-
132
- ## Testing offline
133
-
134
- There are no vendored build dependencies to unbundle, and the checks a
135
- packager cares about need no network:
136
-
137
- ```sh
138
- make installcheck DESTDIR="$pkgdir" # asserts the installed tree is complete and runs
139
- make -C "$pkgdir" smoke # from a release tarball: run the CLI in place
140
- ```
141
-
142
- `installcheck` verifies the `bin` symlink resolves, the man page and
143
- all three completions are present, the licences are installed, and the
144
- installed binary reports the expected version and renders help — from
145
- a sandboxed `HOME`, with no source checkout and no network.
146
-
147
- The full suite also runs offline:
148
-
149
- ```sh
150
- make test # unit + regression; no network
151
- make examples # every example under examples/ executed
152
- ```
153
-
154
- `make test-integration` and anything under `install/provision/` **do**
155
- touch the network and modify `$HOME`; do not run them in a build
156
- chroot.
157
-
158
- ## Verifying what you downloaded
159
-
160
- Do not package an unverified tarball. Every release carries four
161
- independent attestations, and the consumer-side recipe with copy-paste
162
- commands is in
163
- [`pkg/VERIFY.md`](https://github.com/sebastienrousseau/dotfiles/blob/main/pkg/VERIFY.md)
164
- and [`security/VERIFY_RELEASE.md`](security/VERIFY_RELEASE.md).
165
-
166
- Minimum a packager should do:
167
-
168
- ```sh
169
- TAG=v0.2.520
170
- REPO=sebastienrousseau/dotfiles
171
-
172
- # SLSA build provenance on the tarball itself
173
- gh attestation verify "dot-${TAG#v}.tar.gz" --repo "$REPO"
174
-
175
- # Or, without the gh CLI: the signed manifest covering every asset
176
- gh release download "$TAG" --repo "$REPO" \
177
- --pattern ALL_SHA256SUMS --pattern 'ALL_SHA256SUMS.*'
178
- cosign verify-blob \
179
- --certificate ALL_SHA256SUMS.pem --signature ALL_SHA256SUMS.sig \
180
- --certificate-identity-regexp "^https://github.com/$REPO/" \
181
- --certificate-oidc-issuer https://token.actions.githubusercontent.com \
182
- ALL_SHA256SUMS
183
- sha256sum -c ALL_SHA256SUMS
184
- ```
185
-
186
- Tags are signed with an SSH ed25519 key published in
187
- [`KEYS.asc`](https://github.com/sebastienrousseau/dotfiles/blob/main/KEYS.asc),
188
- which is itself a `git allowed_signers` file:
189
-
190
- ```sh
191
- git -c gpg.ssh.allowedSignersFile=KEYS.asc tag -v v0.2.520
192
- ```
193
-
194
- An SBOM ships with every release in both CycloneDX and SPDX JSON.
195
-
196
- ## Reproducibility
197
-
198
- The release archives are built deterministically — `tar --sort=name
199
- --mtime='1970-01-01' --owner=0 --group=0 --numeric-owner`, and
200
- `zip -X -D` over a normalised tree — so two builds of the same tag
201
- produce identical bytes.
202
-
203
- This is a statement about the *archive build*, which is exercised by
204
- CI on every release. It is **not** a verified end-to-end
205
- reproducible-builds claim: no diffoscope comparison of two independent
206
- rebuilds runs in CI today. Treat it as "deterministic archiving",
207
- not as a reproducible-builds certification.
208
-
209
- ## Channel notes
210
-
211
- | Channel | File | How it is produced |
212
- |---|---|---|
213
- | Homebrew | `pkg/brew/dot.rb` | `release-distribute-homebrew.yml` rewrites `url` + `sha256`, opens a PR on `sebastienrousseau/homebrew-tap` |
214
- | Scoop | `pkg/scoop/dot.json` | `release-distribute-scoop.yml` rewrites version + hashes via `jq`, opens a PR on `sebastienrousseau/scoop-bucket` |
215
- | AUR | `pkg/aur/PKGBUILD` | `release-distribute-aur.yml` rewrites `pkgver` + `sha256sums`, regenerates `.SRCINFO`, pushes to the AUR |
216
- | Nix | `pkg/nix/` → `nix/flake.nix` | `packages.default` in `nix/flake.nix` |
217
- | deb / rpm | *not yet provided* | Contributions welcome; `make install` already produces a correct `DESTDIR` tree, so a recipe is thin |
218
-
219
- If you are packaging for a distribution not listed here, please open
220
- an issue — a link to your package will be added, and the `pkg/`
221
- directory is the right place for the recipe to live so it stays in
222
- lockstep with the release build.