Add devcontainer support for Codespaces, local, and Claude Code - #4308
Merged
Conversation
abkfenris
force-pushed
the
devcontainer-config
branch
3 times, most recently
from
August 4, 2026 14:52
65459c9 to
b5cfbc6
Compare
Adds .devcontainer/devcontainer.json (docker-compose based, reusing the existing dev target/services) with: - git, github-cli, and common-utils features for a usable shell/terminal - the official Claude Code devcontainer feature, with CLAUDE_CONFIG_DIR pointed at a persisted volume so login survives rebuilds - docker-outside-of-docker so `docker compose logs` works from the integrated terminal (requires moby:false, since moby packages aren't published for Debian trixie) - forwarded ports for the app, Sentry Spotlight, and Storybook Removes the old root-level devcontainer.json, which pointed at a nonexistent workspace path and predates the .devcontainer/ convention. Requires the Dockerfile syntax bump to 1.4: devcontainer feature injection uses BuildKit named build contexts, which aren't supported under 1.2. Also bakes Playwright's browsers into the dev image (otherwise lost every time the devcontainer is recreated) so `npm run test:e2e` and the Storybook vitest addon work out of the box, pins the compose port mappings to 0.0.0.0 (Docker's default dual-stack publish was confusing VS Code's port forwarding into offering a non-working [::1] address), and allow-lists localhost/127.0.0.1 as Next.js dev origins for the same forwarded-port reason. Fixes an unrelated Storybook glob that never matched any files (all stories are .tsx; the plain .[jt]s pattern only matches .js/.ts) and was printing a spurious "no story files found" warning on every start.
abkfenris
force-pushed
the
devcontainer-config
branch
from
August 5, 2026 11:43
b5cfbc6 to
444604a
Compare
abkfenris
force-pushed
the
devcontainer-config
branch
from
August 5, 2026 12:43
5a2f823 to
a3921c3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds .devcontainer/devcontainer.json (docker-compose based, reusing the
existing dev target/services) with:
pointed at a persisted volume so login survives rebuilds
docker compose logsworks from theintegrated terminal (requires moby:false, since moby packages aren't
published for Debian trixie)
Removes the old root-level devcontainer.json, which pointed at a
nonexistent workspace path and predates the .devcontainer/ convention.
Requires the Dockerfile syntax bump to 1.4: devcontainer feature injection
uses BuildKit named build contexts, which aren't supported under 1.2.
Also bakes Playwright's browsers into the dev image (otherwise lost every
time the devcontainer is recreated) so
npm run test:e2eand the Storybookvitest addon work out of the box, pins the compose port mappings to
0.0.0.0 (Docker's default dual-stack publish was confusing VS Code's port
forwarding into offering a non-working [::1] address), and allow-lists
localhost/127.0.0.1 as Next.js dev origins for the same forwarded-port
reason.
Fixes an unrelated Storybook glob that never matched any files (all
stories are .tsx; the plain .[jt]s pattern only matches .js/.ts) and was
printing a spurious "no story files found" warning on every start.