Skip to content

Hide stale unread navigation after the final message is read - #735

Merged
witbrock merged 1 commit into
mainfrom
codex/von-6a5b0449ff016c43
Sep 16, 2026
Merged

witbrock merged 1 commit into
mainfrom
codex/von-6a5b0449ff016c43

Conversation

@witbrock

Copy link
Copy Markdown
Member

Merge decision: ready — the unread navigation button now disappears after the final confirmed read, including when older history remains paginated.

User outcome

Fix the stale “Jump to first unread” control reported in native task #V#task_agent_6baa72d330157297645b6bdd68d1b480. The pane retained its opening catalogue count after read acknowledgements, leaving the button visible despite no unread tile decoration.

Material changes

Reduce the pane's unread count after confirmed acknowledgements and reconcile it with fresh catalogue rows. Bind reconciliation to the selected exchange and read revision; ignore refreshes overlapping reads to avoid stale restoration or double subtraction. Missing catalogue rows do not imply zero unread. Existing loaded unread markers and older-page navigation remain available.

Evidence

  • 33 targeted Jest tests passed across messageExchangeView and unifiedConversationCatalogue, including zero transition, remaining unread, stale refresh, in-flight read, switching and reopening.
  • Playwright production-module/CSS HTTP fixture passed at 390px and 1280px with real IntersectionObserver and controlled read receipts. Existing multi-page first-unread navigation also passed.
  • Same browser regression on pre-change messagePanel.js failed at the expected hidden-button assertion: the final unread marker was gone but the button remained visible.
  • Changed-file frontend static lint and git diff whitespace checks passed.
  • Local browser evidence: .run/unread-navigation/result.json, zero-unread-390.png, zero-unread-1280.png; baseline failure: .run/unread-baseline/failure.txt.
  • Source image: #V#computer_file_copy_2279e69a5de54918a1feca54a8dbf97c, SHA-256 7e6104998aa22f6d9031ea3da39ff6b6d66e9b26b4bd4cbdd15038774835a819 (inspected staged bytes).

Ship boundary

Tier 1 bounded frontend fix. Browser evidence uses synthetic APIs, not live authentication or production read writes. No backend, schema or infrastructure changes. The controller will deploy the verified merged origin/main revision under the task's explicit deployment request; this PR does not claim deployment has occurred.

@witbrock
witbrock merged commit bb95e25 into main Sep 16, 2026
2 checks passed
@witbrock
witbrock deleted the codex/von-6a5b0449ff016c43 branch September 16, 2026 21:05
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