Repository navigation
Jump to the first unread message in Messages - #728
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Messages now labels its navigation control “Jump to first unread” and focuses the chronologically first unread message. Previously it stopped at the first page containing unread messages and selected that page’s last unread, skipping the beginning of the unread sequence.
The existing pagination path now searches all earlier pages before choosing the target. It retains loading feedback, viewport anchors, cancellation on conversation changes, retry feedback and suspended read observation while searching. Catalogue unread counts are not trusted as a stopping condition because they can be stale. Long histories can require more loading; no API or read-state semantics were changed.
Validation: 21 targeted messageExchangeView tests pass; static frontend lint and diff checks pass. Playwright using the production Messages component/template/CSS and synthetic HTTP responses passes at 390px and 1280px, including unread across page boundaries, delayed-loading anchor preservation, focus and visibility, background refresh, drafts and existing send/latest controls. The original baseline browser fixture reproduced most-recent-unread selection. Browser artefacts are retained in
.run/first-unread/{baseline,candidate}in the task worktree.Authenticated live acceptance was not performed: the retained AgentTest profiles and client point to worktree
273c6d51afa1edf3, not this candidate. A live check would need an operator-prepared isolated Messages fixture and bridge bound to this candidate, with exact revision and actor read-back. No deployment requested or performed.Native task: #V#task_agent_8cb9de3e480fd8ca7a58f47966f815cc. Source screenshot inspected: #V#computer_file_copy_1b6a07e1d0d6421eb41c14379013957d, SHA-256 f002e596aeca29373896b5664ca40ac62e080021ab3c559b71f63130eef10547.