Repository navigation
Let phone users choose the next message’s model during a structured reply - #36451
Conversation
|
No actionable comments were generated in the recent review.
|
|
On phones, structured chat replies kept model, effort and speed choices disabled for the entire reply. The picker used the terminal command lock even though structured choices prepare the next message. Users can now choose during a structured reply, matching desktop; accepted messages keep the settings already captured for them. Full review completed in round 1: correctness, architecture, whole-mechanism reference comparison and readiness checklist passed. No code fixes or deferred PR defects. The single main sync produced Validation: 100 focused tests passed, covering phone controls, next-message capture, host dispatch and older-host send paths. Final-head CI passed, including static analysis/typecheck, mobile verification and the mobile web bundle. Native iOS screenshot check passed on the shipped session route with the hash-validated branch bundle. Model, effort and Fast mode picks stayed enabled during the same running turn, appeared in the composer and reached the next send. The phone run used synthetic paired-host data; its send was deliberately refused after recording the chosen values, and no agent or provider execution is claimed. Real-agent QA is not required for this UI/tests row. Rig processes are stopped, the owned simulator is shut down, real config hashes are unchanged and ticket 3646 is released. Intended differences from the common pattern remain: terminal-backed choices lock during replies because they write commands into the running terminal; the phone keeps its existing pending-write lock; and host-owned saved choices support shared chats and independently updated hosts. No saved fields, wire fields or capabilities change. Unsettable summary rows now disable navigation to their already-disabled details, following the existing disabled-until-known rule. Visual observation outside this change: the existing Fast mode switch has a low-contrast track while off. This PR does not change its styling. For Brennan’s review: the native phone drawer remains usable while the transcript is working. The right image shows GPT-5.4, High effort and Fast mode selected.
Composer after closing the drawer shows the selected values and the same working turn. Code spots: reply-time lock, working notice. |


On a phone, model, effort, and speed choices stayed disabled for an entire structured chat reply, preventing users from preparing their next message. The picker applied the terminal command lock to structured choices even though those choices only affect the next message.
Structured chat choices now remain usable during replies, matching desktop. The working notice and accessibility announcement appear only for terminal-backed choices. Existing pending-write, send-in-flight, settable, and readiness checks still apply. Unsettable summary rows also disable navigation to their already-disabled detail controls, following the existing disabled-until-known rule.
Intended differences from the common pattern: terminal-backed choices stay locked during replies because they send commands into the running terminal. Phone pending writes continue to lock the picker as required by the existing phone selection policy. Choices remain host-owned and saved before Send to support shared chats and older paired hosts; no saved fields, wire fields, or capabilities change.
Validation: full review, round 1, with correctness, architecture, reference and readiness checks complete and no defects found. All 100 focused phone/controller/host/legacy-send tests passed; final-head CI passed, including static analysis/typecheck, mobile verification and the mobile web bundle. The native iOS screenshot check passed on the shipped session screen: model, effort and Fast mode choices remain usable during a structured reply, appear in the composer and reach the next send. That screenshot run used a synthetic paired host and no real agents; current and older host message capture is covered by tests and production traces.
Tracked in STA-10852 (phone half).