Skip to content

Mobile: Settings sheet behind the Human's avatar replaces the Me tab - #1857

Merged
DoodleBears merged 2 commits into
mainfrom
claude/project-thread-6l6d2n
Oct 15, 2026
Merged

DoodleBears merged 2 commits into
mainfrom
claude/project-thread-6l6d2n

Conversation

@DoodleBears

@DoodleBears DoodleBears commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Requested by Vain · project thread

Why the change

Me took a third of the tab bar for a rarely used settings page. On the phone the Human mostly opens Chats and clears Activity.

Closes #1850 (part of #1848, user stories 1, 8–13, 35–38).

Special things to note

  • Merge risk: mobile app only, JavaScript only (no new native package, no dev-client rebuild). Main is merged in after Switch Hosts from a left drawer on the phone #1859 (Host drawer), Search PersonaBots and Channels from the top of the phone's chat list #1861 (search) and Let the mobile Chats header carry a Host avatar and a custom banner #1866 (Customize header).
  • The avatar reads the Human's display name with the existing remote humanIdentity bridge method once the Host is connected. Until then, or if the call fails, it shows a person glyph. No new Host capability, so no CLI parity change.
  • Computers in Settings closes the sheet and opens the Host drawer. Customize header moved from Me into a Settings Interface group. Appearance is not added because the app has no Appearance screen yet.
  • Unpair from the sheet uses router.dismissTo('/'), so the sheet closes and Chats redirects to pairing.
  • Maestro sim flows now go Chats → avatar ("Settings") instead of the Me tab. switch-computer-from-me.yaml is renamed switch-computer-from-settings.yaml, and scripts/e2e-mobile-sim.mjs follows.
  • Verification:
    • pnpm --filter @botharness/mobile typecheck passes.
    • pnpm vitest run apps/mobile: 28 files, 236 tests pass, including the new settings-sheet.test.tsx (every former Me row, unpair failure notice, avatar initial) plus style-guard and design-tokens.
    • pnpm lint and oxfmt --check pass. CI is green on b87a25c.
    • Human QA: Vain tested the settings sheet by hand on the Simulator batch build (main + this PR at b87a25c) and it passed with no issues.
    • Light and dark iOS screenshots are still pending from the Simulator batch. They will be added here.
  • CI test plan: affected (mobile app sources, tests and a root script).

Change outline

Before: three tabs, Home, Activity and Me. Me held the current computer, Open full client, Computers, Customize header, Notifications and Unpair.

After: two tabs, Chats and Activity (badge unchanged). The Chats header keeps the Host chip on the left and gains an action cluster on the right. Its first item is the Human's avatar: their initial on the raised layer fill, a 44pt / 48dp target, labelled "Settings". Tapping it opens Settings as a form sheet with a large detent and a grabber, closed by swipe or Done.

  • Connections: the Host and its status, Computers (opens the Host drawer), Notifications, Open full client, Unpair (with the same error notice).
  • Interface: Customize header.

Files:

  • app/settings.tsx and src/ui/settings-view.tsx: the sheet, replacing app/(tabs)/(me)/me.tsx (deleted).
  • src/ui/shell/human-avatar.tsx and src/host/human.ts: the avatar button and the name lookup.
  • src/ui/shell/home-header.tsx: an actions slot on the right.
  • app/(tabs)/_layout.tsx and _layout.web.tsx: Me removed, Home labelled Chats with a chat-bubble icon.
  • DESIGN.md, the README and the phone-notifications feature map are updated. Change fragment: changes/1850-mobile-settings-sheet.md.

Screenshots: pending from the Simulator batch (light and dark, Chats header and Settings sheet).

🤖 Generated with Claude Code

https://claude.ai/code/session_01P4McGrxLaXPVxUuUd2e7xZ

The Me tab is gone. Its rows (current Host and status, Computers,
Notifications, Open full client, Unpair) move to a Settings form sheet
that opens from the Human's avatar at the top right of the Chats header.
The avatar shows the Human's initial from the Host's humanIdentity on
the raised layer fill. Home is labelled Chats on native and web tabs.

Closes #1850

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P4McGrxLaXPVxUuUd2e7xZ
@DoodleBears DoodleBears self-assigned this Oct 15, 2026
@coderabbitai

coderabbitai Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 11 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 10151810-61cb-4fe7-8972-bdffebc25368
📥 Commits

Reviewing files that changed from the base of the PR and between 868bf98 and b87a25c.

📒 Files selected for processing: 25
  • .agents/skills/verify-deepseekbot/features/phone-notifications.md
  • apps/mobile/.maestro/sim/assert-host.yaml
  • apps/mobile/.maestro/sim/notifications-screen.yaml
  • apps/mobile/.maestro/sim/pair-deep-link.yaml
  • apps/mobile/.maestro/sim/switch-computer-from-settings.yaml
  • apps/mobile/.maestro/sim/switch-computer.yaml
  • apps/mobile/DESIGN.md
  • apps/mobile/README.md
  • apps/mobile/app/(tabs)/(home)/index.tsx
  • apps/mobile/app/(tabs)/(me)/_layout.tsx
  • apps/mobile/app/(tabs)/(me)/me.tsx
  • apps/mobile/app/(tabs)/_layout.tsx
  • apps/mobile/app/(tabs)/_layout.web.tsx
  • apps/mobile/app/_layout.tsx
  • apps/mobile/app/settings.tsx
  • apps/mobile/src/host/human.ts
  • apps/mobile/src/ui/settings-view.tsx
  • apps/mobile/src/ui/shell/home-header.tsx
  • apps/mobile/src/ui/shell/human-avatar.tsx
  • apps/mobile/src/ui/shell/icons.tsx
  • apps/mobile/src/ui/strings.ts
  • apps/mobile/test/home-search.test.tsx
  • apps/mobile/test/settings-sheet.test.tsx
  • changes/1850-mobile-settings-sheet.md
  • scripts/e2e-mobile-sim.mjs
  • 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.

Brings in the Host drawer (#1859), Chats search and sections, and
Customize header (#1866). Computers in Settings now closes the sheet and
opens the Host drawer; Customize header moves from Me into a Settings
Interface group.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P4McGrxLaXPVxUuUd2e7xZ
@DoodleBears
DoodleBears marked this pull request as ready for review October 15, 2026 08:28
@DoodleBears
DoodleBears merged commit cfcf986 into main Oct 15, 2026
11 checks passed
@DoodleBears

Copy link
Copy Markdown
Contributor Author

Batch QA — #1857 as merged on main

iOS Simulator "PR1800 glass" (iOS 26.0, iPhone 17 Pro), dev client rebuilt from the batch, QA Host on DeepSeek. Screenshots are redacted (computer name, tailnet host and local paths blacked out). Chinese text renders as □ because the iOS 26.0 Simulator runtime ships without PingFang; that is an environment limit, not the app. Android: untested.

Chats header (Host chip left, round avatar right, search field, Chats + Activity tabs): ✅ pass. Human QA on the phone also passed (Vain, 08:27Z).

Settings sheet on main had three bugs: title and Done overlap the Connections section, Done does not close the sheet (swipe-down does), and light-mode rows had no card background. All fixed in #1885 (verified there).

Overlap light Overlap dark

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.

Mobile nav: Settings sheet behind the Human's avatar replaces the Me tab

2 participants