fix(composer): keep fresh Quick Composer drafts across updates
A fresh Quick Composer had no session or tab record, so updating or quitting discarded its draft. Keep text and attachments under stable identity quick-composer-v1 until the first session starts. The first handshake restores text and chips before Send; normal quit captures the live editor. A late restore preserves newer typing, and first Send clears the fresh draft. Quit rechecks the session after the page read and orders writes so it cannot restore a prompt that was just sent.
This child is rebased onto repaired New Tab #26753 head 29e66976083ceb3e52ff51e5e639f097099884fc (foundation final 7bdfe811a071e982f5d2b3ed00713185e674e9f3). Quick owns the optional shared wake draftText field and consumes New Tab's chat.unsentDraft(text, attachments) callback. No visual or action change.
Exact final head: c111befe18ad38ec8afca9e2e2a07331b09993e3.
Validation:
- 19 focused web tests passed, including 3 real Chromium page tests; 53 expectations.
- Rebased tests-only baseline
346621eb62afb09e2b94662ecb2e87cf45c726d0executes the fresh Quick screenshot regression and fails (expected screenshot, received empty list). - Full web lint/typecheck and final prepush gate pass. Concurrency and scoped godfile checks pass.
- Native
FloatingChatTestsregression authored; root owns fleet red/green and exact-head native verification. Native execution remains pending due the HQ4779 lock wedge.
Root owns final exact-head review, native verification, and landing.
Agent session: agent session