@sebastienrousseau/dotfiles 0.2.500 → 0.2.502
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 +154 -0
- package/README.md +113 -45
- package/docs/.vitepress/reports/localization-readability-audit.md +4 -0
- package/docs/AI.md +8 -2
- package/docs/CNAME +1 -0
- package/docs/COPYRIGHT +1 -1
- package/docs/NAMING_CONVENTIONS.md +7 -0
- package/docs/README.md +4 -0
- package/docs/_config.yml +59 -0
- package/docs/adr/ADR-001-ci-cd-pipeline.md +17 -0
- package/docs/adr/ADR-002-shell-performance.md +9 -0
- package/docs/adr/ADR-003-security-first.md +18 -0
- package/docs/adr/ADR-004-cli-architecture.md +14 -0
- package/docs/adr/ADR-005-chezmoi-choice.md +10 -0
- package/docs/adr/ADR-006-shell-selection.md +9 -0
- package/docs/adr/ADR-007-multi-shell-parity.md +10 -1
- package/docs/adr/ADR-008-alias-system-architecture.md +10 -0
- package/docs/adr/ADR-009-wallpaper-driven-theming.md +131 -0
- package/docs/adr/ADR-010-starship-transient-prompt.md +144 -0
- package/docs/adr/ADR-011-nushell-tier3-keep.md +144 -0
- package/docs/adr/README.md +7 -0
- package/docs/architecture/ARCHITECTURE.md +4 -0
- package/docs/architecture/INTEROP.md +8 -0
- package/docs/architecture/REPO_LAYOUT.md +5 -1
- package/docs/architecture/WALKTHROUGH.md +4 -0
- package/docs/architecture/fleet-deployment.md +4 -0
- package/docs/archive/EUXIS_2026_REVIEW.md +11 -3
- package/docs/archive/LEGACY_ROADMAP.md +45 -27
- package/docs/archive/MILESTONE_v0.2.493.md +4 -0
- package/docs/archive/PLAN.md +46 -8
- package/docs/archive/REPO_AUDIT.md +8 -0
- package/docs/guides/INSTALL.md +4 -0
- package/docs/guides/NEOVIM_IDE_GUIDE.md +9 -0
- package/docs/guides/THEMING.md +8 -0
- package/docs/guides/TROUBLESHOOTING.md +28 -0
- package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +70 -1
- package/docs/index.md +6 -2
- package/docs/interop/A2A.md +7 -0
- package/docs/interop/POWERSHELL.md +102 -0
- package/docs/manual/00-introduction.md +5 -1
- package/docs/manual/01-concepts/01-architecture.md +4 -0
- package/docs/manual/01-concepts/02-trust-model.md +6 -2
- package/docs/manual/01-concepts/03-theme-engine.md +4 -0
- package/docs/manual/01-concepts/04-fleet.md +7 -1
- package/docs/manual/01-concepts/05-self-healing.md +8 -1
- package/docs/manual/02-tutorials/01-first-install.md +5 -0
- package/docs/manual/02-tutorials/02-add-wallpaper.md +5 -0
- package/docs/manual/02-tutorials/03-create-profile.md +6 -0
- package/docs/manual/02-tutorials/04-encrypt-secret.md +6 -0
- package/docs/manual/02-tutorials/05-deploy-fleet.md +5 -1
- package/docs/manual/03-reference/01-dot-cli.md +67 -45
- package/docs/manual/03-reference/02-config-files.md +8 -2
- package/docs/manual/03-reference/03-environment.md +4 -0
- package/docs/manual/03-reference/04-templates.md +7 -1
- package/docs/manual/03-reference/05-feature-flags.md +72 -3
- package/docs/manual/04-cookbook/01-recipes.md +4 -0
- package/docs/manual/04-cookbook/02-troubleshooting.md +32 -0
- package/docs/manual/04-cookbook/03-faq.md +8 -0
- package/docs/manual/05-appendices/A-platform-matrix.md +4 -0
- package/docs/manual/05-appendices/B-security-checklist.md +6 -0
- package/docs/manual/05-appendices/C-glossary.md +4 -0
- package/docs/manual/05-appendices/D-bibliography.md +5 -1
- package/docs/manual/05-appendices/E-license.md +4 -0
- package/docs/manual/_toc.yml +1 -1
- package/docs/manual/command-index.md +16 -8
- package/docs/manual/concept-index.md +4 -0
- package/docs/manual/index.md +66 -0
- package/docs/operations/ATTESTATION.md +5 -0
- package/docs/operations/CI_CADENCE.md +107 -0
- package/docs/operations/CI_COMPOSITES.md +156 -0
- package/docs/operations/COMPLETIONS.md +123 -0
- package/docs/operations/COVERAGE.md +182 -0
- package/docs/operations/DRIFT.md +107 -0
- package/docs/operations/HARD_AUDIT_2026.md +631 -0
- package/docs/operations/MAINTENANCE.md +5 -1
- package/docs/operations/MIGRATION.md +14 -6
- package/docs/operations/OPERATIONS.md +24 -0
- package/docs/operations/PERFORMANCE.md +133 -0
- package/docs/operations/REGISTRY.md +89 -0
- package/docs/operations/RELIABILITY.md +6 -0
- package/docs/operations/ROADMAP.md +36 -18
- package/docs/operations/ROADMAP_2026.md +665 -0
- package/docs/operations/TESTING.md +4 -0
- package/docs/operations/TRACEABILITY.md +7 -0
- package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +4 -0
- package/docs/operations/VERSION_SYNC.md +54 -5
- package/docs/reference/ALIASES.md +7 -0
- package/docs/reference/ALIASES_CHEATSHEET.md +5 -1
- package/docs/reference/ALIASES_DEPRECATIONS.md +5 -1
- package/docs/reference/FEATURES.md +4 -0
- package/docs/reference/FONTS.md +4 -0
- package/docs/reference/POWERSHELL_PARITY.md +80 -0
- package/docs/reference/PROFILES.md +4 -0
- package/docs/reference/SCREENSHOTS.md +4 -0
- package/docs/reference/SCRIPTS.md +4 -0
- package/docs/reference/SUPPORT_MATRIX.md +10 -4
- package/docs/reference/THEMES.md +4 -0
- package/docs/reference/TOOLS.md +4 -0
- package/docs/reference/UTILS.md +16 -12
- package/docs/registry.json +6 -0
- package/docs/security/AI_ACT_COMPLIANCE.md +4 -0
- package/docs/security/AUDIT_BYPASS.md +103 -0
- package/docs/security/AUTOMATION_SECRETS.md +4 -0
- package/docs/security/CI_EGRESS_ALLOWLIST.md +127 -0
- package/docs/security/CI_PINNING.md +113 -0
- package/docs/security/COMMIT_SIGNING.md +138 -0
- package/docs/security/COMPLIANCE.md +5 -0
- package/docs/security/DEPS_DEV_EXCEPTIONS.md +86 -0
- package/docs/security/DISCLOSURE.md +130 -0
- package/docs/security/ENCRYPTION.md +5 -0
- package/docs/security/FMEA.md +4 -0
- package/docs/security/HISTORY_FILTERING.md +132 -0
- package/docs/security/INCIDENT_RESPONSE.md +4 -0
- package/docs/security/INSTALL_VERIFICATION.md +122 -0
- package/docs/security/KEYS.md +4 -0
- package/docs/security/KEY_ROTATION.md +85 -1
- package/docs/security/MCP_POLICY.md +9 -0
- package/docs/security/POLICY_RELEASES.md +4 -0
- package/docs/security/README.md +4 -0
- package/docs/security/SCORECARD.md +140 -0
- package/docs/security/SECRETS.md +12 -0
- package/docs/security/SECURITY.md +4 -0
- package/docs/security/SECURITY_CHECKLIST.md +11 -0
- package/docs/security/SHELL_EXEMPTIONS.md +145 -0
- package/docs/security/SOUP_REGISTER.md +4 -0
- package/docs/security/THREAT_MODEL.md +10 -0
- package/docs/security/VERIFICATION_VALIDATION.md +5 -1
- package/docs/security/security-pubkey.asc +15 -0
- package/docs/themes/README.md +4 -0
- package/docs/themes/VISUAL_INTEGRITY_REPORT.md +4 -0
- package/dot_config/ai/identity.md +3 -0
- package/dot_config/ai/patterns/architect.md +2 -0
- package/dot_config/ai/patterns/hardener.md +2 -0
- package/dot_config/ai/patterns/refactor.md +2 -0
- package/dot_config/alacritty/alacritty.toml.tmpl +3 -3
- package/dot_config/atuin/config.toml.tmpl +47 -0
- package/dot_config/dotfiles/agent-card.json +1 -1
- package/dot_config/dotfiles/boot/README.md +2 -0
- package/dot_config/dotfiles/grub/README.md +2 -0
- package/dot_config/dotfiles/lock/README.md +2 -0
- package/dot_config/fish/conf.d/direnv.fish +4 -0
- package/dot_config/fish/conf.d/init.fish.tmpl +21 -0
- package/dot_config/fish/conf.d/mise-activate.fish +5 -0
- package/dot_config/fish/functions/_cached_eval.fish +84 -11
- package/dot_config/fish/functions/_cached_eval_clear.fish +17 -0
- package/dot_config/foot/foot.ini.tmpl +3 -3
- package/dot_config/fuzzel/fuzzel.ini.tmpl +2 -2
- package/dot_config/ghostty/config.tmpl +3 -3
- package/dot_config/git/hooks/executable_commit-msg +146 -0
- package/dot_config/goose/config.yaml +2 -2
- package/dot_config/gtk-3.0/gtk.css.tmpl +2 -2
- package/dot_config/gtk-3.0/settings.ini.tmpl +2 -2
- package/dot_config/gtk-4.0/gtk.css.tmpl +2 -2
- package/dot_config/gtk-4.0/settings.ini.tmpl +2 -2
- package/dot_config/kitty/kitty.conf.tmpl +3 -3
- package/dot_config/mise/config.toml +1 -1
- package/dot_config/niri/config.kdl.tmpl +2 -2
- package/dot_config/nushell/cached_eval.nu +80 -0
- package/dot_config/nushell/env.nu.tmpl +21 -13
- package/dot_config/shell/00-core-paths.sh.tmpl +9 -1
- package/dot_config/shell/05-core-safety.sh +1 -0
- package/dot_config/shell/10-secrets.sh +1 -0
- package/dot_config/shell/40-fzf-defaults.sh.tmpl +1 -0
- package/dot_config/shell/40-ls-colors.sh +1 -0
- package/dot_config/shell/50-logic-functions-core.sh.tmpl +1 -0
- package/dot_config/shell/50-logic-functions.sh.tmpl +1 -0
- package/dot_config/shell/51-logic-functions-extra.sh.tmpl +1 -0
- package/dot_config/shell/90-ux-aliases.sh.tmpl +1 -0
- package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +1 -0
- package/dot_config/shell/README.md +25 -8
- package/dot_config/starship.toml.tmpl +2 -2
- package/dot_config/tmux/tmux.conf.tmpl +3 -3
- package/dot_config/user-dirs.dirs +1 -0
- package/dot_config/vscode/settings.json.tmpl +2 -2
- package/dot_config/waybar/config.jsonc.tmpl +2 -2
- package/dot_config/waybar/style.css.tmpl +2 -2
- package/dot_config/wezterm/wezterm.lua.tmpl +3 -3
- package/dot_config/zsh/dot_zshrc.tmpl +207 -17
- package/dot_config/zsh/rc.d/00-alias-shims.zsh +28 -6
- package/dot_config/zsh/rc.d/30-options.zsh.tmpl +27 -7
- package/dot_local/bin/executable_bm +2 -0
- package/dot_local/bin/executable_dot +56 -9
- package/dot_local/bin/executable_dot-bootstrap +0 -1
- package/dot_local/bin/executable_dot-load-benchmark +1 -1
- package/dot_local/bin/executable_dot-theme-sync +8 -8
- package/dot_local/bin/executable_notify +2 -0
- package/dot_local/bin/executable_open +2 -0
- package/dot_local/bin/executable_tour +4 -2
- package/dot_local/bin/executable_up +3 -1
- package/dot_local/share/man/man1/dot.1 +1 -1
- package/dot_local/share/zsh/completions/_dot +4 -0
- package/install.sh +53 -38
- package/package.json +1 -1
- package/scripts/ci/check-dangerous-chmod.sh +19 -0
- package/scripts/ci/check-deps-dev.sh +236 -0
- package/scripts/ci/check-insecure-tls.sh +61 -0
- package/scripts/ci/check-regression-traceability.sh +67 -0
- package/scripts/ci/check-shell-preamble.sh +106 -0
- package/scripts/ci/dot-cli-startup-bench.sh +126 -0
- package/scripts/ci/install-chezmoi-verified.sh +4 -1
- package/scripts/ci/lint-reusable-pins.sh +78 -0
- package/scripts/ci/run-coverage.sh +451 -0
- package/scripts/ci/validate-chezmoidata.sh +25 -0
- package/scripts/ci/windows-smoke-test.ps1 +136 -0
- package/scripts/diagnostics/doctor.sh +203 -5
- package/scripts/diagnostics/drift-dashboard.sh +177 -13
- package/scripts/diagnostics/health.sh +21 -4
- package/scripts/diagnostics/perf.sh +304 -77
- package/scripts/diagnostics/workstation-attestation.sh +6 -1
- package/scripts/dot/commands/agent.sh +33 -27
- package/scripts/dot/commands/agents.sh +325 -0
- package/scripts/dot/commands/ai.sh +75 -10
- package/scripts/dot/commands/aliases.sh +10 -8
- package/scripts/dot/commands/core.sh +10 -4
- package/scripts/dot/commands/fleet.sh +278 -3
- package/scripts/dot/commands/init.sh +184 -0
- package/scripts/dot/commands/meta.sh +7 -4
- package/scripts/dot/commands/registry.sh +263 -0
- package/scripts/dot/commands/tools.sh +49 -1
- package/scripts/dot/lib/bento.sh +2 -1
- package/scripts/dot/lib/log.sh +6 -0
- package/scripts/dot/lib/platform.sh +22 -8
- package/scripts/dot/lib/ui.sh +145 -2
- package/scripts/dot/lib/utils.sh +6 -1
- package/scripts/git-hooks/pre-commit-audit.sh +1 -1
- package/scripts/git-hooks/pre-push +66 -3
- package/scripts/lib/secrets_provider.sh +32 -6
- package/scripts/ops/heal-chezmoi.sh +41 -6
- package/scripts/ops/rollback.sh +14 -0
- package/scripts/qa/powershell-contract.ps1 +95 -0
- package/scripts/security/check-disclosure-key-expiry.sh +110 -0
- package/scripts/security/lock-configs.sh +11 -2
- package/scripts/theme/merge-wallpaper.sh +4 -0
- package/scripts/theme/switch.sh +20 -10
- package/scripts/version-sync.sh +3 -0
- package/dot_config/atuin/config.toml +0 -40
- package/dot_local/bin/__pycache__/executable_dot-load-benchmark-ptycpython-312.pyc +0 -0
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
render_with_liquid: false
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
# Dotfiles Maintenance Runbook
|
|
2
6
|
|
|
3
7
|
This runbook captures recovery and release maintenance operations for this repository.
|
|
@@ -27,7 +31,7 @@ This runbook captures recovery and release maintenance operations for this repos
|
|
|
27
31
|
```bash
|
|
28
32
|
git verify-commit HEAD
|
|
29
33
|
gh run list --workflow ci.yml --branch master --limit 1
|
|
30
|
-
gh release view v0.2.
|
|
34
|
+
gh release view v0.2.501 --json tagName,targetCommitish,url
|
|
31
35
|
```
|
|
32
36
|
|
|
33
37
|
## Release Closeout Checklist
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
render_with_liquid: false
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
# Migration and Upgrade Guide
|
|
2
6
|
|
|
3
7
|
## How to Upgrade
|
|
@@ -18,7 +22,8 @@ dot doctor
|
|
|
18
22
|
|
|
19
23
|
## Version History
|
|
20
24
|
|
|
21
|
-
### v0.2.
|
|
25
|
+
### v0.2.501 (Current)
|
|
26
|
+
|
|
22
27
|
- **Wallpaper-driven theme engine** — themes auto-generated from wallpapers via K-Means in CIELAB color space (no hand-crafted themes)
|
|
23
28
|
- **Dynamic HEIC support** — custom wallpapers ship as Apple-compatible single-file dynamic HEIC; macOS auto-switches dark/light
|
|
24
29
|
- **System wallpaper discovery** — pulls themes from `/System/Library/Desktop Pictures/` (macOS) and `/usr/share/backgrounds/` (Linux)
|
|
@@ -29,7 +34,8 @@ dot doctor
|
|
|
29
34
|
- **Build artifact redirection** — Cargo, Go, pip, uv, Zig caches → `/tmp/builds/` (cleared on reboot)
|
|
30
35
|
- **CI dedup** — `ci-enforced.yml` reuses `reusable-shell-lint.yml` and `reusable-test-suite.yml`
|
|
31
36
|
|
|
32
|
-
### v0.2.
|
|
37
|
+
### v0.2.500
|
|
38
|
+
|
|
33
39
|
- Added AI CLIs: Autohand Code, Mistral Vibe, Qwen Code, ZAI
|
|
34
40
|
- Removed Cline CLI (broken upstream dependency)
|
|
35
41
|
- Interactive mise installer for missing AI providers
|
|
@@ -41,27 +47,29 @@ dot doctor
|
|
|
41
47
|
- Auto-prewarm after dot apply
|
|
42
48
|
- Expanded Atuin history filters
|
|
43
49
|
|
|
44
|
-
### v0.2.
|
|
50
|
+
### v0.2.497
|
|
51
|
+
|
|
45
52
|
- Theme system with Catppuccin integration
|
|
46
53
|
- Linux desktop parity (Niri, Waybar, Fuzzel)
|
|
47
54
|
- AI tooling expansion (Kiro, OpenCode)
|
|
48
55
|
- Coverage contracts and QA docs
|
|
49
56
|
|
|
50
|
-
### v0.2.
|
|
57
|
+
### v0.2.496
|
|
58
|
+
|
|
51
59
|
- Verified chezmoi installer
|
|
52
60
|
- Shell startup optimization
|
|
53
61
|
- Property-based tests
|
|
54
62
|
|
|
55
63
|
## Breaking Changes
|
|
56
64
|
|
|
57
|
-
If you are upgrading from v0.2.
|
|
65
|
+
If you are upgrading from v0.2.501 or earlier, note these changes:
|
|
58
66
|
|
|
59
67
|
1. **`themes.toml` is now generated** — do not hand-edit. Run `dot theme rebuild` to regenerate from wallpapers
|
|
60
68
|
2. **Theme names changed** — old hand-crafted names (e.g. `catppuccin-mocha`, `macos-tahoe-dark` with hardcoded palettes) are replaced by wallpaper-derived names. The picker only shows paired wallpaper themes.
|
|
61
69
|
3. **Wallpaper format** — custom wallpapers should be dynamic HEIC (single file, both appearances). Use `bash scripts/theme/merge-wallpaper.sh` to merge separate dark/light pairs.
|
|
62
70
|
4. **Build caches relocated** — Cargo/Go/pip/uv/Zig now write to `/tmp/builds/`. Restart your shell after upgrade so `mise [env]` picks up the new paths.
|
|
63
71
|
|
|
64
|
-
If you are upgrading from v0.2.
|
|
72
|
+
If you are upgrading from v0.2.501 or earlier:
|
|
65
73
|
|
|
66
74
|
1. **Cline CLI removed** — if you used `dot cline`, switch to a different AI CLI
|
|
67
75
|
2. **AI tools now install through mise** — run `mise install` to set up AI providers
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
render_with_liquid: false
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
# Operations
|
|
2
6
|
|
|
3
7
|
Core workflows for keeping your dotfiles running across platforms.
|
|
@@ -11,9 +15,11 @@ Core workflows for keeping your dotfiles running across platforms.
|
|
|
11
15
|
**Primary manager**: `Homebrew`
|
|
12
16
|
|
|
13
17
|
- **Update**:
|
|
18
|
+
|
|
14
19
|
```bash
|
|
15
20
|
chezmoi update
|
|
16
21
|
```
|
|
22
|
+
|
|
17
23
|
This runs `brew bundle install` behind the scenes to reconcile against the declared Brewfiles.
|
|
18
24
|
- **Permission issues**: `sudo chown -R $(whoami) $(brew --prefix)/*`
|
|
19
25
|
- **Drift**: Run `brew bundle cleanup` to remove unmanaged packages.
|
|
@@ -23,10 +29,12 @@ Core workflows for keeping your dotfiles running across platforms.
|
|
|
23
29
|
**Primary manager**: `apt-get` / `snap`
|
|
24
30
|
|
|
25
31
|
- **Update**:
|
|
32
|
+
|
|
26
33
|
```bash
|
|
27
34
|
sudo apt update && sudo apt upgrade -y
|
|
28
35
|
chezmoi update
|
|
29
36
|
```
|
|
37
|
+
|
|
30
38
|
On Linux, `chezmoi` focuses on configuration. Package updates work best through the OS package manager to avoid `sudo` conflicts.
|
|
31
39
|
- **Font issues**: If icons are missing, run `./install/provision/run_onchange_50-install-fonts.sh.tmpl` manually via `chezmoi apply` or source directly with `bash`.
|
|
32
40
|
|
|
@@ -61,6 +69,7 @@ dot doctor
|
|
|
61
69
|
```
|
|
62
70
|
|
|
63
71
|
`dot apply` includes post-apply checks that:
|
|
72
|
+
|
|
64
73
|
- Remove stale read-only zsh cache files (`~/.config/shell/*.zwc`, `~/.config/zsh/**/*.zwc`)
|
|
65
74
|
- Validate that `dot` resolves to `~/.local/bin/dot` in a fresh login shell
|
|
66
75
|
|
|
@@ -109,38 +118,53 @@ dot prewarm
|
|
|
109
118
|
If something's slow or broken:
|
|
110
119
|
|
|
111
120
|
1. **Check health**:
|
|
121
|
+
|
|
112
122
|
```bash
|
|
113
123
|
dot doctor
|
|
114
124
|
dot health --fix
|
|
115
125
|
```
|
|
126
|
+
|
|
116
127
|
2. **Smoke test**:
|
|
128
|
+
|
|
117
129
|
```bash
|
|
118
130
|
dot smoke-test
|
|
119
131
|
```
|
|
132
|
+
|
|
120
133
|
3. **Scorecard**:
|
|
134
|
+
|
|
121
135
|
```bash
|
|
122
136
|
dot scorecard
|
|
123
137
|
```
|
|
138
|
+
|
|
124
139
|
4. **Chaos testing (self-healing)**:
|
|
140
|
+
|
|
125
141
|
```bash
|
|
126
142
|
dot chaos --force
|
|
127
143
|
dot heal --force
|
|
128
144
|
```
|
|
145
|
+
|
|
129
146
|
5. **Startup profiling**:
|
|
147
|
+
|
|
130
148
|
```bash
|
|
131
149
|
dot perf --profile
|
|
132
150
|
```
|
|
151
|
+
|
|
133
152
|
6. **Post-merge verification**:
|
|
153
|
+
|
|
134
154
|
```bash
|
|
135
155
|
dot verify
|
|
136
156
|
```
|
|
157
|
+
|
|
137
158
|
7. **Inspect alias behavior**:
|
|
159
|
+
|
|
138
160
|
```bash
|
|
139
161
|
dot aliases list
|
|
140
162
|
dot aliases why dprune
|
|
141
163
|
DOTFILES_ALIAS_POLICY=strict bash ~/.dotfiles/scripts/diagnostics/alias-governance.sh
|
|
142
164
|
```
|
|
165
|
+
|
|
143
166
|
8. **Verbose mode**:
|
|
167
|
+
|
|
144
168
|
```bash
|
|
145
169
|
DOTFILES_DEBUG=1 dot apply
|
|
146
170
|
```
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
render_with_liquid: false
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Performance — Budgets, Baselines, Regression Detection
|
|
6
|
+
|
|
7
|
+
This page documents the per-shell startup budget, the baseline
|
|
8
|
+
lifecycle, and the regression-alert pipeline. Managed under
|
|
9
|
+
[#863](https://github.com/sebastienrousseau/dotfiles/issues/863).
|
|
10
|
+
|
|
11
|
+
## Targets
|
|
12
|
+
|
|
13
|
+
| Shell | Target (mean ms) | Override env var |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| **zsh** | 250 | `DOTFILES_PERF_TARGET_ZSH_MS` |
|
|
16
|
+
| **bash** | 60 | `DOTFILES_PERF_TARGET_BASH_MS` |
|
|
17
|
+
| **fish** | 200 | `DOTFILES_PERF_TARGET_FISH_MS` |
|
|
18
|
+
| **nu** | 500 | `DOTFILES_PERF_TARGET_NU_MS` |
|
|
19
|
+
| **pwsh** | 600 | `DOTFILES_PERF_TARGET_PWSH_MS` |
|
|
20
|
+
|
|
21
|
+
`dot perf` measures every installed shell and flags any whose mean
|
|
22
|
+
exceeds its target. The numbers come from
|
|
23
|
+
[`scripts/diagnostics/perf.sh`](../../scripts/diagnostics/perf.sh) —
|
|
24
|
+
warm-up + 3 runs by default.
|
|
25
|
+
|
|
26
|
+
## The baseline
|
|
27
|
+
|
|
28
|
+
`$XDG_CACHE_HOME/dotfiles/perf-baseline.json` records the per-shell
|
|
29
|
+
means at a known-good point in time. The file is a JSON object:
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"recorded_at": "2026-05-13T00:00:00Z",
|
|
34
|
+
"regression_pct": 10,
|
|
35
|
+
"shells": {
|
|
36
|
+
"zsh": 41,
|
|
37
|
+
"bash": 28,
|
|
38
|
+
"fish": 190
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Recording a baseline
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
dot perf --baseline # all installed shells
|
|
47
|
+
dot perf --baseline --shell zsh # just one shell
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Do this after:
|
|
51
|
+
|
|
52
|
+
- A fresh chezmoi apply on a new machine.
|
|
53
|
+
- Any deliberate startup-cost change (deferred-load PRs, new plugin).
|
|
54
|
+
- A `mise install` that bumps a hot-path tool's version.
|
|
55
|
+
|
|
56
|
+
### Regression detection
|
|
57
|
+
|
|
58
|
+
Every subsequent `dot perf` invocation compares the current
|
|
59
|
+
measurement against the baseline. When any shell exceeds the
|
|
60
|
+
baseline by more than `DOTFILES_PERF_REGRESSION_PCT` (default 10%),
|
|
61
|
+
the run reports under a "Baseline regressions" section. JSON output
|
|
62
|
+
includes a `regressions: [...]` array and a `regression_count`
|
|
63
|
+
counter so dashboards can alert.
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
dot perf # warns on regression
|
|
67
|
+
dot perf --no-baseline-check # skip the comparison entirely
|
|
68
|
+
DOTFILES_PERF_REGRESSION_PCT=5 dot perf # tighter threshold
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Per-tool timings
|
|
72
|
+
|
|
73
|
+
`_cached_eval` (the zsh/fish primitive that caches expensive tool
|
|
74
|
+
init like `starship init zsh`) writes one JSONL row per call to
|
|
75
|
+
`$XDG_STATE_HOME/dotfiles/eval-timings.jsonl` when
|
|
76
|
+
`EVALCACHE_TIMING=1` is set in the environment. Aggregating that log
|
|
77
|
+
gives a per-tool breakdown of where startup time goes.
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
EVALCACHE_TIMING=1 zsh -i -c exit # generate data
|
|
81
|
+
dot perf --by-tool # see the aggregation
|
|
82
|
+
dot perf --reset # clear the log
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
The aggregator reports `count / total / mean / p50 / p95 / p99`
|
|
86
|
+
per `_cached_eval` label. P95 + P99 surface the tail-latency cases
|
|
87
|
+
that mean alone misses (e.g. a cache miss after a tool upgrade
|
|
88
|
+
spiking from 5ms steady-state to 200ms once).
|
|
89
|
+
|
|
90
|
+
## `dot doctor` Performance section
|
|
91
|
+
|
|
92
|
+
`dot doctor` surfaces (when each data source is available):
|
|
93
|
+
|
|
94
|
+
- Whether `_cached_eval`'s on-disk tool caches are fresh vs stale
|
|
95
|
+
for mise, starship, zoxide, atuin, fzf, direnv.
|
|
96
|
+
- Any installed slow-init tools NOT yet wrapped in `_cached_eval`
|
|
97
|
+
(nvm, fnm, pyenv, pnpm, …).
|
|
98
|
+
- Hyperfine-measured startup latency vs target.
|
|
99
|
+
- Baseline age + top-3 slowest tools from the EVALCACHE_TIMING log.
|
|
100
|
+
|
|
101
|
+
## CI workflow
|
|
102
|
+
|
|
103
|
+
[`.github/workflows/perf-baseline.yml`](../../.github/workflows/perf-baseline.yml)
|
|
104
|
+
runs weekly on Sunday at 03:00 UTC on `ubuntu-latest`. It:
|
|
105
|
+
|
|
106
|
+
1. Restores the previous week's baseline from a workflow artifact.
|
|
107
|
+
2. Runs `dot perf --json` against the freshly-applied dotfiles.
|
|
108
|
+
3. Compares current vs restored baseline; opens (or comments on) a
|
|
109
|
+
tracking issue if any shell regressed by >10%.
|
|
110
|
+
4. Uploads the new measurement as the next week's restore source.
|
|
111
|
+
|
|
112
|
+
The CI workflow always runs against the same `ubuntu-latest` image
|
|
113
|
+
so the comparison is machine-stable; per-developer baselines live on
|
|
114
|
+
each developer's box and aren't synced.
|
|
115
|
+
|
|
116
|
+
## Adjusting the budget
|
|
117
|
+
|
|
118
|
+
Per-shell targets live in
|
|
119
|
+
[`scripts/diagnostics/perf.sh`](../../scripts/diagnostics/perf.sh)
|
|
120
|
+
under `shell_target_for()`. Bumping a target should always come with:
|
|
121
|
+
|
|
122
|
+
- A commit-message rationale explaining why slower is acceptable
|
|
123
|
+
(e.g. "added a required Carapace completion at startup").
|
|
124
|
+
- A new baseline recording (`dot perf --baseline`).
|
|
125
|
+
- A note here under "Targets" with the new value.
|
|
126
|
+
|
|
127
|
+
## References
|
|
128
|
+
|
|
129
|
+
- [`scripts/diagnostics/perf.sh`](../../scripts/diagnostics/perf.sh)
|
|
130
|
+
- [`tests/unit/diagnostics/test_perf_percentiles.sh`](../../tests/unit/diagnostics/test_perf_percentiles.sh) — percentile math contract
|
|
131
|
+
- [`.github/workflows/perf-baseline.yml`](../../.github/workflows/perf-baseline.yml)
|
|
132
|
+
- ADR-002 (Shell Performance Optimization)
|
|
133
|
+
- Issue [#863](https://github.com/sebastienrousseau/dotfiles/issues/863)
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
render_with_liquid: false
|
|
3
|
+
title: "Dot Module Registry"
|
|
4
|
+
description: "How to publish and consume reusable dotfile modules."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Dot Module Registry
|
|
8
|
+
|
|
9
|
+
The `dot registry` command discovers reusable dotfile modules from a JSON index published over HTTPS. The default registry is hosted by this repo at:
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
https://sebastienrousseau.github.io/dotfiles/registry.json
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
This page documents the JSON contract and the contribution flow. It is the §3 / Months 12-18 deliverable from [HARD_AUDIT_2026.md](./HARD_AUDIT_2026.md) — the registry is the network-effect feature that turns the framework into a category, not just one person's setup.
|
|
16
|
+
|
|
17
|
+
## Quick start (consumer side)
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
dot registry list # list every published module
|
|
21
|
+
dot registry search rust # filter by keyword
|
|
22
|
+
dot registry info rust-dev-setup # full metadata for one module
|
|
23
|
+
dot registry install rust-dev-setup # apply to this workstation (scaffold)
|
|
24
|
+
dot registry url # show active registry URL
|
|
25
|
+
dot registry set-url <url> # point at a different registry
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
The registry index is cached locally at `${XDG_CACHE_HOME:-~/.cache}/dotfiles/registry/index.json` with a 6 hour TTL. Override the URL one-off via `DOTFILES_REGISTRY_URL=<url> dot registry list`.
|
|
29
|
+
|
|
30
|
+
## JSON contract
|
|
31
|
+
|
|
32
|
+
A registry index is a single JSON document:
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"version": 1,
|
|
37
|
+
"updated": "2026-05-15T16:30:00Z",
|
|
38
|
+
"registry": "sebastienrousseau/dotfiles",
|
|
39
|
+
"modules": [
|
|
40
|
+
{
|
|
41
|
+
"name": "rust-dev-setup",
|
|
42
|
+
"description": "Rust toolchain + cargo plugins + Helix/Neovim editor config",
|
|
43
|
+
"repo": "https://github.com/example/rust-dev-setup",
|
|
44
|
+
"version": "1.2.0",
|
|
45
|
+
"tags": ["rust", "language", "dev"],
|
|
46
|
+
"maintainer": "alice@example.com",
|
|
47
|
+
"sha256": "f9a2c1b…",
|
|
48
|
+
"license": "MIT"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Required keys: `name` (kebab-case, ≤ 32 chars), `description` (≤ 200 chars), `repo` (HTTPS clone URL), `version` (semver).
|
|
55
|
+
|
|
56
|
+
Recommended keys: `tags` (lower-case array), `maintainer`, `sha256` (pinned at publish time so installers can verify), `license` (SPDX identifier).
|
|
57
|
+
|
|
58
|
+
## Contributing a module
|
|
59
|
+
|
|
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.
|
|
61
|
+
2. Open a PR against `sebastienrousseau/dotfiles` adding one entry to `docs/registry.json` (alphabetical by `name`).
|
|
62
|
+
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
|
+
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
|
+
|
|
68
|
+
## Install pipeline (scaffold today, full in Phase 2)
|
|
69
|
+
|
|
70
|
+
`dot registry install <name>` currently prints what *would* happen. The full pipeline lands as follows:
|
|
71
|
+
|
|
72
|
+
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.
|
|
80
|
+
|
|
81
|
+
## Security model
|
|
82
|
+
|
|
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.
|
|
85
|
+
- The registry index itself is fetched over HTTPS; the GitHub Pages cert chain provides transport integrity.
|
|
86
|
+
|
|
87
|
+
## Why this lives in this repo (for now)
|
|
88
|
+
|
|
89
|
+
A vendor-neutral registry would be ideal but adds operations cost. Hosting `registry.json` under this repo's `docs/` directory and serving it via GitHub Pages keeps the maintenance burden near zero while the registry is small. If/when the registry outgrows GitHub Pages, the JSON contract is stable and the index can move to a dedicated subdomain.
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
render_with_liquid: false
|
|
3
|
+
---
|
|
4
|
+
{% raw %}
|
|
5
|
+
|
|
1
6
|
# Reliability
|
|
2
7
|
|
|
3
8
|
## Reliability scorecard
|
|
@@ -114,3 +119,4 @@ jobs:
|
|
|
114
119
|
For a lightweight repository-wide snapshot, run `bash ./scripts/qa/coverage-baseline.sh --with-module-coverage`.
|
|
115
120
|
|
|
116
121
|
Core internal behaviors are traced through `bash ./scripts/qa/traceability-coverage.sh`.
|
|
122
|
+
{% endraw %}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
render_with_liquid: false
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
# Roadmap
|
|
2
6
|
|
|
3
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.
|
|
@@ -5,6 +9,7 @@ This roadmap steers the project from a "feature-rich dotfiles repo" to an **Ente
|
|
|
5
9
|
---
|
|
6
10
|
|
|
7
11
|
## Reproducibility
|
|
12
|
+
|
|
8
13
|
**Goal:** "Reproducible Shell Environments".
|
|
9
14
|
> *This distribution aims for deterministic rebuilds: the same tag yields the same environment across machines.*
|
|
10
15
|
|
|
@@ -17,6 +22,7 @@ This roadmap steers the project from a "feature-rich dotfiles repo" to an **Ente
|
|
|
17
22
|
- [ ] **Terraform Provider (Phase 28)**: Custom provider to provision dotfiles state.
|
|
18
23
|
|
|
19
24
|
## Observability
|
|
25
|
+
|
|
20
26
|
**Goal:** "Observable Shell Lifecycle".
|
|
21
27
|
> *The shell is instrumented: failures, timing, and lifecycle events are visible by design.*
|
|
22
28
|
|
|
@@ -28,6 +34,7 @@ This roadmap steers the project from a "feature-rich dotfiles repo" to an **Ente
|
|
|
28
34
|
- [ ] **Update Manager (Phase 39)**: Visual interface for tool updates and migration.
|
|
29
35
|
|
|
30
36
|
## Secrets
|
|
37
|
+
|
|
31
38
|
**Goal:** "Explicit Secrets Model".
|
|
32
39
|
> *Secrets are never committed; sensitive state is encrypted or host-local by default.*
|
|
33
40
|
|
|
@@ -39,6 +46,7 @@ This roadmap steers the project from a "feature-rich dotfiles repo" to an **Ente
|
|
|
39
46
|
- [ ] **OIDC Auth (Phase 29)**: Keyless authentication via GitHub OIDC.
|
|
40
47
|
|
|
41
48
|
## Toolchain
|
|
49
|
+
|
|
42
50
|
**Goal:** "Composable Shell Layers".
|
|
43
51
|
> *The distribution is layered: core safety is mandatory, advanced features are opt-in.*
|
|
44
52
|
|
|
@@ -46,62 +54,67 @@ This roadmap steers the project from a "feature-rich dotfiles repo" to an **Ente
|
|
|
46
54
|
- [ ] **UX Layer**: Prompt (Starship), Aliases, Completions.
|
|
47
55
|
- [ ] **Toolchain Layer**: Rust replacements (`eza`, `bat`, `ripgrep`).
|
|
48
56
|
- [ ] **Cross-Compiler Toolchain (Phase 34)**:
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
57
|
+
- [ ] **Multi-Arch**: `qemu-user-static` for ARM64/AMD64.
|
|
58
|
+
- [ ] **Wasm Target**: WebAssembly toolchain setup.
|
|
59
|
+
- [ ] **Embedded Dev**: Presets for Arduino/ESP32.
|
|
52
60
|
|
|
53
61
|
## Opt-in features
|
|
62
|
+
|
|
54
63
|
**Goal:** "Explicit Feature Flags".
|
|
55
64
|
> *Advanced features are gated behind explicit opt-in flags.*
|
|
56
65
|
|
|
57
66
|
- [ ] **Feature Toggles**: Environment variables (e.g., `ENABLE_AI=0`, `ENABLE_HISTORY_SYNC=0`).
|
|
58
67
|
- [ ] **Lazy Loading**: Strict lazy-loading for all non-core plugins.
|
|
59
68
|
- [ ] **Plugin Ecosystem (Phase 35)**:
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
69
|
+
- [ ] **Module Registry**: Public index of dotfiles modules.
|
|
70
|
+
- [ ] **Dependency Solving**: Semantic versioning for modules.
|
|
71
|
+
- [ ] **Verified Publishers**: Cryptographic signing for "Official" modules.
|
|
63
72
|
|
|
64
73
|
## Safety
|
|
74
|
+
|
|
65
75
|
**Goal:** "Documented Threat Model".
|
|
66
76
|
> *Security decisions are driven by an explicit, documented threat model.*
|
|
67
77
|
|
|
68
78
|
- [x] **Threat Model Doc**: A lightweight document defining the trust boundary (Local Machine). See `docs/security/THREAT_MODEL.md`.
|
|
69
79
|
- [ ] **Supply Chain**: Verification steps for upstream dependencies.
|
|
70
80
|
- [ ] **Identity & Access (Phase 40)**:
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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.
|
|
75
85
|
|
|
76
86
|
## Validation
|
|
87
|
+
|
|
77
88
|
**Goal:** "Self-Validating Environment".
|
|
78
89
|
> *The environment can validate itself after installation or update.*
|
|
79
90
|
|
|
80
91
|
- [x] **Smoke Tests**: Automated verification of key aliases (`ls`, `git`, `docker`).
|
|
81
92
|
- [x] **CI Validation**: GitHub Actions workflow to boot and verify the shell syntax.
|
|
82
93
|
- [x] **Chaos Engineering (Phase 41)**:
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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.
|
|
86
97
|
|
|
87
98
|
## Distribution
|
|
99
|
+
|
|
88
100
|
**Goal:** "Supported Platforms Matrix".
|
|
89
101
|
> *Only listed platforms are guaranteed to work; others are best-effort.*
|
|
90
102
|
|
|
91
103
|
- [x] **Support Matrix**: Explicit table of OS/Version support. See `docs/reference/SUPPORT_MATRIX.md`.
|
|
92
104
|
- [ ] **Windows Deep Integration (Phase 53)**:
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
105
|
+
- [ ] **PowerShell Profile**: Mirror Zsh functionality.
|
|
106
|
+
- [ ] **WinGet**: Declarative package management.
|
|
107
|
+
- [ ] **WSL Bridge**: Seamless interop.
|
|
96
108
|
- [ ] **Linux Deep Integration (Phase 55)**:
|
|
97
|
-
|
|
98
|
-
|
|
109
|
+
- [x] **Systemd User Units**: User service management.
|
|
110
|
+
- [ ] **Desktop Envs**: GNOME/KDE/Sway configs.
|
|
99
111
|
|
|
100
112
|
---
|
|
101
113
|
|
|
102
114
|
## Future
|
|
103
115
|
|
|
104
116
|
### Domain-Specific Environments
|
|
117
|
+
|
|
105
118
|
- [ ] **Data Science (Phase 38)**: Conda/Mamba, GPU Config, Jupyter.
|
|
106
119
|
- [ ] **Network Topologies (Phase 56)**: Mesh Networks, Tor, Private VPNs.
|
|
107
120
|
- [ ] **Build Systems (Phase 57)**: Bazel, Maven/Gradle, CMake.
|
|
@@ -112,6 +125,7 @@ This roadmap steers the project from a "feature-rich dotfiles repo" to an **Ente
|
|
|
112
125
|
- [ ] **Bio-Informatics (Phase 70)**: Genomics, PDB, FASTA.
|
|
113
126
|
|
|
114
127
|
### Enterprise & Operations
|
|
128
|
+
|
|
115
129
|
- [ ] **Collaborations (Phase 45)**: Pair Programming, Team Sync, ChatOps.
|
|
116
130
|
- [ ] **Database DevOps (Phase 46)**: DB Clients, Local Docker DBs, Migrations.
|
|
117
131
|
- [ ] **Serverless (Phase 47)**: Lambda, Edge Workers, Wasm.
|
|
@@ -120,6 +134,7 @@ This roadmap steers the project from a "feature-rich dotfiles repo" to an **Ente
|
|
|
120
134
|
- [ ] **Recruiting & HR (Phase 94)**: Resume Generators, coding interview sets.
|
|
121
135
|
|
|
122
136
|
### Accessibility & Legacy
|
|
137
|
+
|
|
123
138
|
- [ ] **Accessibility (Phase 36)**: Screen Reader optimization, High Contrast.
|
|
124
139
|
- [ ] **Legacy Modernization (Phase 42)**: Mainframe/Unix support, PowerShell Core.
|
|
125
140
|
|
|
@@ -128,12 +143,14 @@ This roadmap steers the project from a "feature-rich dotfiles repo" to an **Ente
|
|
|
128
143
|
## Completed
|
|
129
144
|
|
|
130
145
|
### Core Foundations
|
|
146
|
+
|
|
131
147
|
- [x] **Universal Config (Chezmoi) (Phase 1)**
|
|
132
148
|
- [x] **Shell Environment (Phase 2)**
|
|
133
149
|
- [x] **Tool Modernization (Phase 3)**
|
|
134
150
|
- [x] **Performance Optimization (Phase 4)**
|
|
135
151
|
|
|
136
152
|
### Hardened Security
|
|
153
|
+
|
|
137
154
|
- [x] **Security & Validation (Phase 5)**
|
|
138
155
|
- [x] **Package Management (Phase 6)**
|
|
139
156
|
- [x] **Hardened Security (Phase 21)**
|
|
@@ -141,6 +158,7 @@ This roadmap steers the project from a "feature-rich dotfiles repo" to an **Ente
|
|
|
141
158
|
- [x] **Legal & Licensing (Phase 92)**: FOSSology, Headers, CLA.
|
|
142
159
|
|
|
143
160
|
### Experience
|
|
161
|
+
|
|
144
162
|
- [x] **Documentation (Phase 25)**: DocSite, Interactive Tour.
|
|
145
163
|
- [x] **Self-Healing (Phase 27)**: Doctor, Auto-Repair.
|
|
146
164
|
- [x] **OS Bundling (Phase 26)**: XDG Compliance, Vendor Hooks.
|