Expand chat-first workbench and shared workspace capabilities - #2763
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Builder reviewed your changes and found 5 potential issues 🔴
Review Details
Code Review Summary
This incremental update refines the chat-first workbench UX and desktop convergence while retaining the broader shared workspace, automation, and credential changes. The architecture continues to have good separation between thread-scoped tabs and shared UI surfaces, and the reported native/web validation is broad. This remains high risk because it crosses authenticated desktop/webview boundaries, background job execution, credential lookup, and shared chat state.
Key Findings
- 🔴 Thread switching can leak the prior thread's pane: the pane state is not reset when the thread-scoped surface changes.
- 🟡 Watch targets are cleared prematurely: restored or agent-chat watch targets are validated against an asynchronously loaded code-run list and can disappear before or regardless of loading.
- 🟡 Desktop watch events do not cross the embedded Dispatch boundary: the Electron side pane cannot receive the guest webview's watch event.
- 🟡 Credential-store failures are mislabeled as missing credentials: transient lookup failures become terminal configuration errors.
- 🟡 Lease-release failures can mask job-processing failures: an exception in
finallyreplaces the original error.
Browser verification planned 15 grounded flows, but executor browser tooling remained unavailable after retries. Previously reported iframe, navigation, mounted-path, scheduler-renewal, and active-tab findings were not duplicated.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
steve8708
left a comment
There was a problem hiding this comment.
I found one additional high-confidence embed-path regression below. The existing review threads cover separate pane, watch, credential, and scheduler issues.
steve8708
left a comment
There was a problem hiding this comment.
I found three additional concerns beyond the existing five threads and the embed-session payload issue already posted. The comments below are limited to behaviors I could trace directly through the changed code.
steve8708
left a comment
There was a problem hiding this comment.
Found one new build-blocking issue on the latest head.
steve8708
left a comment
There was a problem hiding this comment.
Found a new credential-exposure risk in the desktop MCP runtime bridge.
| const userServers = await listRemoteServers("user", email); | ||
| for (const server of userServers) { | ||
| servers[mergedConfigKey("user", server, email)] = | ||
| await toHttpServerConfigAsync("user", email, server); |
There was a problem hiding this comment.
🔴 Credential exposure
This endpoint materializes encrypted header and OAuth credentials and returns them to the caller, but its only gate is resolveContextForRequest(event) checking that the request has an email. The desktop IPC bridge sends an ordinary session cookie and does not provide a desktop-only capability, so any signed-in browser client can call the same route and receive bearer/API keys, undoing the redaction used by the normal list endpoint. Keep cleartext credentials on a server-side or narrowly scoped desktop channel, or add an unforgeable desktop authorization mechanism, and cover the non-desktop request case with a test before merging.
steve8708
left a comment
There was a problem hiding this comment.
Found one tab-activation regression in the new persistent surface rendering.
steve8708
left a comment
There was a problem hiding this comment.
The additional read-only passes found several independent issues in the latest committed tree.
steve8708
left a comment
There was a problem hiding this comment.
Incremental review at head 53739c0bfc after the second 45-minute window: the only new commits since 4602c8cd15 are the SSR CI coverage-command adjustment and the onboarding MCP test mock. I found no additional actionable concerns in that delta. The SSR smoke check and the current CI suite pass at this head. The earlier inline findings remain the actionable review queue; the prior Dispatch build-blocker finding is fixed by 4602c8cd.
steve8708
left a comment
There was a problem hiding this comment.
Final immediate pass on head 4f42a68dc0. CI is green and the committed delta is format-clean. I found four remaining actionable concerns, attached inline below.
Summary
This PR collects the chat-first workbench and the related shared workspace work:
open_appregression coverage, webview geometry coverage, and a canonical local screenshot set.Terminal remains explicitly deferred until an embedded PTY lifecycle and authenticated Dispatch transport exist. Cloud handoff, Builder hosting, and full artifacts-style local app generation remain future work as requested.
Validation
CHAT_FIRST_SCREENSHOT_DIR=.../qa-artifacts/chat-first-workbench pnpm qa:chat-first-workbench— Dispatch browser lane cleanCHAT_FIRST_ELECTRON=1 CHAT_FIRST_SCREENSHOT_DIR=.../qa-artifacts/chat-first-workbench pnpm qa:chat-first-workbench— Electron lane cleanpnpm --dir packages/desktop-app build— passed@agent-native/code-agents-ui: 2 tests passedpnpm guards: all 49 checks passedReview status
The PR is open, intentionally not merged, and blocked only on the required approving review. Security guards are green. A separate repository-level CI hygiene issue remains:
guard-no-boot-data-workandguard-no-heavy-dashboard-list-readsshould fetchmainor fail closed when no diff base is available; local guard runs have a valid base and pass.