fix(web): stabilize conversation scrolling - #360
Conversation
ThinkRail-Todo: 01a05794-a3cb-752b-bfd7-fba51e3e0104/t_6b68bd5e8534
ThinkRail-Todo: 01a05794-a3cb-752b-bfd7-fba51e3e0104/t_260212e91cf8
ThinkRail-Todo: 01a05794-a3cb-752b-bfd7-fba51e3e0104/t_e6fe94ef6592
ThinkRail-Todo: 01a05794-a3cb-752b-bfd7-fba51e3e0104/t_54161c153bf9
danyaberezun
left a comment
There was a problem hiding this comment.
Please address these cases before merging.
Resolve the import-block conflict in e2e/chat-order.spec.ts as the union of both sides: main (#361) dropped `openChatFromHistory` when passive chat auto-open removed its last two call sites, and this branch's `./fixtures/chatScroll` helpers are kept for the new latest-edge assertions. Produced by AIR Automations. Name: Resolve Merge Conflicts / Run: https://air.jetbrains.cloud/org/05cf1a7f-6ab5-713b-abd3-29d0c8a05e2d/automations/6019d7e8-25e2-42ee-9589-26da37839744?run=bd701a8c-f5c1-49c5-b411-b223a0750a83
|
Merged Conflict: one hunk — the import block of Resolved as the union of both sides, no behavioural call made:
Both sides' body edits were disjoint and auto-merged intact: The resolution is uniquely determined rather than chosen: keeping Ran locally: Not run: the browser e2e suite — this sandbox has no Chromium and the Playwright CDN is unreachable, so Produced by AIR Automations. Name: Resolve Merge Conflicts / Run: https://air.jetbrains.cloud/org/05cf1a7f-6ab5-713b-abd3-29d0c8a05e2d/automations/6019d7e8-25e2-42ee-9589-26da37839744?run=bd701a8c-f5c1-49c5-b411-b223a0750a83 |
|
Correction to my previous comment — this PR needs your judgement, and the merge I pushed is not ready to land. CI has now run the browser e2e suite I could not run locally (no Chromium in that sandbox, Playwright CDN unreachable). Result on The real failure — a semantic conflict git merged textually clean: That test is new in this PR — it is not in Why I stopped rather than fixed it. Every repair changes what the test exercises, so the call is yours (Rinat S (@rsolmano)) and #361's (Olga Lavrichenko (@OLavrik)):
I did not touch the test, and nothing was weakened to get green. State of the branch: the merge commit Produced by AIR Automations. Name: Resolve Merge Conflicts / Run: https://air.jetbrains.cloud/org/05cf1a7f-6ab5-713b-abd3-29d0c8a05e2d/automations/6019d7e8-25e2-42ee-9589-26da37839744?run=bd701a8c-f5c1-49c5-b411-b223a0750a83 |
Summary
Fix conversation scrolling around very tall virtualized rows and multi-page questionnaires while preserving native wheel physics and canonical message-row boundaries.
The chat now starts with realistic conservative row geometry, keeps manual Latest navigation pinned while measurements settle, and lets questionnaire renderers ask the chat scroll owner to reveal each page before applying the existing focus policy.
Changes
Chat virtualization
Questionnaire reveal
ChatActions/useChatScroll.focus({ preventScroll: true })behavior.Regression coverage
Testing
bun run check:deps— passed.bun run check:boundaries— passed.bun run check:seams— passed.bun run lint— passed with 6 pre-existing warnings.bun run typecheck— 14/14 package tasks passed.bun run test— 14/14 package tasks passed.bun run e2e— 319 passed across 8 shards.Screenshots
Before — page 2 remains above the viewport
After — page 2 starts inside the transcript viewport