gsxdsm
60a0012697
fix(dashboard): gate mobile scroll-lock to iOS so Android keyboard stays open
...
The body scroll-lock applied while the keyboard is up in main chat was an
iOS-specific workaround for visualViewport drift. On Android Chrome the same
mutation does the opposite of what we want — applying position:fixed to body
while the soft keyboard is opening causes Chrome to treat it as a focus-
target relayout and dismiss the keyboard instantly, making the main chat
composer unusable on Android.
useMobileScrollLock now early-returns on non-iOS user agents. Android Chrome
doesn't need it: with interactive-widget=resizes-content the layout viewport
shrinks with the keyboard, so there's no drift to compensate for.
Adds an Android-UA test case that asserts the lock is a no-op there.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-22 14:01:09 -07:00
..
2026-05-17 00:14:59 -07:00
2026-04-24 19:39:20 -07:00
2026-05-21 20:06:48 -07:00
2026-04-30 19:18:56 -07:00
2026-05-17 11:33:56 -07:00
2026-05-20 03:19:44 -07:00
2026-05-22 00:15:14 -07:00
2026-04-28 14:30:38 -07:00
2026-05-15 22:24:12 -07:00
2026-05-21 18:15:26 -07:00
2026-04-27 17:26:07 -07:00
2026-05-13 15:05:05 -07:00
2026-04-27 19:59:52 -07:00
2026-05-14 15:49:55 -07:00
2026-05-20 03:19:44 -07:00
2026-05-20 20:27:11 -07:00
2026-05-20 19:58:49 -07:00
2026-05-20 16:20:25 -07:00
2026-05-15 15:19:56 -07:00
2026-05-18 05:51:14 -07:00
2026-05-17 11:33:56 -07:00
2026-05-09 10:31:04 -07:00
2026-04-27 19:59:52 -07:00
2026-05-21 18:15:26 -07:00
2026-04-20 15:37:32 -07:00
2026-05-20 03:19:44 -07:00
2026-05-03 14:10:11 -07:00
2026-05-03 07:47:45 -07:00
2026-04-27 19:59:52 -07:00
2026-05-19 23:04:12 -07:00
2026-04-24 19:39:20 -07:00
2026-05-20 03:19:44 -07:00
2026-04-12 21:40:34 -07:00
2026-04-12 21:40:34 -07:00
2026-05-20 04:12:40 -07:00
2026-04-24 19:39:20 -07:00
2026-05-19 23:04:12 -07:00
2026-05-16 09:21:06 -07:00
2026-04-14 11:29:16 -07:00
2026-05-21 16:09:53 -07:00
2026-05-04 06:12:12 -07:00
2026-04-25 18:22:37 -07:00
2026-04-28 14:25:55 -07:00
2026-05-21 16:09:53 -07:00
2026-05-10 18:04:43 -07:00
2026-05-19 13:38:31 -07:00
2026-05-22 14:01:09 -07:00
2026-05-19 08:20:23 -07:00
2026-05-20 03:19:44 -07:00
2026-04-15 02:53:06 -07:00
2026-05-12 17:04:33 -07:00
2026-04-09 13:01:19 -07:00
2026-05-21 16:09:53 -07:00
2026-05-07 19:29:54 -07:00
2026-04-24 09:44:44 -07:00
2026-05-07 08:49:18 -07:00
2026-05-06 02:14:05 -07:00
2026-04-16 10:04:44 -07:00
2026-05-21 18:15:26 -07:00
2026-05-17 08:49:51 -07:00
2026-04-20 22:10:07 -07:00
2026-04-15 19:53:22 -07:00
2026-04-27 19:59:52 -07:00
2026-04-14 09:29:08 -07:00
2026-04-24 08:55:02 -07:00
2026-05-21 16:09:53 -07:00
2026-05-17 11:33:56 -07:00
2026-05-19 01:09:30 -07:00
2026-04-27 19:59:52 -07:00
2026-04-27 19:59:52 -07:00
2026-05-21 18:15:26 -07:00
2026-05-19 23:04:12 -07:00
2026-04-10 10:44:48 -07:00
2026-04-20 10:16:13 -07:00
2026-05-07 18:35:45 -07:00
2026-05-07 23:21:05 -07:00
2026-05-14 14:04:32 -07:00
2026-04-29 17:23:22 -07:00
2026-05-20 19:58:49 -07:00
2026-05-17 19:11:59 -07:00
2026-05-19 08:13:07 -07:00
2026-04-24 19:39:20 -07:00
2026-04-27 19:59:52 -07:00
2026-05-19 17:19:03 -07:00
2026-04-24 19:39:20 -07:00
2026-05-19 19:03:10 -07:00
2026-04-27 01:40:07 -07:00
2026-04-24 19:39:20 -07:00
2026-05-19 01:59:20 -07:00
2026-04-12 18:38:26 -07:00
2026-04-27 19:59:52 -07:00
2026-04-16 23:07:40 -07:00
2026-05-13 12:26:07 -07:00