Repository navigation
Conversation
|
Important Review skippedWe couldn't safely recover the incremental review. No full review was started, and the last reviewed checkpoint was preserved. Retry later, or explicitly request a full review by commenting You can disable this status message by setting the Use the checkbox below for a quick retry:
No actionable comments were generated in the recent review. Walkthrough
Merge Risk:
|
| Check name | Status | Explanation | Resolution |
|---|---|---|---|
| Docstring Coverage | Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 15 functions across 14 files. (1 skipped: … | Write docstrings for the functions missing them to satisfy the coverage threshold. |
✅ Passed checks (4 passed)
-
Check name Status Explanation Title check ✅ Passed The title clearly and concisely describes the main change: adding a Show Dock Badge toggle for macOS notifications. Description check ✅ Passed The description is complete and covers the user impact, implementation, rationale, linked issue, visual-proof status, testing, platform considerations, AI disclosure, and checklist. It explicitly note… Linked Issues check ✅ Passed Issue #25160coding requirements are met.showDockBadgedefaults totrue, is normalized and persisted, and is read by notification IPC registration.setDockBadgeVisiblegates the single Dock bad…Out of Scope Changes check ✅ Passed The changes stay within issue #25160. The type, default, normalization, IPC wiring, Dock writer gate, macOS UI, localization, settings search entry, and supporting tests implement or verify the reques…
Full details: Docstring Coverage
-
Explanation
Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 15 functions across 14 files. (1 skipped: 1 unsupported.)
- Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
ℹ️ Recent review info
-
⚙️ Run configuration
-
- Configuration used: Repository UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
dc0368db-f55c-4253-af7a-a42ec9f7d35c
📥 Commits
-
Reviewing files that changed from the base of the PR and between b834057c98048c85096669a26c1a29a6e58e1b0e and 8739747f878604074c836108a683c0cc515d80ee.
📒 Files selected for processing (3)
-
src/renderer/src/components/settings/notifications-search.test.ts
src/renderer/src/components/settings/notifications-search.ts
src/renderer/src/i18n/locales/en.json
🚧 Files skipped from review as they are similar to previous changes (1)
-
- src/renderer/src/i18n/locales/en.json
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 8 remain after this review.
ℹ️ Recent review info
-
⚙️ Run configuration
-
- Configuration used: Repository UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
dc0368db-f55c-4253-af7a-a42ec9f7d35c
📥 Commits
-
Reviewing files that changed from the base of the PR and between b834057c98048c85096669a26c1a29a6e58e1b0e and 8739747f878604074c836108a683c0cc515d80ee.
📒 Files selected for processing (3)
-
src/renderer/src/components/settings/notifications-search.test.tssrc/renderer/src/components/settings/notifications-search.tssrc/renderer/src/i18n/locales/en.json
🚧 Files skipped from review as they are similar to previous changes (1)
-
- src/renderer/src/i18n/locales/en.json
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 8 remain after this review.
-
There was a problem hiding this comment.
ℹ️ No critical issues — one minor suggestion inline.
Reviewed changes
- Dock badge write gate —
applyDockBadge()is still the single Dock write point, now suppressed whendockBadgeVisibleis false whileunreadCountkeeps accumulating;setDockBadgeVisible()applies the flag, no-ops on non-darwin, and early-returns on same-value writes. - Settings plumbing —
notifications.showDockBadge(defaulttrue) flows through the shared type, defaults, andnormalizeNotificationSettings, andsrc/main/ipc/notifications.tsapplies the persisted value at registration plus on settings changes. - UI — a darwin-only "Show Dock Badge" toggle in
NotificationsPane, deliberately independent of the notifications master gate, with matchingen.jsonkeys. - Tests —
unread-badge.test.ts(hidden writes'', re-enable restores, off-macOS no-op) andnotifications-dock-badge-setting.test.ts(registration + change wiring + missing-listener fallback); both pass locally (9/9). Assertions are exact rather than loose.
Verified against the codebase: registerCoreHandlers guards with a module-level registered flag, so the new onSettingsChanged listener registers once per process and does not accumulate across window reopen; and the notifications settings section is desktop-only, so the web client never renders this pane and the getRendererAppPlatform() === 'darwin' guard has no browser false positive.
deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏
8739747 to
3f2d2d1
Compare
|
Rebased onto @nwparker gentle ping — happy to adjust anything. |
3f2d2d1 to
ba8e32a
Compare
|
Rebased onto current @nwparker gentle ping whenever you get a chance — happy to adjust anything. |
d6f3209 to
14d03cb
Compare
|
Rebased onto current Verified after the rebase: dock/notifications/settings suites 57 tests, @nwparker gentle ping — happy to adjust anything. |
The unread badge on the macOS Dock icon is now gated by a notifications.showDockBadge setting (default on) with a toggle in Settings -> Notifications. Turning it off clears the badge immediately and keeps it cleared while the unread count keeps accumulating underneath; turning it on rewrites the current count. The gate lives at applyDockBadge, the single Dock write point, so the count source and in-app unread indicators are untouched. Non-darwin platforms early- return on both the write and the toggle rendering. Fixes stablyai#25160 Generated-by: GLM-5.3-Flash (ZCode)
The toggle was the only control in the Notifications pane missing from getNotificationsPaneSearchEntries, so searching settings for "dock" or "badge" never surfaced it. Index it in its own catalog gated on darwin, matching the pane's darwin-only render (same pattern as the tray and menu-bar-icon appearance entries). Generated-by: GLM-5.3-Flash (ZCode)
…gs fixtures Upstream-facing fixtures outside the PR's original sweep construct full NotificationSettings literals; the required field broke their typing. Generated-by: GLM-5.3-Flash (ZCode)
…new translate idiom Upstream moved terminal-agent-phone-push.test.ts under runtime/push/notifications/ and deleted notification-delivery-service.test.ts in its test purge; the moved copy needs the new setting, and the settings pane now reads translations through useTranslate(). Generated-by: GLM-5.3-Flash (ZCode)
14d03cb to
0357752
Compare
|
Rebased onto Adapters for the upstream reshuffle:
Verification on the new head
|

ELI5
Orca shows an unread-count badge on the macOS Dock icon. Some users want it gone — even an accurate "15" sitting on the Dock all day is noise when you check activity inside the app anyway. This adds a "Show Dock Badge" toggle in Settings → Notifications (on by default): off clears the badge immediately and keeps it cleared, on brings the current count back.
What Changed
src/main/dock/unread-badge.ts):applyDockBadge()— the one place that writes the Dock badge — now checks a module-leveldockBadgeVisibleflag (defaulttrue, so existing behavior is byte-identical until the user opts out). Hidden mode writes''while the underlying unread count keeps accumulating, so re-enabling restores the current count;setDockBadgeVisibleearly-returns on same-value writes to avoid redundant Dock calls at startup.notifications.showDockBadge: boolean(defaulttrue) in the shared notification-settings types, defaults, and onboarding normalization (a legacy profile without the field falls back to on and persists once).src/main/ipc/notifications.tsreads the persisted value at handler registration and subscribes to settings changes, so the toggle applies immediately.NotificationsPaneafter "Suppress While Focused", deliberately independent of the master notificationsenabledgate (the issue asks for the badge specifically). en.json keys follow the localization extraction contract (verify:localization-extractionpasses).app.dockis macOS-only), and the toggle renders only on darwin in settings (locked by tests).User-visible before/after: toggle off → Dock badge clears and stays clear; toggle on → current unread count returns; in-app unread indicators never change.
Why
The gate lives at the single Dock write point rather than at the unread-count source: the count must keep accumulating while hidden (that's what makes "toggle back on restores the current count" true), and one gate can't drift out of sync with the multiple paths that push counts. The toggle is independent of the notifications master switch because the badge is ambient OS chrome, not a notification delivery channel.
Linked Issue
Fixes #25160
Visual Proof
N/A for attached media in this environment (headless run, macOS Dock chrome). Behavior is pinned by tests: hidden mode writes
''on count changes, re-enabling rewrites the current count, default-on preserves existing behavior, and the toggle renders only on darwin.Testing
New tests:
unread-badge.test.ts(hidden writes''and keeps accumulating, re-enable restores, same-value no-op) andnotifications-dock-badge-setting.test.ts(setting default, persistence normalization, IPC wiring, darwin-only rendering) — 7 failed against the pre-fix code, 9/9 pass after. Adjacent suites: 15 files / 198 tests green (dock family, notifications IPC, delivery service, normalization, persistence defaults, NotificationsPane, onboarding flow);pnpm tcgreen (two pre-existing test literals needed the new required field); oxlint/oxfmt clean; localization extraction/catalogs verified. Not run: the e2e notification-settings spec (requires a built app + display; this change is purely additive to that spec's switch queries) and visual Dock confirmation on a real Mac.AI Disclosure
Implemented by GLM-5.3-Flash (ZCode agent) under direction of ggbdpq, who reviewed the diff and re-ran the touched suites.
Review
Agent skill upstream boundary
docs/reference/agent-skill-sharing-upstream-boundary.mdand copies or mechanically translates no upstream skill-installer source, tests, fixtures, registry entries, path tables, comments, or documentation.Notes
Cross-platform: the Dock API is macOS-only and both the write path and the settings UI are platform-guarded; Windows/Linux behavior is unchanged (no Dock badge exists there). No persistence format migration (additive settings field with on-fallback). One known pre-existing quirk left alone: multiple renderers can each push counts (the main-process gate converges them); not in scope.
Checklist
N/Awith reasonpnpm lint,pnpm typecheck,pnpm test, andpnpm buildpass (or CI will cover; local preferred)