Skip to content

fix(desktop): remember Inbox unread-only choice - #7672

Merged
ngthuydiem merged 1 commit into
mainfrom
diem/aida-2027/remember-unread
Sep 22, 2026
Merged

ngthuydiem merged 1 commit into
mainfrom
diem/aida-2027/remember-unread

Conversation

@ngthuydiem

@ngthuydiem ngthuydiem commented Sep 15, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Inbox forgets the Show unread only choice after navigation or restart. Save the toggle with the existing safe storage helpers and restore it when Inbox opens.

The preference stays on this installation and applies across accounts and communities. Fresh installations keep the current off default. If storage fails, the current view remains usable, but the choice may not survive navigation.

Related issue

Related report: #3669.

Overlaps with #6105 and #3682. #6151 also persists category filters and pane widths. This draft keeps the change to the unread toggle and reuses the existing storage helpers.

Testing

The mock Desktop regression passed: enable the toggle, navigate to Agents and back, reload, then repeat with the toggle disabled. Both choices were restored. This exercises the UI with a synthetic fixture; a native app restart was not tested.

The full local repository CI gate is pending. Keep this PR in draft until validation completes.

Before and after behavior

Same synthetic Desktop fixture in Chromium, 1280×720, on macOS. Before: production source from 41c5ace93740261ee5a5d962c2a17e8d846c2c1b. After: PR head b50c1a06d53fdc080e7aae6ee9aa2e9ad6b60a82. The capture test asserted the displayed toggle state before taking each screenshot.

  1. Enable Show unread only, open Agents, go back to Inbox, and reopen Inbox options.
  2. Enable the toggle again, reload the page, and reopen Inbox options.

Before the fix the toggle is off after both journeys; after the fix it stays on. These are mock-backed UI captures, not a native Desktop restart or live relay test.

Journey Before: resets to off After: stays on
Inbox → Agents → back before-navigation after-navigation
Enable → page reload before-reload after-reload

Generated with Codex

Signed-off-by: Diem Nguyen <diem@squareup.com>
@github-actions

Copy link
Copy Markdown

🔐 Codex Security Review

Status: review required for the current range.

The current range is 41c5ace93740261ee5a5d962c2a17e8d846c2c1b...b50c1a06d53fdc080e7aae6ee9aa2e9ad6b60a82.
A new review must complete for this exact range. When manual authorization
is required, a Block organization member must comment exactly
@buzz-security-review b50c1a06d53fdc080e7aae6ee9aa2e9ad6b60a82 to authorize a new review.
Any previous review applies only to its recorded range.

@ngthuydiem ngthuydiem added the triage-ready Appropriate for agentic review label Sep 15, 2026
ngthuydiem added a commit that referenced this pull request Sep 15, 2026
@ngthuydiem
ngthuydiem marked this pull request as ready for review September 15, 2026 20:54
@ngthuydiem
ngthuydiem requested a review from a team as a code owner September 15, 2026 20:54
@ngthuydiem ngthuydiem changed the title fix(desktop): remember Inbox unread-only choice (AIDA-2027) fix(desktop): remember Inbox unread-only choice Sep 15, 2026
@cameroncrawley

Copy link
Copy Markdown

Confirming this as a user on Buzz Desktop 0.5.23 (macOS). The "Show unread only" toggle in the Inbox resets to off every time I navigate away and come back, so I have to re-enable it constantly. For anyone using the Inbox as an actual queue rather than an archive, it is a daily annoyance.

Worth noting there is no user-side workaround: unreadOnly is React.useState(false) in desktop/src/features/home/ui/HomeView.tsx and the value is never written or read anywhere, so there is no setting or stored preference to seed. It is a code fix or nothing.

This PR looks like the right shape. It reuses the existing safeStorage helper instead of introducing a new persistence pattern, and the e2e test asserts that both the on and the off state survive navigation and reload, so it cannot pass by simply defaulting to on.

There are two other open PRs doing the same thing, #6105 and #6151, if a maintainer would rather take one of those. This one is the smallest at +37/-2.

The blocker looks procedural rather than technical: the bot above is waiting on a Block org member to authorize the security review for the current range (b50c1a06d53fdc080e7aae6ee9aa2e9ad6b60a82). Could someone with that access kick it off? Happy to test a build if it helps.

@ngthuydiem
ngthuydiem merged commit 312cf67 into main Sep 22, 2026
107 of 110 checks passed
@ngthuydiem
ngthuydiem deleted the diem/aida-2027/remember-unread branch September 22, 2026 22:55
brow added a commit that referenced this pull request Sep 23, 2026
* origin/main:
  test(desktop): stabilize unread and audio release smoke fixtures (#7821)
  fix(desktop): remember Inbox unread-only choice (#7672)
  feat(mobile-infra): support development App Attest (#7744)

Signed-off-by: Tom Brow <tomb@block.xyz>
wpfleger96 pushed a commit that referenced this pull request Sep 23, 2026
…n-surface

* origin/main:
  fix(agent): preserve Databricks Opus UC reasoning and tool continuation (#7840)
  feat(canvas): add version history with atomic restore (#6780)
  chore(release): release Buzz Desktop version 0.5.24 (#7817)
  test(desktop): stabilize unread and audio release smoke fixtures (#7821)
  fix(desktop): remember Inbox unread-only choice (#7672)
  feat(mobile-infra): support development App Attest (#7744)

Signed-off-by: Duncan <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
wpfleger96 pushed a commit that referenced this pull request Sep 23, 2026
…rcement

* origin/main:
  fix(hooks): strip repo-local git env from pre-push test lanes (#7841)
  fix(mobile-infra): render push grant lifetimes as decimal in chart 0.3.2 (#7820)
  fix(agent): preserve Databricks Opus UC reasoning and tool continuation (#7840)
  feat(canvas): add version history with atomic restore (#6780)
  chore(release): release Buzz Desktop version 0.5.24 (#7817)
  test(desktop): stabilize unread and audio release smoke fixtures (#7821)
  fix(desktop): remember Inbox unread-only choice (#7672)
  feat(mobile-infra): support development App Attest (#7744)
  docs(nip-fi): clarify federated identity amendments (#7803)
  fix(desktop): refresh channels after access-revoked closure (#7784)
  fix(desktop): bound startup request bursts and recover quota refusals (#7790)
  fix(audit): frame hash inputs with TLV (#7492)
  fix(admin): allow cold storage worker DB startup (#7770)

Signed-off-by: Hayt <211b96e6a2b7f45fd4047988976c7bbbeeda0c15f3ae7b32eec20834b5a55118@buzz.block.builderlab.xyz>

# Conflicts:
#	crates/buzz-relay/src/api/bridge.rs
wpfleger96 added a commit that referenced this pull request Sep 23, 2026
…c-agent-commit-identity

* origin/main:
  fix(mobile-infra): render push grant lifetimes as decimal in chart 0.3.2 (#7820)
  fix(agent): preserve Databricks Opus UC reasoning and tool continuation (#7840)
  feat(canvas): add version history with atomic restore (#6780)
  chore(release): release Buzz Desktop version 0.5.24 (#7817)
  test(desktop): stabilize unread and audio release smoke fixtures (#7821)
  fix(desktop): remember Inbox unread-only choice (#7672)
  feat(mobile-infra): support development App Attest (#7744)
  docs(nip-fi): clarify federated identity amendments (#7803)
  fix(desktop): refresh channels after access-revoked closure (#7784)

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
bradseiler pushed a commit that referenced this pull request Sep 23, 2026
…in-gate

* origin/main: (30 commits)
  feat(agents): humanize uncurated Databricks model ids with a label grammar (#7844)
  fix: route databricks claude fqns to anthropic messages (#7829)
  feat(relay): add opt-in newest-first thread windows (#7823)
  refactor: move agent Git bootstrap into ACP harness (#7819)
  Use worker snapshots for relay storage metrics (#7845)
  fix(hooks): strip repo-local git env from pre-push test lanes (#7841)
  fix(mobile-infra): render push grant lifetimes as decimal in chart 0.3.2 (#7820)
  fix(agent): preserve Databricks Opus UC reasoning and tool continuation (#7840)
  feat(canvas): add version history with atomic restore (#6780)
  chore(release): release Buzz Desktop version 0.5.24 (#7817)
  test(desktop): stabilize unread and audio release smoke fixtures (#7821)
  fix(desktop): remember Inbox unread-only choice (#7672)
  feat(mobile-infra): support development App Attest (#7744)
  docs(nip-fi): clarify federated identity amendments (#7803)
  fix(desktop): refresh channels after access-revoked closure (#7784)
  fix(desktop): bound startup request bursts and recover quota refusals (#7790)
  fix(audit): frame hash inputs with TLV (#7492)
  fix(admin): allow cold storage worker DB startup (#7770)
  feat(relay): add admin HTTP routes for member restriction management (#7302)
  fix(relay): fire kick live side effects at convergence; persist target; fence re-add race with held lock (#7298)
  ...

Signed-off-by: coder 1 <a93f3b1decd199cec83848f116ff60c20776cdd03861b9bba2610acae7c9eeeb@buzz.block.builderlab.xyz>
michaelneale added a commit that referenced this pull request Sep 24, 2026
* origin/main:
  feat(agents): humanize uncurated Databricks model ids with a label grammar (#7844)
  fix: route databricks claude fqns to anthropic messages (#7829)
  feat(relay): add opt-in newest-first thread windows (#7823)
  refactor: move agent Git bootstrap into ACP harness (#7819)
  Use worker snapshots for relay storage metrics (#7845)
  fix(hooks): strip repo-local git env from pre-push test lanes (#7841)
  fix(mobile-infra): render push grant lifetimes as decimal in chart 0.3.2 (#7820)
  fix(agent): preserve Databricks Opus UC reasoning and tool continuation (#7840)
  feat(canvas): add version history with atomic restore (#6780)
  chore(release): release Buzz Desktop version 0.5.24 (#7817)
  test(desktop): stabilize unread and audio release smoke fixtures (#7821)
  fix(desktop): remember Inbox unread-only choice (#7672)
  feat(mobile-infra): support development App Attest (#7744)
  docs(nip-fi): clarify federated identity amendments (#7803)
  fix(desktop): refresh channels after access-revoked closure (#7784)
  fix(desktop): bound startup request bursts and recover quota refusals (#7790)
  fix(audit): frame hash inputs with TLV (#7492)
  fix(admin): allow cold storage worker DB startup (#7770)

Signed-off-by: Michael Neale <michael.neale@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

triage-ready Appropriate for agentic review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants