Skip to content

fix(mobile): Android tab headers keep the title and buttons in place - #28854

Open
mapringg wants to merge 1 commit into
pingdotgg:mainfrom
mapringg:fix/mobile-android-tab-header-alignment
Open

mapringg wants to merge 1 commit into
pingdotgg:mainfrom
mapringg:fix/mobile-android-tab-header-alignment

Conversation

@mapringg

@mapringg mapringg commented Nov 1, 2026

Copy link
Copy Markdown

Problem

Switching between Chats/Pulls and Usage/Settings on Android moves the title and header controls because the tab roots use different toolbar layouts. Filter buttons also have inconsistent geometry.

Change

Render the Usage and Settings tab roots with the same toolbar row as Chats and Pulls. Reuse the Android header icon button and anchored filter menu. Settings subpages also receive the consistent filter button.

Scope and approval

Submitted as a small, focused fix of an obvious alignment inconsistency, with no prior issue. The shared row changes support that single correction; navigation and filtering behavior remain the same.

Verification

Android API 36 emulator, dark mode, showcase environments only. Header strips are stacked in Chats, Pulls, Usage, Settings order. Checked the served bundle for WorkspaceTabToolbar before capture. Opened the Settings and Usage filter menus. iOS was not run; its tab headers keep their existing path.

node_modules/.bin/vp run check:changed passed at this branch head in the previous session; Sol review approved the diff. No fix code changed during evidence collection.

Before — tab headers After
Before After

Code written by Claude Opus 5.5; evidence and PR filing by GPT-6.1 Sol, both in T3 Code.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Nov 1, 2026
@macroscopeapp

macroscopeapp Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at e2aad93

Macroscope's review found this PR approvable — This standardizes Android tab headers and filter menus while preserving existing search and filter actions. The changes are confined to mobile presentation, with no material operational or customer-data exposure.

You can add or adjust custom eligibility rules. Learn more.

@coderabbitai

coderabbitai Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 1db31d0 and e2aad93.

Files selected for processing: 7
  • apps/mobile/src/features/home/ThreadListToolbar.tsx
  • apps/mobile/src/features/pull-requests/PullRequestToolbar.android.tsx
  • apps/mobile/src/features/settings/components/SettingsEnvironmentFilterHeader.tsx
  • apps/mobile/src/features/settings/components/SettingsScreen.tsx
  • apps/mobile/src/features/usage/UsageRouteScreen.tsx
  • apps/mobile/src/features/workspace/WorkspaceListToolbarRow.tsx
  • apps/mobile/src/features/workspace/WorkspaceTabToolbar.tsx

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

Walkthrough

The mobile workspace toolbar now supports grouped title and search props, and a workspace tab toolbar is added for Android workspace settings. Android settings and usage environment filters now use anchored menus with header icon buttons.

Changes: Workspace toolbar

Layer / File(s) Summary
Workspace list toolbar and callers
apps/mobile/src/features/workspace/WorkspaceListToolbarRow.tsx, apps/mobile/src/features/home/ThreadListToolbar.tsx, apps/mobile/src/features/pull-requests/PullRequestToolbar.android.tsx
The list toolbar accepts a title and optional grouped search controls. Home and pull request toolbars pass the title and search configuration through those props.
Workspace tab toolbar and settings integration
apps/mobile/src/features/workspace/WorkspaceTabToolbar.tsx, apps/mobile/src/features/settings/components/SettingsScreen.tsx
The new toolbar handles search closing, keyboard dismissal, and hardware back. Android workspace-root settings renders it with title, search, and trailing content.

Android environment filters

Layer / File(s) Summary
Anchored environment filter menus
apps/mobile/src/features/settings/components/SettingsEnvironmentFilterHeader.tsx, apps/mobile/src/features/usage/UsageRouteScreen.tsx
Both Android filters use AndroidAnchoredMenu and AndroidHeaderIconButton. Their environment actions and selection behavior remain in place.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Bug fix

Sequence Diagram(s)

sequenceDiagram
  actor User
  participant WorkspaceTabToolbar
  participant Keyboard
  User->>WorkspaceTabToolbar: Press hardware back while search is active
  WorkspaceTabToolbar->>WorkspaceTabToolbar: Clear search value and close search
  WorkspaceTabToolbar->>Keyboard: Dismiss keyboard
Loading

Suggested reviewers: juliusmarminge, pixpmusic

Merge Risk: Minimal · up to e2aad

The changed headers and environment menus have no established behavior regression. The PR is mergeable after normal checks.

Pre-merge checks: Passed 4
Check name Status Explanation
Title check Passed The title names the main change: Android tab headers keep the title and buttons in place. The changeset gives the Usage and Settings tab roots the same toolbar row as Chats and Pulls, which matches th…
Description check Passed The description follows the template sections (Problem, Change, Scope and approval, Verification). The Problem and Change sections are clear and specific. The Scope and approval section explains that …
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: Title check

Explanation

The title names the main change: Android tab headers keep the title and buttons in place. The changeset gives the Usage and Settings tab roots the same toolbar row as Chats and Pulls, which matches the title's intent. The title uses the conventional commit form with a clear scope.

Full details: Description check

Explanation

The description follows the template sections (Problem, Change, Scope and approval, Verification). The Problem and Change sections are clear and specific. The Scope and approval section explains that the change qualifies as a small, focused fix of an obvious inconsistency, but it gives no linked issue or maintainer approval. The template requires either a triaged issue or an explicit justification, and the author supplied the justification. The Verification section lists an emulator run and screenshots, but the template requires before/after screenshots, and the table embeds them. The author also relies on a prior session for the check run and says no code changed, which weakens verifiability. The description is mostly complete, so it passes, though the scope justification is thin and the verification relies on an earlier session's results.

Finishing Touches
Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

@maria-rcks

Copy link
Copy Markdown
Collaborator

Note

Written by gpt-6.1-sol on behalf of Maria

Verified on Android emulator (API 35) against a real dev server

Verified head e2aad936fa41ea434d5caf4c094e12978dd9e785 on AVD t3, using the cached development client, Metro, and an isolated local dev server. Created a real project and two threads with real Codex gpt-6.1-sol responses through the local proxy. No mocks or showcase data.

Reproduced the horizontal header shift on the PR's parent 3fd2b855c5, then restored the PR head with the same server data. Switching Chats, Pulls, Usage, and Settings now keeps the header row aligned. Checked light and dark appearance. Settings search narrows to Providers; hardware back clears search and restores the list. Settings project scope applies and resets. Usage environment selection changes the empty state and resets. Both anchored menus open from their header buttons; the Providers subpage filter also opens. No code changes were needed. The existing head has 28 successful checks.

before: settings header on the parent commit

after: aligned settings header on the PR head

android tab switching, settings search and filter selection

real Codex response in the Android client

Not verified

  • iOS: this Linux VM cannot run an iOS simulator.
  • Multiple environments and tablet layouts: exercised one connected environment on the phone-sized emulator.
  • Codex usage-limit values: the local proxy returns JSON-RPC -32600 on both revisions. Header and environment-filter interactions were verified despite that provider error.
  • The before capture uses the PR's parent, rather than current github/main.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants