Repository navigation
fix(mobile): drop quick chat idle status gap and keyboard-dismiss jump - #7776
Conversation
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Executive SummaryIncremental review of Files Reviewed (2 files)
Previous Review Summaries (2 snapshots, latest commit 7e3b576)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit 7e3b576)Status: No Issues Found | Recommendation: Merge Executive SummaryThe follow-up commit re-adds Files Reviewed (89 files)
Previous review (commit 6c6b54f)Status: 1 Issue Found | Recommendation: Address before merge Overview
Issue Details (click to expand)SUGGESTION
Files Reviewed (8 files + 87 locale catalogs)
Notes: no memory leak introduced (the only interval, in Reviewed by deepseek-v4.1-flash · Input: 53.7K · Output: 12.5K · Cached: 573.7K Review guidance: REVIEW.md from base branch |
|
bot: Follow-up iOS proof for the keyboard-dismiss jump, now with the model chip row visible (head 53d776f, iPhone 17 simulator, iOS 26.5, same isolated VM stack and fake account). The earlier Proof B comment is superseded. That run never showed the chip row: the row was stuck at zero height, which 53d776f fixes. With nothing to collapse, it could not show the jump fix. Composer focused, keyboard up, chip visible The "Aion 3.5" chip is fully visible above the input (AX rect 88×28pt at y=444, input at y=485). Refocusing after a dismiss brings it back at full height. Tapping it opens the "Select model" sheet with the current model selected. Dismiss: focus → tap above the composer → about 3 s more recording These are 30 fps frames. Δ transcript is the row-profile cross-correlation shift (pt) against the previous frame. "Chip" is template-matched at its focused position.
Frame strip (168, 170, 172, 174, 177, 180, 181, 295): |





Summary
WorkingIndicator), and only while a reply is generating.opacity-0until the JS keyboard height reached zero, which arrives after the keyboard has landed. The row then unmounted and the transcript snapped down by the row height. The hidden row now gives its height back on the UI thread in step with the keyboard progress.common.generatingkey from every catalog.Verification
apps/mobile: typecheck, lint,check:i18n,check:classespass.apps/mobilevitest: all suites pass excepturl-contract.test.ts, which needs a local.envthat the test VM does not have.chat-composer.test.ts: the hidden row height follows keyboard progress (full, half, zero) before the JS keyboard height clears.chat-screen.mounted.test.tsx: the working row renders only while working.Visual Changes
Before: an idle chat kept an empty status row between the transcript and the composer. After the keyboard was dismissed, the transcript snapped down by the model-chip row height after the keyboard had landed.
After: an idle chat ends at the composer, and the transcript moves only with the keyboard animation.