Skip to content

fix(mobile): Android ⋯ menus open from the workspace drawer - #2366

Merged
DoodleBears merged 4 commits into
mainfrom
claude/project-thread-m7tsnr-menu
Oct 21, 2026
Merged

DoodleBears merged 4 commits into
mainfrom
claude/project-thread-m7tsnr-menu

Conversation

@DoodleBears

@DoodleBears DoodleBears commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Requested by Vain · project thread

Why the change

On the Android 16 emulator, tapping ⋯ on a computer row in the workspace drawer did nothing, so Customize and Unpair could not be reached. The Material dropdown came in with #2333, which was not checked on Android.

Special things to note

  • Merge risk: Android only, one component. The cause is inferred, not traced natively. ActionMenuButton stacked the Compose Host that anchors the DropdownMenu above the ⋯ Pressable, and relied on pointerEvents="none" to let taps through. On Android, React Native picks the touch target in reverse child order and the Compose host does not appear to honour pointerEvents, so the host took the tap and nothing opened. The host now renders first and the Pressable sits above it. The dropdown still anchors to the same box.
  • The group member ⋯ menu (group-info.tsx) uses the same component and gets the same fix.
  • Verification:
    • pnpm lint, mobile and root tsc, oxfmt and vitest apps/mobile/test (118 files passed, 7 skipped).
    • action-menu-android.test.tsx has a new case that checks ⋯ is stacked above the Compose host. It fails on main and passes here.
    • Checked on a physical phone; screenshots below.
  • CI test plan: affected (mobile only).

Change outline

  • action-menu-button.android.tsx: the Host is now rendered before the Pressable, so the trigger is the topmost view.

Screenshots

Physical phone: Xiaomi, Android 16 / HyperOS 3, gesture navigation, Chinese UI. Debug dev client built from main 48f35fb with this branch's JS over Metro, paired to an isolated QA Host. Status bar and computer names redacted. Files are in .github/pr-screenshots/2366-android-menu/phone/ on this branch (Files changed).

Light Dark Text size 2.0
Computer row ⋯ drawer-menu-light.png drawer-menu-dark.png drawer-menu-font.png
Group member ⋯ group-member-menu-light.png group-member-menu-dark.png group-member-menu-font.png

Result: PASS. The computer row's ⋯ now opens Customize and Unpair, and a group member's ⋯ opens Open profile and Remove. Each menu was only opened and dismissed with Back. The group info list here is still the plain divided list because #2348's grouped style is a separate PR.


Generated by Claude Code

Summary by CodeRabbit

  • Bug Fixes
    • Fixed an issue preventing Android workspace drawer menus from opening.
    • Fixed an issue preventing group-member overflow menus from opening.
  • Documentation
    • Added release notes in English and Chinese describing the Android menu fixes.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SJ8gcMTgoRjSRBNFswZT9T
@coderabbitai

coderabbitai Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 7ddbc71a-7019-4a13-bb75-913e49fa3d15
📥 Commits

Reviewing files that changed from the base of the PR and between 28d81b5 and 7d4cb23.

⛔ Files ignored due to path filters: 6
  • .github/pr-screenshots/2366-android-menu/phone/drawer-menu-dark.png is excluded by !**/*.png
  • .github/pr-screenshots/2366-android-menu/phone/drawer-menu-font.png is excluded by !**/*.png
  • .github/pr-screenshots/2366-android-menu/phone/drawer-menu-light.png is excluded by !**/*.png
  • .github/pr-screenshots/2366-android-menu/phone/group-member-menu-dark.png is excluded by !**/*.png
  • .github/pr-screenshots/2366-android-menu/phone/group-member-menu-font.png is excluded by !**/*.png
  • .github/pr-screenshots/2366-android-menu/phone/group-member-menu-light.png is excluded by !**/*.png
📒 Files selected for processing: 3
  • apps/mobile/src/ui/primitives/action-menu-button.android.tsx
  • apps/mobile/test/action-menu-android.test.tsx
  • changes/2366-android-drawer-menu.md

Included review availability: This review used your included allowance. Your plan provides up to 2 included reviews per hour; 0 remain after this review.

📝 Walkthrough

The Android action-menu trigger now renders after the Compose dropdown host. A test verifies their sibling order. The changelog records restored opening behavior for workspace drawer and group-member menus.

Changes: Android action-menu ordering

Layer / File(s) Summary
Trigger placement and validation
apps/mobile/src/ui/primitives/action-menu-button.android.tsx, apps/mobile/test/action-menu-android.test.tsx, changes/2366-android-drawer-menu.md
The trigger moved after the Compose host without changes to its properties. The test checks that both elements share a parent and that the trigger follows the host. The bilingual changelog entry documents restored opening behavior for Android workspace drawer and group-member menus.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Merge Risk: ⚪ Minimal · up to 7d4cb

The Android menu ordering fix is documented and reported as physically verified; no merge-blocking risk remains.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 2 files. (1 skipped: 1 … Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title clearly and concisely describes the main change: restoring Android ⋯ menus in the workspace drawer.
Description check Passed The description is mostly complete and covers the user problem, merge risk, affected component, verification commands, CI test plan, change outline, and Android runtime evidence. It provides concrete …
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description is mostly complete and covers the user problem, merge risk, affected component, verification commands, CI test plan, change outline, and Android runtime evidence. It provides concrete physical-device results and identifies the affected group-member menu.

Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 2 files. (1 skipped: 1 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

✨ Finishing Touches: 💡 1
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

claude and others added 2 commits October 19, 2026 23:34
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SJ8gcMTgoRjSRBNFswZT9T
Captured on a Xiaomi phone (Android 16, HyperOS 3, arm64, gesture navigation,
zh-CN) running an arm64 debug dev client of main 48f35fb with this branch's
JavaScript, in light, dark and font scale 2.0. The drawer computer row's
menu (Customize / Unpair) and a group member's menu (Open profile / Remove)
both open; neither destructive action was tapped. Status bar and computer
names are redacted.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@DoodleBears
DoodleBears marked this pull request as ready for review October 20, 2026 07:38
@DoodleBears
DoodleBears merged commit dce1d92 into main Oct 21, 2026
11 checks passed
@DoodleBears
DoodleBears deleted the claude/project-thread-m7tsnr-menu branch October 28, 2026 04:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants