Problem
When an agent finishes and Arbor sends its first desktop notification, macOS shows a "Choose Application" dialog asking "Where is use_default?" followed by a notification permission prompt. The user has to dismiss the dialog manually.
Root cause
The notify-rust crate depends on mac-notification-sys, which calls ensure_application_set() on the first notification. This function looks up the bundle identifier for a hardcoded app name "use_default":
// mac-notification-sys/src/lib.rs:110
let bundle = get_bundle_identifier_or_default("use_default");
Since no application named use_default exists, macOS presents an app chooser dialog. If dismissed, the library falls back to com.apple.Finder.
Suggested fix
Call mac_notification_sys::set_application("so.pen.arbor") early in the app lifecycle (e.g. in main() or app_init), before any notification is sent. This pre-sets the bundle identifier and skips the "use_default" fallback entirely.
Alternatively, notify-rust exposes set_application() directly — no need to depend on mac-notification-sys as a direct dependency.
Problem
When an agent finishes and Arbor sends its first desktop notification, macOS shows a "Choose Application" dialog asking "Where is use_default?" followed by a notification permission prompt. The user has to dismiss the dialog manually.
Root cause
The
notify-rustcrate depends onmac-notification-sys, which callsensure_application_set()on the first notification. This function looks up the bundle identifier for a hardcoded app name"use_default":Since no application named
use_defaultexists, macOS presents an app chooser dialog. If dismissed, the library falls back tocom.apple.Finder.Suggested fix
Call
mac_notification_sys::set_application("so.pen.arbor")early in the app lifecycle (e.g. inmain()orapp_init), before any notification is sent. This pre-sets the bundle identifier and skips the"use_default"fallback entirely.Alternatively,
notify-rustexposesset_application()directly — no need to depend onmac-notification-sysas a direct dependency.