From 142f8d12b36fff8fb0d7d04da2a2f30344dbe708 Mon Sep 17 00:00:00 2001 From: AnExiledDev Date: Wed, 25 Feb 2026 01:22:51 +0000 Subject: [PATCH 1/2] Add devcontainer-bridge (dbr) for VS Code-independent port forwarding forwardPorts in devcontainer.json is a no-op outside VS Code. dbr provides dynamic port auto-discovery via /proc/net/tcp polling and forwards to the host via reverse TCP connections. Container daemon is inert without the host daemon, so VS Code users are unaffected. --- .devcontainer/CHANGELOG.md | 3 +++ .devcontainer/CLAUDE.md | 12 ++++++++++++ .devcontainer/devcontainer.json | 9 ++++++--- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/.devcontainer/CHANGELOG.md b/.devcontainer/CHANGELOG.md index 39e5f87..026bb1d 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 +#### Port Forwarding +- **devcontainer-bridge (dbr)** — Dynamic port auto-discovery and forwarding independent of VS Code. Container daemon polls for new listeners and forwards them to the host via reverse TCP connections. Requires `dbr host-daemon` running on the host machine. 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..8a31a94 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 | Yes (VS Code auto-detect) | +| 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..aae3c63 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:latest": {} }, "forwardPorts": [7847], From 5b3a9c0a6f86b337a89850837c4f9411b1e2ac81 Mon Sep 17 00:00:00 2001 From: AnExiledDev Date: Wed, 25 Feb 2026 05:38:24 +0000 Subject: [PATCH 2/2] Fix 3 CodeRabbit issues + stale doc reference MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - CHANGELOG: add #### Features sub-heading, rewrite bullet as user-facing - CLAUDE.md: forwardPorts is static, not dynamic discovery - CLAUDE.md: fix Claude Code version ref (:1 → :1.0.5) - devcontainer.json: pin dbr to 0.2.0 instead of :latest --- .devcontainer/CHANGELOG.md | 4 ++-- .devcontainer/CLAUDE.md | 2 +- .devcontainer/devcontainer.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.devcontainer/CHANGELOG.md b/.devcontainer/CHANGELOG.md index 026bb1d..8eae447 100644 --- a/.devcontainer/CHANGELOG.md +++ b/.devcontainer/CHANGELOG.md @@ -17,8 +17,8 @@ - **`/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 -#### Port Forwarding -- **devcontainer-bridge (dbr)** — Dynamic port auto-discovery and forwarding independent of VS Code. Container daemon polls for new listeners and forwards them to the host via reverse TCP connections. Requires `dbr host-daemon` running on the host machine. See [devcontainer-bridge](https://github.com/bradleybeddoes/devcontainer-bridge) +#### 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 diff --git a/.devcontainer/CLAUDE.md b/.devcontainer/CLAUDE.md index 8a31a94..1a04188 100644 --- a/.devcontainer/CLAUDE.md +++ b/.devcontainer/CLAUDE.md @@ -183,7 +183,7 @@ Two mechanisms handle port access: | Mechanism | When Active | Dynamic Discovery | |-----------|-------------|-------------------| -| `forwardPorts` (devcontainer.json) | VS Code / Codespaces only | Yes (VS Code auto-detect) | +| `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 aae3c63..b658bb4 100755 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -150,7 +150,7 @@ "enableBell": true, "enableOsc": true }, - "ghcr.io/bradleybeddoes/devcontainer-bridge/dbr:latest": {} + "ghcr.io/bradleybeddoes/devcontainer-bridge/dbr:0.2.0": {} }, "forwardPorts": [7847],