Skip to content

Preserve reading position while loading unread messages - #717

Merged
witbrock merged 1 commit into
mainfrom
codex/von-8a2587bfbc647c23
Sep 15, 2026
Merged

witbrock merged 1 commit into
mainfrom
codex/von-8a2587bfbc647c23

Conversation

@witbrock

Copy link
Copy Markdown
Member

Merge decision: ready — loading preserves the reader's visible message, and an explicit unread jump moves only once its target is loaded.

User outcome

Fixes native task #V#task_agent_59405b42688c3530eda8da4e5e057bb8. Default and background message loading no longer scroll to the bottom or implicitly navigate to unread. During a requested unread jump, intermediate pages preserve the visible contribution until the target is available.

Material changes

  • Capture the visible contribution and its offset immediately before rendering, respecting scrolling during network requests.
  • Restore that position synchronously before asynchronous cartouche hydration; preserve existing content while a reload is pending.
  • Retain explicit unread and latest-message navigation and existing conversation-switch cancellation.
  • Extend unit and browser regression coverage for default, background and delayed paginated loads.

Evidence

  • 45 tests passed across message exchange, single-thread opening, reply context and send-failure suites; three additional cartouche/recommendation tests passed.
  • Playwright using candidate production modules, chat template and CSS with synthetic HTTP responses passed at 390px and 1280px. Default top and near-bottom background position preserved; intermediate page retained the anchor within one CSS pixel; target focused and visible only after availability.
  • Static frontend lint and git diff --check passed.
  • Adjacent messageStreamNavigation suite: 3 copy-reference tests fail identically on baseline 93fc8967bf3b1a9548f0ddadd7ed2aae8887c68e; its task-button test passes. No copy-reference changes in this PR.
  • Retained browser measurements/screenshots: .run/unread-navigation/ in the assigned worker checkout. This is synthetic browser acceptance, not live authenticated acceptance.
  • Inspected source image #V#computer_file_copy_5debdaa8512445268f771f0af0dcac07, SHA-256 07dfd5e3e471af1c81bf506760e535c8b7161f29e46f5d7af21eecfa13060568.

Ship boundary

Tier 1, deterministic frontend behaviour. Ship criteria are preservation during loading and deferred explicit navigation, without regressions in affected rendering paths. Authentication, read-state semantics, and conversation-reference copying are outside scope. No deployment requested by this task.

@witbrock
witbrock merged commit ee73f53 into main Sep 15, 2026
2 checks passed
@witbrock
witbrock deleted the codex/von-8a2587bfbc647c23 branch September 15, 2026 18:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant