Skip to content

fix(dotfiles-sync): document real Codespaces/Gitpod/DevPod mount risk + nub roadmap - #54

Merged
baxyz merged 5 commits into
mainfrom
fix/dotfiles-sync-codespaces-docs
Aug 9, 2026
Merged

fix(dotfiles-sync): document real Codespaces/Gitpod/DevPod mount risk + nub roadmap#54
baxyz merged 5 commits into
mainfrom
fix/dotfiles-sync-codespaces-docs

Conversation

@baxyz

@baxyz baxyz commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Description

Two things, requested together:

  1. dotfiles-sync cloud-environment docs were incomplete. The Codespaces/Gitpod/DevPod sections only ever documented what gets merged on those platforms (protected keys, GPG skip) — never whether the mounts succeed at all. ${localEnv:HOME} resolves against the cloud VM GitHub/Gitpod provisions, not the user's actual machine, so the exact same missing-mount-source crash risk documented for local/Windows applies there too, and needs the same initializeCommand fix. Confirmed via research that this is a known, currently-unfixable-upstream limitation — devcontainers/spec#132 ("Proposal: enable optional bind mounts") is open with 16 comments, several other projects hitting the identical .aws/.kube-style problem with the same initializeCommand workaround, no maintainer commitment yet.
  2. Fleshed out the nub roadmap entry into a concrete migration strategy — additive/opt-in at every step (dependsOn the official node feature, never nub's own node-version management), package-auto-install integration, pnpm-store compatibility verification before recommending the pairing, pilot-first rollout.

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • Documentation update
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Refactoring
  • Test improvement

Related Issues

References devcontainers/spec#132 (upstream, not fixed by this PR — documented as a known limitation).

How Has This Been Tested?

  • jq empty on the manifest
  • No sync-files.sh behavior change — docs and version bump only

Checklist

  • My code follows the code style of this project
  • I have updated the documentation accordingly
  • I have added tests for my changes
  • All new and existing tests passed locally
  • My commits follow the conventional commit format

Screenshots (if applicable)

N/A.

Additional Context

None.

🤖 Generated with Claude Code

baxyz and others added 4 commits August 7, 2026 22:45
No groups configured at all — every update (patch, minor, or major) got
its own individual PR. Groups everything into one "actions" PR per run.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
PR#52's manifest was correctly bumped 1.0.0 → 1.0.1 → 1.0.2 across three
commits on the branch (confirmed: the pre-merge commits still exist in
the object store with the right version and compact JSON formatting),
but what actually landed on main after merge had version reverted to
1.0.0, with keywords/enum/extensions arrays reformatted from compact to
multi-line. Root cause unconfirmed. Practical effect: release.yml only
ever saw a single 'new feature at 1.0.0' diff for the whole PR, so
GHCR now holds a v1.0.0 tag whose content actually matches the bug-fixed
code (harmless) but no version bump for the fixes was ever recorded
(not harmless — no changelog signal, no re-triggered downstream publish).

Restores the correct manifest content and bumps to 1.0.1 — the next
version that was never actually published (verified: no playwright-dev
v1.0.1 or v1.0.2 tag exists on origin). Also documented the incident in
AGENTS.md so post-merge state gets checked, not just pre-merge.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Nub (nubjs.com) is explicitly not a new runtime — it wraps the existing
node+package-manager setup for speed, never replaces it. Strategy is
additive/opt-in at every step: dependsOn the official node feature
(never nub's own node-version-management, to avoid two competing
version-selection mechanisms), package-auto-install gains an optional
nub delegate, pnpm-store compatibility gets verified before recommending
the pairing, pilot in typescript before wider rollout, CI adoption kept
as an explicitly separate decision.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The Codespaces/Gitpod/DevPod platform notes only ever covered what gets
merged there (protected keys, GPG skip) — never whether the mount
succeeds at all. ${localEnv:HOME} resolves against the cloud VM
GitHub/Gitpod provisions, never the user's actual laptop, so the exact
same missing-mount-source crash risk documented for local/Windows
applies there too, and needs the same initializeCommand fix. Even with
that fix, there is nothing real to sync on Codespaces unless the user
has separately configured GitHub's own dotfiles-repository
personalization to seed the VM's home first — the docs previously gave
no indication of this.

Also references the open, unmerged upstream proposal for optional
mounts (devcontainers/spec#132) confirmed via research: 16 comments,
several other projects hitting the identical .aws/.kube-style problem
with the same initializeCommand workaround, no maintainer commitment
yet — so this is a real, currently-unfixable-upstream limitation, not
something we're missing a trick for. Added a matching note to AGENTS.md
so this isn't relearned per-feature.

Docs only, no sync-files.sh behavior change.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown

✅ PR Validation Passed

All checks passed!


📋 Pipeline Status

Job Status
🧾 Conventional Commits passing
🔖 Version Bump passing
🧪 Feature Tests passing
🐚 ShellCheck passing

🤖 Generated by @helpers4 CI • 2026-08-07

Verified against actual history (commit beb0dcb): pnpm-store's volume
name was originally a fixed 'helpers4-pnpm-store' and got the
${devcontainerId} suffix specifically to avoid cross-project store
collisions on the same Docker daemon, not because volumes have the
same missing-source crash risk as bind mounts (they don't — Docker
auto-creates a named volume regardless). playwright-dev already
follows this correctly (checked). Documenting so the next feature that
adds a shared volume doesn't have to rediscover this from a commit
message.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@baxyz
baxyz merged commit 4fe86c2 into main Aug 9, 2026
33 checks passed
@baxyz
baxyz deleted the fix/dotfiles-sync-codespaces-docs branch August 9, 2026 16:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant