Reader
- The reading surface declared no touch-action, so the browser claimed every
horizontal drag (pointercancel): a swipe never turned a page on a phone, and
a rightward one triggered the browser's back gesture and left the book.
Paged and fixed layouts now leave every move to the gesture layer
(touch-action: none, on the host and on the paged column in the shadow
root); scroll mode keeps vertical panning only (pan-y), so it still scrolls
and no longer navigates away. Horizontal swipes in scroll mode stay inert.
Tabs
- useSwipeTabs (shared/ui): a clearly horizontal touch swipe moves one tab.
Mouse, short or diagonal moves, scrolls the browser took over, swipes that
start on a control or a sideways-scrolling row, and active selections are
ignored; the click the finger lifted over is suppressed. The entering body
slides in from the swipe side (header and tab row stay put; reduced motion
disables it).
- Media: the eight catalog tabs are one line across channels — 影视(首页 电影
剧集)→ 音乐(专辑 歌手 曲目)→ 有声书(有声书 演播者). Library and sort carry
over within a channel and reset across one.
- Shelf: 全部 · 在读 · 想读 · 已读.
Tests: swipe-tabs (gesture rules, catalog order and params) and the reader's
touch-action rules in reader-layout-css.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>