Skip to content

fix(desktop): require explicit action to mark Inbox read - #3913

Draft
MajorTal wants to merge 1 commit into
block:mainfrom
MajorTal:codex/fix-3683-explicit-inbox-read
Draft

fix(desktop): require explicit action to mark Inbox read#3913
MajorTal wants to merge 1 commit into
block:mainfrom
MajorTal:codex/fix-3683-explicit-inbox-read

Conversation

@MajorTal

@MajorTal MajorTal commented Jul 31, 2026

Copy link
Copy Markdown

Hey good people, I'm Tal and this is my first contribution to this (awesome) project. It's a bug that was bothering me while dogfooding Buzz. I hope it's in good order...

Summary

Previewing an unread Inbox item currently calls the same read-state mutation as the explicit Mark as read action. That makes ordinary browsing consume the unread queue, and in unread-only mode it can remove the row merely because it was opened.

This change separates selection from completion:

  • Opening or keyboard-previewing an Inbox item leaves it unread.
  • Mark as read remains the explicit completion action and publishes the existing persisted NIP-RS read state.
  • In unread-only mode, completing the selected item removes it and predictably selects the next item on wide layouts; narrow layouts return to the list.
  • Mark unread continues to restore the item coherently.

The implementation keeps the existing persistence path intact and adds a small pure selection helper so next-row behavior is independently testable.

User impact: people can inspect and move through their unread Inbox without losing the queue, while explicit completion still synchronizes through the existing read-state mechanism.

Related issue

Fixes #3683.

No duplicate open PRs were found for this issue.

Testing

  • . ./bin/activate-hermit && just ci on the rebased commit
  • 3 focused unit tests for explicit-completion selection
  • Chromium Playwright regression covering keyboard preview, unread-only retention, explicit completion, persisted read-state publication, next-row selection, and manual mark-unread
  • Existing Inbox-focused Playwright coverage
  • Manual local UI verification of selection, unread styling, unread-only filtering, and the explicit context-menu action

Manual verification:

  1. Enable Show unread only in Inbox.
  2. Open several unread items with the mouse or Enter and verify they remain visible and unread.
  3. Use Mark as read on the selected item and verify it leaves the unread queue.
  4. Verify the next unread item is selected on a wide layout.
  5. Disable unread-only, use Mark unread, and confirm the item returns to the unread queue.

There is no layout or styling change, so static before/after screenshots would show the same UI. The interaction and read-state transition are covered by the Chromium regression and manual steps above.

Signed-off-by: Tal Weiss <major.tal@gmail.com>
@Chessing234

Copy link
Copy Markdown
Contributor

good first contribution. the explicit mark-as-read split matches how people skim an inbox. one ask: does keyboard/shortcut open of an unread item still auto-mark, or only click-to-preview?

@Chessing234 Chessing234 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

explicit mark-read is the right default for an inbox that also drives detail selection. the wide-vs-narrow completion selection tests look solid. one product ask: if users relied on auto-read-on-open, a one-line settings toggle (or release note) will save the "my badge never clears" reports after this lands.

Copy link
Copy Markdown
Author

Thanks! Keyboard opening is covered too. The test focuses an unread row, presses Enter, and checks that it stays unread until Mark as read is used.

Good point about letting people know about the change. Since #3683 specifically asks for explicit-only read behavior, I left a settings toggle out for now. Happy to add a changelog note if the maintainers want one.

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.

Only mark Inbox items read on explicit action

2 participants