@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
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- # Compat shim: the canonical script moved to tools/ci/ during the repo reorg.
5
- # Pinned reusable workflows on main still reference the old path;
6
- # this delegates so they keep working until the next pin bump.
7
- set -euo pipefail
8
- exec bash "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)/tools/ci/check-copyright-headers.sh" "$@"
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- # Compat shim: the canonical script moved to tools/ci/ during the repo reorg.
5
- # Pinned reusable workflows on main still reference the old path;
6
- # this delegates so they keep working until the next pin bump.
7
- set -euo pipefail
8
- exec bash "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)/tools/ci/check-shell-preamble.sh" "$@"
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- # Compat shim: the canonical script moved to tools/ci/ during the repo reorg.
5
- # Pinned reusable workflows on main still reference the old path;
6
- # this delegates so they keep working until the next pin bump.
7
- set -euo pipefail
8
- exec bash "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)/tools/ci/guard-gitleaks-checkout.sh" "$@"
@@ -1,43 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- set -euo pipefail
5
-
6
- OUT="${1:-$HOME/.dotfiles/docs/demo/demo.gif}"
7
- DURATION="${DURATION:-30}"
8
- FPS="${FPS:-15}"
9
-
10
- record_ffmpeg() {
11
- if command -v ffmpeg >/dev/null; then
12
- echo "Recording with ffmpeg for ${DURATION}s..."
13
- if [ "$(uname -s)" = "Darwin" ]; then
14
- # macOS (AVFoundation)
15
- ffmpeg -y -t "$DURATION" -f avfoundation -i "1:none" -vf "fps=$FPS,scale=1024:-1:flags=lanczos" "$OUT"
16
- else
17
- # Linux (X11)
18
- ffmpeg -y -t "$DURATION" -f x11grab -i :0.0 -vf "fps=$FPS,scale=1024:-1:flags=lanczos" "$OUT"
19
- fi
20
- else
21
- echo "ffmpeg not found. Install it and retry."
22
- exit 1
23
- fi
24
- }
25
-
26
- record_wf_recorder() {
27
- if command -v wf-recorder >/dev/null; then
28
- echo "Recording with wf-recorder for ${DURATION}s..."
29
- wf-recorder -f "$OUT" -t "$DURATION"
30
- else
31
- return 1
32
- fi
33
- }
34
-
35
- if [ "$(uname -s)" = "Linux" ]; then
36
- if record_wf_recorder; then
37
- exit 0
38
- fi
39
- fi
40
-
41
- record_ffmpeg
42
-
43
- printf "Saved demo to %s\n" "$OUT"
@@ -1,163 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- ## A2A v0.3 and agent card conformance validation.
5
-
6
- set -euo pipefail
7
-
8
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
9
- REPO_ROOT="${REPO_ROOT:-$(cd "$SCRIPT_DIR/../.." && pwd)}"
10
-
11
- # shellcheck source=../../lib/dot/ui.sh
12
- source "$SCRIPT_DIR/../../lib/dot/ui.sh"
13
-
14
- JSON_MODE=0
15
- STRICT_MODE=0
16
- while [[ $# -gt 0 ]]; do
17
- case "$1" in
18
- --json | -j)
19
- JSON_MODE=1
20
- shift
21
- ;;
22
- --strict | -s)
23
- STRICT_MODE=1
24
- shift
25
- ;;
26
- *)
27
- shift
28
- ;;
29
- esac
30
- done
31
-
32
- command -v jq >/dev/null 2>&1 || {
33
- echo "jq is required for A2A conformance checks." >&2
34
- exit 1
35
- }
36
-
37
- a2a_card="$REPO_ROOT/.well-known/agent-card.json"
38
- legacy_doc="$REPO_ROOT/.well-known/agent.json"
39
- internal_card="$REPO_ROOT/defaults/dot_config/dotfiles/agent-card.json"
40
- agent_profiles="$REPO_ROOT/defaults/dot_config/dotfiles/agent-profiles.json"
41
- status="healthy"
42
- issues=()
43
-
44
- # Check primary A2A v0.3 card
45
- if [[ ! -f "$a2a_card" ]]; then
46
- issues+=("missing:.well-known/agent-card.json")
47
- fi
48
-
49
- # Check legacy agent.json
50
- if [[ ! -f "$legacy_doc" ]]; then
51
- issues+=("missing:.well-known/agent.json")
52
- fi
53
-
54
- # Check internal card
55
- if [[ ! -f "$internal_card" ]]; then
56
- issues+=("missing:agent-card.json")
57
- fi
58
-
59
- # Check agent profiles
60
- if [[ ! -f "$agent_profiles" ]]; then
61
- issues+=("missing:agent-profiles.json")
62
- fi
63
-
64
- if [[ "${#issues[@]}" -eq 0 ]]; then
65
- # Validate A2A v0.3 card
66
- spec_version="$(jq -r '.specVersion // empty' "$a2a_card")"
67
- [[ "$spec_version" == "0.3" ]] || issues+=("specVersion:expected 0.3, got $spec_version")
68
-
69
- # Skills array
70
- jq -e '.skills | type == "array"' "$a2a_card" >/dev/null 2>&1 || issues+=("skills:missing or not array")
71
- skills_count="$(jq '.skills | length' "$a2a_card" 2>/dev/null || echo 0)"
72
- [[ "$skills_count" -gt 0 ]] || issues+=("skills:empty array")
73
-
74
- # Authentication block
75
- jq -e '.authentication' "$a2a_card" >/dev/null 2>&1 || issues+=("authentication:missing")
76
-
77
- # Signing metadata
78
- signing_method="$(jq -r '.signing.method // empty' "$a2a_card")"
79
- [[ -n "$signing_method" ]] || issues+=("signing:missing method")
80
-
81
- # Capabilities
82
- jq -e '.capabilities' "$a2a_card" >/dev/null 2>&1 || issues+=("capabilities:missing")
83
-
84
- # Protocol must be "a2a" not "a2a-ready"
85
- if jq -e '.protocols | index("a2a-ready")' "$a2a_card" >/dev/null 2>&1; then
86
- issues+=("protocols:should use 'a2a' not 'a2a-ready'")
87
- fi
88
- jq -e '.protocols | index("a2a")' "$a2a_card" >/dev/null 2>&1 || issues+=("protocols:missing 'a2a'")
89
-
90
- # Validate internal card also uses v0.3 and "a2a"
91
- internal_spec="$(jq -r '.specVersion // empty' "$internal_card")"
92
- [[ "$internal_spec" == "0.3" ]] || issues+=("internal-card:specVersion expected 0.3")
93
- if jq -e '.protocols | index("a2a-ready")' "$internal_card" >/dev/null 2>&1; then
94
- issues+=("internal-card:should use 'a2a' not 'a2a-ready'")
95
- fi
96
-
97
- # Validate legacy doc points to new card
98
- jq -e '.a2aCard' "$legacy_doc" >/dev/null 2>&1 || issues+=("legacy:missing a2aCard pointer")
99
- if jq -e '.protocols | index("a2a-ready")' "$legacy_doc" >/dev/null 2>&1; then
100
- issues+=("legacy:should use 'a2a' not 'a2a-ready'")
101
- fi
102
-
103
- # Name consistency
104
- a2a_name="$(jq -r '.name // empty' "$a2a_card")"
105
- internal_name="$(jq -r '.name // empty' "$internal_card")"
106
- legacy_name="$(jq -r '.name // empty' "$legacy_doc")"
107
- [[ "$a2a_name" == "$internal_name" ]] || issues+=("name:mismatch between a2a-card and internal card")
108
- [[ "$a2a_name" == "$legacy_name" ]] || issues+=("name:mismatch between a2a-card and legacy doc")
109
-
110
- # Default profile validation
111
- default_profile="$(jq -r '.defaultProfile // empty' "$internal_card")"
112
- if [[ -n "$default_profile" ]]; then
113
- jq -e --arg profile "$default_profile" '.profiles[$profile]' "$agent_profiles" >/dev/null 2>&1 || issues+=("default-profile:missing in agent-profiles.json")
114
- fi
115
-
116
- # Card signing in internal card
117
- jq -e '.security.cardSigning' "$internal_card" >/dev/null 2>&1 || issues+=("internal-card:missing cardSigning in security")
118
- fi
119
-
120
- if [[ "${#issues[@]}" -gt 0 ]]; then
121
- status="issues"
122
- fi
123
-
124
- # Build issues JSON safely
125
- if [[ "${#issues[@]}" -gt 0 ]]; then
126
- issues_json="$(printf '%s\n' "${issues[@]}" | jq -R . | jq -s .)"
127
- else
128
- issues_json="[]"
129
- fi
130
-
131
- payload="$(jq -n \
132
- --arg status "$status" \
133
- --arg a2a_card "$a2a_card" \
134
- --arg legacy_doc "$legacy_doc" \
135
- --arg internal_card "$internal_card" \
136
- --arg agent_profiles "$agent_profiles" \
137
- --argjson strict "$([[ "$STRICT_MODE" -eq 1 ]] && echo true || echo false)" \
138
- --argjson issues "$issues_json" \
139
- '{status: $status, strict: $strict, specVersion: "0.3", files: {a2a_card: $a2a_card, legacy_doc: $legacy_doc, internal_card: $internal_card, agent_profiles: $agent_profiles}, issues: $issues}')"
140
-
141
- if [[ "$JSON_MODE" -eq 1 ]]; then
142
- printf '%s\n' "$payload"
143
- else
144
- ui_dot_banner "AI and Agents"
145
- ui_header "A2A v0.3 Conformance"
146
- if [[ "$status" == "healthy" ]]; then
147
- ui_ok "Status" "healthy"
148
- ui_ok "Spec version" "0.3"
149
- ui_ok "A2A card" "$a2a_card"
150
- ui_ok "Legacy doc" "$legacy_doc"
151
- ui_ok "Internal card" "$internal_card"
152
- else
153
- ui_warn "Status" "issues"
154
- while IFS= read -r issue; do
155
- [[ -n "$issue" ]] || continue
156
- ui_warn "Issue" "$issue"
157
- done < <(printf '%s' "$payload" | jq -r '.issues[]')
158
- fi
159
- fi
160
-
161
- if [[ "$STRICT_MODE" -eq 1 && "$status" != "healthy" ]]; then
162
- exit 1
163
- fi
@@ -1,165 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- # Alias governance checks:
5
- # - duplicate alias names
6
- # - risky overrides must be gated
7
- # - no hardcoded /Users paths
8
-
9
- set -euo pipefail
10
-
11
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
12
- manifest_script="$SCRIPT_DIR/aliases-manifest.sh"
13
- deprecations_file="$SCRIPT_DIR/../dot/data/alias-deprecations.tsv"
14
- policy="${DOTFILES_ALIAS_POLICY:-standard}"
15
- if [[ -n "${CI:-}" && "${DOTFILES_ALIAS_POLICY:-}" == "" ]]; then
16
- policy="strict"
17
- fi
18
-
19
- if [[ ! -x "$manifest_script" ]]; then
20
- echo "ERROR: aliases-manifest.sh not found or not executable" >&2
21
- exit 1
22
- fi
23
-
24
- tmp_manifest="$(umask 077 && mktemp)"
25
- trap 'rm -f "$tmp_manifest"' EXIT
26
-
27
- bash "$manifest_script" >"$tmp_manifest"
28
-
29
- errors=0
30
-
31
- echo "Alias Governance"
32
- echo ""
33
- echo "Policy: $policy"
34
- echo ""
35
-
36
- version_ge() {
37
- local a="${1#v}" b="${2#v}"
38
- local IFS=.
39
- local i
40
- read -r -a av <<<"$a"
41
- read -r -a bv <<<"$b"
42
- for i in 0 1 2; do
43
- local ai="${av[$i]:-0}"
44
- local bi="${bv[$i]:-0}"
45
- ((10#$ai > 10#$bi)) && return 0
46
- ((10#$ai < 10#$bi)) && return 1
47
- done
48
- return 0
49
- }
50
-
51
- repo_version="0.0.0"
52
- if [[ -f "$SCRIPT_DIR/../../package.json" ]]; then
53
- repo_version="$(sed -n 's/^[[:space:]]*"version"[[:space:]]*:[[:space:]]*"\([0-9][0-9.]*\)".*/\1/p' "$SCRIPT_DIR/../../package.json" | head -1)"
54
- fi
55
- repo_version="${repo_version:-0.0.0}"
56
-
57
- # ripgrep is preferred but is NOT guaranteed to be installed (the CI
58
- # runners and minimal setups often lack it, which is why
59
- # aliases-manifest.sh already carries a grep fallback). Without one
60
- # here, `rg` exiting 127 reads as "no match": every gated override was
61
- # reported as ungated, and this gate failed with false errors on any
62
- # machine without ripgrep.
63
- _gov_grep_file() { # <ere-pattern> <file>
64
- if command -v rg >/dev/null 2>&1; then
65
- rg -q "$1" "$2"
66
- else
67
- grep -qE "$1" "$2"
68
- fi
69
- }
70
-
71
- _gov_grep_tree() { # <ere-pattern> <dir>...
72
- local pattern="$1"
73
- shift
74
- if command -v rg >/dev/null 2>&1; then
75
- rg -q --glob '*.sh' --glob '*.aliases.sh' --glob '*.tmpl' "$pattern" "$@" 2>/dev/null
76
- else
77
- grep -rqE --include='*.sh' --include='*.aliases.sh' --include='*.tmpl' \
78
- "$pattern" "$@" 2>/dev/null
79
- fi
80
- }
81
-
82
- # 1) Duplicate alias names
83
- dupes="$(awk -F'\t' '{count[$1]++} END {for (k in count) if (count[k] > 1) print k}' "$tmp_manifest" | sort)"
84
- if [[ -n "$dupes" ]]; then
85
- if [[ "$policy" == "strict" ]]; then
86
- echo "ERROR: duplicate alias names detected:"
87
- printf "%s\n" "$dupes" | sed 's/^/ - /'
88
- errors=$((errors + 1))
89
- else
90
- echo "WARN: duplicate alias names detected (review recommended):"
91
- printf "%s\n" "$dupes" | sed 's/^/ - /'
92
- fi
93
- else
94
- echo "OK: no duplicate alias names"
95
- fi
96
-
97
- # 2) Risky overrides must be gated
98
- while IFS=$'\t' read -r name _value file _line; do
99
- case "$name" in
100
- cd | sudo | su | cp | mv | rm | mkdir | alias)
101
- # GNU coreutils aliases are intentionally centralized overrides.
102
- if [[ "$file" == *"/aliases/gnu/"* ]]; then
103
- continue
104
- fi
105
- if ! _gov_grep_file 'DOTFILES_(ENABLE|SAFE|ALIAS)' "$file"; then
106
- echo "ERROR: risky override '$name' in $file is not gated by a DOTFILES_* flag"
107
- errors=$((errors + 1))
108
- fi
109
- ;;
110
- esac
111
- done <"$tmp_manifest"
112
-
113
- if [[ $errors -eq 0 ]]; then
114
- echo "OK: risky overrides are gated"
115
- fi
116
-
117
- # 3) Hardcoded /Users path check (alias value only)
118
- hardcoded="$(awk -F'\t' '$2 ~ /\/Users\// {print $1 "\t" $2 "\t" $3 ":" $4}' "$tmp_manifest")"
119
- if [[ -n "$hardcoded" ]]; then
120
- echo "ERROR: hardcoded /Users paths detected in aliases:"
121
- printf "%s\n" "$hardcoded" | sed 's/^/ - /'
122
- errors=$((errors + 1))
123
- else
124
- echo "OK: no hardcoded /Users paths in aliases"
125
- fi
126
-
127
- # 4) Deprecation window enforcement
128
- if [[ -f "$deprecations_file" ]]; then
129
- expired_hits=0
130
- while IFS=$'\t' read -r alias_name replacement remove_in; do
131
- [[ -z "${alias_name:-}" ]] && continue
132
- [[ "${alias_name:0:1}" == "#" ]] && continue
133
- if version_ge "$repo_version" "$remove_in"; then
134
- alias_found=0
135
- if awk -F'\t' -v n="$alias_name" '$1==n{found=1} END{exit(found?0:1)}' "$tmp_manifest"; then
136
- alias_found=1
137
- fi
138
- function_found=0
139
- if _gov_grep_tree "^[[:space:]]*(function[[:space:]]+)?${alias_name}[[:space:]]*\\(\\)" \
140
- "$SCRIPT_DIR/../../defaults/.chezmoitemplates/aliases" \
141
- "$SCRIPT_DIR/../../scripts/dot"; then
142
- function_found=1
143
- fi
144
- if [[ $alias_found -eq 1 || $function_found -eq 1 ]]; then
145
- [[ $expired_hits -eq 0 ]] && echo "ERROR: expired deprecated aliases still present:"
146
- echo " - $alias_name (remove_in=$remove_in, replacement=$replacement)"
147
- expired_hits=$((expired_hits + 1))
148
- fi
149
- fi
150
- done < <(cut -f1-3 "$deprecations_file")
151
- if [[ $expired_hits -gt 0 ]]; then
152
- errors=$((errors + 1))
153
- else
154
- echo "OK: no expired deprecated aliases (repo version: v$repo_version)"
155
- fi
156
- fi
157
-
158
- echo ""
159
- if [[ $errors -eq 0 ]]; then
160
- echo "Alias governance checks passed."
161
- exit 0
162
- fi
163
-
164
- echo "Alias governance checks failed: $errors issue(s)." >&2
165
- exit 1
@@ -1,74 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- set -euo pipefail
5
-
6
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
7
- # shellcheck source=../../lib/dot/utils.sh
8
- # shellcheck disable=SC1091
9
- source "$SCRIPT_DIR/../../lib/dot/utils.sh"
10
-
11
- src_dir="$(require_source_dir)"
12
- manifest="$src_dir/scripts/diagnostics/aliases-manifest.sh"
13
- if [[ ! -x "$manifest" ]]; then
14
- echo "Alias manifest not found: $manifest" >&2
15
- exit 1
16
- fi
17
-
18
- cat <<'HEADER'
19
- # Alias Cheatsheet
20
-
21
- Auto-generated from alias manifest.
22
-
23
- ## Core shortcuts
24
- HEADER
25
-
26
- # Core list we care about (preserve ordering).
27
- core_aliases=(c q e h _ i l ll la lr lra lt lta a d)
28
-
29
- tmp_manifest="$(umask 077 && mktemp)"
30
- trap 'rm -f "$tmp_manifest"' EXIT
31
- bash "$manifest" >"$tmp_manifest"
32
-
33
- pick_alias() {
34
- local name="$1"
35
- shift
36
- local value=""
37
- local pattern
38
- while [[ $# -gt 0 ]]; do
39
- pattern="$1"
40
- value="$(awk -F$'\t' -v key="$name" -v pat="$pattern" '$1==key && $3 ~ pat {print $2; exit}' "$tmp_manifest")"
41
- [[ -n "$value" ]] && {
42
- printf '%s\n' "$value"
43
- return 0
44
- }
45
- shift
46
- done
47
- value="$(awk -F$'\t' -v key="$name" '$1==key {print $2; exit}' "$tmp_manifest")"
48
- [[ -n "$value" ]] && printf '%s\n' "$value"
49
- }
50
-
51
- for a in "${core_aliases[@]}"; do
52
- case "$a" in
53
- a)
54
- line="$(pick_alias "$a" "/ai/")"
55
- ;;
56
- d)
57
- line="$(pick_alias "$a" "/system/" "/configuration/" "/docker/")"
58
- ;;
59
- *)
60
- line="$(pick_alias "$a")"
61
- ;;
62
- esac
63
- if [[ -n "$line" ]]; then
64
- printf '%s\n' "- \`$a\` $line"
65
- fi
66
- done
67
-
68
- cat <<'FOOTER'
69
-
70
- ## Notes
71
-
72
- - Regenerate: `dot aliases cheatsheet`
73
- - Apply changes: `chezmoi apply`
74
- FOOTER
@@ -1,77 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- # Emit alias manifest as TSV:
5
- # name<TAB>value<TAB>file<TAB>line
6
-
7
- set -euo pipefail
8
-
9
- usage() {
10
- cat <<'EOF'
11
- Usage: aliases-manifest.sh [chezmoi-source-dir]
12
-
13
- Emit alias definitions as tab-separated rows:
14
- name<TAB>value<TAB>file<TAB>line
15
- EOF
16
- }
17
-
18
- resolve_source_dir() {
19
- if [[ -n "${CHEZMOI_SOURCE_DIR:-}" && -d "${CHEZMOI_SOURCE_DIR}" ]]; then
20
- printf "%s\n" "${CHEZMOI_SOURCE_DIR}"
21
- return
22
- fi
23
- if [[ -d "$HOME/.dotfiles" ]]; then
24
- printf "%s\n" "$HOME/.dotfiles"
25
- return
26
- fi
27
- if [[ -d "$HOME/.local/share/chezmoi" ]]; then
28
- printf "%s\n" "$HOME/.local/share/chezmoi"
29
- return
30
- fi
31
- return 1
32
- }
33
-
34
- # Descend into the chezmoi source subdir (per `.chezmoiroot`) if
35
- # present — post-Phase-4b (v0.2.503) the aliases + functions trees
36
- # live under `defaults/.chezmoitemplates/`, not at the repo root.
37
- # See `resolve_chezmoi_source_dir` in lib/dot/utils.sh.
38
- resolve_chezmoi_source_dir() {
39
- local root="$1"
40
- if [[ -f "$root/.chezmoiroot" ]]; then
41
- local sub
42
- sub="$(head -1 "$root/.chezmoiroot" | tr -d '[:space:]')"
43
- if [[ -n "$sub" && -d "$root/$sub" ]]; then
44
- printf "%s\n" "$root/$sub"
45
- return
46
- fi
47
- fi
48
- printf "%s\n" "$root"
49
- }
50
-
51
- case "${1:-}" in
52
- -h | --help)
53
- usage
54
- exit 0
55
- ;;
56
- -*)
57
- printf 'Unknown option: %s\n' "$1" >&2
58
- usage >&2
59
- exit 2
60
- ;;
61
- esac
62
-
63
- src_root="${1:-$(resolve_source_dir)}"
64
- src_dir="$(resolve_chezmoi_source_dir "$src_root")"
65
-
66
- alias_pattern='^[[:space:]]*alias[[:space:]]+[A-Za-z0-9_.:-]+='
67
- conditional_alias_pattern='^[[:space:]]*[^#"'\'']*&&[[:space:]]*alias[[:space:]]+[A-Za-z0-9_.:-]+='
68
- search_paths=(
69
- "$src_dir/.chezmoitemplates/aliases"
70
- "$src_dir/.chezmoitemplates/functions"
71
- )
72
-
73
- if command -v rg >/dev/null 2>&1; then
74
- rg -n -e "$alias_pattern" -e "$conditional_alias_pattern" "${search_paths[@]}"
75
- else
76
- grep -rEn -e "$alias_pattern" -e "$conditional_alias_pattern" "${search_paths[@]}"
77
- fi | sed -E 's#^([^:]+):([0-9]+):.*alias[[:space:]]+([A-Za-z0-9_.:-]+)=(.*)$#\3\t\4\t\1\t\2#'