cmux NEXT composer: keep Send enabled during trust loading
An empty folder-trust block currently disables the composer while the trust read is still in flight, so clicking Send or pressing Return silently leaves the draft in place.
Leo: "then when i sent a message to that other chat again with a screenshot of the .heif, it first said Not sent. requires your own click or whatever... that seems weird and unncessary."
This addresses the separate trust-loading stall found while adopting the stale composer send PR.
The composer now holds the draft only for a concrete trust reason. A pending New Tab folder choice remains a separate hard stop, including the trust-resend callback. The daemon still authorizes each prompt, and remote read-only sessions still render no Send button. Queue/steer hints and prompt suggestions use the same distinction.
This replaces the stale implementation in #24478.
Validation
At 3302da2c5e6083c0ede417b5d501e0e094e7d159 (tree 32202df08a9c4f1ceab6de0ca87df4894586ba5f), managed run 40264592718 passed:
- The committed red regression at
7d5a13a6231acf87c3605c923f21ddec70d83bdf: 4 expected failures, then 14/14 passing tests at the final head. - 19 neighboring send-hold, prompt-suggestion, trust-switch and transport-refusal tests; changed-file formatting and typecheck.
- Twelve Chromium/WebKit before-and-after captures across loading, a concrete trust question, and a pending folder choice. The latter two remain byte-identical before/after.
Full web lint has the same four warnings on base de67de98d170fc1dc413965689d198877d9a09ac and the final head: three in conversation/DynamicWorkflow.gallery.tsx and one in test/chat-environment-scroll-stability.test.tsx. The command compares diagnostic paths, codes, severity and messages; it found no added diagnostics and zero errors.
A focused post-send comparison confirmed that WebKit’s “ResizeObserver loop completed with undelivered notifications.” also occurs after a successful send on untouched base. Chromium reported no page errors on either version.
A four-state gallery health comparison reproduced the PR’s four gallery failures on untouched base and the final head, using each source’s own static gallery and the unchanged health runner, with no source or fixture overlays. All three attempts matched: Claude/Codex permission-pill states could not find .acpmux-access-trigger; composer#file-not-attached and new-tab#attachment-menu both timed out in the play’s 5000 ms waitFor. The new trust-loading gallery states passed.
Independent Codex gpt-6-astra xhigh review of the final head: SHIP. The reviewer reconciled the enclosing remote-send render guard and reported no remaining correctness findings.
Captures
The gallery uses the real Composer with its pane material tokens and public sample drafts.
| Trust read loading: before | After |
|---|---|
![]() | ![]() |
| Concrete trust question still blocks | Pending folder choice still blocks |
|---|---|
![]() | ![]() |
Changelog
Fixed: Keep Send usable while folder trust loads, while preserving actual trust and pending-folder blocks.
Agent session: big-red



