fix(mobile): keep the session body painted when measurement or entrance stalls - #6459
Conversation
…ce stalls Explorer finding: session-idle: The session content area is completely blank even though the header already shows 17.2K tokens used, with no spinner, skeleton or empty-state text to indicate that it is loading. The user-agent explorer found this while using the app like a user. One finding per item; the explorer never edits product code. Flow: session-idle Found on revision: f2181ae Repro: 1. set this state first: credits 20; uimode day; reviews 4; battery 65 discharging; density 300; relaunch; rotate landscape; rotate portrait; the device in light mode 2. open the app on emulator-5602 3. reach session-idle 4. the capture shows the defect named below Observed: The session content area is completely blank even though the header already shows 17.2K tokens used, with no spinner, skeleton or empty-state text to indicate that it is loading. Expected: the screen renders without this defect Evidence (from the device run): - ~/.local/share/kwf/findings/explorer-session-idle-the-session-content-area-is-complet-147214a1/session-idle.png
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Executive SummaryThe mobile session-body fix is a small, focused change: the transcript wrapper drops its Notes
Files Reviewed (4 files)
Reviewed by deepseek-v4.1-flash · Input: 0 · Output: 0 · Cached: 0 Review guidance: REVIEW.md from base branch |
|
This description names a scenario the proof did not capture:
A repeated proof run rebuilds the same evidence, so no proof run is dispatched for a named gap. Merging with this gap open is your decision. |
eshurakov
left a comment
There was a problem hiding this comment.
Approved after a shallow triage pass. No blocking findings.
Changelog for users
Changelog for maintainers
CenteredStatenow bounds the hidden-until-measured state: content appears afterSTATE_SURFACE_FALLBACK_MS(400 ms) even when the native surface frame never lands.View; theAnimated.ViewwithFadeIn.duration(200)is gone becauseFadeInstarts atopacity: 0and could leave the body blank when the entrance never ran.exitingcrossfade still carries the skeleton-to-transcript swap, so the transcript needs no entrance animation.opacity-0and accessibility-hidden until the 400 ms bound elapses.enteringprop and cover the timer reveal, the measured-wins path, and the hidden-until-window behavior.E2E proof
[e1] Explorer finding: session-idle — session content area blank under a populated header — e2e-mobile-app/e1-after-retry.png (capture not retained)
/home/igor_kilocode_ai/.local/share/kwf/sections/kwf-fix-proof-3bb953f-901c/e2e-mobile-app/e1-scene.logOpen findings (not fixed here)
mobile-device: signed-in app data restored on emulator-5604
mobile-device: signed-in app data frozen on emulator-5554 (67549696 bytes)
mobile-device: signed-in app data frozen on emulator-5554 (67557888 bytes)
mobile-device: shard1 judged by jev
proof-audit: vision pass returned no JSON