Skip to content

feat(web): fork from a selected assistant response#1

Closed
nassimna wants to merge 2 commits into
agent/forked-side-threadsfrom
agent/fork-from-message
Closed

feat(web): fork from a selected assistant response#1
nassimna wants to merge 2 commits into
agent/forked-side-threadsfrom
agent/fork-from-message

Conversation

@nassimna

Copy link
Copy Markdown
Owner

What Changed

  • Moved the fork control from the chat header into the action row beneath each completed assistant response.
  • Forked through the selected T3 turn instead of always using the latest response.
  • Used each provider's exact native fork mechanism: Codex thread/fork, OpenCode session.fork with the selected message ID, and Claude session resume/fork at the selected assistant UUID.
  • Delayed provider-session creation until the first follow-up is sent in the side chat.
  • Hid the per-message action for Cursor and Grok because their current ACP session fork cannot identify a historical message precisely.

Why

The header action could only fork the latest conversation state. Users exploring an earlier answer need the fork to start at that exact response, and silently approximating the boundary would give the provider different context from the history shown in T3 Code.

Placing the action beneath each response makes the fork point explicit and matches the existing message-action interaction model. Provider-specific message mapping keeps the visible transcript and native provider session aligned.

Dependency

This PR is stacked on the agent-managed side-thread foundation in pingdotgg/t3code#4246. It should be reviewed as the 16-file delta from agent/forked-side-threads, then rebased onto upstream main after that PR merges.

Verification

  • vp test run on the seven affected orchestration, provider-adapter, and message-timeline test files: 213 tests passed.
  • Contracts, server, and web package typechecks passed.
  • Integrated browser verification confirmed the action appears only after completion, opens history through the selected response, and accepts an independent follow-up through the native Codex fork.

UI Evidence

Before: latest-state fork in the header

Header fork action before this PR

After: fork action beneath the selected response

Message-level fork action

Forked side chat and provider follow-up

Selected-response side chat

Successful native provider follow-up

Interaction

Short selected-response fork and follow-up recording

Checklist

  • The change is limited to selecting and materializing an exact response fork.
  • I explained what changed and why.
  • I included true before/after screenshots.
  • I included a short interaction recording.
  • Focused tests and package typechecks pass.

@github-actions github-actions Bot added size:L vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. labels Jul 22, 2026
@nassimna

Copy link
Copy Markdown
Owner Author

Superseded by #2, which contains only the agent thread-controls delta on top of pingdotgg#4248.

@nassimna nassimna closed this Jul 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant