Repository navigation
feat(agents): file new Solo chats in explicit personal workspaces - #2857
Conversation
Co-authored-by: Dr. Spuxx, the Living Mutagen <dbeea7b641217ab95b3c75e547b999cc044d294afebbf240df7fe90c249de836@feedback.communities.buzz.xyz> Signed-off-by: Zach Marley <[email protected]>
Bind each prepared placement to its own future chat ID. Distinguish pre-assignment refusal from uncertain completion after the existing writer starts, without retrying creation or persistence. Co-authored-by: Dr. Spuxx, the Living Mutagen <dbeea7b641217ab95b3c75e547b999cc044d294afebbf240df7fe90c249de836@feedback.communities.buzz.xyz> Signed-off-by: Zach Marley <[email protected]>
Preserve upstream full-agent external connections without exposing local-turn workspace filing. Keep existing acceptance behavior and add the integration regression. Co-authored-by: Dr. Spuxx, the Living Mutagen <dbeea7b641217ab95b3c75e547b999cc044d294afebbf240df7fe90c249de836@feedback.communities.buzz.xyz> Signed-off-by: Zach Marley <[email protected]>
kalvinnchau
left a comment
There was a problem hiding this comment.
🤖 One non-blocking test-coverage gap; no production defect established.
Co-authored-by: Dr. Spuxx, the Living Mutagen <dbeea7b641217ab95b3c75e547b999cc044d294afebbf240df7fe90c249de836@feedback.communities.buzz.xyz> Signed-off-by: Zach Marley <[email protected]>
kalvinnchau
left a comment
There was a problem hiding this comment.
🤖 Approved at 2c3af95c8342e701f0d435383f12732b038909ce.
The added cached/read-only preference cases close the previously reported regression-test gap. They exercise the production authority guard through both workspace listing and preparation. Removing either guard independently fails its corresponding case; removing both fails both cases, and bypassing preparation’s guarded lookup also fails the new assertions. No new actionable findings were identified in the test-only delta.
Validation included 538 passing service tests (one existing skip), 742 passing tests across four affected files (overlapping coverage), and four Chromium/WebKit journeys using the actual frontend and production broker. These covered authority rejection and recovery, normal filing and reload, navigation/composer focus, and cancellation after a modeled durable preference write. The tests fit the existing service authority contract without changing production abstractions.
Remaining limits: authority states were injected and relay/native boundaries were modeled. Real authority transitions, native OS/IPC/signing, real-relay restart, cross-device delivery, and whole-app reconnect were not validated. Earlier combined multi-create/reload uncertainty remains unresolved; this approval does not claim those boundaries are verified.
* origin/main: (121 commits) Expose Solo region state before a component mounts (#3296) fix(builderlab): say a 401 was refused, not expired, and show each sign-in failure once (#3241) feat(agents): file new Solo chats in explicit personal workspaces (#2857) perf(css): limit broad style invalidation (#3267) Delay and fade in the Bestie badge celebration (#3292) fix(github): show private-repo body images from signed links (#3252) NEXUS-4029: Preserve semantic chips in the core composer (#2303) Make plugin signature enforcement opt-in (#2212) NEXUS-4156: Add workspace Leads and choose a chat's workspace (#2788) feat(plugins): report conclusively retired update providers (#3263) feat(messages): let attachment renderers open files from the host file card (#2239) feat(charts): bundle a Charts code-block renderer (#3226) Expose native reply grouping through Conversation.ui (#3245) NEXUS-4163: Keep plugin-owned chat deletion in Solo (#2787) NEXUS-4156: Expose Solo Workspaces to plugin regions (#2786) NEXUS-4022: Start region chats in the New Chat editor (#2784) feat(link-previews): unfurl web links below messages by default (#3225) fix(messages): keep names in literal Markdown as written when editing (#2834) feat(plugins): fetch a packaged managed plugin policy from a URL (#2504) fix(goose): enable deferred tool loading for goose agents (#3227) ... Signed-off-by: Tyler Longwell <[email protected]> Co-authored-by: Eva <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz>
* origin/main: NEXUS-4029: Offer folder chips in the composer (block#2789) perf(css): narrow effort button invalidation (block#3297) NEXUS-4433: Expose saved plugin installation source kind (block#3242) fix(identity): keep an unbacked key safe on Replace and unblock a corrupt saved key (block#3233) Expose Solo region state before a component mounts (block#3296) fix(builderlab): say a 401 was refused, not expired, and show each sign-in failure once (block#3241) feat(agents): file new Solo chats in explicit personal workspaces (block#2857) perf(css): limit broad style invalidation (block#3267) Delay and fade in the Bestie badge celebration (block#3292) fix(github): show private-repo body images from signed links (block#3252) NEXUS-4029: Preserve semantic chips in the core composer (block#2303) Make plugin signature enforcement opt-in (block#2212) NEXUS-4156: Add workspace Leads and choose a chat's workspace (block#2788) feat(plugins): report conclusively retired update providers (block#3263) feat(messages): let attachment renderers open files from the host file card (block#2239) feat(charts): bundle a Charts code-block renderer (block#3226) Expose native reply grouping through Conversation.ui (block#3245) Signed-off-by: Joah Gerstenberg <[email protected]> # Conflicts: # src/features/conversation/ComposerCompletions.test.tsx # src/features/conversation/ComposerCompletions.tsx # src/features/messages/MessageComposer.tsx
Summary
solo_workspace_listand optionalworkspaceon new private Solo creation, for locally hosted agent runs only. Require the host-bound owner explicitly in members and an exact existing personal workspace ID.Validation — full suite is NOT green
Original reviewed head:
bb37256a8dcf8a6b8997a7788d9eb6008f029f06(independent workspace PR; picker ordering is separate).browser-host/vite-config.test.mjs— config-loader Node subprocess hit its existing 30-second ETIMEDOUT limit. Root cause is not established. No timeout/assertion weakening and no further blind full-suite rerun.Native and human exercise
Combined acceptance app at
1ef7c0a91361310a47a4c5fae4a173ddb12b1a8ccontains this reviewed workspace implementation unchanged. It ran separately from installed Buzz with the existing owner identity and feedback community.place: here); its session20261106_83used an MCP listener owned by the acceptance app, not installed Buzz.solo_workspace_listresolved Test workspace, thenchannel_createsupplied that exact workspace ID withsolo: true, private visibility and explicit human + agent members. Result reported the created ID and filed in workspace.678377f5-f225-41f5-916c-42de83b50f64directly in workspace819d0711-bbfb-48c2-847e-67506e19621f; metadata identifies the local agent as creator and the human as member. The human reported “worked!!” and requested PR publication.45df41eb-b9c1-4fbd-8a85-a6e83e6041feis preserved and is not this successful acceptance result.Remaining native evidence: test-instance restart persistence was not exercised or explicitly reported; no independent encrypted-delivery receipt, raw signature audit, or no-message/Canvas/default-copy inspection is claimed. The native successful workflow is evidence of actual tool wiring and placement, not proof of all those boundaries. Unit coverage establishes the modeled safety contracts.
November 11 integration and review readiness
Current head:
c72d3d1479038e89d10a0eaaa67158445dbc2f45, merging original acceptedbb37256with main128cd4c2f38801d5f773d5d5ec95a1ea5594b374. Original commits and attribution are preserved; no history rewrite.soloWorkspacesfrom the external run handle so workspace discovery/filing remains local-turn-only as agreed. Upstream external implementation/tests are unchanged. No UI redesign or unrelated CI repair.60dd337ddabde8c5ed17240f2dad09b79e98ea0aequals the committed tree. New external-workspace refusal regression fails before the exclusion and passes in the complete service file.c72d3d1. Existing local/native and human workflow evidence above is retained; local placement behavior is unchanged. No new native or browser campaign was run.bb37256: JavaScript 3/6 timed out in unchangedApp.profile.test.tsx; Vitest flake 1/2 first iteration timed out in an existing Attention polling case and had a follow-on fake-timer error, then passed iterations 2–5. No root cause claimed or unrelated repair added. Fresh hosted CI is pending forc72d3d1; old failures are not described as green.Human authorized resumption, conflict reconciliation, publication and readiness on November 11. Required hosted checks and reviewer/code-owner approval still gate merge. No merge, release, installation or artifact cleanup is included. Historical full-suite and native evidence limitations above remain disclosed. No browser journeys added or removed.
November 11 — Kalvin P3 coverage follow-up
Current published head: 2c3af95; prior reviewed/accepted integration head
c72d3d1479038e89d10a0eaaa67158445dbc2f45.cached: trueandwritable: falseindependently to the existing unconfirmed-authority table. Both require list/prepare refusal, with no relay-evidence read or assignment. Existing valid authority/workspace setup is retained.state.cached || !preferences.writableremoved): both new cases fail, resolving Kalvin's reported coverage gap. Restored production, complete service test file: 538 passed / 1 existing skip, 35.50s.c72d3d1. The PR remains ready for review; required human/code-owner approval is still pending. No merge authorized.