native macOS codings agent orchestrator prowl.onev.cat
Something went wrong. Try again.
Fix stuck notification indicator by pruning a closed surface's notifications master
Notifications are keyed by their originating surface and only cleared when that surface is focused or typed into. When a surface was torn down (closed tab/split, exited process) its notifications were left behind, so hasUnseenNotification stayed true forever — the bell and Dock badge stayed lit until the user hit Dismiss All. Consolidate the per-surface teardown bookkeeping into forgetSurface(_:) and drop that surface's notifications there, emitting the indicator change. Add a pure prunedNotifications(from:removingSurfaceID:) helper with unit coverage.
Author onevcat Date (May 27, 2026, 2:45 PM UTC) Commit 05696507 056965078fc726e7eaefeee104b84bfc3b5e9e10 Parent 75cb6b41 75cb6b4180e1ed62715658b132a7a2003cc67680