@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.
- package/CHANGELOG.md +52 -0
- package/LICENSE-APACHE +190 -0
- package/LICENSE-MIT +21 -0
- package/README.md +43 -37
- package/install.sh +76 -10
- package/package.json +7 -7
- package/tools/README.md +49 -0
- package/tools/ci/install-chezmoi-verified.sh +68 -0
- package/docs/.vitepress/reports/localization-readability-audit.md +0 -73
- package/docs/AI.md +0 -179
- package/docs/ARCHITECTURE.md +0 -117
- package/docs/CNAME +0 -1
- package/docs/CONFIG_STRATEGY.md +0 -124
- package/docs/COPYRIGHT +0 -7
- package/docs/ECOSYSTEM.md +0 -220
- package/docs/GOLD-STANDARD-AUDIT.md +0 -352
- package/docs/GOVERNANCE.md +0 -98
- package/docs/MAINTAINERS.md +0 -41
- package/docs/MINIMUM-TOOLCHAIN.md +0 -100
- package/docs/NAMING_CONVENTIONS.md +0 -102
- package/docs/OPENCODE.md +0 -127
- package/docs/README.md +0 -84
- package/docs/STRUCTURE.md +0 -102
- package/docs/adr/ADR-001-ci-cd-pipeline.md +0 -118
- package/docs/adr/ADR-002-shell-performance.md +0 -130
- package/docs/adr/ADR-003-security-first.md +0 -158
- package/docs/adr/ADR-004-cli-architecture.md +0 -171
- package/docs/adr/ADR-005-chezmoi-choice.md +0 -99
- package/docs/adr/ADR-006-shell-selection.md +0 -124
- package/docs/adr/ADR-007-multi-shell-parity.md +0 -62
- package/docs/adr/ADR-008-alias-system-architecture.md +0 -95
- package/docs/adr/ADR-009-wallpaper-driven-theming.md +0 -131
- package/docs/adr/ADR-010-starship-transient-prompt.md +0 -144
- package/docs/adr/ADR-011-nushell-tier3-keep.md +0 -144
- package/docs/adr/ADR-012-ai-fleet-local-proxy.md +0 -79
- package/docs/adr/README.md +0 -40
- package/docs/architecture/AI_COST_OPTIMIZATION.md +0 -144
- package/docs/architecture/ARCHITECTURE.md +0 -20
- package/docs/architecture/INTEROP.md +0 -44
- package/docs/architecture/REPO_LAYOUT.md +0 -241
- package/docs/architecture/WALKTHROUGH.md +0 -86
- package/docs/architecture/fleet-deployment.md +0 -77
- package/docs/archive/EUXIS_2026_REVIEW.md +0 -127
- package/docs/archive/LEGACY_ROADMAP.md +0 -6
- package/docs/archive/MILESTONE_v0.2.493.md +0 -47
- package/docs/archive/PLAN.md +0 -199
- package/docs/archive/REPO_AUDIT.md +0 -31
- package/docs/articles/.pages +0 -6
- package/docs/articles/2026-07-05-custom-mkdocs-material-dark-theme.md +0 -216
- package/docs/articles/2026-07-05-fish-startup-abbr.md +0 -153
- package/docs/articles/2026-07-05-master-to-main-rename-runbook.md +0 -128
- package/docs/articles/index.md +0 -36
- package/docs/guides/INSTALL.md +0 -144
- package/docs/guides/MACOS_ICLOUD_SYMLINKS.md +0 -121
- package/docs/guides/NEOVIM_IDE_GUIDE.md +0 -61
- package/docs/guides/THEMING.md +0 -230
- package/docs/guides/TROUBLESHOOTING.md +0 -176
- package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +0 -792
- package/docs/index.md +0 -132
- package/docs/interop/A2A.md +0 -39
- package/docs/interop/POWERSHELL.md +0 -102
- package/docs/manual/00-introduction.md +0 -89
- package/docs/manual/01-concepts/01-architecture.md +0 -138
- package/docs/manual/01-concepts/02-trust-model.md +0 -183
- package/docs/manual/01-concepts/03-theme-engine.md +0 -186
- package/docs/manual/01-concepts/04-fleet.md +0 -148
- package/docs/manual/01-concepts/05-self-healing.md +0 -204
- package/docs/manual/02-tutorials/01-first-install.md +0 -197
- package/docs/manual/02-tutorials/02-add-wallpaper.md +0 -216
- package/docs/manual/02-tutorials/03-create-profile.md +0 -244
- package/docs/manual/02-tutorials/04-encrypt-secret.md +0 -281
- package/docs/manual/02-tutorials/05-deploy-fleet.md +0 -283
- package/docs/manual/03-reference/01-dot-cli.md +0 -475
- package/docs/manual/03-reference/02-config-files.md +0 -265
- package/docs/manual/03-reference/03-environment.md +0 -124
- package/docs/manual/03-reference/04-templates.md +0 -190
- package/docs/manual/03-reference/05-feature-flags.md +0 -187
- package/docs/manual/04-cookbook/01-recipes.md +0 -285
- package/docs/manual/04-cookbook/02-troubleshooting.md +0 -351
- package/docs/manual/04-cookbook/03-faq.md +0 -175
- package/docs/manual/05-appendices/A-platform-matrix.md +0 -101
- package/docs/manual/05-appendices/B-security-checklist.md +0 -85
- package/docs/manual/05-appendices/C-glossary.md +0 -40
- package/docs/manual/05-appendices/D-bibliography.md +0 -58
- package/docs/manual/05-appendices/E-license.md +0 -38
- package/docs/manual/_toc.yml +0 -58
- package/docs/manual/command-index.md +0 -175
- package/docs/manual/concept-index.md +0 -170
- package/docs/manual/index.md +0 -66
- package/docs/migration/README.md +0 -81
- package/docs/migration/from-bare-git-repo.md +0 -156
- package/docs/migration/from-gnu-stow.md +0 -165
- package/docs/migration/from-plain-chezmoi.md +0 -148
- package/docs/migration/from-yadm.md +0 -187
- package/docs/operations/ARCHITECTURE_ROADMAP.md +0 -7
- package/docs/operations/ATTESTATION.md +0 -44
- package/docs/operations/CI_CADENCE.md +0 -107
- package/docs/operations/CI_COMPOSITES.md +0 -156
- package/docs/operations/COMPLETIONS.md +0 -123
- package/docs/operations/COVERAGE.md +0 -204
- package/docs/operations/DRIFT.md +0 -107
- package/docs/operations/HARD_AUDIT_2026.md +0 -631
- package/docs/operations/MAINTENANCE.md +0 -63
- package/docs/operations/MANIFEST.md +0 -127
- package/docs/operations/MIGRATION.md +0 -109
- package/docs/operations/OPERATIONS.md +0 -188
- package/docs/operations/PERFORMANCE.md +0 -133
- package/docs/operations/PERFORMANCE_BUDGETS.md +0 -196
- package/docs/operations/REGISTRY.md +0 -90
- package/docs/operations/RELEASE_PIPELINE.md +0 -128
- package/docs/operations/RELIABILITY.md +0 -122
- package/docs/operations/RFC_v0_2_503_reorganization.md +0 -280
- package/docs/operations/ROADMAP.md +0 -10
- package/docs/operations/ROADMAP_2026.md +0 -7
- package/docs/operations/ROADMAP_V0_2_503.md +0 -10
- package/docs/operations/TESTING.md +0 -216
- package/docs/operations/TRACEABILITY.md +0 -44
- package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +0 -65
- package/docs/operations/VERSION_SYNC.md +0 -393
- package/docs/packaging.md +0 -222
- package/docs/reference/ALIASES.md +0 -131
- package/docs/reference/ALIASES_CHEATSHEET.md +0 -32
- package/docs/reference/ALIASES_DEPRECATIONS.md +0 -13
- package/docs/reference/FEATURE-MATRIX.md +0 -646
- package/docs/reference/FEATURES.md +0 -66
- package/docs/reference/FONTS.md +0 -112
- package/docs/reference/POWERSHELL_PARITY.md +0 -82
- package/docs/reference/PROFILES.md +0 -69
- package/docs/reference/SCREENSHOTS.md +0 -121
- package/docs/reference/SCRIPTS.md +0 -71
- package/docs/reference/SUPPORT_MATRIX.md +0 -80
- package/docs/reference/THEMES.md +0 -117
- package/docs/reference/TOOLS.md +0 -110
- package/docs/reference/UTILS.md +0 -243
- package/docs/registry.json +0 -6
- package/docs/schema/dot-env-v1.json +0 -110
- package/docs/schema/dot-registry-v1.json +0 -33
- package/docs/security/AI_ACT_COMPLIANCE.md +0 -94
- package/docs/security/AUDIT_BYPASS.md +0 -103
- package/docs/security/AUTOMATION_SECRETS.md +0 -26
- package/docs/security/CI_EGRESS_ALLOWLIST.md +0 -127
- package/docs/security/CI_PINNING.md +0 -129
- package/docs/security/COMMIT_SIGNING.md +0 -138
- package/docs/security/COMPLIANCE.md +0 -458
- package/docs/security/DEPS_DEV_EXCEPTIONS.md +0 -86
- package/docs/security/DISCLOSURE.md +0 -130
- package/docs/security/ENCRYPTION.md +0 -57
- package/docs/security/FMEA.md +0 -159
- package/docs/security/FUZZING.md +0 -209
- package/docs/security/HISTORY_FILTERING.md +0 -132
- package/docs/security/INCIDENT_RESPONSE.md +0 -579
- package/docs/security/INSTALL_VERIFICATION.md +0 -122
- package/docs/security/KEYS.md +0 -49
- package/docs/security/KEY_ROTATION.md +0 -303
- package/docs/security/MCP_POLICY.md +0 -78
- package/docs/security/POLICY_RELEASES.md +0 -37
- package/docs/security/README.md +0 -28
- package/docs/security/SCORECARD.md +0 -195
- package/docs/security/SECRETS.md +0 -158
- package/docs/security/SECURITY.md +0 -45
- package/docs/security/SECURITY_CHECKLIST.md +0 -55
- package/docs/security/SHELL_EXEMPTIONS.md +0 -145
- package/docs/security/SOUP_REGISTER.md +0 -36
- package/docs/security/THREAT_MODEL.md +0 -130
- package/docs/security/VERIFICATION_VALIDATION.md +0 -228
- package/docs/security/VERIFY_RELEASE.md +0 -201
- package/docs/security/security-pubkey.asc +0 -15
- package/docs/stylesheets/extra.css +0 -444
- package/docs/themes/README.md +0 -10
- package/docs/themes/VISUAL_INTEGRITY_REPORT.md +0 -30
- package/docs/themes/hero-shot.svg +0 -78
- package/scripts/README.md +0 -123
- package/scripts/ci/check-copyright-headers.sh +0 -8
- package/scripts/ci/check-shell-preamble.sh +0 -8
- package/scripts/ci/guard-gitleaks-checkout.sh +0 -8
- package/scripts/demo/record.sh +0 -43
- package/scripts/diagnostics/a2a-conformance.sh +0 -163
- package/scripts/diagnostics/alias-governance.sh +0 -165
- package/scripts/diagnostics/aliases-cheatsheet.sh +0 -74
- package/scripts/diagnostics/aliases-manifest.sh +0 -77
- package/scripts/diagnostics/attest-verify.sh +0 -147
- package/scripts/diagnostics/benchmark.sh +0 -408
- package/scripts/diagnostics/conflicts.sh +0 -73
- package/scripts/diagnostics/doctor-unified.sh +0 -43
- package/scripts/diagnostics/doctor.sh +0 -797
- package/scripts/diagnostics/drift-dashboard.sh +0 -203
- package/scripts/diagnostics/health.sh +0 -656
- package/scripts/diagnostics/history-analysis.sh +0 -86
- package/scripts/diagnostics/mcp-doctor.sh +0 -582
- package/scripts/diagnostics/perf.sh +0 -453
- package/scripts/diagnostics/scorecard.sh +0 -120
- package/scripts/diagnostics/secret-governance.sh +0 -65
- package/scripts/diagnostics/security-score.sh +0 -467
- package/scripts/diagnostics/smoke-test.sh +0 -88
- package/scripts/diagnostics/snapshot.sh +0 -90
- package/scripts/diagnostics/verify.sh +0 -108
- package/scripts/diagnostics/verify_state.sh +0 -73
- package/scripts/diagnostics/version-locks.sh +0 -94
- package/scripts/diagnostics/workstation-attestation.sh +0 -212
- package/scripts/dot/commands/agent.sh +0 -535
- package/scripts/dot/commands/agents.sh +0 -352
- package/scripts/dot/commands/ai.sh +0 -600
- package/scripts/dot/commands/aliases.sh +0 -277
- package/scripts/dot/commands/appearance.sh +0 -110
- package/scripts/dot/commands/completion.sh +0 -171
- package/scripts/dot/commands/core.sh +0 -217
- package/scripts/dot/commands/diagnostics.sh +0 -265
- package/scripts/dot/commands/env-emit.sh +0 -203
- package/scripts/dot/commands/fleet.sh +0 -711
- package/scripts/dot/commands/init.sh +0 -185
- package/scripts/dot/commands/lint.sh +0 -208
- package/scripts/dot/commands/manual.sh +0 -169
- package/scripts/dot/commands/meta.sh +0 -438
- package/scripts/dot/commands/patterns.sh +0 -55
- package/scripts/dot/commands/registry.sh +0 -455
- package/scripts/dot/commands/restore.sh +0 -232
- package/scripts/dot/commands/secrets.sh +0 -296
- package/scripts/dot/commands/security.sh +0 -102
- package/scripts/dot/commands/tools.sh +0 -570
- package/scripts/dot/data/alias-deprecations.tsv +0 -2
- package/scripts/dot/powershell/Dot.psm1 +0 -319
- package/scripts/fonts/install-nerd-fonts.sh +0 -75
- package/scripts/fonts/patch-fonts.sh +0 -36
- package/scripts/git-hooks/install.sh +0 -12
- package/scripts/git-hooks/pre-commit +0 -12
- package/scripts/git-hooks/pre-commit-audit.sh +0 -146
- package/scripts/git-hooks/pre-push +0 -105
- package/scripts/git-hooks/prepare-commit-msg +0 -29
- package/scripts/lib/secrets_provider.sh +0 -200
- package/scripts/nvim/headless-upgrade.lua +0 -81
- package/scripts/ops/ai-setup.sh +0 -71
- package/scripts/ops/bundle.sh +0 -104
- package/scripts/ops/chaos.sh +0 -50
- package/scripts/ops/chezmoi-apply.sh +0 -333
- package/scripts/ops/chezmoi-diff.sh +0 -16
- package/scripts/ops/chezmoi-remove.sh +0 -46
- package/scripts/ops/chezmoi-update.sh +0 -67
- package/scripts/ops/heal-chezmoi.sh +0 -87
- package/scripts/ops/heal-system.sh +0 -129
- package/scripts/ops/heal-tools.sh +0 -297
- package/scripts/ops/heal.sh +0 -223
- package/scripts/ops/post-apply-repair.sh +0 -107
- package/scripts/ops/prewarm.sh +0 -128
- package/scripts/ops/release.sh +0 -262
- package/scripts/ops/rollback.sh +0 -613
- package/scripts/ops/setup.sh +0 -138
- package/scripts/ops/teleport.sh +0 -34
- package/scripts/qa/check-feature-matrix.sh +0 -296
- package/scripts/qa/check-version-consistency.sh +0 -12
- package/scripts/qa/coverage-baseline.sh +0 -61
- package/scripts/qa/docs-coverage.sh +0 -118
- package/scripts/qa/examples-coverage.sh +0 -94
- package/scripts/qa/powershell-contract.ps1 +0 -95
- package/scripts/qa/reliability-audit.sh +0 -139
- package/scripts/qa/scorecard-snapshot.sh +0 -128
- package/scripts/qa/traceability-coverage.sh +0 -124
- package/scripts/qa/validate-examples.sh +0 -90
- package/scripts/qa/wsl-contract.sh +0 -12
- package/scripts/secrets/age-init.sh +0 -82
- package/scripts/secrets/create-secrets-file.sh +0 -46
- package/scripts/secrets/encrypt-ssh-key.sh +0 -44
- package/scripts/security/backup.sh +0 -58
- package/scripts/security/check-disclosure-key-expiry.sh +0 -111
- package/scripts/security/dns-doh.sh +0 -52
- package/scripts/security/encryption-check.sh +0 -55
- package/scripts/security/enforce-policies.sh +0 -552
- package/scripts/security/firewall.sh +0 -91
- package/scripts/security/lock-configs.sh +0 -67
- package/scripts/security/lock-screen.sh +0 -56
- package/scripts/security/manage-secrets.sh +0 -429
- package/scripts/security/ssh-cert.sh +0 -204
- package/scripts/security/telemetry-kill.sh +0 -51
- package/scripts/security/usb-safety.sh +0 -52
- package/scripts/theme/apply-gnome-theme.sh +0 -333
- package/scripts/theme/extract-heic-frames.sh +0 -115
- package/scripts/theme/extract-theme.py +0 -1020
- package/scripts/theme/install-boot-logo.sh +0 -63
- package/scripts/theme/install-catppuccin-themes.sh +0 -371
- package/scripts/theme/install-cursors.sh +0 -26
- package/scripts/theme/install-file-icons.sh +0 -27
- package/scripts/theme/install-grub-theme.sh +0 -62
- package/scripts/theme/install-lock-icon.sh +0 -31
- package/scripts/theme/merge-wallpaper.sh +0 -146
- package/scripts/theme/rebuild-themes.sh +0 -603
- package/scripts/theme/switch.sh +0 -476
- package/scripts/theme/wallpaper-rotate.sh +0 -137
- package/scripts/theme/wallpaper-sync.sh +0 -690
- package/scripts/tools/cmatrix.sh +0 -22
- package/scripts/tools/detect-collisions.py +0 -103
- package/scripts/tools/emoji-picker.sh +0 -49
- package/scripts/tools/figlet-banner.sh +0 -19
- package/scripts/tools/log-rotate.sh +0 -31
- package/scripts/tools/lolcat-wrap.sh +0 -20
- package/scripts/tools/pipes.sh +0 -49
- package/scripts/tuning/linux.sh +0 -186
- package/scripts/tuning/macos.sh +0 -56
- package/scripts/uninstall.sh +0 -86
- package/scripts/verify-release-versions +0 -156
- package/scripts/version-sync.sh +0 -714
- package/templates/chezmoi-data/geekom-a9.toml.example +0 -21
- package/templates/chezmoi-data/mac-m1.toml.example +0 -16
- package/templates/chezmoi-data/mac-t2-linux.toml.example +0 -21
- package/templates/chezmoi-data/surface-pro-7p.toml.example +0 -21
- package/templates/projects/go/.github/workflows/ci.yml +0 -31
- package/templates/projects/go/README.md +0 -7
- package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +0 -8
- package/templates/projects/go/go.mod +0 -3
- package/templates/projects/go/go.sum +0 -0
- package/templates/projects/molecule/README.md +0 -7
- package/templates/projects/molecule/converge.yml +0 -7
- package/templates/projects/molecule/molecule.yml +0 -16
- package/templates/projects/node/.github/workflows/ci.yml +0 -30
- package/templates/projects/node/README.md +0 -7
- package/templates/projects/node/package-lock.json +0 -12
- package/templates/projects/node/package.json +0 -10
- package/templates/projects/node/src/index.js +0 -3
- package/templates/projects/packer/README.md +0 -15
- package/templates/projects/packer/main.pkr.hcl +0 -15
- package/templates/projects/python/.github/workflows/ci.yml +0 -34
- package/templates/projects/python/README.md +0 -7
- package/templates/projects/python/pyproject.toml +0 -25
- package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +0 -2
- package/templates/projects/python/tests/test_basic.py +0 -3
package/tools/README.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# `tools/` β Repo-Only Operations
|
|
2
|
+
|
|
3
|
+
Everything in this directory is **internal to the repo** β CI helpers,
|
|
4
|
+
release tooling, documentation generators, maintenance jobs. Nothing
|
|
5
|
+
here ships to end users; the `dot` CLI doesn't dispatch to anything
|
|
6
|
+
under `tools/`.
|
|
7
|
+
|
|
8
|
+
Per the v0.2.503 reorg (`docs/operations/RFC_v0_2_503_reorganization.md`
|
|
9
|
+
Phase 5), this directory holds what used to live under
|
|
10
|
+
`scripts/{ci,release,maintenance,docs}/`. The split clarifies which
|
|
11
|
+
scripts a downstream distro packager needs to ship (`scripts/` +
|
|
12
|
+
`lib/` + `bin/`) versus which only run in this repo's own CI
|
|
13
|
+
(`tools/`).
|
|
14
|
+
|
|
15
|
+
## Subtree map
|
|
16
|
+
|
|
17
|
+
| Path | Purpose | Touched by |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| `tools/ci/` | CI-only helpers. `dot-cli-startup-bench.sh`, `install-chezmoi-verified.sh`, `windows-smoke-test.ps1`, `run-coverage.sh`, etc. | `.github/workflows/*` |
|
|
20
|
+
| `tools/release/` | Release-time tasks. | Release workflow + `gh release create` flow |
|
|
21
|
+
| `tools/maintenance/` | Recurring upkeep: `check-updates.sh`, etc. | Cron, manual |
|
|
22
|
+
| `tools/docs/` | Documentation-generation helpers: `generate-command-index.sh`, manual builds, screenshot capture. | `manual-publish.yml`, `dot manual`, doc-drift |
|
|
23
|
+
|
|
24
|
+
## Why this directory exists
|
|
25
|
+
|
|
26
|
+
The R4 audit (`docs/operations/HARD_AUDIT_2026.md` Β§8.3 P4) flagged
|
|
27
|
+
the framework / repo-ops intermingling under `scripts/` as a
|
|
28
|
+
contributor-onboarding cost. New contributors couldn't tell:
|
|
29
|
+
|
|
30
|
+
> "Is `scripts/ci/install-chezmoi-verified.sh` part of the CLI, or
|
|
31
|
+
> is it just a CI helper?"
|
|
32
|
+
|
|
33
|
+
Splitting them physically answers the question without anyone
|
|
34
|
+
having to grep. `scripts/` is now exclusively the runtime-invoked
|
|
35
|
+
surface; `tools/` is exclusively repo-internal.
|
|
36
|
+
|
|
37
|
+
## Conventions
|
|
38
|
+
|
|
39
|
+
Same as `scripts/`:
|
|
40
|
+
|
|
41
|
+
- Shell style: 2-space indent, `set -euo pipefail`, shellcheck-clean.
|
|
42
|
+
- Format with `shfmt -i 2 -ci`.
|
|
43
|
+
- Source `lib/dot/ui.sh` for output (no raw `printf`).
|
|
44
|
+
|
|
45
|
+
## See also
|
|
46
|
+
|
|
47
|
+
- `../docs/STRUCTURE.md` β top-level repo map.
|
|
48
|
+
- `scripts/README.md` β the runtime-invoked sister tree.
|
|
49
|
+
- `docs/operations/RFC_v0_2_503_reorganization.md` β Phase 5 spec.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
3
|
+
# Copyright (c) 2015-2026 Sebastien Rousseau
|
|
4
|
+
# Install a pinned Chezmoi release with checksum verification.
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
VERSION="${1:-}"
|
|
8
|
+
BIN_DIR="${2:-$HOME/.local/bin}"
|
|
9
|
+
|
|
10
|
+
if [[ -z "$VERSION" ]]; then
|
|
11
|
+
echo "Usage: $0 <chezmoi-version> [bin-dir]" >&2
|
|
12
|
+
exit 1
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
OS="$(uname -s | tr '[:upper:]' '[:lower:]')"
|
|
16
|
+
ARCH="$(uname -m)"
|
|
17
|
+
|
|
18
|
+
case "$OS" in
|
|
19
|
+
linux | darwin) ;;
|
|
20
|
+
*)
|
|
21
|
+
echo "Unsupported OS: $OS" >&2
|
|
22
|
+
exit 1
|
|
23
|
+
;;
|
|
24
|
+
esac
|
|
25
|
+
|
|
26
|
+
case "$ARCH" in
|
|
27
|
+
x86_64 | amd64) ARCH="amd64" ;;
|
|
28
|
+
arm64 | aarch64) ARCH="arm64" ;;
|
|
29
|
+
*)
|
|
30
|
+
# chezmoi ships amd64 + arm64 builds only. Other architectures
|
|
31
|
+
# (ppc64le, s390x, riscv64, armv7) would need a source build.
|
|
32
|
+
echo "Unsupported architecture: $ARCH (only x86_64/amd64 and arm64/aarch64 are supported)" >&2
|
|
33
|
+
echo "See https://github.com/twpayne/chezmoi/releases for the full asset list." >&2
|
|
34
|
+
exit 1
|
|
35
|
+
;;
|
|
36
|
+
esac
|
|
37
|
+
|
|
38
|
+
ASSET="chezmoi_${VERSION}_${OS}_${ARCH}.tar.gz"
|
|
39
|
+
CHECKSUMS_ASSET="chezmoi_${VERSION}_checksums.txt"
|
|
40
|
+
BASE_URL="https://github.com/twpayne/chezmoi/releases/download/v${VERSION}"
|
|
41
|
+
|
|
42
|
+
TMP_DIR="$(umask 077 && mktemp -d)"
|
|
43
|
+
trap 'rm -rf "$TMP_DIR"' EXIT
|
|
44
|
+
|
|
45
|
+
# Support both old and new checksum filenames.
|
|
46
|
+
if ! curl --proto '=https' --tlsv1.2 -fsSL -o "$TMP_DIR/checksums.txt" "$BASE_URL/$CHECKSUMS_ASSET"; then
|
|
47
|
+
curl --proto '=https' --tlsv1.2 -fsSL -o "$TMP_DIR/checksums.txt" "$BASE_URL/checksums.txt"
|
|
48
|
+
fi
|
|
49
|
+
curl --proto '=https' --tlsv1.2 -fsSL -o "$TMP_DIR/$ASSET" "$BASE_URL/$ASSET"
|
|
50
|
+
|
|
51
|
+
CHECKSUM_LINE="$(grep -E "[[:space:]]${ASSET}$" "$TMP_DIR/checksums.txt" | head -n1 || true)"
|
|
52
|
+
if [[ -z "$CHECKSUM_LINE" ]]; then
|
|
53
|
+
echo "Checksum entry not found for $ASSET" >&2
|
|
54
|
+
exit 1
|
|
55
|
+
fi
|
|
56
|
+
|
|
57
|
+
(
|
|
58
|
+
cd "$TMP_DIR"
|
|
59
|
+
if command -v sha256sum >/dev/null 2>&1; then
|
|
60
|
+
echo "$CHECKSUM_LINE" | sha256sum -c -
|
|
61
|
+
else
|
|
62
|
+
echo "$CHECKSUM_LINE" | shasum -a 256 -c -
|
|
63
|
+
fi
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
tar -xzf "$TMP_DIR/$ASSET" -C "$TMP_DIR" chezmoi
|
|
67
|
+
mkdir -p "$BIN_DIR"
|
|
68
|
+
install -m 755 "$TMP_DIR/chezmoi" "$BIN_DIR/chezmoi"
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
render_with_liquid: false
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Localization Readability Audit
|
|
6
|
-
|
|
7
|
-
Note: Flesch metrics are English-centric. For localized pages, they are used as a plain-language proxy when Latin word boundaries are available.
|
|
8
|
-
|
|
9
|
-
## Readability Scorecard
|
|
10
|
-
|
|
11
|
-
| Language | Reading Ease | Grade Level | Passive % | Avg Sentence Length |
|
|
12
|
-
| :--- | ---: | ---: | ---: | ---: |
|
|
13
|
-
| ar | n/a | n/a | n/a | n/a |
|
|
14
|
-
| de | n/a | n/a | n/a | n/a |
|
|
15
|
-
| es | n/a | n/a | n/a | n/a |
|
|
16
|
-
| fr | n/a | n/a | n/a | n/a |
|
|
17
|
-
| he | n/a | n/a | n/a | n/a |
|
|
18
|
-
| hi | n/a | n/a | n/a | n/a |
|
|
19
|
-
| id | n/a | n/a | n/a | n/a |
|
|
20
|
-
| it | n/a | n/a | n/a | n/a |
|
|
21
|
-
| ja | n/a | n/a | n/a | n/a |
|
|
22
|
-
| ko | n/a | n/a | n/a | n/a |
|
|
23
|
-
| nl | n/a | n/a | n/a | n/a |
|
|
24
|
-
| pl | n/a | n/a | n/a | n/a |
|
|
25
|
-
| pt | n/a | n/a | n/a | n/a |
|
|
26
|
-
| ro | n/a | n/a | n/a | n/a |
|
|
27
|
-
| ru | n/a | n/a | n/a | n/a |
|
|
28
|
-
| th | n/a | n/a | n/a | n/a |
|
|
29
|
-
| tr | n/a | n/a | n/a | n/a |
|
|
30
|
-
| uk | n/a | n/a | n/a | n/a |
|
|
31
|
-
| vi | n/a | n/a | n/a | n/a |
|
|
32
|
-
| zh | n/a | n/a | n/a | n/a |
|
|
33
|
-
| zh-tw | n/a | n/a | n/a | n/a |
|
|
34
|
-
|
|
35
|
-
## Parity Gap Table
|
|
36
|
-
|
|
37
|
-
| Priority | Locale | Route | Deviation |
|
|
38
|
-
| :--- | :--- | :--- | :--- |
|
|
39
|
-
|
|
40
|
-
## Active & Simple Diff
|
|
41
|
-
|
|
42
|
-
### docs/adr/ADR-007-multi-shell-parity.md
|
|
43
|
-
|
|
44
|
-
- Source: **Nushell spoke:** Hybrid approach: - Aliases: Runtime bash extraction cached to (in ), sourced by - Functions: Chezmoi template-generated wrappers delegating to bash (in ) **Parity tiers:** - **Tier 1 (Full):** Zsh, Bash β all aliases, functions, lazy loading, cached eval - **Tier 2 (Bridged):** Fish β all simple aliases, all functions via wrappers, caching - **Tier 3 (Compatible):** Nushell β simple aliases (no complex bash syntax), all functions via bash delegation - Single source of truth for aliases and functions - Adding a new alias/function automatically propagates to all shells - Nushell users get access to 40+ functions that were previously unavailable - Fish users get mtime-aware caching via - Complex bash aliases (pipes, conditionals) are skipped for Nushell - Function calls in Fish/Nushell incur bash subprocess overhead (~5ms per call) - Cache invalidation requires shell restart or manual cache clear - Nushell's rapid development may break bridge syntax in future versions - Very large alias sets may slow Nushell startup during cache generation.
|
|
45
|
-
- Simplified: **Nushell spoke:** Hybrid approach: - Aliases: Runtime bash extraction cached to (in ), sourced by - Functions: Chezmoi template-generated wrappers delegating to bash (in ) **Parity tiers:** - **Tier 1 (Full):** Zsh, Bash β all aliases, functions, lazy loading, cached eval - **Tier 2 (Bridged):** Fish β all simple aliases, all functions via wrappers, caching - **Tier 3 (Compatible):** Nushell β simple aliases (no complex bash syntax), all functions via bash delegation - Single source of truth for aliases and functions -. Adding a new alias/function automatically propagates to all shells - Nushell users get access to 40+ functions that were previously unavailable - Fish users get mtime-aware caching via - Complex bash aliases (pipes, conditionals) are skipped for Nushell - Function calls in Fish/Nushell incur bash subprocess overhead (~5ms per call) - Cache invalidation requires shell restart or manual cache clear - Nushell's rapid development may break bridge syntax in future versions - Very large alias sets may slow Nushell startup during cache generation
|
|
46
|
-
|
|
47
|
-
### docs/guides/TROUBLESHOOTING.md
|
|
48
|
-
|
|
49
|
-
- Source: ) **Problem:** LSP not working - Install required language servers - Check for status - Review for errors **Problem:** Git aliases not working - Check if Git config is applied: - Re-apply dotfiles: **Problem:** Delta (diff pager) not showing colors - Verify is installed - Confirm your terminal supports 256 colors **Problem:** kubectl context issues - List contexts: - Switch context: - Check kubeconfig: **Problem:** Minikube won't start - Verify Docker is running - Try: - Check logs: **Problem:** High memory usage - Look for runaway processes: or - Review shell history size in atuin config - Disable unused plugins **Problem:** Nix isn't installed or commands not found - Ensure you have followed the installation guide: - On Linux, you might need to enable experimental features in : - Verify the daemon is running: **Problem:** Systemd isn't available (mostly WSL2) - Dotfiles functions that rely on systemd (like management) will fallback to direct execution.
|
|
50
|
-
- Simplified: ) **Problem:** LSP not working - Install required language servers - Check for status - Review for errors **Problem:** Git aliases not working - Check if Git config is applied: - Re-apply dotfiles: **Problem:** Delta (diff pager) not showing colors - Verify is installed - Confirm your terminal supports 256 colors **Problem:** kubectl context issues - List contexts: - Switch context: - Check kubeconfig: **Problem:** Minikube won't start - Verify Docker is running - Try: - Check. logs: **Problem:** High memory usage - Look for runaway processes: or - Review shell history size in atuin config - Disable unused plugins **Problem:** Nix isn't installed or commands not found - Ensure you have followed the installation guide: - On Linux, you might need to enable experimental features in : - Verify the daemon is running: **Problem:** Systemd isn't available (mostly WSL2) - Dotfiles functions that rely on systemd (like management) will fallback to direct execution
|
|
51
|
-
|
|
52
|
-
### docs/operations/VERSION_SYNC.md
|
|
53
|
-
|
|
54
|
-
- Source: sh --verify || echo "Version drift detected" The GitHub Actions workflow provides metrics: - Files scanned - Files updated - Verification status - Processing time - Local backups in - GitHub Actions artifacts (30-day retention) - Git history for rollback permissions: contents: write # Required for commits pull-requests: write # Required for PR comments - Version format validation ( pattern) - File path validation (no directory traversal) - Change verification before commit - All changes logged in Git history - GitHub Actions run history - Backup preservation - Git operations use shallow fetch when possible - Pattern compilation cached - File discovery optimized with - File processing is sequential but optimized - Git operations batched - Verification runs concurrently with updates - Typical run time: 30-60 seconds - Memory usage: <100MB - Network usage: Minimal (only Git operations) 1.
|
|
55
|
-
- Simplified: sh --verify || echo "Version drift detected" The GitHub Actions workflow provides metrics: - Files scanned - Files updated - Verification status - Processing time - Local backups in - GitHub Actions artifacts (30-day retention) - Git history for rollback permissions: contents: write # Required for commits pull-requests: write # Required for PR comments - Version format validation ( pattern) - File path validation (no directory traversal) - Change. verification before commit - All changes logged in Git history - GitHub Actions run history - Backup preservation - Git operations use shallow fetch when possible - Pattern compilation cached - File discovery optimized with - File processing is sequential but optimized - Git operations batched - Verification runs concurrently with updates - Typical run time: 30-60 seconds - Memory usage: <100MB - Network usage: Minimal (only Git operations) 1
|
|
56
|
-
|
|
57
|
-
## Localized Terminology Glossary
|
|
58
|
-
|
|
59
|
-
| Term | Rule |
|
|
60
|
-
| :--- | :--- |
|
|
61
|
-
| macOS | Keep official Apple spelling in all locales. |
|
|
62
|
-
| Linux | Keep as Linux. |
|
|
63
|
-
| WSL | Keep as WSL on first use. |
|
|
64
|
-
| Chezmoi | Keep product name in English. |
|
|
65
|
-
| `dot doctor` | Keep command unchanged in all locales. |
|
|
66
|
-
| shell | Localize only in prose; never inside commands or paths. |
|
|
67
|
-
| alias | Localize in prose when natural; keep code examples unchanged. |
|
|
68
|
-
|
|
69
|
-
## Priority Action Register
|
|
70
|
-
|
|
71
|
-
- [P0] Meaning Drifts: 0
|
|
72
|
-
- [P1] Readability Blockers: 0
|
|
73
|
-
- [P2] Stylistic Polishing: 0
|
package/docs/AI.md
DELETED
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
render_with_liquid: false
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# AI Integrations (Opt-in)
|
|
6
|
-
|
|
7
|
-
AI helpers are **off by default**. You choose if and when to turn them on.
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
export DOTFILES_AI=1
|
|
11
|
-
exec zsh
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
This enables the local helper scripts and the `dot ai` command surface. It does **not** install any AI tools or run any background service.
|
|
15
|
-
|
|
16
|
-
## Why `dot ai`?
|
|
17
|
-
|
|
18
|
-
`claude` is one tool. **`dot ai` is the cockpit for your whole AI-CLI fleet.** Use it to install the tools, launch any of them with one keystroke, meter their cost in one place, and β the headline β run every one of them on your single Claude subscription through a built-in local gateway.
|
|
19
|
-
|
|
20
|
-
You use `claude` to talk to Claude. You use `dot ai` to run *everything else* on Claude and keep one cockpit over all of it.
|
|
21
|
-
|
|
22
|
-
## Quick start
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
dot ai install all # install the fleet (only what's missing)
|
|
26
|
-
dot ai # open the cockpit (TUI)
|
|
27
|
-
dot ai "fix the auth bug" # one-shot on Claude β just like `claude "β¦"`
|
|
28
|
-
dot ai serve # serve your Claude subscription locally to the fleet
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Command surface
|
|
32
|
-
|
|
33
|
-
The interface is flat and verb-first, modelled on the Claude CLI: bare opens an interactive view, a prompt runs it, and old commands keep working as deprecated aliases.
|
|
34
|
-
|
|
35
|
-
| Command | What it does |
|
|
36
|
-
|---------|--------------|
|
|
37
|
-
| `dot ai` | Open the **cockpit** β a Bubble Tea TUI for the fleet, gateway, and cost |
|
|
38
|
-
| `dot ai "<prompt>"` | One-shot prompt on Claude |
|
|
39
|
-
| `dot ai <tool> "<prompt>"` | One-shot prompt on a named tool (e.g. `dot ai codex "add tests"`) |
|
|
40
|
-
| `dot ai chat [tool]` | Open an interactive session (picker if no tool) |
|
|
41
|
-
| `dot ai tools` | Install / manage the fleet |
|
|
42
|
-
| `dot ai install [all\|<tool>]` | Install all missing tools, or one |
|
|
43
|
-
| `dot ai serve [stop\|status]` | Start the local Claude gateway **and** route the fleet through it |
|
|
44
|
-
| `dot ai cost` | Spend report across providers |
|
|
45
|
-
| `dot ai login [tool]` | Authenticate a tool |
|
|
46
|
-
| `dot ai doctor` | Health-check the fleet and the gateway |
|
|
47
|
-
| `--style <name>` | Steer any prompt with a pattern (see [Steering styles](#steering-styles)) |
|
|
48
|
-
|
|
49
|
-
## The cockpit (`dot ai`)
|
|
50
|
-
|
|
51
|
-
Running `dot ai` on a terminal opens a glamorous, chat-centric TUI (built with [Bubble Tea](https://github.com/charmbracelet/bubbletea), Charm/Crush-style):
|
|
52
|
-
|
|
53
|
-
- **Header** β the `β dot ai` wordmark plus gateway status (`β :3456` / `β off`) and today's cost as colour chips.
|
|
54
|
-
- **Left** β the fleet grouped by role, with `β`/`β` install markers and a `β` selection accent.
|
|
55
|
-
- **Right** β a **chat panel**: pick a tool, type a prompt in the input box, press `Enter`, and the response streams back in the transcript β all without leaving the TUI.
|
|
56
|
-
|
|
57
|
-
```text
|
|
58
|
-
Tab focus ββ move β send s serve i install c refresh q quit
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
Two modes per tool: **Enter on the fleet** opens the tool's *full native session* (where its own `/exit`, `/model`, `/clear`, β¦ work); **Tab / `/`** drops into the quick in-cockpit streaming chat. In the chat input, typing `/` opens a **tool-aware command palette** β the cockpit commands (`/help /clear /style /tool /serve /cost /exit`, which run in-chat) plus the selected provider's common REPL commands (`/compact /model /resume /agents` for claude; `/add /diff /commit` for aider; `/approvals /status` for codex; β¦), tagged `β <tool> session`. Navigate with `ββ`, `Tab` to complete, `Enter` to run. Prompts run through `dot ai <tool>`, so the cockpit and the command line behave identically.
|
|
62
|
-
|
|
63
|
-
The cockpit also offers a **model picker** (`/model <name>` or the `m` key cycles `default β opus β sonnet β haiku`; the active model shows in the header and is applied to the Claude engine via `ANTHROPIC_MODEL`), **session persistence** (each completed turn is saved to `$XDG_STATE_HOME/dot-ai-tui/session.json`; `/resume` restores your last conversation, `/save` snapshots the current one), and **desktop notifications** when a reply takes longer than ~8s (macOS `osascript` / Linux `notify-send`). In non-interactive contexts (CI, pipes) `dot ai` falls back to a plain text fleet listing. The cockpit binary (`dot-ai-tui`) is built on `chezmoi apply` via the mise-managed Go toolchain; `DOT_AI_SNAPSHOT=1 dot-ai-tui` prints a single frame for previews.
|
|
64
|
-
|
|
65
|
-
## Steering styles
|
|
66
|
-
|
|
67
|
-
Styles in `~/.dotfiles/dot_config/ai/patterns/` add focused context to any prompt with `--style <name>`:
|
|
68
|
-
|
|
69
|
-
- **architect** β shell setup and stack tuning
|
|
70
|
-
- **hardener** β security, encryption, and compliance
|
|
71
|
-
- **refactor** β POSIX compatibility, performance, and linting
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
dot ai claude --style architect "optimize my zshrc"
|
|
75
|
-
dot ai agy --style hardener "audit my ssh config"
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
The bridge also injects system details (OS, architecture, date) so the model has the context it needs. Quick aliases ship for the common combinations: `dcla` (Claude + architect), `dagyh` (Antigravity + hardener), `dkir` (Kiro + refactor).
|
|
79
|
-
|
|
80
|
-
## Running tools
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
dot ai "explain this stack trace" # one-shot on Claude
|
|
84
|
-
dot ai codex "add a test for parse()" # one-shot on a specific tool
|
|
85
|
-
dot ai chat # pick a tool and open its session
|
|
86
|
-
dot ai chat aider # open aider directly
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## The local Claude gateway (`dot ai serve`)
|
|
90
|
-
|
|
91
|
-
Run one Claude subscription locally and point your whole fleet at it β with **no third-party dependency**. `dot-ai-serve` is a small, stdlib-only Python server (no pip packages) that wraps the `claude` CLI you already have and exposes the standard Anthropic (`/v1/messages`) **and** OpenAI (`/v1/chat/completions`) endpoints. Any tool that speaks either protocol β codex, aider, Open WebUI, an OpenAI SDK β connects to `http://127.0.0.1:3456` and gets Claude on your existing subscription.
|
|
92
|
-
|
|
93
|
-
```bash
|
|
94
|
-
claude login # one-time: authenticate the engine
|
|
95
|
-
dot ai serve # start the gateway AND route the non-Claude fleet
|
|
96
|
-
dot ai serve status # process + /health + routing state
|
|
97
|
-
dot ai serve stop # stop the gateway and un-route
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
**Native session, never a key.** The gateway authenticates through your `claude` CLI's native session β there is no API key anywhere. Routing is applied **per-invocation** to non-Claude tools (`dot ai codex "β¦"`); it is **not** sourced into your interactive shell. The primary `claude` is never routed β it always uses its own native session, so claude.ai connectors stay enabled. (Setting `ANTHROPIC_API_KEY` in your shell would disable those connectors, which is exactly why routing stays scoped to each tool's subprocess.)
|
|
101
|
-
|
|
102
|
-
**Streaming, routing & metering.** Replies stream **token-by-token** (real SSE for both protocols). Model **aliases/routing** map friendly names to a Claude tier β `cheap`/`fast` β haiku, `smart` β opus, and common OpenAI ids (`gpt-4` β sonnet, `gpt-3.5-turbo` β haiku); extend with `DOT_AI_MODEL_MAP`. Every request is **metered**: `GET /metrics` (Prometheus text) and `GET /v1/usage` (JSON) report requests, tokens, and estimated cost per model. An optional `DOT_AI_DAILY_BUDGET` (USD) caps daily spend β once reached, requests get `429`.
|
|
103
|
-
|
|
104
|
-
**Config:** `DOT_AI_HOST` (default `127.0.0.1`), `DOT_AI_PORT` (default `3456`), `DOT_AI_DEFAULT_MODEL` (default `sonnet`), `DOT_AI_API_KEY` (optional shared secret), `DOT_AI_DAILY_BUDGET` (USD, `0` = off), `DOT_AI_MODEL_MAP` / `DOT_AI_PRICING` (JSON overrides).
|
|
105
|
-
|
|
106
|
-
**Security:** the server binds to loopback by default. If you set `DOT_AI_HOST` to a LAN address, both the launcher *and* the server itself refuse to start unless `DOT_AI_API_KEY` is set β an unprotected network proxy leaks your subscription.
|
|
107
|
-
|
|
108
|
-
**Engine limits.** The gateway wraps the `claude` CLI (an agent), not the raw API, so two things are handled gracefully rather than forwarded: **image** blocks are acknowledged inline but not sent (the engine is text-only), and **function/tool-calling** requests are answered in plain text (the CLI can't return caller-defined `tool_use` blocks). Session resumption is still out of scope.
|
|
109
|
-
|
|
110
|
-
## The fleet
|
|
111
|
-
|
|
112
|
-
These tools are not installed for you. Install what you want with `dot ai install <tool>` (or `dot ai install all`):
|
|
113
|
-
|
|
114
|
-
- **Agents (autonomous)** β full coding agents that plan and execute:
|
|
115
|
-
- `claude` β Anthropic's flagship agentic coder (Claude Code)
|
|
116
|
-
- `codex` β OpenAI's autonomous coding agent
|
|
117
|
-
- `copilot` β GitHub Copilot in the terminal
|
|
118
|
-
- `goose` β Block's open-source coding agent
|
|
119
|
-
- `crush` β Charm's glamorous TUI coding agent
|
|
120
|
-
- `amp` β Sourcegraph's agentic coder
|
|
121
|
-
- `cursor-agent` β Cursor's terminal agent
|
|
122
|
-
- `grok` β xAI's terminal coding agent (Grok Build; needs a SuperGrok / X Premium+ plan)
|
|
123
|
-
- `kimi` β Moonshot AI's Kimi Code CLI; installed natively to `~/.kimi-code/bin/kimi` and supports native interactive use and one-shot prompts
|
|
124
|
-
|
|
125
|
-
- **Coding (interactive)** β focused pair-programming assistants:
|
|
126
|
-
- `aider` β Git-aware AI pair programmer
|
|
127
|
-
- `opencode` β open-source terminal coding agent
|
|
128
|
-
- `autohand` β autonomous multi-file coding agent
|
|
129
|
-
- `vibe` β Mistral's coding agent
|
|
130
|
-
- `qwen` β Alibaba Qwen coding assistant
|
|
131
|
-
- `zai` β Zhipu GLM coding agent
|
|
132
|
-
|
|
133
|
-
- **General (prompt-based)** β quick prompt/shell helpers:
|
|
134
|
-
- `agy` β Google's Antigravity agent
|
|
135
|
-
- `sgpt` β ChatGPT for the shell (Shell-GPT)
|
|
136
|
-
|
|
137
|
-
- **Runtime (local)**:
|
|
138
|
-
- `ollama` β run local **and** cloud-hosted open models (`ollama signin` for cloud)
|
|
139
|
-
|
|
140
|
-
- **Cloud (platform)**:
|
|
141
|
-
- `kiro-cli` β AWS's agentic dev assistant
|
|
142
|
-
|
|
143
|
-
`dot ai tools` shows install status grouped by role and offers an interactive install picker. Status is cached in `~/.cache/dotfiles/ai/status.tsv` for 5 minutes (tune with `DOTFILES_AI_STATUS_TTL`).
|
|
144
|
-
|
|
145
|
-
## Run cost and telemetry
|
|
146
|
-
|
|
147
|
-
Every run through the bridge is logged to a local SQLite database (`~/.local/share/dotfiles-ai.db`). `dot ai cost` reports spend across providers, and the cockpit's cost panel and recent-runs list read from the same log. Token-level cost is populated for providers that surface it (and for everything routed through `dot ai serve`).
|
|
148
|
-
|
|
149
|
-
## Deprecated commands
|
|
150
|
-
|
|
151
|
-
The old command shapes still work, but print a one-line hint pointing at the new name. Update your muscle memory when convenient β the shortcut aliases (`dcl`, `dagy`, `dki`, β¦) already target the new surface.
|
|
152
|
-
|
|
153
|
-
| Deprecated | Use instead |
|
|
154
|
-
|------------|-------------|
|
|
155
|
-
| `dot cl` | `dot ai claude` |
|
|
156
|
-
| `dot codex` / `dot copilot` / `dot kimi` / `dot agy` / `dot goose` | `dot ai codex` / `dot ai copilot` / `dot ai kimi` / `dot ai agy` / `dot ai goose` |
|
|
157
|
-
| `dot kiro` / `dot sgpt` / `dot ollama` / `dot opencode` | `dot ai kiro` / `dot ai sgpt` / `dot ai ollama` / `dot ai opencode` |
|
|
158
|
-
| `dot aider` / `dot autohand` / `dot vibe` / `dot qwen` / `dot zai` | `dot ai aider` / `dot ai autohand` / `dot ai vibe` / `dot ai qwen` / `dot ai zai` |
|
|
159
|
-
| `dot ai status` | `dot ai tools` |
|
|
160
|
-
| `dot ai dashboard` / `dot ai dash` | `dot ai` (the cockpit) |
|
|
161
|
-
| `dot ai proxy β¦` / `dot ai local on\|off` | `dot ai serve` |
|
|
162
|
-
| `dot ai-setup` | `dot ai login` |
|
|
163
|
-
| `dot ai-query` | `dot ai ask` |
|
|
164
|
-
| `--pattern <name>` | `--style <name>` |
|
|
165
|
-
|
|
166
|
-
## Agentic terminal workflows
|
|
167
|
-
|
|
168
|
-
If your terminal has built-in AI agents, keep your shell lean and fast:
|
|
169
|
-
|
|
170
|
-
- Use `DOTFILES_FAST=1` or `DOTFILES_ULTRA_FAST=1`.
|
|
171
|
-
- Let the terminal handle agents and its own UI.
|
|
172
|
-
- Keep dotfiles focused on consistency, safety, and clean repeats.
|
|
173
|
-
|
|
174
|
-
## Privacy and safety
|
|
175
|
-
|
|
176
|
-
- No AI tools are installed for you.
|
|
177
|
-
- No background services run by default; the gateway runs only while you keep `dot ai serve` up.
|
|
178
|
-
- You control AI helpers with `DOTFILES_AI=1`.
|
|
179
|
-
- The gateway uses your native Claude session β no API keys are stored or required.
|
package/docs/ARCHITECTURE.md
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
render_with_liquid: false
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Architecture
|
|
6
|
-
|
|
7
|
-
Core architectural decisions and system design of the dotfiles shell distribution.
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Philosophy
|
|
12
|
-
|
|
13
|
-
- **XDG-First**: Configuration lives under `~/.config/` to keep the home directory clean.
|
|
14
|
-
- **Multi-Shell**: First-class support for Zsh, Fish, and Nushell with a shared logic core.
|
|
15
|
-
- **Fast Startup**: Heavy features are deferred or autoloaded to keep the first prompt under 50ms.
|
|
16
|
-
- **Deterministic**: Nix Flakes provide bit-for-bit identical environments across machines.
|
|
17
|
-
- **Non-Blocking**: Background daemons (Pueue) handle upgrades and builds without stalling the shell.
|
|
18
|
-
|
|
19
|
-
## System Layout
|
|
20
|
-
|
|
21
|
-
```text
|
|
22
|
-
~/.dotfiles/
|
|
23
|
-
βββ dot_config/ # Managed application configurations (~/.config/)
|
|
24
|
-
β βββ zsh/ # Modular Zsh rc.d architecture
|
|
25
|
-
β βββ fish/ # Autoloading Fish configuration
|
|
26
|
-
β βββ nushell/ # Structured data shell config
|
|
27
|
-
β βββ shell/ # Shared logic (aliases, paths, functions)
|
|
28
|
-
β βββ ... # 50+ tool configurations (nvim, tmux, ghostty, etc.)
|
|
29
|
-
βββ dot_local/ # Local binaries and scripts (~/.local/bin/)
|
|
30
|
-
βββ .chezmoitemplates/ # Unified source for aliases, functions, and paths
|
|
31
|
-
βββ scripts/ # Internal libraries and diagnostics
|
|
32
|
-
βββ nix/ # Nix Flake for deterministic toolchains
|
|
33
|
-
βββ lib/wasm-tools/ # `dot-sys` crate: health probe + WebAssembly attestation verifier
|
|
34
|
-
βββ install.sh # Universal bootstrap script (zero dependencies)
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## Shell Startup Strategies
|
|
40
|
-
|
|
41
|
-
### Shared: `_cached_eval`
|
|
42
|
-
|
|
43
|
-
Across Zsh, Fish, and Bash, an idempotent caching wrapper avoids redundant tool initialization (Starship, Zoxide, Atuin).
|
|
44
|
-
|
|
45
|
-
1. **Intercept** β check if a cached version of the tool's `eval` output exists in `~/.cache/shell/`.
|
|
46
|
-
2. **Validate** β compare the cache timestamp against the tool binary's mtime.
|
|
47
|
-
3. **Bypass** β if valid, `source` the cached text directly, saving 20-50ms per tool.
|
|
48
|
-
|
|
49
|
-
### Lazy-Hydration Model
|
|
50
|
-
|
|
51
|
-
To reach a fluid first-prompt target (< 50ms), the shell uses a three-phase startup:
|
|
52
|
-
|
|
53
|
-
1. **Phase 1 (Visual Paint)** β render the prompt immediately using static escape codes.
|
|
54
|
-
2. **Phase 2 (Async Hydration)** β dispatch tool initializations (mise, atuin, etc.) to background workers.
|
|
55
|
-
3. **Phase 3 (On-Demand Activation)** β environment hydration occurs on first user interaction or after 500ms of idle time.
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
## Artifact Mode
|
|
60
|
-
|
|
61
|
-
A minimal environment triggered by `DOTFILES_ARTIFACT_MODE=1`.
|
|
62
|
-
|
|
63
|
-
- **Minimalist UI** β strips prompt complexity, leaving only a green `->`.
|
|
64
|
-
- **Intelligence Surface** β an async Bento-style dashboard rendered via `bento.sh` that provides environment context (Node version, cloud status, Git health) without blocking the main thread.
|
|
65
|
-
- **Redraw Signaling** β uses `SIGWINCH` to return control after background hydration completes.
|
|
66
|
-
|
|
67
|
-
---
|
|
68
|
-
|
|
69
|
-
## Ultra-Fast Mode
|
|
70
|
-
|
|
71
|
-
Set `DOTFILES_ULTRA_FAST=1` to skip all non-essential initialization. Only core paths, aliases, and the prompt are loaded. Useful for:
|
|
72
|
-
|
|
73
|
-
- CI/CD pipelines where full shell setup is unnecessary
|
|
74
|
-
- Rapid scripting sessions where startup latency matters
|
|
75
|
-
- Benchmarking baseline shell performance
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
## Debug and Trace Modes
|
|
80
|
-
|
|
81
|
-
### DOTFILES_DEBUG=1
|
|
82
|
-
|
|
83
|
-
Enables verbose diagnostic output during shell startup. Prints which files are sourced and their load times.
|
|
84
|
-
|
|
85
|
-
### DOTFILES_TRACE=1
|
|
86
|
-
|
|
87
|
-
Enables `set -x` tracing for the entire shell startup sequence. Output is written to `~/.local/state/dotfiles/debug.log` for post-mortem analysis.
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
## Function Groups (groups.json)
|
|
92
|
-
|
|
93
|
-
Functions are organized into groups defined in `.chezmoitemplates/functions/groups.json`:
|
|
94
|
-
|
|
95
|
-
| Group | Functions | Description |
|
|
96
|
-
|-------|-----------|-------------|
|
|
97
|
-
| `api` | apihealth, apilatency, apiload | API testing utilities |
|
|
98
|
-
| `curl` | curlheader, curlstatus, curltime, httpdebug | HTTP debugging |
|
|
99
|
-
| `text` | encode64, kebabcase, lowercase, titlecase, ... | Text transformation |
|
|
100
|
-
| `system` | environment, freespace, hostinfo, myproc, sysinfo | System introspection |
|
|
101
|
-
| `files` | backup, extract, hexdump, hiddenfiles, size, zipf | File operations |
|
|
102
|
-
| `interactive` | banner, emoji, matrix, rainbow, stopwatch | Terminal fun |
|
|
103
|
-
| `nav` | cdls, goto, ql | Navigation shortcuts |
|
|
104
|
-
| `security` | genpass, keygen, mount_read_only | Security utilities |
|
|
105
|
-
| `misc` | dothelp, view-source, prependpath, caffeine | Miscellaneous |
|
|
106
|
-
|
|
107
|
-
Groups are lazy-loaded: stub functions are defined at startup, and the real implementation is loaded on first invocation. This keeps startup fast while providing 52+ functions on demand.
|
|
108
|
-
|
|
109
|
-
The `groups.json` schema maps group names to arrays of relative paths (including subdirectory):
|
|
110
|
-
|
|
111
|
-
```json
|
|
112
|
-
{
|
|
113
|
-
"group_name": ["group_name/function1.sh", "group_name/function2.sh"]
|
|
114
|
-
}
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
Each `.sh` file lives in a subdirectory matching its group and defines a single function with the same name as the file (minus `.sh` extension).
|
package/docs/CNAME
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
doc.dotfiles.io
|
package/docs/CONFIG_STRATEGY.md
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
# Configuration Management Strategy
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
This document defines the configuration management approach for this development environment, consolidating multiple systems into a clear hierarchy.
|
|
6
|
-
|
|
7
|
-
## Configuration Systems
|
|
8
|
-
|
|
9
|
-
### Primary: Chezmoi
|
|
10
|
-
|
|
11
|
-
**Role:** Source of truth for all managed dotfiles
|
|
12
|
-
**Location:** `~/.dotfiles/` (chezmoi source directory)
|
|
13
|
-
**Managed Files:** 209 files/directories
|
|
14
|
-
|
|
15
|
-
Chezmoi handles:
|
|
16
|
-
|
|
17
|
-
- Shell configurations (.bashrc, .zshrc, .profile, .zshenv, .zprofile)
|
|
18
|
-
- Editor configs (.vimrc, nvim, VS Code settings)
|
|
19
|
-
- Tool configs (.gitconfig, .npmrc, .noderc, etc.)
|
|
20
|
-
- Application configs (~/.config/*)
|
|
21
|
-
- SSH configuration (~/.ssh/config, config.d/)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
### Tertiary: Runtime/Application Data
|
|
25
|
-
|
|
26
|
-
**Role:** Auto-generated, not version controlled
|
|
27
|
-
**Examples:**
|
|
28
|
-
|
|
29
|
-
- `~/.cache/` - Application caches
|
|
30
|
-
- `~/.local/share/` - Application data
|
|
31
|
-
- `~/.cargo/`, `~/.rustup/` - Language toolchains
|
|
32
|
-
- `~/.npm/`, `~/.node_modules/` - Node.js packages
|
|
33
|
-
|
|
34
|
-
## Decision Matrix
|
|
35
|
-
|
|
36
|
-
| Configuration Type | Manager | Reason |
|
|
37
|
-
|-------------------|---------|--------|
|
|
38
|
-
| Shell dotfiles | Chezmoi | Templated, machine-specific |
|
|
39
|
-
| Editor configs | Chezmoi | Consistent across machines |
|
|
40
|
-
| Git config | Chezmoi | Templated (email, signing key) |
|
|
41
|
-
| SSH config | Chezmoi | Structured with config.d/ |
|
|
42
|
-
| Euxis framework | Git (separate) | Independent lifecycle |
|
|
43
|
-
| Language runtimes | mise | Version management |
|
|
44
|
-
| System packages | apt/snap | OS-level |
|
|
45
|
-
| Application data | None | Auto-generated |
|
|
46
|
-
|
|
47
|
-
## Chezmoi Configuration
|
|
48
|
-
|
|
49
|
-
### Data Variables (.chezmoidata.toml)
|
|
50
|
-
|
|
51
|
-
```toml
|
|
52
|
-
profile = "laptop" # Machine profile
|
|
53
|
-
theme = "tokyonight-night" # Color scheme
|
|
54
|
-
terminal_font_family = "JetBrains Mono"
|
|
55
|
-
terminal_font_size = 12
|
|
56
|
-
|
|
57
|
-
[features]
|
|
58
|
-
zsh = true # Enable zsh configs
|
|
59
|
-
nvim = true # Enable neovim configs
|
|
60
|
-
tmux = true # Enable tmux configs
|
|
61
|
-
gui = true # Enable GUI app configs
|
|
62
|
-
secrets = true # Enable secret management
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### Template Patterns
|
|
66
|
-
|
|
67
|
-
Files ending in `.tmpl` are processed with Go templates:
|
|
68
|
-
|
|
69
|
-
- `dot_gitconfig.tmpl` - Injects name, email, signing key
|
|
70
|
-
- `dot_npmrc.tmpl` - Injects registry tokens
|
|
71
|
-
- `dot_noderc.tmpl` - Injects Node.js settings
|
|
72
|
-
|
|
73
|
-
### Ignored Patterns (.chezmoiignore.tmpl)
|
|
74
|
-
|
|
75
|
-
Machine-specific exclusions based on profile and features.
|
|
76
|
-
|
|
77
|
-
## Workflow
|
|
78
|
-
|
|
79
|
-
### Adding New Configuration
|
|
80
|
-
|
|
81
|
-
1. **Check if managed:** `chezmoi managed | grep <file>`
|
|
82
|
-
2. **If not managed:** `chezmoi add <file>`
|
|
83
|
-
3. **If templating needed:** Rename to `.tmpl`, add template logic
|
|
84
|
-
4. **Apply changes:** `chezmoi apply`
|
|
85
|
-
|
|
86
|
-
### Updating Configuration
|
|
87
|
-
|
|
88
|
-
1. **Edit source:** `chezmoi edit <file>` or edit in `~/.dotfiles/`
|
|
89
|
-
2. **Preview changes:** `chezmoi diff`
|
|
90
|
-
3. **Apply:** `chezmoi apply`
|
|
91
|
-
4. **Commit:** `cd ~/.dotfiles && git add -A && git commit`
|
|
92
|
-
|
|
93
|
-
### Syncing Across Machines
|
|
94
|
-
|
|
95
|
-
```bash
|
|
96
|
-
# On new machine
|
|
97
|
-
chezmoi init https://github.com/<user>/dotfiles.git
|
|
98
|
-
chezmoi apply
|
|
99
|
-
|
|
100
|
-
# On existing machine
|
|
101
|
-
chezmoi update
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
## Anti-Patterns to Avoid
|
|
105
|
-
|
|
106
|
-
1. **Manual edits to managed files** - Always edit via chezmoi or re-add after manual changes
|
|
107
|
-
2. **Duplicate configs** - Don't maintain parallel configs outside chezmoi
|
|
108
|
-
3. **Hardcoded machine-specific values** - Use templates and data variables
|
|
109
|
-
4. **Version controlling runtime data** - Keep ~/.cache, ~/.local/share out of version control
|
|
110
|
-
|
|
111
|
-
## File Ownership
|
|
112
|
-
|
|
113
|
-
| Path | Owner | Notes |
|
|
114
|
-
|------|-------|-------|
|
|
115
|
-
| `~/.dotfiles/` | chezmoi | Source of truth |
|
|
116
|
-
| `~/.*` (dotfiles) | chezmoi-applied | Don't edit directly |
|
|
117
|
-
| `~/.config/*` | Mixed | Check `chezmoi managed` |
|
|
118
|
-
| `~/.local/` | chezmoi (bin) + runtime | Partial management |
|
|
119
|
-
|
|
120
|
-
## Maintenance Schedule
|
|
121
|
-
|
|
122
|
-
- **Weekly:** `chezmoi update` to sync remote changes
|
|
123
|
-
- **Monthly:** Review `chezmoi unmanaged` for new configs to add
|
|
124
|
-
- **Quarterly:** Audit `.chezmoiignore` patterns
|