Repository navigation
fix(mobile): keep Chats titles and timestamps inline at large text - #2554
Conversation
Issue: #2553 Agent-Task: codex/local/01a161ca-29cb-7e50-a917-73955c53f929
|
Warning Review limit reachedYou'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 41 minutes. View limit details
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 |
Issue: #2553 Agent-Task: codex/local/01a161ca-29cb-7e50-a917-73955c53f929
Windows/Android test-center result: PARTIALTested 2026-10-22, physical Android16 arm64,1220×2712; development app. PR source PASS, sampled geometry: matched same-Host HarborBot/42 baseline and combined candidate captures show baseline title→time→preview stacking at2.0 versus candidate title+time header and preview/status below, with the actual PR2552 trailing menu. Default/intermediate1.3/light/dark and live scale changes were also captured locally. Actual OEM maximum: system slider labelled200% reads font_scale1.45 on this device. Matched light/dark long mixed-language title and no-time row captures at1.45 show candidate inline header and no blank timestamp row. Direct2.0 is an extra stress setting, not the OEM maximum. Candidate2.0 dark still truncates title/time; do not infer full text visibility. Full accessible names sampled via XML only. Outstanding: live font changes produced linking/navigation warnings in both sources; screenshots retain them. Root cause unassigned. TalkBack, long-title row activation, full accessibility, iOS and Human acceptance remain untested. Immutable detailed results and artifact provenance. Evidence-only commit Restored original dev APK (pullback hash matched), recorded settings and original reverse mappings; removed own QA pairings/revoked credentials, stopped own Host/Metro/recorders and released lease at07:53:03.733Z. Two original offline Host entries remain; exact original pairing-ID comparison unavailable because the pre-run snapshot omitted IDs, and offline Host-copy state remains pending. No production app changes, uninstall or data clear. No full native, TalkBack, iOS or Human acceptance claim. Representative actual native evidence: Before —2.0 stress light, title/time on different lines After —2.0 stress light, title/time inline with actual trailing menu Before —2.0 stress dark After —2.0 stress dark; title/time truncation remains visible Before —OEM maximum1.45 light, long title and no-time row After —OEM maximum1.45 light; full title accessible label sampled separately Before —OEM maximum1.45 dark After —OEM maximum1.45 dark, inline title/time and no blank timestamp row |
Issue: #2553 Agent-Task: codex/local/01a161ca-29cb-7e50-a917-73955c53f929
Preserve #2554 horizontal large-text title/time and one-line preview, its native fixture and evidence, and #2578 encrypted uploads. Automatic merge has no conflicts. Only manual edits format the inherited evidence README and row-layout test; media and hashes remain unchanged. Validation: existing oxfmt check on the two files and git diff --check passed. No tests/typecheck/install/build or native operations; gutter preparation remains stashed. Issue: #2519 Agent-Task: codex/local/01a16196-5d76-7442-8c66-95cdef39752c
Remove the permanent overflow column. Preserve shared actions through Android long press, iOS Link preview context menus, swipe and screen-reader actions, including mark-read. Use shared Chats gutters with avatar slot compensation and retain BotHarness#2554 text layout. Source-only candidate: targeted existing formatter and git diff --check passed. Tests/typecheck and native geometry or interaction checks await CI/test-center allocation; no overflow root cause is claimed. Issue: BotHarness#2588 Agent-Task: codex/local/01a16196-5d76-7442-8c66-95cdef39752c








Closes #2553 · Agent claim · Task:
codex/local/01a161ca-29cb-7e50-a917-73955c53f929Why the change
Keep Chats titles and timestamps on the same line at large system text sizes, fixing the Android baseline failure against the mobile design contract.
Special things to note
571b4437b4a5c323d243a56e79d25d5bf85f82b8, accepted by the test center as the next input and fast-forward pushed from432c3f2c17065d9947a02f5d1e366db95af39c4a. Controlled combination checks below passed; their local composition is diagnostic only, not a native CUT or qualified candidate. Formatting/lint and changelog checks remain unrun outside the allocated scope. No merge or product release is authorized.db6186f96da024d5a6d3938fcf7a2d46233fac25) and test(mobile): cover first-DM visibility and reply following #2551 (5df949ff7fad82f128609a858277f161df484bcb) are unchanged. Onlyapps/mobile/src/ui/chat/conversation-row.tsxoverlaps feat(mobile): swipe Chats rows and create Host sections #2552; this PR changes its inner layout, while feat(mobile): swipe Chats rows and create Host sections #2552 changes the outer action wrapper. The center will compose fresh main and assign PREP/fingerprint, then explicitly decide CUT/RUN. Phone Chats: render Remote Host sections and Pinned list #2571/fix(cli): await phone notification owner results on Hermes #2565/feat(telemetry): add common version and coarse device context #2570 are excluded. Expo Router linking warnings remain unattributed and outside this fix.Change outline
Android actual-device result — 2026-10-22
PARTIAL — title/time same-line geometry improved on Android; full accessibility and platform acceptance outstanding.
Tested 2026-10-22, physical Android16 arm64,1220×2712; development app. PR source
571b4437b4a5c323d243a56e79d25d5bf85f82b8, combined batch8e09ba57d367dff346a4ab5f3c5d53e5c32c90e6, baseline897e9334768baf26547eb155f9ab1b3e7a0ee61f. Native fingerprint2cde0026048320af2a7fdcafdc10b68875aadd75; Expo58.0.17/RN0.88/React19.3. Reused compatible arm64 Debug APK SHA256B3A5DF7CA0D0F1C393523BE945FD49EF7263110A6DAA5B89726073759CA9ED3A. Host/Metro Node24.21 verified; original APK build's Node24.16/24.21 provenance uncertainty retained. Source preparation20files/163tests+mobiletype and serial builds passed separately; they are not phone acceptance.PASS, sampled geometry: matched same-Host HarborBot/42 baseline and combined candidate captures show baseline title→time→preview stacking at2.0 versus candidate title+time header and preview/status below, with the actual PR2552 trailing menu. Default/intermediate1.3/light/dark and live scale changes were also captured locally.
Actual OEM maximum: system slider labelled200% reads font_scale1.45 on this device. Matched light/dark long mixed-language title and no-time row captures at1.45 show candidate inline header and no blank timestamp row. Direct2.0 is an extra stress setting, not the OEM maximum. Candidate2.0 dark still truncates title/time; do not infer full text visibility. Full accessible names sampled via XML only.
Outstanding: live font changes produced linking/navigation warnings in both sources; screenshots retain them. Root cause unassigned. TalkBack, long-title row activation, full accessibility, iOS and Human acceptance remain untested.
Immutable detailed results and artifact provenance. Evidence-only commit
653dfa866f6668056122608f8aa800aa5de5a058is a publication reference, not a newly tested runtime head. Screenshots crop status/navigation pixels only. Clips retain original speed, no audio, and are cropped/downscaled; sampled privacy review and exact source intervals are documented in the report. Warning overlays are retained.Restored original dev APK (pullback hash matched), recorded settings and original reverse mappings; removed own QA pairings/revoked credentials, stopped own Host/Metro/recorders and released lease at07:53:03.733Z. Two original offline Host entries remain; exact original pairing-ID comparison unavailable because the pre-run snapshot omitted IDs, and offline Host-copy state remains pending. No production app changes, uninstall or data clear. No full native, TalkBack, iOS or Human acceptance claim.
Before —2.0 stress light, title/time on different lines
After —2.0 stress light, title/time inline with actual trailing menu
Before —2.0 stress dark
After —2.0 stress dark; title/time truncation remains visible
Before —OEM maximum1.45 light, long title and no-time row
After —OEM maximum1.45 light; full title accessible label sampled separately
Before —OEM maximum1.45 dark
After —OEM maximum1.45 dark, inline title/time and no blank timestamp row
Native scaling and complete accessibility labels remain intact. No timestamp means no timestamp element or blank metadata row. The real frame, SourceName and text adapters are exercised by the row fixture; it covers long mixed-language names, absent time, live scale inputs, full labels, row activation and an optional platform-touch-width sibling. It checks native layout/text props, not Yoga geometry or the actual trailing menu.
The six-line fixture follow-up isolates
expo-router: combining with #2552 introducesConversationRow → ConversationPeek → expo-router, which otherwise loads native code during test collection. The Router stub throws if navigation is rendered, so the fixture cannot silently claim navigation coverage. Production code and layout assertions are unchanged by this follow-up.Controlled RED/GREEN evidence:
432c3f2c17065d9947a02f5d1e366db95af39c4a: four focused files / 23 tests and mobile typecheck passed.b86981ab4d49f0f1587a4c7e47397a8b528b5bb8: one-file RED reproducedSyntaxError: Unexpected token 'typeof'during collection, zero tests, exit 1 (4.88s).69c5f139324fc6902d80c4b96e62793441aae396: one-file GREEN passed all 10 tests (1.73s); the original 12-file set passed all 84 tests (17.81s); mobile typecheck passed, exit 0. This is not a direct standalone run of the new PR head and not native qualification.GOMAXPROCS=2. Own install used--frozen-lockfile --ignore-scripts --child-concurrency=1 --network-concurrency=1(52.8s). Vitest used--maxWorkers=1 --no-file-parallelism; typecheck usednode node_modules/typescript/bin/tsc --noEmit -p apps/mobile/tsconfig.json.The 12 files were conversation-actions, conversation-sections, conversation-section-sheet, conversation-row-layout, conversation-streaming-rows, follow-latest-gestures, follow-latest, home-search, source-name, system-text, style-guard and action-menu-android. The heavy window was explicitly released at 2026-10-22T06:12:40.6413520Z after verifying observed own processes/descendants had exited and owned no listeners. No Host, Metro, device, build, full suite or lease was started.
Pre-run capture blocker (superseded for the sampled Android cases above): native acceptance and sanitized matched captures await the test center's new composition and explicit CUT/RUN. The original Android16 / Expo58.0.17 font-scale2.0/light failure was observed on main
8f4e650db551ae8458211634872ed291ff4e5a4f; its private raw PNG/XML are not published. No corrected candidate native screenshot is claimed.Native review journey: open Chats with a timestamped HarborBot, a long mixed-language title and a no-time row. Check default/intermediate/actual maximum OS text in light/dark on Android/iOS, including live default → maximum → default. Verify title/time share one line, preview/status stay on the second, no-time leaves no blank metadata row, and full accessible names plus row activation remain available. In the new combined candidate, check the real trailing menu width and reachable action target. Capture matched sanitized evidence; source tests cannot establish native geometry, screen-reader usability or Human acceptance.