Skip to content

fix(devcontainer): theme, login, node_modules isolation, self-contained claude-code config - #58

Merged
gatezh merged 3 commits into
masterfrom
node_modules-isolation
Mar 26, 2026
Merged

gatezh merged 3 commits into
masterfrom
node_modules-isolation

Conversation

@gatezh

@gatezh gatezh commented Mar 26, 2026

Copy link
Copy Markdown
Owner

Summary

  • Root devcontainer: Add Claude Dark theme + coral status bar, fix extension login race by removing init-plugins.sh from postCreateCommand (it ran claude CLI commands before extensions installed), add CMD ["sleep", "infinity"]
  • claude-code image: Switch sandbox to passwordless sudo (security comes from the firewall, not sudo restrictions), enabling node_modules volume isolation for both variants
  • claude-code configs: Move inline README configs into actual .devcontainer/ files — complete, batteries-included configs with all VS Code extensions (Claude Code, Bun, OXC, Tailwind, YAML, Docker, Markdown Preview), monorepo node_modules volume mounts, Claude Dark theme, and Edmonton timezone
  • claude-code README: Replace inline code blocks with links to .devcontainer/ files, fix stale cross-reference to devcontainer-claude-bun, fix stale skill path

Test plan

  • Rebuild root devcontainer — verify Claude Dark theme applies, extension login works without disruption
  • Copy claude-code/.devcontainer/ files to a test project — verify container starts, extensions install, node_modules stays off host
  • Verify sandbox variant with firewall script — confirm node_modules isolation works with passwordless sudo
  • Check README links resolve correctly on GitHub

🤖 Generated with Claude Code

gatezh and others added 3 commits March 26, 2026 12:03
Theme wasn't applied because no colorTheme was set. Login was disrupted
because init-plugins.sh ran claude CLI commands in postCreateCommand,
which executes before extensions install — racing the extension's OAuth.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…Code setup

- Move inline devcontainer.json/docker-compose configs from README into
  claude-code/examples/{default,sandbox}/ as actual files
- Add all VS Code extensions with detailed comments (OXC, Bun, Tailwind,
  YAML, Docker, Markdown Preview) — OXC was referenced as formatter but
  missing from extensions list
- Add monorepo node_modules volume mounts to both variants
- Switch sandbox to passwordless sudo (security comes from the firewall)
- Fix timezone from America/Los_Angeles to America/Edmonton
- Fix stale cross-reference to devcontainer-claude-bun
- Fix stale skill path (sandbox-fetch-docs.md → sandbox-fetch-docs/SKILL.md)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… root

Configs belong next to the Dockerfile they reference — no need for a
separate examples/ directory. mise.toml goes in the project root where
mise expects it.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@gatezh
gatezh merged commit 6c72403 into master Mar 26, 2026
8 checks passed
@gatezh gatezh mentioned this pull request Jun 12, 2026
gatezh added a commit that referenced this pull request Sep 23, 2026
…ommand

The previous commit wired init-plugins.sh into the default variant's
postCreateCommand (#107 option a). That is the configuration #58 removed:
before #58 the repo-root default ran init-plugins.sh from postCreateCommand
with waitFor already set, and claude CLI calls there raced the Claude Code
extension's OAuth sign-in and corrupted auth state.

Apply #107 option (b) to the default variant instead: drop the dangling
waitFor (its default, updateContentCommand, is correct) and document
running the script once after sign-in. The sandbox keeps the script in
postCreateCommand, matching the repo-root sandbox, now guarded so a
consumer without the optional script doesn't fail container creation.
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