@sebastienrousseau/dotfiles 0.2.511 → 0.2.513

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 (74) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/README.md +2 -2
  3. package/docs/AI.md +2 -1
  4. package/docs/COPYRIGHT +1 -1
  5. package/docs/architecture/AI_COST_OPTIMIZATION.md +1 -0
  6. package/docs/archive/LEGACY_ROADMAP.md +4 -158
  7. package/docs/manual/00-introduction.md +1 -1
  8. package/docs/manual/01-concepts/02-trust-model.md +2 -1
  9. package/docs/manual/02-tutorials/02-add-wallpaper.md +6 -6
  10. package/docs/manual/02-tutorials/03-create-profile.md +1 -1
  11. package/docs/manual/02-tutorials/05-deploy-fleet.md +1 -1
  12. package/docs/manual/03-reference/02-config-files.md +1 -1
  13. package/docs/manual/03-reference/03-environment.md +1 -1
  14. package/docs/manual/04-cookbook/03-faq.md +1 -1
  15. package/docs/manual/05-appendices/B-security-checklist.md +2 -1
  16. package/docs/manual/command-index.md +1 -0
  17. package/docs/operations/ARCHITECTURE_ROADMAP.md +5 -143
  18. package/docs/operations/COVERAGE.md +30 -8
  19. package/docs/operations/REGISTRY.md +20 -19
  20. package/docs/operations/ROADMAP.md +3 -159
  21. package/docs/operations/ROADMAP_2026.md +5 -663
  22. package/docs/operations/ROADMAP_V0_2_503.md +5 -129
  23. package/docs/reference/POWERSHELL_PARITY.md +28 -27
  24. package/docs/reference/THEMES.md +1 -1
  25. package/docs/reference/TOOLS.md +1 -0
  26. package/docs/reference/UTILS.md +1 -0
  27. package/docs/schema/dot-registry-v1.json +33 -0
  28. package/docs/security/SCORECARD.md +1 -1
  29. package/install.sh +20 -11
  30. package/package.json +1 -1
  31. package/scripts/diagnostics/a2a-conformance.sh +0 -0
  32. package/scripts/diagnostics/aliases-manifest.sh +33 -6
  33. package/scripts/diagnostics/benchmark.sh +27 -1
  34. package/scripts/diagnostics/doctor.sh +18 -11
  35. package/scripts/diagnostics/health.sh +12 -4
  36. package/scripts/diagnostics/mcp-doctor.sh +3 -0
  37. package/scripts/diagnostics/secret-governance.sh +7 -1
  38. package/scripts/diagnostics/security-score.sh +14 -5
  39. package/scripts/diagnostics/verify_state.sh +9 -1
  40. package/scripts/diagnostics/workstation-attestation.sh +0 -0
  41. package/scripts/dot/commands/ai.sh +40 -31
  42. package/scripts/dot/commands/aliases.sh +28 -4
  43. package/scripts/dot/commands/appearance.sh +16 -0
  44. package/scripts/dot/commands/core.sh +17 -0
  45. package/scripts/dot/commands/diagnostics.sh +19 -0
  46. package/scripts/dot/commands/fleet.sh +1 -1
  47. package/scripts/dot/commands/manual.sh +4 -4
  48. package/scripts/dot/commands/meta.sh +87 -12
  49. package/scripts/dot/commands/registry.sh +164 -15
  50. package/scripts/dot/commands/secrets.sh +17 -0
  51. package/scripts/dot/commands/security.sh +17 -0
  52. package/scripts/dot/commands/tools.sh +19 -0
  53. package/scripts/dot/powershell/Dot.psm1 +146 -26
  54. package/scripts/fonts/install-nerd-fonts.sh +16 -10
  55. package/scripts/git-hooks/pre-commit-audit.sh +1 -1
  56. package/scripts/ops/ai-setup.sh +13 -6
  57. package/scripts/ops/bundle.sh +31 -5
  58. package/scripts/ops/chezmoi-apply.sh +5 -0
  59. package/scripts/ops/heal-tools.sh +39 -111
  60. package/scripts/ops/post-apply-repair.sh +0 -0
  61. package/scripts/ops/release.sh +14 -5
  62. package/scripts/qa/docs-coverage.sh +1 -1
  63. package/scripts/qa/reliability-audit.sh +4 -4
  64. package/scripts/qa/scorecard-snapshot.sh +3 -3
  65. package/scripts/qa/validate-examples.sh +0 -0
  66. package/scripts/qa/wsl-contract.sh +0 -0
  67. package/scripts/secrets/age-init.sh +15 -4
  68. package/scripts/theme/apply-gnome-theme.sh +6 -2
  69. package/scripts/theme/extract-theme.py +97 -33
  70. package/scripts/theme/rebuild-themes.sh +240 -35
  71. package/scripts/theme/switch.sh +26 -16
  72. package/scripts/theme/wallpaper-sync.sh +95 -7
  73. package/scripts/tools/detect-collisions.py +0 -0
  74. package/scripts/version-sync.sh +108 -44
@@ -20,7 +20,9 @@ This page documents the JSON contract and the contribution flow. It is the §3 /
20
20
  dot registry list # list every published module
21
21
  dot registry search rust # filter by keyword
22
22
  dot registry info rust-dev-setup # full metadata for one module
23
- dot registry install rust-dev-setup # apply to this workstation (scaffold)
23
+ dot registry install rust-dev-setup # verify and preview changes
24
+ dot registry install rust-dev-setup --yes # verify, persist, and apply
25
+ dot registry installed # list locally installed modules
24
26
  dot registry url # show active registry URL
25
27
  dot registry set-url <url> # point at a different registry
26
28
  ```
@@ -44,44 +46,43 @@ A registry index is a single JSON document:
44
46
  "version": "1.2.0",
45
47
  "tags": ["rust", "language", "dev"],
46
48
  "maintainer": "alice@example.com",
47
- "sha256": "f9a2c1b…",
49
+ "archive_url": "https://example.com/rust-dev-setup-1.2.0.tar.gz",
50
+ "sha256": "f9a2c1b0a8d27c41b99c8c93641a0d476a0e54b23161847c47c780025ac7c4a1",
48
51
  "license": "MIT"
49
52
  }
50
53
  ]
51
54
  }
52
55
  ```
53
56
 
54
- Required keys: `name` (kebab-case, 32 chars), `description` ( 200 chars), `repo` (HTTPS clone URL), `version` (semver).
57
+ Required keys: `name` (kebab-case, no more than 32 characters), `description` (no more than 200 characters), `version` (semver), `archive_url` (immutable HTTPS archive), and `sha256` (64 lowercase hexadecimal characters).
55
58
 
56
- Recommended keys: `tags` (lower-case array), `maintainer`, `sha256` (pinned at publish time so installers can verify), `license` (SPDX identifier).
59
+ Optional keys: `repo` (HTTPS project URL), `tags` (lower-case array), `maintainer`, and `license` (SPDX identifier). The machine-readable contract is [`docs/schema/dot-registry-v1.json`](../schema/dot-registry-v1.json).
57
60
 
58
61
  ## Contributing a module
59
62
 
60
- 1. Build your module as a chezmoi-source-compatible directory at `https://github.com/<you>/<module>.git`. The contents are overlaid onto the consumer's chezmoi source dir during install.
63
+ 1. Build a gzip-compressed tar archive containing a chezmoi-source-compatible directory. Publish it at an immutable HTTPS URL, such as a versioned GitHub release asset.
61
64
  2. Open a PR against `sebastienrousseau/dotfiles` adding one entry to `docs/registry.json` (alphabetical by `name`).
62
65
  3. The PR runs CI checks for:
63
- - Schema validity (`jq` against the JSON contract).
64
- - `repo` URL resolves and is a public git repo.
65
- - `sha256` matches the latest tag at `repo`.
66
+ - Runtime contract validity and unique, sorted module names.
67
+ - Valid JSON for both the index and its published JSON Schema.
68
+ - A pinned SHA-256 digest for every archive.
66
69
  4. Once merged, the GitHub Pages workflow re-deploys the registry; `dot registry list` picks it up within 6 hours (or immediately if the consumer purges the cache).
67
70
 
68
- ## Install pipeline (scaffold today, full in Phase 2)
71
+ ## Install pipeline
69
72
 
70
- `dot registry install <name>` currently prints what *would* happen. The full pipeline lands as follows:
73
+ `dot registry install <name>` is preview-first and does not mutate the workstation. Pass `--yes` only after reviewing the chezmoi dry-run. The installer:
71
74
 
72
75
  1. Resolve the module entry from the registry index.
73
- 2. Clone the module to `$XDG_DATA_HOME/dotfiles/modules/<name>/<version>`.
74
- 3. Verify the clone's HEAD matches `sha256` from the registry.
75
- 4. Source the module's `module.toml` (if present) for declared profiles + feature flags.
76
- 5. Merge the module's chezmoi source into the consumer's chezmoi source dir under a namespaced subtree (`/registry/<name>/...`).
77
- 6. Run `chezmoi apply --include /registry/<name>/**` so only the module's files are written.
78
-
79
- The sandboxed apply (point 6) requires changes to `dot sync` to accept an include filter — that is its own roadmap issue and tracked separately.
76
+ 2. Download the versioned archive using HTTPS and TLS 1.2 or newer.
77
+ 3. Verify the archive against the registry's SHA-256 digest.
78
+ 4. Reject absolute paths, parent traversal, symbolic links, and hard links before extraction.
79
+ 5. Run `chezmoi apply --dry-run` against the isolated module source.
80
+ 6. With `--yes`, persist it at `${XDG_DATA_HOME:-~/.local/share}/dotfiles/modules/<name>/<version>` and apply that exact verified source.
80
81
 
81
82
  ## Security model
82
83
 
83
- - Modules execute with the consumer's user privileges via chezmoi `run_onchange_*` scripts. The trust contract is identical to consuming any third-party dotfiles repo.
84
- - Pinning `sha256` lets a consumer verify the registry entry hasn't been tampered with between publish and install.
84
+ - Modules execute with the consumer's user privileges via chezmoi scripts. Review the default dry-run and publisher before passing `--yes`.
85
+ - The SHA-256 pin binds installation to the reviewed archive bytes, even if the hosting release later changes.
85
86
  - The registry index itself is fetched over HTTPS; the GitHub Pages cert chain provides transport integrity.
86
87
 
87
88
  ## Why this lives in this repo (for now)
@@ -4,163 +4,7 @@ render_with_liquid: false
4
4
 
5
5
  # Roadmap
6
6
 
7
- This roadmap steers the project from a "feature-rich dotfiles repo" to an **Enterprise-Grade Shell Distribution**. The structure is organized by strategic pillars (**Trust**, **Predictability**, **Observability**) rather than linear phases, though the original 100-Phase vision is preserved within these categories.
7
+ The canonical roadmap is [`../../ROADMAP.md`](../../ROADMAP.md).
8
8
 
9
- ---
10
-
11
- ## Reproducibility
12
-
13
- **Goal:** "Reproducible Shell Environments".
14
- > *This distribution aims for deterministic rebuilds: the same tag yields the same environment across machines.*
15
-
16
- - [ ] **Pinned Formulae**: Strict version locking for Homebrew bundle and Apt packages.
17
- - [ ] **Binary Locking**: Future versions may replace bootstrap download helpers with checksum-verified artifacts once a portable verification strategy is finalized.
18
- - [ ] **State Capture**: `chezmoi` templates that capture host-specific state for idempotence.
19
- - [ ] **Manifests**: Optional `Brewfile.lock` or equivalent for Linux.
20
- - [ ] **Cloud-Init (Phase 28)**: Generate `user-data` scripts for AWS/GCP bootstrapping.
21
- - [ ] **Container Native (Phase 28)**: Base Docker image for devcontainers.
22
- - [ ] **Terraform Provider (Phase 28)**: Custom provider to provision dotfiles state.
23
-
24
- ## Observability
25
-
26
- **Goal:** "Observable Shell Lifecycle".
27
- > *The shell is instrumented: failures, timing, and lifecycle events are visible by design.*
28
-
29
- - [x] **Audit Structuring**: JSON-structured logging for bootstrap and provisioning events.
30
- - [x] **Debug Modes**: First-class support for `DOTFILES_DEBUG=1` and `DOTFILES_TRACE=1`.
31
- - [x] **Telemetry (Local)**: Granular startup timing breakdown via `dot perf`.
32
- - [ ] **Health Dashboard (Phase 39)**: CLI view of system "health" metrics.
33
- - [ ] **System Status (Phase 39)**: Real-time resource usage, battery, and network stats.
34
- - [ ] **Update Manager (Phase 39)**: Visual interface for tool updates and migration.
35
-
36
- ## Secrets
37
-
38
- **Goal:** "Explicit Secrets Model".
39
- > *Secrets are never committed; sensitive state is encrypted or host-local by default.*
40
-
41
- - [x] **Secret Driver**: Native integration with 1Password/Bitwarden CLI via `chezmoi`.
42
- - [x] **Encryption**: Promoted use of `age` encryption for all private config files.
43
- - [ ] **Leak Prevention (Phase 29)**: Pre-commit hooks (TruffleHog/Gitleaks) for high-entropy detection.
44
- - [ ] **Vault Integration (Phase 29)**: Native HashiCorp Vault support.
45
- - [ ] **Hardware Enclaves (Phase 29)**: Support for Secure Enclave/TPM key storage.
46
- - [ ] **OIDC Auth (Phase 29)**: Keyless authentication via GitHub OIDC.
47
-
48
- ## Toolchain
49
-
50
- **Goal:** "Composable Shell Layers".
51
- > *The distribution is layered: core safety is mandatory, advanced features are opt-in.*
52
-
53
- - [ ] **Core Layer**: XDG, PATH, Safety (`set -euo pipefail`). (Zero external deps).
54
- - [ ] **UX Layer**: Prompt (Starship), Aliases, Completions.
55
- - [ ] **Toolchain Layer**: Rust replacements (`eza`, `bat`, `ripgrep`).
56
- - [ ] **Cross-Compiler Toolchain (Phase 34)**:
57
- - [ ] **Multi-Arch**: `qemu-user-static` for ARM64/AMD64.
58
- - [ ] **Wasm Target**: WebAssembly toolchain setup.
59
- - [ ] **Embedded Dev**: Presets for Arduino/ESP32.
60
-
61
- ## Opt-in features
62
-
63
- **Goal:** "Explicit Feature Flags".
64
- > *Advanced features are gated behind explicit opt-in flags.*
65
-
66
- - [ ] **Feature Toggles**: Environment variables (e.g., `ENABLE_AI=0`, `ENABLE_HISTORY_SYNC=0`).
67
- - [ ] **Lazy Loading**: Strict lazy-loading for all non-core plugins.
68
- - [ ] **Plugin Ecosystem (Phase 35)**:
69
- - [ ] **Module Registry**: Public index of dotfiles modules.
70
- - [ ] **Dependency Solving**: Semantic versioning for modules.
71
- - [ ] **Verified Publishers**: Cryptographic signing for "Official" modules.
72
-
73
- ## Safety
74
-
75
- **Goal:** "Documented Threat Model".
76
- > *Security decisions are driven by an explicit, documented threat model.*
77
-
78
- - [x] **Threat Model Doc**: A lightweight document defining the trust boundary (Local Machine). See `docs/security/THREAT_MODEL.md`.
79
- - [ ] **Supply Chain**: Verification steps for upstream dependencies.
80
- - [ ] **Identity & Access (Phase 40)**:
81
- - [ ] **SSH Certs**: Short-lived SSH Certificates.
82
- - [ ] **YubiKey Bio**: Biometric enforcement for `sudo`.
83
- - [ ] **PAM Modules**: Custom auth modules.
84
- - [ ] **Auditd Rules**: Pre-configured audit rules.
85
-
86
- ## Validation
87
-
88
- **Goal:** "Self-Validating Environment".
89
- > *The environment can validate itself after installation or update.*
90
-
91
- - [x] **Smoke Tests**: Automated verification of key aliases (`ls`, `git`, `docker`).
92
- - [x] **CI Validation**: GitHub Actions workflow to boot and verify the shell syntax.
93
- - [x] **Chaos Engineering (Phase 41)**:
94
- - [ ] **Config Chaos**: Randomly corrupt config files to test recovery.
95
- - [ ] **Network Simulation**: Simulate high latency/packet loss.
96
- - [ ] **Permission Fuzzing**: Verify strict umask behavior.
97
-
98
- ## Distribution
99
-
100
- **Goal:** "Supported Platforms Matrix".
101
- > *Only listed platforms are guaranteed to work; others are best-effort.*
102
-
103
- - [x] **Support Matrix**: Explicit table of OS/Version support. See `docs/reference/SUPPORT_MATRIX.md`.
104
- - [ ] **Windows Deep Integration (Phase 53)**:
105
- - [ ] **PowerShell Profile**: Mirror Zsh functionality.
106
- - [ ] **WinGet**: Declarative package management.
107
- - [ ] **WSL Bridge**: Seamless interop.
108
- - [ ] **Linux Deep Integration (Phase 55)**:
109
- - [x] **Systemd User Units**: User service management.
110
- - [ ] **Desktop Envs**: GNOME/KDE/Sway configs.
111
-
112
- ---
113
-
114
- ## Future
115
-
116
- ### Domain-Specific Environments
117
-
118
- - [ ] **Data Science (Phase 38)**: Conda/Mamba, GPU Config, Jupyter.
119
- - [ ] **Network Topologies (Phase 56)**: Mesh Networks, Tor, Private VPNs.
120
- - [ ] **Build Systems (Phase 57)**: Bazel, Maven/Gradle, CMake.
121
- - [ ] **Financial Operations (Phase 63)**: Cost CLI, Ledger, Stock Tickers.
122
- - [ ] **Game Development (Phase 64)**: Unity/Unreal CLI, Godot, Blender.
123
- - [ ] **Scientific Computing (Phase 68)**: Latex, R/Julia, Pandoc.
124
- - [ ] **Quantum Computing (Phase 69)**: Qiskit, Simulators.
125
- - [ ] **Bio-Informatics (Phase 70)**: Genomics, PDB, FASTA.
126
-
127
- ### Enterprise & Operations
128
-
129
- - [ ] **Collaborations (Phase 45)**: Pair Programming, Team Sync, ChatOps.
130
- - [ ] **Database DevOps (Phase 46)**: DB Clients, Local Docker DBs, Migrations.
131
- - [ ] **Serverless (Phase 47)**: Lambda, Edge Workers, Wasm.
132
- - [ ] **Enterprise Fleet (Phase 30)**: MDM Profiles, Policy as Code.
133
- - [ ] **Legal & Procurement (Phase 93)**: RFP Templates, Vendor Management.
134
- - [ ] **Recruiting & HR (Phase 94)**: Resume Generators, coding interview sets.
135
-
136
- ### Accessibility & Legacy
137
-
138
- - [ ] **Accessibility (Phase 36)**: Screen Reader optimization, High Contrast.
139
- - [ ] **Legacy Modernization (Phase 42)**: Mainframe/Unix support, PowerShell Core.
140
-
141
- ---
142
-
143
- ## Completed
144
-
145
- ### Core Foundations
146
-
147
- - [x] **Universal Config (Chezmoi) (Phase 1)**
148
- - [x] **Shell Environment (Phase 2)**
149
- - [x] **Tool Modernization (Phase 3)**
150
- - [x] **Performance Optimization (Phase 4)**
151
-
152
- ### Hardened Security
153
-
154
- - [x] **Security & Validation (Phase 5)**
155
- - [x] **Package Management (Phase 6)**
156
- - [x] **Hardened Security (Phase 21)**
157
- - [x] **Enterprise Core (Phase 23)**: SLSA, SBOM, Signed Releases.
158
- - [x] **Legal & Licensing (Phase 92)**: FOSSology, Headers, CLA.
159
-
160
- ### Experience
161
-
162
- - [x] **Documentation (Phase 25)**: DocSite, Interactive Tour.
163
- - [x] **Self-Healing (Phase 27)**: Doctor, Auto-Repair.
164
- - [x] **OS Bundling (Phase 26)**: XDG Compliance, Vendor Hooks.
165
- - [x] **Predictive Shell (Phase 32)**: Autosuggest, Local LLM.
166
- - [x] **Visual Layer (Phase 34)**: Yazi, Zellij, Ghostty.
9
+ This file is retained only so existing documentation links continue to resolve.
10
+ Do not add active planning content here.