Repository navigation
test(mobile): cover first-DM visibility and reply following - #2551
Conversation
Add screen-level lifecycle regression coverage and a bilingual native verification guide without changing runtime behavior. Issue: #2521 Agent-Task: codex/local/01a16196-b7e0-70a2-a239-cf57d66db81d
|
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 48 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 |
Windows/Android test-center result: PARTIALTested 2026-10-22, physical Android16 arm64,1220×2712; development app. PR source PASS, sampled: actual non-Connect phone composer → official deepseek-official/deepseek-flash → canonical and visible 42 on both baseline and candidate. Candidate Human07:18:33.567Z → canonical07:18:37.517Z; Human/working/reply order and composer clearance observed with keyboard. Long13,101-character reply eventually displayed item40 above composer. Unresolved: canonical long commit07:20:31.701Z preceded the final-tail observation by85.003s; this is an observation interval, not exact finish time or FPS. First history drag also closed the keyboard and the reading position later moved; a second drag held position only after canonical commit. Cross-commit hold with keyboard already closed is untested. Historical stream optimizations remain in both sources; M0 confirms one large40-item list, not a rendering root cause. UNTESTED: matched long baseline/candidate timing, full light/dark × text-size/keyboard matrix, multiline draft/caret, TalkBack, iOS, Release performance and Human acceptance. This PR is tests/docs; these captures do not establish a runtime delta caused by it. 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: Baseline native short reply — different QA Bot/prompt and keyboard state; journey comparison only Candidate native short reply — real keyboard, Human above visible42 Candidate eventual long reply item40 — not a latency or FPS pass First history anchor after keyboard-dismiss gesture Later position moved to next reply — attribution unresolved Recordings are immutable MP4 download links (GitHub serves these files as application/octet-stream; inline playback is not claimed): |
Unified-main streaming follow-up — backlog observed / visual FAILTested main 31f313f, batch windows-unified-31f313, physical Android 16 / arm64-v8a. Strict native fingerprint: This new-main observation supplements the older batch; it does not attribute the regression to this tests/docs PR. #2589 is not included. One real-model long reply, Debug, keyboard closed, no gestures/navigation/recording during sampling; not deterministic replay or A/B. 165 independent 2Hz snapshots: sample45 received=12557/cursor=5452/pending=7105; sample150 still pending=63; sample151 complete. Full/complete observation request envelopes are 54.444–55.420s apart, not exact arrival/completion events. Playback backlog remains after full text is observed, so unfinished Host output or scroll animation alone cannot explain it. Cross-snapshot owner-reference identity is unproven. Probe RTT P95≈522ms/max≈1067ms is not FPS; probe disturbance is unquantified. Visual FAIL: about 23s after completion, the actual screen still displayed text as an extremely narrow vertical column. Layout/rendering cost, playback tick limits and probe effects remain unresolved; no fix or causal attribution. Debug APK SHA256: |






Refs #2521 | Agent claim
Task:
codex/local/01a16196-b7e0-70a2-a239-cf57d66db81dWhy the change
Protect the existing first-DM fixes with a screen-level regression journey and give native QA a precise way to distinguish blank lists, misplaced working indicators and lost reply following.
Special things to note
3d09057811ae), fix(mobile): keep the Bot working row under the latest message in short chats #2510 (72794500f1ed) and fix(mobile): open a chat already at the latest message #2514 (50df2a3a9c81). No remaining runtime failure was demonstrated at the source seam, so this PR changes no application behavior, Connect transport or native inputs. It does not close Mobile chat: first reply shows Thinking above the message, does not auto-scroll, can go blank #2521.git diff --checkandpnpm lint(including bilingual changelog validation) pass. Four controlled mutations produced the expected assertion failures and were restored. CI plan: affected related tests plus docs build; docs/slides build and its public-surface test were not run locally. Native acceptance and Human QA remain unrun.Change outline
Android actual-device result — 2026-10-22
PARTIAL — short replies and eventual long-tail visibility observed; performance and history retention unresolved.
Tested 2026-10-22, physical Android16 arm64,1220×2712; development app. PR source
5df949ff7fad82f128609a858277f161df484bcb, 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: actual non-Connect phone composer → official deepseek-official/deepseek-flash → canonical and visible 42 on both baseline and candidate. Candidate Human07:18:33.567Z → canonical07:18:37.517Z; Human/working/reply order and composer clearance observed with keyboard. Long13,101-character reply eventually displayed item40 above composer.
Unresolved: canonical long commit07:20:31.701Z preceded the final-tail observation by85.003s; this is an observation interval, not exact finish time or FPS. First history drag also closed the keyboard and the reading position later moved; a second drag held position only after canonical commit. Cross-commit hold with keyboard already closed is untested. Historical stream optimizations remain in both sources; M0 confirms one large40-item list, not a rendering root cause.
UNTESTED: matched long baseline/candidate timing, full light/dark × text-size/keyboard matrix, multiline draft/caret, TalkBack, iOS, Release performance and Human acceptance. This PR is tests/docs; these captures do not establish a runtime delta caused by it.
Immutable detailed results and artifact provenance. Evidence-only commit
c87dab5def333e507dc0889d1441f2861c76412cis a publication reference, not a newly tested runtime head. This PR merged before evidence publication; these assets are on its retained source branch, not a new main change. 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.
Baseline native short reply — different QA Bot/prompt and keyboard state; journey comparison only
Candidate native short reply — real keyboard, Human above visible42
Candidate eventual long reply item40 — not a latency or FPS pass
First history anchor after keyboard-dismiss gesture
Later position moved to next reply — attribution unresolved
Recordings are immutable MP4 download links (GitHub serves these files as application/octet-stream; inline playback is not claimed):
Controlled mutations: removing the known-empty reveal fails with
opacity: 0; always enabling visible-position preservation fails the following-state assertion; disconnecting the screen's growth callback fails the requested end offset; removing the overlay clamp fails the existing initial-offset test. These are source-level witnesses, not native reproductions.Pre-run native status (superseded by the dated Android results above; remaining cases still required): the Windows lane is assigned to another batch, and the Mac runner/batch/status is unconfirmed. Preserve the #1845 owner's iOS reproduction; do not duplicate it or infer abandonment. The exact-head Android request is submitted under Next batch and awaits its owner's batch cut; no device, Metro or Host was started. Run the bilingual journey on iOS Simulator, physical iPhone and Android: new DM, working below Human, visible reply above composer, no blank, bottom follow and history hold. Record non-Connect route, source/batch/binary identities, canonical timeline, light/dark captures and default/intermediate/maximum text plus keyboard checks. No screenshot is presented as evidence of a runtime change.
Base:
8f4e650db551ae8458211634872ed291ff4e5a4f(fresh main). Head:5df949ff7fad82f128609a858277f161df484bcb.Unified-main streaming follow-up — backlog observed / visual FAIL
Tested main 31f313f, batch windows-unified-31f313, physical Android 16 / arm64-v8a. Strict native fingerprint:
1d971f8f1e438ac99cb56339c9300cf53092be9f. Evidence commit976c8623c84e6df4c87d057205bfbfe3439fdeabis publication only, not a new tested input. Original APK/settings/reverse mappings restored; own pairing removed and Host credential revoked; lease/runtime released 2026-10-22T10:27:07Z. Two original offline Host copies remain pending.This new-main observation supplements the older batch; it does not attribute the regression to this tests/docs PR. #2589 is not included. One real-model long reply, Debug, keyboard closed, no gestures/navigation/recording during sampling; not deterministic replay or A/B.
165 independent 2Hz snapshots: sample45 received=12557/cursor=5452/pending=7105; sample150 still pending=63; sample151 complete. Full/complete observation request envelopes are 54.444–55.420s apart, not exact arrival/completion events. Playback backlog remains after full text is observed, so unfinished Host output or scroll animation alone cannot explain it. Cross-snapshot owner-reference identity is unproven. Probe RTT P95≈522ms/max≈1067ms is not FPS; probe disturbance is unquantified.
Visual FAIL: about 23s after completion, the actual screen still displayed text as an extremely narrow vertical column. Layout/rendering cost, playback tick limits and probe effects remain unresolved; no fix or causal attribution. Debug APK SHA256:
DB841DD80BEE8606B18150804CC0788A13761F87477D8138B0C47E745BDC7DC1.Measurement details and limits