Skip to content

fix(mobile): align the one-line Android thread header - #32894

Open
shivamhwp wants to merge 1 commit into
pingdotgg:mainfrom
shivamhwp:fix/android-compact-header-baseline
Open

shivamhwp wants to merge 1 commit into
pingdotgg:mainfrom
shivamhwp:fix/android-compact-header-baseline

Conversation

@shivamhwp

@shivamhwp shivamhwp commented Nov 8, 2026 •

Copy link
Copy Markdown
Collaborator

On Android split view, while the composer has the keyboard, the thread header drops to one line, and the muted subtitle (T3 Code · corex) sat about 2dp above the title's baseline. The Row centred the smaller subtitle against the larger title rather than aligning their text.

Expo UI 58's Row only aligns top, center or bottom, with no baseline option. So the compact title is now one Text with the subtitle as a smaller, muted span. Spans in one paragraph share a baseline. A long title still truncates the subtitle first, as before. The 8dp gap is now two spaces at the subtitle's size.

The sidebar icon and the ✦ in the reported title were already aligned. The icon's centre is within 1px of the title's, both in the report and on the device. The ✦ is a character of the title text itself, so it already shares the title's line. Neither changed.

Scope and approval

A focused fix for an obvious visual bug, reported by a maintainer, under the focused bug-fix exception. It changes one file and only the compact header's text layout; no new behavior or settings.

Verified on a POCO M3 Pro (Android 13) with Smallest width set to 800dp and dev client 2.2.0 (fingerprint fe047aa3). Before is main at dff0b1159b, after is 3f9840959d. Same steps both times: open a thread, focus the composer, capture the header. On the device, the subtitle's text bottom moved from y=141 to y=144, the title's baseline.

Before (top) and after (bottom), 2× crop, red line is the title baseline:

Before and after header

Zoomed: the subtitle sits above the baseline before and on it after:

Zoomed before and after

After, with a long title: the subtitle is cut off first and stays on the same baseline:

Long title after

vp run check:changed passes.

Not shown: a title containing ✦ on a device (the test data had none), larger tablets, and non-default font sizes.

Implemented by Claude Opus 5.5 in T3 Code (Claude Code harness).

🤖 Generated with Claude Code

The compact header centred a smaller subtitle against the title, so its
baseline sat above the title's. Render both as spans of one Text so they
share a baseline.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Nov 8, 2026
@macroscopeapp

macroscopeapp Bot commented Nov 8, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 3f98409

Macroscope's review found this PR approvable — This aligns compact Android header titles and subtitles on a shared baseline while retaining single-line truncation. The change is presentation-only, with reported before/after device verification and no changes to navigation or data handling.

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

@coderabbitai

coderabbitai Bot commented Nov 8, 2026 •

Copy link
Copy Markdown
Contributor

Explain Change →

No actionable comments were generated in the recent review.

Walkthrough

Compact mode in AndroidScreenHeader now renders the title and subtitle in one paragraph. The subtitle uses muted color and an explicit font size from subtitleTypography.

Changes: Android header typography

Layer / File(s) Summary
Render compact header text
apps/mobile/src/components/ui/AndroidScreenHeader.tsx
Compact mode nests the subtitle inside the title text. The subtitle uses muted color and its configured font size. The separate row layout, truncation settings, and weight modifier are removed.

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

Change: Bug fix

Possibly related PRs

Suggested reviewers: juliusmarminge, bil0000, macroscopeapp

Merge Risk: Minimal · up to 3f984

Near-full titles may lose a few trailing characters to an ellipsis, but no material merge-blocking risk was identified.

Pre-merge checks: Passed 4

Check name Status Explanation
Title check Passed The title names the main change: the Android compact thread header is fixed so the title and subtitle align on one line. It follows the conventional commit format with a clear scope. The changeset mat…
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.
Description check Passed The description is thorough and follows the template. It states the problem (the compact Android thread header subtitle sits about 2dp above the title baseline on Android split view while the composer…
Full details: Title check

Explanation

The title names the main change: the Android compact thread header is fixed so the title and subtitle align on one line. It follows the conventional commit format with a clear scope. The changeset matches: AndroidScreenHeader now renders the title and subtitle as nested NativeText spans in one paragraph, so they share a baseline.

Full details: Description check

Explanation

The description is thorough and follows the template. It states the problem (the compact Android thread header subtitle sits about 2dp above the title baseline on Android split view while the composer has the keyboard), the change (the title and subtitle are now spans in one Text, so they share a baseline), and the scope basis (a focused bug-fix exception for an obvious visual bug reported by a maintainer, changing one file). It also gives verification: device model, OS, steps, before/after commit hashes, measured y-coordinates, before/after screenshots, a long-title case, and a note on what was not tested. The Problem section is not under its own heading, and the scope claim relies on an external exception link and a maintainer report rather than an explicit linked approval comment. Those are minor gaps.

Finishing Touches

Generate unit tests (beta)

  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Recent review info

Run configuration

Commits

Reviewing files that changed from the base of the PR and between 8e6a732 and 3f98409.

Files selected for processing: 1

  • apps/mobile/src/components/ui/AndroidScreenHeader.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.

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:S 10-29 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant