Consistent macOS notification identity specification.
Purpose
Show the Canaryd name and logo on every Canaryd notification.
Scope
- In scope:
- Informational notifications.
- Persistent temperature warnings.
- Notifications with Close and Restart actions.
- Registration of the installed notification app with Launch Services.
- Out of scope:
- Notification text changes.
- Notification timing changes.
- New notification actions.
Relationships
Canaryd.Notifiersends every notification throughCanaryd.NotificationHelper.Canaryd.Setupinstalls the signedCanaryd.appnotification helper.- The helper registers its app bundle before it schedules a notification.
Behavior
- Send every Canaryd notification from the installed
Canaryd.apphelper. - Do not send a Canaryd notification from
osascript. - Register the helper app bundle with Launch Services before notification delivery.
- Use
Canarydas the bundle display name. - Use
Canaryd.icnsas the bundle icon. - Keep the existing notification text, timing, persistence, and actions.
BDD Scenarios
BDD-01 Show one identity for all notifications
Given:
- Canaryd needs to send an informational or actionable notification.
When:
- Canaryd schedules the notification.
Then:
- Canaryd uses the installed helper executable.
- The helper registers its app bundle.
- Notification Center can resolve the Canaryd name and logo.
Test Plan:
- Lowest useful level: unit tests for the notifier command contract and helper source.
- First failing test: an informational notification must call the helper executable.
- Follow-up test: the helper must register its bundle before delivery.
Acceptance Evidence:
Canaryd.NotifierTest.Canaryd.NotificationHelperTest.- Swift type check.
- Signed helper install.
Cross-Spec Links
Acceptance Record
| Scenario | Status | Evidence | Notes |
|---|---|---|---|
| BDD-01 | passed | Focused ExUnit tests, Swift type check, signed helper install | All notifier paths use the Canaryd helper. |