Root cause: the persisted sync cursor only advanced on sync.done, so on every app restart the event stream re-delivered all frames consumed since the last sync.done — and replayed notification frames re-showed their banner (e.g. "thread deleted" again after close/reopen).
Fix (app-side, IrisController): track the consumed outbox high-water cursor, persist it (debounced + on backgrounding), and skip notification frames whose cursor is at/below the mark. This also covers the duplicate delivery on reconnect (SSE catch-up + explicit sync replay both carry the cursor). Verified on device: banner no longer re-appears after close/reopen.
Fixed in abbed43.
Root cause: the persisted sync cursor only advanced on `sync.done`, so on every app restart the event stream re-delivered all frames consumed since the last `sync.done` — and replayed `notification` frames re-showed their banner (e.g. "thread deleted" again after close/reopen).
Fix (app-side, `IrisController`): track the consumed outbox high-water cursor, persist it (debounced + on backgrounding), and skip notification frames whose cursor is at/below the mark. This also covers the duplicate delivery on reconnect (SSE catch-up + explicit sync replay both carry the cursor). Verified on device: banner no longer re-appears after close/reopen.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The internal notifications re-appear after a one time restart of the app.
Fixed in
abbed43.Root cause: the persisted sync cursor only advanced on
sync.done, so on every app restart the event stream re-delivered all frames consumed since the lastsync.done— and replayednotificationframes re-showed their banner (e.g. "thread deleted" again after close/reopen).Fix (app-side,
IrisController): track the consumed outbox high-water cursor, persist it (debounced + on backgrounding), and skip notification frames whose cursor is at/below the mark. This also covers the duplicate delivery on reconnect (SSE catch-up + explicit sync replay both carry the cursor). Verified on device: banner no longer re-appears after close/reopen.