gsxdsm
fd6caaa338
fix(chat): stop quick chat mobile send button firing twice per tap
...
A real touch tap dispatches both pointerdown and touchstart, and the quick chat
send (and stop) buttons ran their action on each event. Because React had not
flushed the composer clear between the two synchronous handlers, both saw the
same input and fired handleSendMessage — and the hook's second send closed the
first's freshly-opened stream and re-POSTed, which could drop the agent's
response (notably for the first message after a response completed).
Add a tap-scoped guard (cleared after the current input task) so only the first
of the paired pointerdown/touchstart events performs the action. This is kept
separate from the 700ms onClick latch — which is shared between the send and
stop buttons — so a stop tap right after a send is never swallowed.
The earlier component test masked this because fireEvent flushes React state
between calls; the regression test now dispatches the full tap sequence in one
act() to mirror the device.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-14 00:34:17 -07:00
..
2026-06-14 00:34:17 -07:00
2026-06-09 01:57:16 -07:00
2026-06-13 06:12:09 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-05-30 16:25:09 -07:00
2026-06-03 20:52:44 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-06-11 09:21:23 -07:00
2026-06-12 22:55:01 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 17:14:42 -07:00
2026-06-03 20:56:05 -07:00
2026-05-16 18:40:03 -07:00
2026-06-03 20:52:44 -07:00
2026-06-08 13:32:58 -07:00
2026-06-12 10:00:08 -07:00
2026-05-30 14:20:12 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-06-07 23:30:16 -07:00
2026-06-12 09:46:46 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-06-11 22:11:44 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-06-10 06:02:12 -07:00
2026-06-05 01:16:13 -07:00
2026-05-19 03:21:17 -07:00
2026-06-13 09:08:43 -07:00
2026-06-08 13:32:58 -07:00
2026-06-01 16:24:21 -07:00
2026-06-03 20:56:05 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-04 08:00:33 -07:00
2026-06-12 18:34:46 -07:00
2026-06-13 23:45:15 -07:00
2026-06-03 20:52:44 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-06-05 02:38:38 -07:00
2026-06-13 16:16:34 -07:00
2026-06-03 20:52:44 -07:00
2026-06-03 01:08:09 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-05-22 17:24:38 -07:00
2026-06-07 22:07:47 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-06-03 19:48:40 -07:00
2026-06-12 07:13:00 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:48:40 -07:00
2026-06-03 20:52:44 -07:00
2026-05-20 14:28:45 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 20:52:44 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-06-06 01:32:06 -07:00
2026-06-06 07:01:48 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-06-03 19:48:40 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-06-07 23:30:16 -07:00
2026-06-03 20:52:44 -07:00
2026-06-03 20:52:44 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-06-10 09:21:48 -07:00
2026-06-10 09:21:48 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-06-09 12:51:20 -07:00
2026-06-09 12:51:20 -07:00
2026-06-03 20:52:44 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:48:40 -07:00
2026-06-03 19:06:53 -07:00
2026-05-17 08:22:26 -07:00
2026-06-13 16:30:28 -07:00
2026-06-13 16:30:28 -07:00
2026-06-03 22:35:28 -07:00
2026-06-03 22:35:28 -07:00
2026-06-03 20:52:44 -07:00
2026-06-02 17:58:41 -07:00
2026-06-03 19:06:53 -07:00
2026-06-01 05:15:14 -07:00
2026-06-03 20:56:05 -07:00
2026-05-23 00:03:22 -07:00
2026-06-09 03:39:14 -07:00
2026-06-03 20:52:44 -07:00
2026-06-12 17:57:19 -07:00
2026-06-12 17:57:19 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-06-03 19:48:40 -07:00
2026-06-13 16:30:28 -07:00
2026-06-13 09:08:43 -07:00
2026-06-10 01:10:11 -07:00
2026-06-03 17:33:16 -07:00
2026-06-07 23:30:16 -07:00
2026-06-11 22:11:44 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-05-16 09:42:37 -07:00
2026-06-10 00:25:10 -07:00
2026-06-03 20:52:44 -07:00
2026-06-10 00:25:10 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 01:08:09 -07:00
2026-06-03 20:52:44 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 20:52:44 -07:00
2026-06-02 23:47:32 -07:00
2026-06-03 20:52:44 -07:00
2026-06-02 18:15:14 -07:00
2026-06-03 20:52:44 -07:00
2026-06-12 11:39:01 -07:00
2026-06-08 14:22:03 -07:00
2026-06-09 17:56:24 -07:00
2026-06-09 08:30:35 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-06-09 12:51:20 -07:00
2026-06-03 20:52:44 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-05-22 17:24:38 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-05-29 09:44:17 -07:00
2026-06-04 23:47:24 -07:00
2026-06-03 20:52:44 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-06-09 23:52:37 -07:00
2026-06-03 20:52:44 -07:00
2026-05-27 21:31:12 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:48:40 -07:00
2026-06-03 19:48:40 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 20:52:44 -07:00
2026-06-03 20:52:44 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-05-31 21:59:06 -07:00
2026-06-03 20:52:44 -07:00
2026-06-09 07:00:05 -07:00
2026-06-09 07:00:05 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-06-03 01:08:09 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 22:35:28 -07:00
2026-06-07 18:51:46 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-06-07 23:30:16 -07:00
2026-06-09 03:39:14 -07:00
2026-05-28 23:31:03 -07:00
2026-06-03 20:52:44 -07:00
2026-06-10 06:02:12 -07:00
2026-06-05 22:18:34 -07:00
2026-06-14 00:18:45 -07:00
2026-06-14 00:34:17 -07:00
2026-06-09 22:13:54 -07:00
2026-06-13 16:30:28 -07:00
2026-06-09 12:51:20 -07:00
2026-06-09 12:50:26 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-06-03 20:52:44 -07:00
2026-06-03 20:52:44 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 20:52:44 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 20:52:44 -07:00
2026-06-13 11:03:30 -07:00
2026-06-03 20:52:44 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-05-22 17:24:38 -07:00
2026-06-05 01:16:13 -07:00
2026-06-08 13:32:58 -07:00
2026-06-11 19:37:25 -07:00
2026-06-13 16:30:28 -07:00
2026-06-13 16:30:28 -07:00
2026-06-03 19:06:53 -07:00
2026-06-09 18:49:02 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:48:40 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-06-02 19:10:50 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-05-23 13:06:48 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:48:40 -07:00
2026-06-03 20:52:44 -07:00
2026-06-13 19:58:14 -07:00
2026-06-13 19:40:15 -07:00
2026-06-02 07:40:37 -07:00
2026-06-07 18:51:46 -07:00
2026-06-13 20:54:32 -07:00
2026-06-13 20:54:32 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-06-13 20:33:44 -07:00
2026-06-13 16:30:28 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-06-10 06:02:12 -07:00
2026-06-04 16:16:50 -07:00
2026-06-04 23:47:24 -07:00
2026-06-03 19:48:40 -07:00
2026-06-03 20:52:44 -07:00
2026-06-03 15:32:29 -07:00
2026-06-07 18:51:46 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-06-13 20:46:54 -07:00
2026-06-13 16:30:28 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 20:52:44 -07:00
2026-06-03 19:48:40 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-06-13 16:30:28 -07:00
2026-06-13 16:30:28 -07:00
2026-06-11 20:14:54 -07:00
2026-06-11 20:14:54 -07:00
2026-06-06 00:56:12 -07:00
2026-06-13 02:23:27 -07:00
2026-06-09 09:16:59 -07:00
2026-06-07 22:07:47 -07:00
2026-06-05 09:29:04 -07:00
2026-06-10 01:10:11 -07:00
2026-06-04 12:44:43 -07:00
2026-06-13 16:30:28 -07:00
2026-06-12 09:38:03 -07:00
2026-06-08 10:33:17 -07:00
2026-06-12 17:57:19 -07:00
2026-06-09 09:16:59 -07:00
2026-06-09 08:14:16 -07:00
2026-06-10 01:10:11 -07:00
2026-06-09 06:25:16 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00
2026-06-13 09:08:43 -07:00
2026-05-22 17:24:38 -07:00
2026-06-03 19:06:53 -07:00