Skip to content

feat(web): show the local bridge agent + status in the AI panel (0194) - #163

Merged
crs48 merged 2 commits into
mainfrom
feat/bridge-status-panel-0194
Jun 17, 2026
Merged

feat(web): show the local bridge agent + status in the AI panel (0194)#163
crs48 merged 2 commits into
mainfrom
feat/bridge-status-panel-0194

Conversation

@crs48

@crs48 crs48 commented Jun 17, 2026

Copy link
Copy Markdown
Owner

What & why

Exploration 0194, Phase 3 (surfacing). The bridge could drive an agent, but the panel never showed which agent was connected. This surfaces the bridge's agent + status in the AI chat panel.

Changes

  • apps/web ai-chat-connector.ts — pure, tested helpers: KNOWN_BRIDGE_AGENTS (claude/codex/gemini/opencode) and parseBridgeHealth (parses the daemon's /health).
  • AiChatPanel — when the Local bridge tier is selected, fetch its /health and render a status row: a green/grey dot + e.g. "Running claude · v1.0.0". Where a control channel exists (the Electron preload window.xnetAgentBridge), an agent picker switches the running agent; on the web (daemon launched with a fixed --agent) the picker is hidden.

Tests / validation

  • web view 92 (connector: parseBridgeHealth + KNOWN_BRIDGE_AGENTS; panel: renders "Running claude" from a mocked /health; added an afterEach so the shared fixture/localStorage is reset between cases).
  • typecheck (web), eslint --max-warnings 0, prettier --check clean.

Deferred

Live agent-switch for the web/CLI daemon (needs a control channel); the larger ACP transport + in-panel approvals/tool-fidelity.

🤖 Generated with Claude Code

xNet Test and others added 2 commits June 17, 2026 14:24
When the "Local bridge" tier is selected, the AI chat panel now fetches the
daemon's /health and shows which coding agent is running (e.g. "Running claude ·
v1.0.0") with a status dot — so it's clear the bridge is connected and to which
agent. Where a control channel exists (the Electron preload `window.xnetAgentBridge`),
a picker lets you switch the agent (Claude/Codex/Gemini/OpenCode); on the web the
daemon is launched with a fixed --agent, so the picker is hidden.

apps/web (ai-chat-connector.ts): pure, tested helpers KNOWN_BRIDGE_AGENTS +
parseBridgeHealth. AiChatPanel: a bridge-health effect (fetch /health for the
selected bridge tier) + a BridgeStatus row + Electron-only agent switch via
window.xnetAgentBridge.start(agent).

Tests: web view 92 (connector parseBridgeHealth/KNOWN_BRIDGE_AGENTS; panel
renders "Running claude" from a mocked /health). typecheck, eslint, prettier clean.

Deferred: live agent-switch for the web/CLI daemon (needs a control channel);
ACP transport + in-panel approvals/tool-fidelity.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@crs48
crs48 temporarily deployed to pr-163 June 17, 2026 21:25 — with GitHub Actions Inactive
@github-actions

Copy link
Copy Markdown
Contributor

🖼️ UI changes in this PR

No visual differences detected in the changed UI.

CI run

github-actions Bot added a commit that referenced this pull request Jun 17, 2026
@github-actions

github-actions Bot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Preview removed for PR #163.

github-actions Bot added a commit that referenced this pull request Jun 17, 2026
@crs48
crs48 merged commit bff96b3 into main Jun 17, 2026
10 of 11 checks passed
@crs48
crs48 deleted the feat/bridge-status-panel-0194 branch June 17, 2026 21:31
@github-actions github-actions Bot added the needs-changelog Merged without a changelog entry label Jun 17, 2026
github-actions Bot added a commit that referenced this pull request Jun 17, 2026
crs48 added a commit that referenced this pull request Jun 18, 2026
Backfills the notable user-facing PRs that merged before the changelog
automation existed (or were flagged `needs-changelog`):

| Entry | PR |
|---|---|
| A richer, interactive changelog | #151 |
| xNet adapts to your phone (mobile workbench) | #156 |
| See your local agent in the AI panel | #163 |
| Paid plugins | #157 |
| Agent-native Connectors | #160 |
| A new look — cosmic-web app icons | #153 |

Each fragment carries its **original** PR number, so `resolve-prs`
leaves it untouched and the gallery/link point at the right PR. The
**#156 entry auto-pulls its real mobile-vs-desktop before/after
sliders** from `visuals/pr/156/` — confirming the auto-gallery works on
a backfilled entry.

This PR also exercises the new flow itself: it **adds fragments**, so
the required `changelog-section` check passes via the fragment-present
path (no `skip-changelog` label).

Verified locally: `validate:changelog` → 19 fragments valid; `astro
build` clean; all 6 articles + the #156 before/after gallery render.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
@crs48 crs48 removed the needs-changelog Merged without a changelog entry label Jun 18, 2026
crs48 added a commit that referenced this pull request Jun 18, 2026
## What

Backfills the changelog so it reflects what's live on `main`. The per-PR
fragment system (exploration 0197) was current through PR #163 (PR #178
backfilled #151/#153/#156/#157/#160/#163), but the recent **0198/0199
batch** and a couple of stragglers shipped without entries. This adds 7
fragments, with prose lifted from each PR's own `## Changelog` block
where present.

| PR | Entry | Tags |
|---|---|---|
| #143 | AI chat that knows your workspace | `ai` |
| #167 | Linear-grade Tasks | `tasks` `app` |
| #169 | Cleaner page editor typography | `editor` |
| #170 | Bring your Slack data into xNet | `plugins` `platform` |
| #171 | Smoother, more consistent motion | `app` |
| #173 | Airtable-grade database grids | `app` |
| #174 | A redesigned chat & channels experience | `app` |

## Deliberately excluded

- **In-editor AI (#154 / #158)** — shipped the transform engine +
diff/approval logic, but both PRs state the `/ai` UI wiring into the
running app is **deferred**, so it isn't user-visible yet. An entry
would overclaim.
- **Slack (#170)** — entry scoped to the migration connector +
compatibility layer (genuinely live); avoids claiming the
webhook/slash-command hub endpoints work, since they're
generic-over-an-injected-sink and not mounted in a running server yet.
- Pure infra/ops/docs PRs (cloud M1/M2, CI, runbooks) — not user-facing.

## Verification

- `validate-changelog.ts` → **26 fragments valid** (19 existing + 7 new)
- `prettier --check` on all new files → clean
- Newest-first ordering confirmed — the 7 entries slot in at the top

## Changelog

<!-- This PR only adds changelog fragments for already-merged work; it
ships no user-facing change of its own. -->

🤖 Generated with [Claude Code](https://claude.com/claude-code)
crs48 added a commit that referenced this pull request Jun 18, 2026
…193/0194) (#201)

The `changelog-section` required check was only added in #164, so the
0192/0193/0194 feature batch merged before it never got changelog
entries. This backfills the 12 user-facing features that were missing,
each dated to its merge day with its PR number and contributors:

| PR | Entry |
|----|-------|
| #138 | A safer foundation for plugins |
| #145 | One trust model across plugins and Labs |
| #146 | Reliability you can see for managed hubs |
| #148 | Drive your own coding agent from xNet |
| #149 | AI that can act on your workspace |
| #150 | Your Labs become AI tools |
| #152 | Your agent can use your workspace |
| #154 | AI edits, right inside the editor |
| #155 | An agentic dev loop in your terminal |
| #158 | Review AI edits before they apply |
| #159 | Kick off agentic code tasks from xNet |
| #162 | Plugins run on the Labs runtime |

Skipped: PRs already covered by umbrella entries (#142 plugin ecosystem,
#144 extensibility fabric, #147 automated changelog, #163 agent panel,
#180 changelog gallery), internal-only changes (#139 schema authz — zero
user-facing effect), and meta/test/docs PRs.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
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