@sebastienrousseau/dotfiles 0.2.515 β†’ 0.2.516

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/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  <p align="center">
12
12
  <a href="https://github.com/sebastienrousseau/dotfiles/actions"><img src="https://img.shields.io/github/actions/workflow/status/sebastienrousseau/dotfiles/ci.yml?style=for-the-badge&logo=githubactions&logoColor=white" alt="Build" /></a>
13
- <a href="https://github.com/sebastienrousseau/dotfiles/releases/latest"><img src="https://img.shields.io/badge/Version-v0.2.515-blue?style=for-the-badge&logo=semanticrelease&logoColor=white" alt="Version" /></a>
13
+ <a href="https://github.com/sebastienrousseau/dotfiles/releases/latest"><img src="https://img.shields.io/badge/Version-v0.2.516-blue?style=for-the-badge&logo=semanticrelease&logoColor=white" alt="Version" /></a>
14
14
  <a href="https://github.com/sebastienrousseau/dotfiles/releases"><img src="https://img.shields.io/github/downloads/sebastienrousseau/dotfiles/total?style=for-the-badge&logo=github&logoColor=white" alt="Downloads" /></a>
15
15
  <a href="https://codespaces.new/sebastienrousseau/dotfiles"><img src="https://img.shields.io/badge/Open%20in-Codespaces-blue?style=for-the-badge&logo=github&logoColor=white" alt="Open in GitHub Codespaces" /></a>
16
16
  <a href="https://scorecard.dev/viewer/?uri=github.com/sebastienrousseau/dotfiles"><img src="https://img.shields.io/ossf-scorecard/github.com/sebastienrousseau/dotfiles?style=for-the-badge&logo=linuxfoundation&logoColor=white&label=OpenSSF%20Scorecard" alt="OpenSSF Scorecard" /></a>
@@ -52,7 +52,7 @@
52
52
 
53
53
  ```bash
54
54
  curl -fsSL -o /tmp/dotfiles-install.sh \
55
- https://raw.githubusercontent.com/sebastienrousseau/dotfiles/v0.2.515/install.sh
55
+ https://raw.githubusercontent.com/sebastienrousseau/dotfiles/v0.2.516/install.sh
56
56
  echo "d5a04c5e2813a93a63c8ecce9655cf3d107f6068862c6eba84a92cf22f801c7e /tmp/dotfiles-install.sh" \
57
57
  | shasum -a 256 -c
58
58
  bash /tmp/dotfiles-install.sh
package/docs/COPYRIGHT CHANGED
@@ -1,5 +1,5 @@
1
1
  /*
2
- * πŸ…³πŸ…ΎπŸ†ƒπŸ…΅πŸ…ΈπŸ…»πŸ…΄πŸ†‚ (v0.2.515) - <https://github.com/sebastienrousseau/dotfiles>
2
+ * πŸ…³πŸ…ΎπŸ†ƒπŸ…΅πŸ…ΈπŸ…»πŸ…΄πŸ†‚ (v0.2.516) - <https://github.com/sebastienrousseau/dotfiles>
3
3
  * Made With ❀️ in London, United Kingdom
4
4
  * Designed by
5
5
  * Copyright (c) 2015-2026. All rights reserved.
@@ -4,7 +4,7 @@ render_with_liquid: false
4
4
 
5
5
  # Introduction
6
6
 
7
- This manual describes `.dotfiles` v0.2.515 β€” a trusted agent workstation baseline for macOS, Linux, and WSL.
7
+ This manual describes `.dotfiles` v0.2.516 β€” a trusted agent workstation baseline for macOS, Linux, and WSL.
8
8
 
9
9
  The repository is more than a personal dotfiles collection. It ships as workstation infrastructure: signed, attested, multi-platform, AI-aware, and self-healing. Chezmoi handles templating and platform differences. The `dot` CLI sits on top and coordinates lifecycle operations.
10
10
 
@@ -8,9 +8,10 @@ date: 2026-05-24
8
8
  End-to-end flow from `git tag v0.2.503 && git push --tags` to a fully
9
9
  signed, distributed release on GitHub + Homebrew + Scoop + AUR.
10
10
 
11
- Five workflows are involved, each scoped to one job and triggered off
12
- either `release.created` or `release.published`. They run in parallel
13
- where dependencies allow.
11
+ Release workflows are triggered by either `release.created` or
12
+ `release.published`. Packaging starts at creation; distribution and the
13
+ single security chain start at publication and run in parallel where
14
+ dependencies allow.
14
15
 
15
16
  ```
16
17
  git push --tags (you)
@@ -19,26 +20,20 @@ where dependencies allow.
19
20
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
20
21
  β”‚ GitHub creates Release β”‚ (auto, from tag)
21
22
  β””β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
22
- β”‚ on: release.created
23
- β–Ό
24
- β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
25
- β”‚ release-package-dot.yml β”‚ β”‚ security-release.yml (sbom)β”‚
26
- β”‚ β†’ dot-VERSION.tar.gz β”‚ β”‚ β†’ SBOM + cosign sig + cert β”‚
27
- β”‚ β†’ dot-VERSION.zip β”‚ β”‚ β†’ SLSA L3 provenance β”‚
28
- β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
29
- β”‚ uploaded to release β”‚
30
- β”‚ β”‚
31
- β”‚ on: release.published β”‚ on: release.published
32
- β”‚ (after human "publish" click, β”‚ (same trigger)
33
- β”‚ or auto if Release was created β”‚
34
- β”‚ with assets+published in one) β”‚
23
+ β”œβ”€β”€ on: release.created
24
+ β”‚ └── release-package-dot.yml
25
+ β”‚ β†’ dot-VERSION.tar.gz + .zip
26
+ β”‚
27
+ └── on: release.published
28
+ β”‚
29
+ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
35
30
  β–Ό β–Ό
36
31
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
37
32
  β”‚ release-distribute-*.yml β”‚ β”‚ security-release.yml β”‚
38
- β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ (manifest job) β”‚
33
+ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β†’ SBOM + provenance β”‚
39
34
  β”‚ β”‚ homebrew β†’ tap PR β”‚ β”‚ β”‚ β†’ ALL_SHA256SUMS β”‚
40
35
  β”‚ β”‚ scoop β†’ bucket PRβ”‚ β”‚ β”‚ β†’ cosign sig + cert β”‚
41
- β”‚ β”‚ aur β†’ AUR push β”‚ β”‚ β”‚ β”‚
36
+ β”‚ β”‚ aur β†’ AUR push β”‚ β”‚ β”‚ β†’ verify full bundle β”‚
42
37
  β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
43
38
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
44
39
  β”‚
@@ -54,30 +49,33 @@ where dependencies allow.
54
49
  | Workflow | Trigger | Owns | Outputs |
55
50
  |---|---|---|---|
56
51
  | `release-package-dot.yml` | `release.created`, dispatch | Build deterministic `dot-VERSION.{tar.gz,zip}` from `bin/`, `lib/`, `share/`, completions. | Two release assets. |
57
- | `security-release.yml` (sbom job) | `release.created`, dispatch | Generate SPDX SBOM via anchore/sbom-action. Cosign keyless sign the SBOM. | `dotfiles-sbom.spdx.json` + `.sig` + `.pem`. |
52
+ | `security-release.yml` (sbom job) | `release.published`, dispatch | Generate SPDX SBOM via anchore/sbom-action. Cosign keyless sign the SBOM. | `dotfiles-sbom.spdx.json` + `.sig` + `.pem`. |
58
53
  | `security-release.yml` (provenance job) | needs sbom | SLSA L3 provenance via slsa-framework/slsa-github-generator. | `dotfiles-sbom.spdx.json.intoto.jsonl`. |
59
- | `security-release.yml` (manifest job) | `release.published`, dispatch | Build `ALL_SHA256SUMS` over every release asset, Cosign-sign it. | `ALL_SHA256SUMS` + `.sig` + `.pem`. |
54
+ | `security-release.yml` (manifest job) | needs provenance + complete asset set | Build `ALL_SHA256SUMS` over every release asset, Cosign-sign it, and verify its signature and digests. | `ALL_SHA256SUMS` + `.sig` + `.pem`. |
60
55
  | `release-distribute-homebrew.yml` | `release.published`, dispatch | Hash `dot-VERSION.tar.gz`, regenerate `install/homebrew/dot.rb`, push branch + PR to `sebastienrousseau/homebrew-tap`. | One PR on the tap repo. |
61
56
  | `release-distribute-scoop.yml` | `release.published`, dispatch | Hash `dot-VERSION.zip`, rewrite `install/scoop/dot.json` via jq (both 64bit + arm64 point at same zip), PR to `sebastienrousseau/scoop-bucket`. | One PR on the bucket repo. |
62
57
  | `release-distribute-aur.yml` | `release.published`, dispatch | Hash `dot-VERSION.tar.gz`, rewrite `pkgver` + `sha256sums` in `install/aur/PKGBUILD`, regenerate `.SRCINFO` via dockerised `makepkg`, push to `ssh://aur@aur.archlinux.org/dot-cli-git.git`. | One commit on AUR. |
63
58
  | `release-attestation-check.yml` | weekly cron + dispatch | Verify the latest release carries the full attestation bundle (SBOM + sig + cert + intoto + manifest + sig + cert). | Opens or comments on a tracking issue. |
64
59
 
65
- ## Why `created` vs `published`
60
+ ## Event ownership and readiness
66
61
 
67
62
  GitHub fires `release.created` the moment a Release record exists.
68
- That covers SBOM + SLSA + the packaging step: those depend only on
69
- source bytes at the tag and don't need other assets to be present.
63
+ That starts the packaging step, which depends only on source bytes at
64
+ the tag and does not need other assets to be present.
70
65
 
71
66
  `release.published` fires later, when a human flips the Release from
72
67
  draft to public (or when a Release is created already-public, the
73
- events fire together). The manifest job and the three distribution
74
- jobs wait for that because they enumerate *all* assets on the release;
75
- running them earlier would miss the manual / docs artefacts uploaded
76
- by `manual-publish.yml` and the packaging step's tarball + zip.
77
-
78
- Both arms of `security-release.yml` are idempotent: re-running the
79
- manifest job after late asset uploads picks up the new state and the
80
- `--clobber` flag overwrites the previous manifest sig + cert.
68
+ events fire together). Distribution and the security chain start from
69
+ this event. Publication does not mean independently triggered asset
70
+ publishers have finished, so the manifest job waits for all 13 required
71
+ package, documentation, SBOM, signature, and provenance assets before
72
+ it downloads or signs the bundle. The final integrity job then verifies
73
+ the manifest's Cosign identity and every recorded digest.
74
+
75
+ Both release and dispatch paths of `security-release.yml` are
76
+ idempotent: re-running the manifest job after late asset uploads picks
77
+ up the new state and the `--clobber` flag overwrites the previous
78
+ manifest sig + cert.
81
79
 
82
80
  ## Secrets used
83
81
 
package/install.sh CHANGED
@@ -71,7 +71,7 @@ show_help() {
71
71
  Usage: install.sh [version] [options]
72
72
 
73
73
  Arguments:
74
- version The version (tag or branch) to install (default: v0.2.515)
74
+ version The version (tag or branch) to install (default: v0.2.516)
75
75
 
76
76
  Options:
77
77
  --help Show this help message
@@ -87,7 +87,7 @@ EOF
87
87
  }
88
88
 
89
89
  main() {
90
- local version="v0.2.515"
90
+ local version="v0.2.516"
91
91
  local version_set=0
92
92
  local minimal=0
93
93
  local provision="${DOTFILES_PROVISION:-0}"
@@ -117,7 +117,7 @@ main() {
117
117
  # like `foobar` doesn't trigger a 30s+ network download attempt.
118
118
  # Caught by the install.sh fuzz harness (#881).
119
119
  if [[ ! "$arg" =~ ^v?[0-9]+\.[0-9]+\.[0-9]+([-+][a-zA-Z0-9.-]+)?$ ]]; then
120
- error "Unrecognized positional argument '$arg' β€” expected a semver version (e.g. v0.2.515)."
120
+ error "Unrecognized positional argument '$arg' β€” expected a semver version (e.g. v0.2.516)."
121
121
  fi
122
122
  version="$arg"
123
123
  version_set=1
@@ -369,7 +369,7 @@ main() {
369
369
  # 6. Initialize & Apply
370
370
  step "Applying Configuration..."
371
371
 
372
- # ── Auto-migration for v0.2.515 reorg ─────────────────────────────────
372
+ # ── Auto-migration for v0.2.516 reorg ─────────────────────────────────
373
373
  # If the user is upgrading from a pre-0.2.503 install, run the
374
374
  # migration script BEFORE `chezmoi apply` so the reorg's source-
375
375
  # path moves don't cause chezmoi to delete deployed files.
@@ -378,7 +378,7 @@ main() {
378
378
  for migrate_src in "$SOURCE_DIR" "$LEGACY_SOURCE_DIR"; do
379
379
  migrate_script="$migrate_src/install/migrate/migrate-v0_2-to-v0_2_503.sh"
380
380
  if [[ -x "$migrate_script" ]]; then
381
- echo " Running v0.2.515 migration (idempotent; safe on fresh installs)..."
381
+ echo " Running v0.2.516 migration (idempotent; safe on fresh installs)..."
382
382
  "$migrate_script" || echo " migration exited non-zero β€” continuing apply"
383
383
  break
384
384
  fi
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sebastienrousseau/dotfiles",
3
- "version": "0.2.515",
3
+ "version": "0.2.516",
4
4
  "description": "The Trusted Shell Platform β€” Universal dotfiles managed by Chezmoi. Features Bash & Zsh for macOS, Linux & WSL. Rust modern tooling & enterprise-grade security.",
5
5
  "main": "install.sh",
6
6
  "bin": {
@@ -141,6 +141,6 @@ if [[ $FAILED -eq 1 ]]; then
141
141
  printf '%b\\n' " (Use --no-verify to bypass if absolutely necessary)"
142
142
  exit 1
143
143
  else
144
- printf '%b\n' "${GREEN}${BOLD}βœ… Audit passed.${NC} v0.2.515 standards maintained."
144
+ printf '%b\n' "${GREEN}${BOLD}βœ… Audit passed.${NC} v0.2.516 standards maintained."
145
145
  exit 0
146
146
  fi