Benjamin Carlsson
a142c90e26
Handle TUI message submission receipts and preserve uncertain drafts ( #59817 )
...
## Why
The TUI's cached active turn can be stale when a cloud message is submitted. A lost reply also leaves delivery uncertain, so automatically resending the draft risks submitting it twice.
## What changed
- Let the cloud server choose whether an Enter submission starts or steers a turn, and apply its receipt to the matching client message ID.
- Keep Tab-queued input waiting until the admitted turn finishes, including before its start notification arrives.
- Restore rejected submissions to the composer. Hold duplicate or unconfirmed submissions out of automatic delivery until history confirms them.
- Reconcile saved drafts and pending steers by client message ID when resuming sessions, and preserve submissions belonging to other turns during interruption recovery.
- Classify cloud preflight failures as invalid parameters so rejected queued input can be restored safely.
## Testing
Add regression coverage for cloud receipt outcomes, queued-input ordering, rejected drafts, lost replies, interruption recovery, and session resume with identical message text but distinct client IDs.
GitOrigin-RevId: ec4eb581e450488434bc4614ec59273d73ffd0a1
2026-11-06 03:51:37 +00:00
..
2026-11-02 16:00:20 +00:00
2026-11-06 03:51:37 +00:00
2026-09-22 16:16:15 +00:00
2026-11-06 03:51:37 +00:00
2026-10-01 05:16:40 +00:00
2026-11-06 00:21:16 +00:00
2026-11-06 03:51:37 +00:00
2026-11-01 15:39:52 +00:00
2026-10-10 19:22:11 +00:00
2026-11-05 19:11:18 +00:00
2026-09-11 17:43:36 +00:00
2026-10-30 06:54:13 +00:00
2026-11-05 00:19:26 +00:00
2026-10-04 06:46:50 +00:00
2026-11-06 02:01:43 +00:00
2026-10-20 15:15:24 +00:00
2026-11-06 00:21:16 +00:00
2026-11-06 00:21:16 +00:00
2026-10-03 00:02:11 +00:00
2026-10-30 07:11:56 +00:00
2026-11-03 23:36:34 +00:00
2026-11-06 01:33:27 +00:00
2026-10-26 20:10:19 +00:00
2026-11-05 05:54:31 +00:00
2026-09-19 19:14:11 +00:00
2026-10-30 07:57:06 +00:00
2026-11-04 06:15:53 +00:00
2026-11-06 01:49:57 +00:00
2026-10-27 05:22:23 +00:00
2026-09-20 16:16:46 +00:00
2026-11-02 21:47:45 +00:00
2026-11-03 23:36:55 +00:00
2026-10-29 02:10:32 +00:00
2026-10-01 18:05:05 +00:00
2026-10-26 18:13:00 +00:00
2026-10-15 19:11:06 +00:00
2026-10-30 06:37:32 +00:00
2026-11-03 23:36:55 +00:00
2026-11-05 05:54:31 +00:00
2026-11-04 23:31:55 +00:00
2026-11-04 01:40:12 +00:00
2026-11-04 01:40:12 +00:00
2026-09-20 18:26:14 +00:00
2026-09-22 16:23:59 +00:00
2026-10-30 06:54:13 +00:00
2026-11-06 03:51:37 +00:00
2026-11-04 06:15:53 +00:00
2026-11-06 01:49:57 +00:00
2026-09-19 20:24:41 +00:00
2026-10-29 11:23:51 +00:00
2026-11-06 03:51:37 +00:00
2026-11-06 03:51:37 +00:00
2026-09-28 22:20:29 +00:00
2026-09-28 22:20:29 +00:00
2026-09-18 22:40:37 +00:00
2026-10-26 22:12:07 +00:00
2026-09-14 15:30:22 +00:00
2026-09-22 16:23:59 +00:00
2026-10-16 19:13:40 +00:00
2026-10-14 17:36:18 +00:00
2026-11-06 03:51:37 +00:00
2026-10-30 04:01:11 +00:00
2026-11-01 15:39:52 +00:00
2026-09-21 03:38:46 +00:00
2026-10-11 23:44:43 +00:00
2026-09-20 16:52:02 +00:00
2026-09-22 16:23:59 +00:00
2026-09-29 04:13:14 +00:00
2026-11-04 22:58:01 +00:00
2026-10-02 21:42:23 +00:00
2026-09-08 19:06:42 +00:00
2026-11-05 05:54:31 +00:00
2026-09-20 00:04:04 +00:00
2026-10-20 03:11:07 +00:00
2026-10-20 03:11:07 +00:00
2026-11-01 23:25:39 +00:00
2026-10-30 04:01:11 +00:00
2026-11-03 04:20:50 +00:00
2026-10-13 16:57:54 +00:00
2026-10-13 16:57:54 +00:00
2026-10-29 22:36:06 +00:00
2026-09-19 20:24:20 +00:00
2026-10-30 04:01:34 +00:00
2026-09-21 19:55:40 +00:00
2026-09-21 19:55:40 +00:00
2026-10-19 15:20:42 +00:00
2026-11-06 01:10:49 +00:00
2026-11-01 15:50:25 +00:00
2026-11-01 15:50:25 +00:00
2026-11-04 16:46:21 +00:00
2026-11-04 16:46:21 +00:00
2026-10-01 15:57:03 +00:00
2026-09-10 00:57:33 +00:00
2026-11-05 21:05:51 +00:00
2026-10-26 21:36:05 +00:00
2026-10-14 17:36:18 +00:00
2026-09-26 21:58:39 +00:00
2026-09-24 17:21:45 +00:00
2026-10-23 18:39:28 +00:00
2026-10-20 15:15:24 +00:00
2026-10-30 21:27:28 +00:00
2026-09-24 17:55:29 +00:00
2026-11-03 23:36:55 +00:00
2026-10-28 01:04:30 +00:00
2026-10-13 19:55:22 +00:00
2026-10-13 19:55:22 +00:00
2026-11-03 12:08:29 +00:00
2026-11-06 00:21:16 +00:00
2026-11-03 05:55:13 +00:00
2026-11-06 01:49:57 +00:00
2026-10-29 02:10:32 +00:00
2026-10-19 22:21:13 +00:00
2026-11-02 23:19:03 +00:00
2026-11-05 00:19:26 +00:00
2026-10-30 04:01:11 +00:00
2026-09-24 17:43:15 +00:00
2026-09-11 00:59:27 +00:00
2026-10-30 04:01:34 +00:00
2026-10-02 02:27:25 +00:00
2026-10-30 04:01:34 +00:00
2026-10-02 02:27:25 +00:00
2026-09-24 17:55:29 +00:00
2026-10-26 22:12:07 +00:00
2026-10-15 15:08:28 +00:00
2026-11-06 02:01:43 +00:00
2026-10-15 15:08:28 +00:00
2026-11-06 02:01:43 +00:00
2026-11-05 19:11:18 +00:00
2026-10-04 06:46:50 +00:00
2026-10-01 22:17:51 +00:00
2026-10-26 18:13:00 +00:00
2026-10-30 00:45:30 +00:00
2026-11-02 16:00:20 +00:00
2026-09-19 19:14:11 +00:00
2026-09-19 19:14:11 +00:00
2026-11-06 01:33:27 +00:00
2026-10-26 21:28:54 +00:00
2026-10-26 21:28:54 +00:00
2026-10-23 16:18:43 +00:00
2026-10-26 21:36:05 +00:00
2026-10-30 07:11:56 +00:00
2026-09-29 04:13:14 +00:00
2026-09-29 04:13:14 +00:00
2026-10-30 06:45:04 +00:00
2026-10-30 06:45:04 +00:00
2026-11-05 08:10:44 +00:00
2026-10-26 18:13:00 +00:00
2026-11-02 16:00:20 +00:00
2026-09-20 16:16:46 +00:00
2026-09-16 22:14:53 +00:00
2026-10-01 18:05:05 +00:00
2026-09-30 19:22:34 +00:00
2026-10-20 15:43:19 +00:00
2026-10-06 03:35:55 +00:00
2026-10-16 19:13:40 +00:00
2026-10-30 00:45:30 +00:00
2026-11-04 06:15:53 +00:00
2026-11-02 23:19:03 +00:00
2026-10-30 00:45:30 +00:00
2026-10-14 01:07:57 +00:00
2026-10-30 04:01:11 +00:00
2026-10-30 04:01:11 +00:00
2026-10-01 05:25:31 +00:00
2026-09-20 20:20:00 +00:00
2026-11-06 01:49:57 +00:00
2026-11-06 01:49:57 +00:00
2026-11-01 23:27:06 +00:00
2026-10-13 19:55:22 +00:00
2026-10-01 05:18:04 +00:00
2026-11-01 15:50:25 +00:00
2026-10-16 19:13:40 +00:00
2026-10-26 20:45:56 +00:00
2026-10-27 08:04:25 +00:00
2026-09-30 19:00:00 +00:00
2026-10-23 18:39:28 +00:00
2026-11-04 16:46:21 +00:00
2026-09-29 20:46:44 +00:00
2026-10-01 05:18:04 +00:00
2026-10-01 05:18:04 +00:00
2026-11-02 23:19:03 +00:00
2026-09-20 03:02:02 +00:00
2026-11-05 00:19:26 +00:00
2026-11-05 21:05:51 +00:00
2026-10-19 21:43:19 +00:00
2026-09-27 17:59:57 +00:00
2026-09-27 17:59:57 +00:00
2026-10-01 18:05:05 +00:00
2026-11-02 16:00:20 +00:00
2026-10-26 18:13:00 +00:00
2026-10-26 18:13:00 +00:00
2026-10-09 00:04:15 +00:00
2026-10-30 22:30:53 +00:00
2026-11-03 23:36:55 +00:00
2026-10-27 08:04:25 +00:00
2026-10-28 01:04:30 +00:00
2026-10-14 03:52:30 +00:00
2026-10-08 18:56:04 +00:00
2026-10-30 04:00:47 +00:00
2026-09-18 22:51:10 +00:00
2026-10-02 07:21:07 +00:00
2026-09-19 19:11:54 +00:00
2026-10-10 22:28:01 +00:00
2026-09-11 16:20:50 +00:00
2026-09-11 16:20:50 +00:00
2026-11-06 02:01:43 +00:00
2026-10-01 01:35:40 +00:00
2026-10-01 01:35:40 +00:00
2026-10-15 03:48:33 +00:00
2026-11-05 05:54:31 +00:00
2026-09-20 00:04:04 +00:00
2026-11-04 01:40:12 +00:00
2026-11-03 04:08:59 +00:00
2026-10-27 08:04:25 +00:00
2026-10-13 19:55:22 +00:00
2026-11-05 05:54:31 +00:00
2026-10-11 15:50:16 +00:00
2026-10-01 01:35:40 +00:00
2026-11-04 23:31:55 +00:00
2026-11-04 23:31:55 +00:00
2026-09-29 04:13:14 +00:00
2026-09-20 00:04:04 +00:00
2026-10-26 19:29:16 +00:00
2026-09-20 00:04:04 +00:00
2026-09-19 17:03:26 +00:00
2026-09-16 03:43:59 +00:00
2026-10-20 15:15:24 +00:00
2026-10-20 15:15:24 +00:00
2026-09-17 18:20:28 +00:00
2026-09-17 18:20:28 +00:00
2026-10-14 17:36:18 +00:00
2026-09-08 23:37:26 +00:00
2026-10-30 00:45:30 +00:00
2026-09-19 20:22:48 +00:00
2026-09-19 20:24:20 +00:00