Skip to content

fix(mobile): fit large thread titles in Arrange threads - #23499

Open
only21mil wants to merge 5 commits into
pingdotgg:mainfrom
only21mil:r13/a096-scale-arrangement-rows-with-thread-title
Open

only21mil wants to merge 5 commits into
pingdotgg:mainfrom
only21mil:r13/a096-scale-arrangement-rows-with-thread-title

Conversation

@only21mil

Copy link
Copy Markdown
Contributor

Problem

Arrange threads gives every thread 56 points of height, including its drag preview. At Appearance text size 22, two title lines need 64 points before system font scaling. On iOS, the fixed row shows only one truncated line. On Android, the second line is cut at the row boundary. Section labels also have a fixed height.

To reproduce, increase Appearance text size, use a long thread title, and open Arrange threads. System text scaling makes the mismatch larger.

Change

Calculate row and section heights from the existing typography metrics, app text size and system font scale, keeping the current minimums. Use those dimensions for list offsets, drag positions and preview bounds. Cancel an active drag when row dimensions change so its coordinates cannot refer to the old layout.

Scope and approval

No issue or discussion exists. This is a small, focused fix of an obvious bug: rows clip their own titles at larger text sizes. It sizes the existing rows from the existing typography metrics and adds no setting or workflow.

Verification

  • pnpm exec vp test run --project unit src/lib/layout.test.ts -t "thread arrangement text sizing": fails against the base sheet's fixed 56/48 dimensions exposed through a temporary adapter. Base has no sizing helper; the adapter preserves its original arithmetic.
  • pnpm exec vp test run --project unit src/lib/layout.test.ts: all 8 tests pass.
  • pnpm --filter @t3tools/mobile typecheck: passes.
  • Changed-file vp lint --report-unused-disable-directives and vp fmt --check: no lint errors; format passes. React warnings remain.

Base and this branch (commit 426f976, before merging main) ran production JavaScript in matching native Debug clients on iOS 26.5 and Android 16. Through the UI, set Appearance to 22 pt, enlarge system text, then open a row menu > Arrange threads. The captures show the platform-specific clipping before and the taller rows after. On both platforms the branch also passed recorded drops and five-second holds at the lower edge that scrolled to later rows. Android base and branch both changed the visible order from 12,11,10,9 to 11,10,9,12. Every run was torn down.

The candidate screenshots below were refreshed on iOS and Android after merging main at commit 2f6f653a29, with the original base captures retained for comparison. The five linked recordings remain from before the merge; candidate recordings show commit 426f97651f. The refreshed Android list uses Appearance 22 pt and system font scale 1.35. Its preview is a still from a new merged-head recording.

The regression fails on the original fixed-height policy exposed through an adapter.

Base regression failure

All eight candidate layout tests pass.

Candidate tests pass

On iOS, base titles show one line and candidate titles show two.

iOS before and after

On Android, original base title lines are cut at the row boundary; the merged-head candidate rows contain both lines.

Android before and after

Both Android drag previews show Reorder. The merged-head candidate card is taller.

Android drag previews

The iOS candidate preview shows its title and Reorder destination.

iOS drag preview

Recordings of drops within Active: iOS candidate, Android base, Android candidate.

Candidate edge holds scroll to later rows. After each drop, Settled shows one thread: iOS edge hold, Android edge hold.

Not checked: changing text size during a drag, physical devices, or the full repository test suite.

Prior PRs: #18547 by Alex (@PixPMusic) changes Android content framing. #19892 by Jai Khurana (@jaikhuranna) changes arrangement saving. #15957 by Alex Southwell (@saphid) adds in-list dragging. #22032 by @sedillo adds last-message sorting. These address separate changes; this fix reuses no code from them.

Production fix, tests, device verification, PR description and images written with GPT-6.1 Sol in T3 Code Nightly.

🤖 Generated with GPT-6.1 Sol in T3 Code Nightly

only21mil and others added 3 commits October 22, 2026 00:24
Size rows and drag geometry from app typography and system font scaling.

Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
…title

Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Oct 22, 2026
@macroscopeapp

macroscopeapp Bot commented Oct 22, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 2f6f653

Macroscope's review found this PR approvable — This focused mobile UI fix dynamically sizes thread arrangement rows and section headers for larger app and system font settings while preserving the existing default dimensions. Its runtime impact is confined to the arrangement screen’s layout and drag geometry, with targeted test coverage and no production-default or infrastructure changes.

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

@coderabbitai

coderabbitai Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Warning

Review limit reached

Only developers with an assigned seat can use this organization's usage-based review budget, and seats here are assigned manually. Ask an admin to assign a seat, or change the review continuation mode in Billing.

Next included review available in 31 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 10 included reviews currently available.

Learn how review limits work.

Review configuration:

Run configuration
Commits

Reviewing files that changed from the base of the PR and between 2f6f653 and 73c7e53.

Files selected for processing: 3
  • apps/mobile/src/features/threads/ThreadArrangementSheet.tsx
  • apps/mobile/src/lib/layout.test.ts
  • apps/mobile/src/lib/layout.ts

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 ff52547 and 2f6f653.

📒 Files selected for processing: 3
  • apps/mobile/src/features/threads/ThreadArrangementSheet.tsx
  • apps/mobile/src/lib/layout.test.ts
  • apps/mobile/src/lib/layout.ts

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

Walkthrough

Thread arrangement row and header heights now derive from the appearance base font size and window font scale. The sheet uses these dimensions in row and header layout, drag positioning, and the floating preview.

Changes: Thread Arrangement Sizing

Layer / File(s) Summary
Derive arrangement dimensions
apps/mobile/src/lib/layout.ts, apps/mobile/src/lib/layout.test.ts
deriveThreadArrangementSizing calculates row and header heights from scaled typography, with minimums of 56 and 48. Tests cover scaled bounds and default dimensions.
Use derived dimensions in the arrangement sheet
apps/mobile/src/features/threads/ThreadArrangementSheet.tsx
The sheet uses derived dimensions for section headers, rows, drag positioning, and the floating preview. Row heights are included in the drag preview version.

Priority: Normal

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

Change: Bug fix

Suggested reviewers: juliusmarminge

Merge Risk: Minimal · up to 2f6f6

No concrete clipping or interaction failure is established, so the change is mergeable with normal validation.

Pre-merge checks: Passed 4
Check name Status Explanation
Title check Passed The title clearly identifies the mobile bug fix: large thread titles now fit in Arrange threads.
Description check Passed The description includes all required sections. It explains the problem, change, scope rationale, verification results, limitations, screenshots, recordings, and the model and harness used.
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

Copy link
Copy Markdown
Collaborator

Note

Written by gpt-6.1-sol on behalf of Maria

thanks @only21mil. your shared typography sizing and drag geometry are preserved, along with all contributor commits. i merged current main (f40c7c6435) and resolved the conflict by keeping its settled-thread pagination and applying scaled sizing to the new "show more" row. i removed three redundant comment lines. the final diff remains three files, with 50 additions and 14 deletions.

verification at 73c7e536fbd73cfb6af572aaaffe9616b5348b85:

  • blacksmith vp run check:changed passed formatting, lint, both knip passes, affected typechecks and all 17 layout tests. one existing drag-cancellation lint warning remains.
  • github ci passed, including build/typecheck, lint, tests, native fingerprint and the final check. two independent gpt-6.1-sol reviewers approved this head with no findings.
  • fresh coderabbit review is rate limited; its successful status is not a new code review. the earlier bot review had no actionable findings.

fresh native rendering, drag/drop, resizing during a drag and before/after captures remain unverified. this vm has no attached android device, and the device service reports "agent device access is turned off for this environment." the default web/server dev process started successfully and was stopped; chrome cannot exercise this native-only sheet. no new images are claimed, and the original native evidence remains in the body. before merge, check long titles at appearance size 22 plus enlarged system text, then reorder, move between sections and expand settled/show more on this head. this takeover is waiting for that native verification.

Copy link
Copy Markdown
Collaborator

Note

Written by gpt-6.1-sol on behalf of Maria

Verified in a real dev environment

no changed behavior could be exercised on this linux boat vm. this is an unverifiable result, not a passing runtime verification.

read the description, discussion, commit authors and full three-file diff at 73c7e536fbd73cfb6af572aaaffe9616b5348b85. the pr is open and no pr commits are authored by @juliusmarminge or @t3dotgg. git.cafe maps this branch to https://git.cafe/pingdotgg/t3code/pulls/23499 and reports 28 successful checks, zero pending and zero failing. these are existing ci results, not checks rerun here.

the change is confined to the native mobile arrangement sheet and its sizing helper/tests. users reach it through a thread row menu > arrange threads, with appearance text size 22 and enlarged system text. web chrome does not render this native sheet.

checked current native access through t3 device tooling:

device_list({})
Agent device access is turned off for this environment.

followed the repository mobile verification skill, which requires stopping verification when device tools are unavailable. no dev server, provider turn, screenshots or recording were started or produced. no code, branches, labels or pr state were changed.

Not verified

main reproduction and candidate native rendering remain unverified. no available device path could exercise title clipping, scaled section labels, floating drag previews, reorder/drop offsets, edge autoscroll, cross-section moves, settled/show more, or cancellation when dimensions change during a drag. no ios/android client or real codex gpt-6.1-sol turn was exercised. before/after images and interaction recording require enabled native device access and matching app data. the existing contributor evidence was read but is not claimed as fresh verification.

maria-rcks commented Oct 28, 2026 •

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 73c7e536fbd73cfb6af572aaaffe9616b5348b85 on the t3 android emulator, using the matching cached native dev client, metro, and an isolated real backend on port 13773. paired the app through its normal connection route. created a real project and four long-title threads through server rpc, and completed real codex gpt-6.1-sol turns through the local proxy. also sent a fifth turn from the android composer and saw its response. all five runs persisted as completed. no mocks or demo data.

set appearance text size to 22 pt and android system font scale to 1.3. disabled the working section through settings to enable active reordering. reproduced the clipped second title line on the pr's main base f40c7c6435, then returned to the exact head with identical data and settings. both title lines fit inside the candidate rows, with readable section headers. this comparison uses the pr base, not today's github/main.

dragged thread 4 below thread 2: order changed from 4,3,2,1 to 3,2,4,1. the floating preview and drop position matched the taller rows. moved thread 3 into pinned, moved thread 2 into settled, expanded settled, and dragged thread 2 back into active. counts and the main thread list updated; read-only database inspection confirmed persisted ordering, pinning, and settlement.

android before: clipped title lines on main base f40c7c6435

android after: two complete title lines on head 73c7e536

android interaction: reorder and move to pinned on head 73c7e536

inspected both full-size captures and the recording, and checked uploaded mp4 playback and seeking. the inline animation below trims the idle interval between reorder and pin. no code changes or push were needed. existing ci reports 28 successful, zero failing, zero pending checks; these were not rerun.

Not verified

ios cannot run on this linux vm. physical devices, changing dimensions during a drag, edge autoscroll, settled/show more pagination, other themes/text sizes, and today's github/main were not exercised. web and desktop do not render this native-only sheet. no new automated checks were run during this verification-only pass.

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:M 30-99 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