feat(web): add mobile sidebar swipe actions - #9153
Conversation
5e7b77b to
9f33a30
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit f55b7e9. Configure here.
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This PR introduces a substantial mobile swipe interaction with new Settle, Snooze, and Pin/Unpin action workflows, while changing pointer and click behavior in the shared production sidebar. Its automatic activation for mobile users and broad interaction surface warrant human review despite reusing existing server commands and contracts. You can add or adjust custom eligibility rules. Learn more. |
|
Closing this PR following the direction on #9148 to discuss the mobile-web swipe proposal in Ideas first. The implementation and evidence remain available here for reference; this is not being merged. |

Closes #9148
What Changed
auto-animategeometry.No server contracts or native mobile code changed.
Why
The desktop sidebar exposes quick actions through hover, but phone browsers have no hover. Common
thread-triage actions therefore require extra menu navigation on mobile web.
This adds a familiar Mail-style touch interaction while keeping lifecycle behavior in the existing
action implementations. The gesture code is isolated from sorting and list layout to reduce
conflicts with current pinned reordering and the active-thread reorder work in #8666.
UI Changes
Gesture progress
The screenshots were captured at a 430 × 932 CSS-pixel viewport with a disposable, synthetic T3
environment. The temporary Playwright artifact test also asserts that the row remains translated
-216pxafter pointer-up and that exactly one Settle, Snooze, and Pin action exists for the targetrow.
During visual verification, the test caught a post-pointer-up synthetic click that initially closed
the freshly opened tray. Click suppression now consumes that event without changing the tray's open
state.
Verification
vp test run apps/web/src/components/Sidebar.swipe.test.ts --passWithNoTeststsgo -p apps/web/tsconfig.json --noEmitapps/web/src/components/Sidebar.tsxapps/web/src/components/SidebarSwipeActions.tsxapps/web/src/components/Sidebar.swipe.tsapps/web/src/components/Sidebar.swipe.test.tsgit diff --checkpassed.Surface coverage
header actions remain unchanged.
Android are unchanged.
commands.
available.
and tunnel connections.
docs/user/thread-sidebar.md.Checklist
Built by GPT-5.6 Sol via the Codex harness in T3 Code.