Skip to content

fix(ci): make the devcontainer actually work - #7875

Open
saphid wants to merge 1 commit into
pingdotgg:mainfrom
saphid:agent/devcontainer-rebuild-upstream
Open

fix(ci): make the devcontainer actually work#7875
saphid wants to merge 1 commit into
pingdotgg:mainfrom
saphid:agent/devcontainer-rebuild-upstream

Conversation

@saphid

@saphid saphid commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

What Changed

.devcontainer/ now produces a working, CI-matching dev environment: Ubuntu 24.04 with the Node 24, Rust, and GitHub CLI features, the global vp CLI installed on create, and vp i plus the Electron exec-bit repair and Vite dep-cache warmup on content updates (so Codespaces prebuilds bake them in). Named volumes for the pnpm store and root node_modules make rebuild installs take seconds and keep the heavy tree off slow macOS bind mounts. Dev ports are forwarded with pairing guidance, runtime state stays in the workspace's gitignored .t3, and docs/internals/devcontainer.md documents what works in the container and what stays host-only (windowed Electron, mobile native builds, tailnet sharing).

This PR only touches .devcontainer/ and the two docs pages. No app code, contracts, providers, or CI workflows change.

Why

The current devcontainer.json landed alongside an unrelated web styling change (0b1ce58) and does not produce a working environment: bun install bypasses vp i, so the pnpm catalogs and the 16 patched dependencies are never applied; the node feature is a major version behind; nothing installs vp, so no repo script can run; there is no Rust toolchain for native/resource-monitor; no ports are forwarded; and everything runs as root. Rebuilding it around the documented setup (docs/internals/scripts.md: global vp, then vp i) is the smallest correct fix; each choice in the config carries a comment explaining it. No open issue tracks this, so this PR carries the motivation.

Verification

All checks ran against a clean clone of this branch using the Dev Container CLI (@devcontainers/cli via devcontainer up / exec), on Docker 29.7.2, Apple Silicon (linux/arm64):

  • Cold create on a clean clone with no pre-existing volumes: outcome success, vp i in 1m 27.9s, lifecycle completed through the dep-cache warmup.
  • In-container toolchain probes: vp on PATH, Node v24.19.0, pnpm 11.10.0, rustfmt present, gh present, first-run notice rendered.
  • In-container CI-parity checks: vp run --filter @t3tools/contracts typecheck passed; cargo fmt --manifest-path native/resource-monitor/Cargo.toml -- --check passed.
  • Container recreate with volumes intact: vp i in 10.5s.
  • Cache proof: after wiping only the node_modules volume, vp i reinstalled from the warm store volume in 58.1s (store volume held 919MB).
  • Nothing user-visible changes in the product itself, so there are no UI screenshots; the container is the deliverable.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes (no UI changes)
  • I included a video for animation/interaction changes (no motion changes)

Implementation and verification used Claude Fable 5 in Claude Code.


Note

Low Risk
Contributor-only Docker/docs changes; no application, auth, or CI workflow code. Residual risk is the create script fetching the vp installer from the network.

Overview
Rebuilds .devcontainer/ so it actually matches contributor setup and Linux CI, instead of a Debian/Bun image that skipped vp i.

Switches to Ubuntu 24.04 with Node 24, Rust, and GitHub CLI; installs global vp on create; runs vp i, Electron exec-bit repair, and Vite dep-cache warmup on content updates (so Codespaces prebuilds bake them in). Named volumes cache the pnpm store and root node_modules. Forwards the web/server ports, pins runtime state to workspace .t3, and runs as vscode.

Adds docs/internals/devcontainer.md (what works vs host-only) and a pointer from scripts.md. No app or CI workflow changes.

Reviewed by Cursor Bugbot for commit 3927926. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Fix devcontainer to use Ubuntu 24.04 with Node 24, Rust, and lifecycle scripts

  • Replaces the old Debian-based devcontainer with an Ubuntu 24.04 base and adds Node 24, Rust, and GitHub CLI features in devcontainer.json
  • Adds on-create.sh to install and symlink the Vite+ CLI (vp), and update-content.sh to fix mounted-dir ownership, run vp i, repair Electron, and warm the Vite dep cache
  • Adds persistent volume mounts for pnpm store and node_modules, forwards ports 5733 and 13773, and configures VS Code extensions/settings
  • Adds maintainer docs in devcontainer.md and a pointer in scripts.md
  • Risk: T3CODE_HOME is set to the workspace .t3 directory; existing users relying on the previous Debian image or bun-based setup must update their workflows

Macroscope summarized 3927926.

The devcontainer.json that landed alongside an unrelated web styling
change (0b1ce58) does not produce a working environment: bun install
skips the pnpm catalogs and the patched dependencies, the node feature
is a major behind, nothing installs vp, there is no Rust toolchain for
native/resource-monitor, no ports are forwarded, and everything runs
as root.

Rebuild it to mirror CI (ubuntu-24.04, Node 24, Rust stable) and the
documented setup: the global vp CLI installs on create, and vp i plus
the Electron exec-bit repair and the Vite dep-cache warmup run on
content updates so Codespaces prebuilds stay warm. Named volumes for
the pnpm store and root node_modules make rebuild installs take
seconds and keep the heavy tree off slow macOS bind mounts. Dev ports
are forwarded with pairing guidance, state stays in the workspace's
gitignored .t3, and docs/internals/devcontainer.md documents what
works and what stays host-only.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Aug 22, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 347741f8-7af3-4357-b98b-9de5b8eb77ee

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 22, 2026
@macroscopeapp

macroscopeapp Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Skipped

Macroscope did not run approvability analysis for this PR. Macroscope could not determine whether this PR modifies its approvability configuration, so the PR was not approved automatically. A PR that may change the rules that govern approval is never approved automatically.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant