All Subscriptions shows unread items that have been read, until the page is reloaded #168

Closed
opened 2026-10-09 05:09:29 -07:00 by rays · 1 comment
Owner

Reported 2026-10-09: All Subscriptions said 1 unread when there was none. The server agreed with the user: /api/feeds summed to 0 unread across 147 feeds, and /api/entries?filter=unread had none.

The badge is the page's own sum of each feed's unread count (web/src/feeds.ts, unreadAll over S.feeds). The page loads that list once and then only patches it from feed_row events, which the server sends when a scan or a download changes a feed. Nothing is sent for an item read, everything marked read or a feed unsubscribed, so another page open as the same person (another device, another tab, a script using the API) keeps its old counts, and an unsubscribed feed's row stays in it for good. Nothing reloads the list when the page comes back into view either, and on an iPhone home-screen app iOS stops the event stream while the app is in the background, so whatever happened meanwhile is missed altogether and the stream's reconnect does not catch up.

Fix: take the feed list and the open list again whenever the page comes back into view, and when the event stream reconnects after it dropped.

Reported 2026-10-09: All Subscriptions said 1 unread when there was none. The server agreed with the user: /api/feeds summed to 0 unread across 147 feeds, and /api/entries?filter=unread had none. The badge is the page's own sum of each feed's unread count (web/src/feeds.ts, unreadAll over S.feeds). The page loads that list once and then only patches it from feed_row events, which the server sends when a scan or a download changes a feed. Nothing is sent for an item read, everything marked read or a feed unsubscribed, so another page open as the same person (another device, another tab, a script using the API) keeps its old counts, and an unsubscribed feed's row stays in it for good. Nothing reloads the list when the page comes back into view either, and on an iPhone home-screen app iOS stops the event stream while the app is in the background, so whatever happened meanwhile is missed altogether and the stream's reconnect does not catch up. Fix: take the feed list and the open list again whenever the page comes back into view, and when the event stream reconnects after it dropped.
rays added the bug label 2026-10-09 05:09:29 -07:00
Author
Owner

Fixed in 4e41738: the page takes the feed list and the open list again when it comes back into view and when the event stream reconnects after a drop. A browser test reads an item behind the page's back and checks the badge follows; it fails without the fix. Deployed as 0.10.3-dev.

Fixed in 4e41738: the page takes the feed list and the open list again when it comes back into view and when the event stream reconnects after a drop. A browser test reads an item behind the page's back and checks the badge follows; it fails without the fix. Deployed as 0.10.3-dev.
rays closed this issue 2026-10-09 05:15:58 -07:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: rays/ipx#168