diff --git a/.devcontainer/CHANGELOG.md b/.devcontainer/CHANGELOG.md index 39e5f87..8eae447 100644 --- a/.devcontainer/CHANGELOG.md +++ b/.devcontainer/CHANGELOG.md @@ -17,6 +17,9 @@ - **`/ship`** — Combined commit/push/PR command with full code review, commit message approval, and AskUserQuestion confirmation before PR creation; optionally links to tickets if context exists - **`/pr:review`** — Review any PR by number/URL or auto-detect from current branch; posts findings as PR comment with severity ratings; never approves or merges +#### Features +- **devcontainer-bridge (dbr)** — Ports opened inside the container are now automatically discovered and forwarded to the host, even outside VS Code. Requires `dbr host-daemon` running on the host. See [devcontainer-bridge](https://github.com/bradleybeddoes/devcontainer-bridge) + ### Changed #### Skill Engine: Auto-Suggestion diff --git a/.devcontainer/CLAUDE.md b/.devcontainer/CLAUDE.md index 796109c..1a04188 100644 --- a/.devcontainer/CLAUDE.md +++ b/.devcontainer/CLAUDE.md @@ -73,6 +73,7 @@ git worktree add /workspaces/projects/.worktrees/ -b | `agent-browser` | Headless Chromium (Playwright-based) | | `check-setup` | Verify CodeForge setup health | | `claude-dashboard` | Session analytics dashboard (port 7847) | +| `dbr` | Dynamic port forwarding (devcontainer-bridge) | | `cc-tools` | List all installed tools with versions | ## Plugins @@ -175,3 +176,14 @@ Labels are `custom-text` widgets with `merge: "no-padding"` so they fuse visuall ## Features Custom features in `./features/` follow the [devcontainer feature spec](https://containers.dev/implementors/features/). Every local feature supports `"version": "none"` to skip installation. Claude Code is installed as a native binary via `./features/claude-code-native` (uses Anthropic's official installer at `https://claude.ai/install.sh`). + +## Port Forwarding + +Two mechanisms handle port access: + +| Mechanism | When Active | Dynamic Discovery | +|-----------|-------------|-------------------| +| `forwardPorts` (devcontainer.json) | VS Code / Codespaces only | No (static list; VS Code auto-detects separately) | +| devcontainer-bridge (`dbr`) | Any terminal client | Yes (polls `/proc/net/tcp`) | + +`forwardPorts` is a no-op outside VS Code — the `devcontainer` CLI ignores it. `dbr` provides VS Code-independent dynamic port discovery via a reverse connection model (container→host). The container daemon auto-starts and is inert without the host daemon (`dbr host-daemon`). Both mechanisms coexist. See [devcontainer-bridge](https://github.com/bradleybeddoes/devcontainer-bridge). diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 13f780d..b658bb4 100755 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -49,7 +49,8 @@ // npm-dependent features (agent-browser, ccusage, ccburn, claude-session-dashboard, // biome, lsp-servers) must come after Node. uv-dependent features (ruff, claude-monitor) must // come after uv. cargo-dependent features (ccms) must come after Rust. - // notify-hook is last (lightweight, no dependencies). + // notify-hook is second-to-last (lightweight, no dependencies). + // dbr (devcontainer-bridge) is last — standalone binary, no dependencies. "overrideFeatureInstallOrder": [ "ghcr.io/devcontainers/features/node", "ghcr.io/devcontainers/features/github-cli", @@ -77,7 +78,8 @@ "./features/shellcheck", "./features/hadolint", "./features/biome", - "./features/notify-hook" + "./features/notify-hook", + "ghcr.io/bradleybeddoes/devcontainer-bridge/dbr" ], "features": { @@ -147,7 +149,8 @@ "./features/notify-hook": { "enableBell": true, "enableOsc": true - } + }, + "ghcr.io/bradleybeddoes/devcontainer-bridge/dbr:0.2.0": {} }, "forwardPorts": [7847],