feat(web): add temporary side chats with context snapshots - #12794
Closed
rohan-patnaik wants to merge 1 commit into
Closed
rohan-patnaik wants to merge 1 commit into
rohan-patnaik wants to merge 1 commit into
Conversation
Member
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A side question should not interrupt a running task or add an entire exploratory exchange to its context. This adds temporary SideChat tabs beside the main thread, opened from the panel launcher,
/side, or Ctrl+Alt+S.Each tab captures a fixed conversation snapshot, including partial streamed output, and uses an independent provider session. Tabs have separate models, reasoning/access controls, drafts, and attachments. Send to main chat explicitly dispatches a completed answer using the parent’s settings; Keep promotes the tab to a normal thread and Close discards it. The pane resizes and preserves inactive tabs.
Refs #12793.
Draft for workflow review: #2829 has fork/merge-back support, but the checked v2 branch has no equivalent temporary tabbed panel for an in-progress snapshot. #9436/#9437 were deferred because the orchestration/provider layers are being rewritten. This implementation targets current main to make the interaction runnable; its snapshot/session plumbing should be reconciled with v2 before merging. It does not imply v2 lacks forks or merge-back.
Second independent tab and explicit send-back
Validation: 276 focused tests passed across server, web, and client-runtime. Web, server, and client-runtime typechecks passed; scoped lint completed with warnings. Tests cover streaming snapshot isolation and restart, attachment ownership, all six provider adapters through test doubles, oversized context, temporary navigation, tab/draft independence, Keep, and send-back success/failure with the parent’s model. Cua Driver exercised tab creation/closing, independent model display, draft retention, and the isolated screenshots. Screenshots use synthetic fixtures; no live provider calls were used as proof.
The web UI is shared by desktop; shared navigation hides temporary threads on all clients. Native mobile has no SideChat panel in this PR and was not exercised. Requests stay environment-scoped for remote connections. Snapshots are persisted for reload recovery and contain visible history, not hidden reasoning or live tool state. Side sessions share the workspace; they are not filesystem sandboxes. Hidden side chats retain worktree ownership and become visible if their parent disappears.
Implemented with GPT-6 Astra (medium), Codex harness in T3 Code.