You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Personal build: keep unread completion counts on the app icon until threads are viewed #3
Keep a numeric app-icon badge for completed, unread top-level threads until each corresponding thread is viewed, like Codex. Focusing T3 alone must not acknowledge other threads. This is a personal fork patch layered onto the existing notification feature.
Expected behavior
Five completed unread threads show 5; viewing one reduces the count to 4.
Count is derived from existing completion/read state across connected environments, including on startup/reconnect, rather than transient notification delivery.
New work, read acknowledgement, settlement, snooze, archive, deletion and environment removal update the count consistently; hidden child threads are not counted separately.
Preserve existing sounds, popups and attention notifications; deduplicate any notification and unread-completion contribution for the same thread.
Desktop native badge and web favicon share the behavior. Mobile native badging is outside this desktop/web personal patch.
The desktop native icon and web favicon now combine persistent completed-unread threads with the existing background-notification count, deduplicating each thread. App focus still acknowledges transient notifications, while unread completions remain until their corresponding visit watermark advances. The count is reconstructed from connected environment snapshots, works with notifications disabled or permission denied, includes never-opened completions, and respects the local visit fallback for older servers. Restarted, archived, deleted, settled, snoozed and hidden child threads leave the completion count.
Verification:
Regression tests failed before the implementation: native focus forced zero; the browser coordinator lost completions on focus and did not reconstruct them from snapshots.
30 focused tests pass: vp test run apps/web/src/components/ThreadNotificationCoordinator.badge.browser.test.ts apps/desktop/src/ipc/methods/notificationBadge.test.ts apps/web/src/components/ThreadNotificationCoordinator.logic.test.ts. Covers independent per-thread acknowledgements, focus retention, multiple environments, notification deduplication, permission/settings independence, lifecycle changes, unvisited completions and legacy local visits.
Two targeted React Compiler cases pass: vp test run apps/web/src/reactCompilerCoverage.test.ts -t ThreadNotificationCoordinator.
Scoped desktop/web/scripts typechecking, changed-file lint/format, knip and git diff --check pass. The commit hook also passed the repository's knip:check.
check:changed HEAD itself could not spawn vp child commands through this Windows installation's vp.cmd; its relevant checks were run directly instead.
Scope: renderer logic shared by web/desktop and Electron's Windows/macOS/Linux badge handlers. Provider protocols, server contracts and native mobile behavior are unchanged. Chromium coordinator tests ran in a real headless browser; Electron platform dispatch/focus tests use mocked native APIs. A full application UI pass and native taskbar/Dock placement were not verified. No installer or personal release has been built or installed yet.
The branch is pushed and ready to integrate into the personal build. Keeping this issue open until that integration/release.
Model: GPT-6.1 Sol, high reasoning effort. Harness: Codex in T3 Code.
Merged into personal via #4 (merge commit 50e2ac8). Rebased onto the latest personal branch, retained the reconnect notification fix, and added coverage for unread counts through cached state. Author source review found no blocking issues; 34 focused tests, scoped typechecks and the other documented local checks passed. This records source integration; a new packaged personal release and native taskbar placement have not been verified here.
Activity
iXab3r commentedon Oct 31, 2026
Implemented in commit 8a145e9bcd on branch
bugfix/persistent-unread-completion-badge.The desktop native icon and web favicon now combine persistent completed-unread threads with the existing background-notification count, deduplicating each thread. App focus still acknowledges transient notifications, while unread completions remain until their corresponding visit watermark advances. The count is reconstructed from connected environment snapshots, works with notifications disabled or permission denied, includes never-opened completions, and respects the local visit fallback for older servers. Restarted, archived, deleted, settled, snoozed and hidden child threads leave the completion count.
Verification:
vp test run apps/web/src/components/ThreadNotificationCoordinator.badge.browser.test.ts apps/desktop/src/ipc/methods/notificationBadge.test.ts apps/web/src/components/ThreadNotificationCoordinator.logic.test.ts. Covers independent per-thread acknowledgements, focus retention, multiple environments, notification deduplication, permission/settings independence, lifecycle changes, unvisited completions and legacy local visits.vp test run apps/web/src/reactCompilerCoverage.test.ts -t ThreadNotificationCoordinator.git diff --checkpass. The commit hook also passed the repository'sknip:check.check:changed HEADitself could not spawnvpchild commands through this Windows installation'svp.cmd; its relevant checks were run directly instead.Scope: renderer logic shared by web/desktop and Electron's Windows/macOS/Linux badge handlers. Provider protocols, server contracts and native mobile behavior are unchanged. Chromium coordinator tests ran in a real headless browser; Electron platform dispatch/focus tests use mocked native APIs. A full application UI pass and native taskbar/Dock placement were not verified. No installer or personal release has been built or installed yet.
The branch is pushed and ready to integrate into the personal build. Keeping this issue open until that integration/release.
Model: GPT-6.1 Sol, high reasoning effort. Harness: Codex in T3 Code.
feat(client): keep unread completion badges until threads are viewed
feat(client): keep unread completion badges until threads are viewed
iXab3r commentedon Oct 31, 2026
Merged into personal via #4 (merge commit 50e2ac8). Rebased onto the latest personal branch, retained the reconnect notification fix, and added coverage for unread counts through cached state. Author source review found no blocking issues; 34 focused tests, scoped typechecks and the other documented local checks passed. This records source integration; a new packaged personal release and native taskbar placement have not been verified here.