Skip to content

Brief macOS Dock bounce when a thread needs attention #3722

Description

@kreodont

The workflow

I start a long-running thread, switch to another application, and want a brief native signal when the thread finishes, fails, or needs input. A short bounce of the macOS Dock icon is useful when notification banners are disabled or easy to miss.

What happens today

The official 0.43.1 notification client uses the browser Notification API and requires notification permission. It does not request native Dock attention. This is based on inspection of the release's notification delivery code, not a claim that macOS banners are broken: notification client at desktop-v0.43.1.

What you would expect

With Desktop notifications enabled, briefly bounce the Dock icon when an eligible notification arrives while bb is in the background. Stop the request when bb gains focus or after one second. Do not replay events received in the foreground, and deduplicate notifications across windows and short bursts.

Dock attention should work without banner permission. System banners should retain their current behavior. Web, mobile, Linux, older desktop shells, and the existing notification filtering should keep working. No focus stealing, separate sound, or new notification channel is needed.

Context and alternatives

A working prototype is available in kreodont/bb at ba6af2a, based on upstream main at 62fe3bc46bd1d935b71482b62a1e0887ffb83487. The same change is also ported to the 0.43.1 release.

The prototype adds a validated, main-frame-only desktop IPC call. Only an application window at the configured server origin may use it. It reuses the existing notification pipeline and Desktop notifications setting; the CLI test remains bb push-notifications test desktop.

Validation on macOS arm64 with Node 24.14.1:

  • Typechecks pass on both branches. The release branch has 345 desktop, 22 desktop-contract and 25 push-notifications tests passing. The upstream branch has 358 desktop, 22 desktop-contract and 25 push-notifications tests passing; each desktop suite has one platform-specific skip.
  • An isolated native fixture exercises the real notification client, compiled preload, main-process handler and Electron Dock API with banner permission denied on both Electron 41.7.0 (release) and 44.3.0 (upstream main).
  • The fixture verifies foreground suppression, duplicate and burst suppression, timer cancellation, immediate cancellation on focus, and disposal. It uses a temporary profile and no existing BB data.

To try the workflow in the prototype: enable Desktop notifications, leave a BB window open, switch to another application, and run bb push-notifications test desktop from a terminal. The Dock icon should bounce briefly. Running the same test while BB has focus should not bounce it.

I searched open and closed issues and PRs for Dock, bounce and macOS attention. The earlier system-notification work in #1371 concerns banners rather than a native Dock signal.

Per CONTRIBUTING.md, I am requesting feature sign-off before opening an upstream PR. Would this behavior be welcome? The patch and PR description are prepared; contributor approval for kreodont is also needed before submission.

Checks

  • I searched open and closed issues for the same request.
  • If an agent wrote this, the body ends with > AGENT GENERATED.

AGENT GENERATED

Activity

  1. added
    desktopDesktop app, install, update, packaging
    remoteMulti-device, LAN/tailnet access, notifications
    on Sep 15, 2026
  2. bb-slop-cop commented on Sep 15, 2026

    @bb-slop-cop
    Contributor

    🚨 SLOP COP 🚨 · new-issue-autopilot

    Applied and verified: Type: Feature · Priority: Low · Effort: High. Labels: desktop, remote. No pre-existing classification values or labels required preservation.

    This adds a narrow native notification convenience; effort reflects the new desktop IPC interface. No reproduction report or pull request was created because the final Type is Feature, so this rule skips bug reproduction and fixes.

    AGENT GENERATED

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    desktopDesktop app, install, update, packagingremoteMulti-device, LAN/tailnet access, notifications

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions