Skip to content

fix: stabilize threaded inbox triage - #362

Open
salmonumbrella wants to merge 2 commits into
maathimself:mainfrom
salmonumbrella:fix/threaded-inbox-triage
Open

fix: stabilize threaded inbox triage#362
salmonumbrella wants to merge 2 commits into
maathimself:mainfrom
salmonumbrella:fix/threaded-inbox-triage

Conversation

@salmonumbrella

@salmonumbrella salmonumbrella commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Threaded Inbox triage had two coupled failures: opening a collapsed conversation expanded every child row, and rapid archives could let an older sibling return as the replacement head. This keeps selection, disclosure, and archive state on the right boundaries.

Closes #361.

Changes

  • Keep a thread collapsed when its row is opened; the reading pane still opens the newest message, and only the accessible count/chevron toggles child rows.
  • Keep Safari touch handling from routing a count-button tap through the row-open path.
  • Archive every conversation member in the active folder and account from keyboard, swipe, multi-select, and context-menu actions, while preserving Sent and other-folder copies.
  • Guard pending and completed archive state by stable thread identity, scoped to the source folder and account, so a replacement head cannot reappear during a refetch.
  • Use one undo transaction window, reject late Undo actions after commit starts, and keep rollback scoped to the action-time list view.
  • Resolve destructive thread targets from a fresh server snapshot, bound concurrent thread loads, and chunk archive requests at the backend's 500-ID limit.
  • Invalidate expanded-thread caches across partial failures and stale in-flight loads, while reconciling unread counts per account.

Testing

  • cd frontend && npm ci
  • npm test — 1,579 passed
  • npm run lint
  • npm run build
  • Repeated the full test, lint, and build gate on a clean remote Linux runner with Node 22.
  • Reproduced the original selection behavior in the Safari installed web app.
  • Verified the rebuilt local UI keeps row clicks collapsed, expands only from the count control, and refetches children after archive-failure recovery.

Contributor License Agreement

By submitting this pull request I confirm that:

  • I have read and agree to the Contributor License Agreement.
  • My contribution is my own original work (or I have identified any
    third-party material and confirmed it is compatible with the CLA).
  • I have the right to submit this contribution under the terms of the CLA.

@salmonumbrella

Copy link
Copy Markdown
Contributor Author

Follow-up commit a5ec6be now applies the thread-scoped archive transaction to keyboard, swipe, multi-select, and context-menu actions.

The reported Unknown rows are not a separate sender-parsing defect. They are ThreadRow's common.unknown fallback rendering a resurrected thread head that has no sender fields. Preventing the stale sibling head from returning removes that symptom at its source.

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.

Threaded Inbox rows expand on open and reappear during rapid archive

1 participant