Fix Save draft when forking threads - #3702
Merged
ymichael merged 1 commit intoSep 15, 2026
Merged
Conversation
ymichael
deleted the
bb/v5-fixer-preserve-save-draft-when-forking-thr_r5yqb8kevp
branch
September 15, 2026 03:51
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.
Human comments
Before / After
Both captures use the supported product journey Fork into new thread → enter the shown prompt → Save draft… → Save draft in the real source Chromium app. The QA threads were validated as M4 / Codex / gpt-5.6-sol / high / default / full. Assets are pinned to the separate evidence-only root commit
722baf85893192feef86a5fccb94e3d8de74ad03; PR head contains no screenshot commit.054de3ae9c4d9551c845ada6549da5490af78988, captured before source edits.Shown prompt: “Fork draft before fix 054de3a — must remain queued and must not run.”
Observed: the fork is active (
Working…), the prompt was accepted, provider output and command-tool work began, and the queue was empty.065b5bf3ed3799efe2c2531a031878a6e78cdd74, same source-app journey.Shown queued draft: “Fork draft after fix 054de3a — must remain queued and must not run.”
Observed: the fork is inactive, with exactly one queued row held by Drafts · Draft. CLI/server evidence confirmed the inherited timeline remained at seq 5 with no matching requested or accepted provider turn and no new tool work.
What was wrong
The fork flow introduced in #3575 rebuilt the new-thread submission through
buildForkThreadRequestbut omitted the composer'spluginSubmission. That stripped the Drafts plugin marker before the initial dispatch hook could see it, so Save draft displayed success while core treated the fork prompt as an ordinary message and immediately started a provider turn. Root and follow-up drafts were unaffected because those paths forwarded the submission unchanged.What changed
buildForkThreadRequestnow requires callers to account forpluginSubmissionand preserves it when present.RootComposeViewforwards the composer's value into the shared builder. The opaque plugin data still exists only during dispatch-hook processing and is not persisted in the accepted core message. No server, daemon protocol, CLI, SDK, or documentation contract changed.Added focused coverage for plugin submission on fork dispatch, an ordinary-fork control with no plugin submission, and controls proving root/new-thread and follow-up composers still forward plugin submissions.
How you verified
@bb/client-coreand@bb/apppassed.