fix(mobile): separate expanded thoughts from the next reply#25438

closed2
main
fix/issue-25283
opened6d agobyJJulius Marminge
View on GitHubTwo-way sync enabledPR last imported 1d ago

Problem

On Android, expanding a long group of thoughts hard-clips the text immediately above the next assistant reply, without the standard work-log row gap. Reproduced on current main by opening a thread with three long reasoning items and expanding Worked for → Thought (×3).

Change

Wrap reasoning-only detail groups in the existing WorkLogBlock so terminal groups keep their standard spacing. Show the existing bottom gradient while reasoning remains below the nested scroll viewport. Preserve the original scroll-view sizing classes and continuation behavior.

Scope and approval

Fixes https://github.com/pingdotgg/t3code/issues/25283

Triaged bug via the automated issue flow. GitCafe: #25283. Issue sync is enabled; the current GitCafe issue API does not expose the external issue-number mapping, so independent mirror-number confirmation remains pending.

Verification

Draft: native proof is incomplete and this PR is not ready. One independent review approved the code; another found no code bug but requested the missing visual proof. The evidence audit is INSUFFICIENT.

  • vp run check:changed: format, lint, both knip passes, and affected typechecks passed both before and after merging current main.
  • Real shared-pool Pixel 9, Android API 36, 1080×2424, system text size large, light/dark. Isolated runtime used explicit --home-dir /tmp/issue-25283-home. No live state was used. Metro required EXPO_NO_METRO_LAZY=1 to load the app.
  • Observed: long groups gain a bottom fade and terminal spacing; the final line remains reachable without a veil; short groups fit without a fade. Disclosure, theme changes, single reasoning items, mixed and tool-only controls were exercised.
  • Unverified: genuine continued-group adjacency (C0/C1), in-place width resize (R0), fit/overflow/reverse transition (R1), and calibrated final-12-unit fade progression (S2). The device lease expired before the auditor could independently recapture. No iOS runtime was available.
  • Captures below are baseline 184d915d87 and implementation 261a20e499, before merging current main. The changed file is byte-identical after that merge; integrated final-head recapture is pending.

Evidence index, recordings, synthetic seeds and drivers · Proof matrix · Independent evidence audit

Visible differences: overflowing text gains a bottom gradient; the normal terminal margin moves the preceding bottom-anchored block slightly upward. The auditor also found a 1–2px positional drift between two historical HEAD captures, so exact reproduction is not certified. Diff images omit the system status strip y<60; Diff8 means max-channel delta >8.

State (1080×2424)Before 184d915d87After 261a20e499Diff0Diff8
long-light-topBeforeAfterDiff0Diff8
long-dark-topBeforeAfterDiff0Diff8
long-light-endBeforeAfterDiff0Diff8
long-dark-endBeforeAfterDiff0Diff8
short-lightBeforeAfterDiff0Diff8
short-darkBeforeAfterDiff0Diff8

Before: expand and scroll · After: scroll, disclosure and theme changes. Detailed steps and capture limitations are in the evidence index and uploaded drivers.

Implementation: Claude Opus 5.5 via Claude Agent; issue lead and evidence: GPT-6.1-sol via Codex.

Checks

20 successful · 12 skipped
All checks passed
15a57ca

Added 2 commits

  • Merge remote-tracking branch 'origin/main' into fix/issue-2528315a57ca
  • fix(mobile): long expanded reasoning fades out instead of clipping into the reply261a20e

[gpt-6.1-sol][Codex] on behalf of shivam.

Handing #25283 over to this PR and stopping work on #25300. Prior verification covered our head 690886151cdbe1dd62efa7740e6f430487a1199d against baseline c3888da8b4fa39b5edd3d0aa69479068647413cf, not this PR's head.

On a physical POCO M3 Pro 5G running Android 13, with an existing T3 Code Dev 2.0.0 client, Metro on corex, and isolated synthetic projection fixtures, we reproduced the clipped thought touching the next reply. Our fix restored the gap and overflow fade. Scrolling reached the final paragraph, cleared the fade, and kept the reply reachable. A finger swipe scrolled the nested thoughts while the outer reply stayed in place. Light/dark modes and short thoughts without overflow were checked.

vp run check:changed passed format, lint, both unused-code checks, and affected typechecks at that head. Independent reviews found no required changes. This verification did not cover iOS or a fresh native build. The reused Android client emitted a Clerk compatibility warning.

Before · After · Scroll recording, 2x speed. Additional captures are in #25300. No new tests or pushes will be started here.

Note

🤖 Claude Opus 5.5 responding on behalf of Theo

Closing: this is covered by #25300, which landed. Reopen if a needed part is still missing.