Repository navigation
feat(mobile): move Chats search into the header - #2377
Conversation
The Chats search field floated above the bottom navigation island, so two floating layers stacked over the list. Search is now a magnifying-glass button left of Settings; tapping it turns the header row into the search field and hides the title and Settings. iOS closes it with the circular close button, Android with a back arrow or system Back. Activity opens its search in the header row the same way. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EJWgC9dD6cje8rYMAMukjv
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EJWgC9dD6cje8rYMAMukjv
|
Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configuration
⛔ Files ignored due to path filters: 4
📒 Files selected for processing: 9
✨ Finishing Touches
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. Comment |
Captured on a Xiaomi phone (Android 16, HyperOS 3, arm64, gesture navigation, zh-CN) running an arm64 debug dev client with this branch's JavaScript, in light, dark and font scale 2.0: the search button left of Settings, Chats search open in the header, closing it with the back arrow and with system Back (the first Back hides the keyboard, the second closes search), and Activity search open. Status bar, computer names and the keyboard suggestion strip are redacted. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Android physical-phone check (Xiaomi, Android 16 / HyperOS 3, Chinese UI), JS from this PR's head Result: PASS in all three modes.
Seen while testing, not caused by this PR: at text size 2.0 the Activity filter tabs wrap inside a word ("待你处 / 理"). This PR was already merged, so the 18 screenshots live on branch Generated by Claude Code |
|
iOS Simulator: pass on main (iOS 26, dev client) at default, xLarge and AX5 text sizes, in light and dark. All 36 screenshots are on branch
Not caused by this PR: at AX5, the Activity segment labels break mid-word ("Nee/ds/you", "Oth/er/unre/ad"). Generated by Claude Code |
Requested by Vain · project thread
Why the change
The Chats search field floated above the bottom navigation, stacking two floating layers over the list. It now opens from a header button and fills the header row while active, as Material 3 top app bars and iOS minimized toolbar searches do.
Issue / Discussion: decided in the project thread (Vain picked option B over keeping bottom search or an iOS 26 search-tab circle).
Special things to note
HeaderSearchand the Android Back handler.pnpm --filter @botharness/mobile typecheckclean,pnpm lintpasses,pnpm vitest run apps/mobile907 passed (Chats search tests updated plus a new header-swap test). Web-render screenshots below against an isolated Host. Not run: native iOS/Android checks and the system-text matrix (cloud session, no simulator); needs a Mac/Windows device-QA pass.app-dialog-host.tsx(from feat(mobile): HIG and system-UI pass: glass sidebar, bottom search, chat soft edge, native dialogs and menus #2333) imports@expo/ui/jetpack-composewithout a platform split, which throws on web. The screenshots used a local, uncommitted web stub for that module; worth a separate fix.Change outline
src/ui/shell/header-search.tsx:HeaderSearchButtonandHeaderSearch(platform close affordances, Android Back).HomeHeadertakes asearchslot that replaces the title chip and actions.BottomSearchremoved (file deleted); list reserves only the navigation height.DESIGN.mdChats and Activity search rules updated.Chats, 390 × 844 web render: before / after idle / after searching "la"
Web render shows layout only: native text fields and SwiftUI glass buttons draw empty on web.
Activity, 390 × 844 web render: idle / searching
Generated by Claude Code