[WebUI] Session list requires two taps to open a session on mobile
Author: morandotCreated Sep 15, 2026Updated Sep 15, 2026
Bug Description
On mobile, the first tap on a session row in the sidebar has no visible effect. A second tap on the same row is required before the session actually opens. The list reads as unresponsive.
Steps to Reproduce
- Open the WebUI on a phone (iPhone Air, iOS 27).
- Open the sidebar.
- Tap a session row once: nothing happens.
- Tap the same row again: the session opens.
Expected Behavior
A single tap opens the session.
Additional Context
Client: iPhone Air, iOS 27.
Cause not yet identified. Candidates worth ruling out, all verified to exist in the current tree:
- The row is a
buttoncarryingdraggable={canDragSession}(webui/src/components/ChatList.tsx). Touch handling ofdraggableelements on iOS can consume the first tap. - The row's trailing action menu trigger is
opacity-0withgroup-hover:opacity-100and is not gated behind@media (hover: hover)(webui/src/components/ChatList.tsx). It ish-6 w-6at the trailing edge and remains hit-testable while invisible, so the first tap can either land on it or transition the hover state instead of activating the row. Note that.settings-hoverinwebui/src/globals.cssdoes gate hover styles behind@media (hover: hover), so the two treatments are inconsistent. - The mobile sidebar lives in
SheetContent(webui/src/App.tsx), andwebui/src/components/ui/sheet.tsxwas patched for programmatic open/close in #4494. Worth checking whether the first tap is consumed while the drawer is still animating. - A first tap that only moves focus can also trigger a re-render. In the mobile drawer the search button is focused on open and shows a tooltip that closes on blur (see the companion sidebar-tooltip issue). If that re-render lands between pointerdown and click, the click may be lost. That would make both issues share a root cause, in which case they should be fixed together.
Also worth confirming whether this reproduces in mobile Safari without installation, and on Android.
Source: HKUDS/nanobot