Skip to content

feat(notifications): add actionable native alerts - #3491

Draft
setchy wants to merge 2 commits into
mainfrom
feat/actionable-native-alerts
Draft

setchy wants to merge 2 commits into
mainfrom
feat/actionable-native-alerts

Conversation

@setchy

@setchy setchy commented Oct 24, 2026 •

Copy link
Copy Markdown
Member

Summary

  • Move OS notifications from the preload web API to a main-process service behind typed IPC.
  • Publish individual notifications with repository grouping, a cap with summary fallback, native actions, and removal-on-read.
  • Add notification list anchoring, sticky group headers, and focus-intent scrolling so a native click reveals the matching row.
  • Add native style, actions, keep-visible, and notification-click controls to the Alerts section using the SettingsChoice/SettingsToggle wrappers.
  • Add pnpm sign:dev so macOS development builds can deliver native notifications.

Native notification behavior

  • Actions: Mark as read, Mark as done (where supported), and Unsubscribe (where supported).
  • Clicking the notification body opens the target. There is no separate redundant Open action.
  • The batch summary offers Show notifications.
  • Individual style publishes up to five notifications per batch; a larger batch becomes one summary. Summary always publishes one count notification.
  • Read, done, unsubscribe, account removal, and app reset remove the corresponding OS notification.
  • macOS delivered-notification history and Windows cold-start activation fall back to a generic app activation when an interaction cannot be matched.

macOS note: since macOS 11, the system places all notification actions behind the hover-only Options menu. There is no public API to restore the old inline primary button, so the action set is kept small and body click is the open affordance.

Verification

  • pnpm test: 204 files, 2,046 tests passed
  • pnpm exec vp check --no-fmt: 474 files passed
  • scripts/visual.sh settings: 9 baselines passed
  • scripts/visual.sh filters: 2 baselines passed
  • SonarQube Quality Gate: passing (0 issues)
  • Signed macOS dev build verified to deliver native notifications

Manual checks still pending

  • Packaged macOS Info.plist verification and signed action/click/removal checks
  • Windows cold-start activation and Action Center persistence
  • Linux action-capable and action-incapable notification servers

@github-actions github-actions Bot added the enhancement New feature or enhancement to existing functionality label Oct 24, 2026
@setchy
setchy force-pushed the feat/actionable-native-alerts branch from 9e98192 to 1d9bff5 Compare October 24, 2026 17:55
@setchy
setchy changed the base branch from main to refactor/settings-inbox-alerts October 24, 2026 17:55
@setchy
setchy force-pushed the feat/actionable-native-alerts branch 2 times, most recently from 71713bf to 43e64db Compare October 24, 2026 19:40
Base automatically changed from refactor/settings-inbox-alerts to main October 24, 2026 19:43
@setchy
setchy force-pushed the feat/actionable-native-alerts branch 2 times, most recently from 23adf0f to f133fb0 Compare October 24, 2026 21:31
@setchy
setchy force-pushed the feat/actionable-native-alerts branch from f133fb0 to 211f7ae Compare October 25, 2026 02:36
@setchy
setchy changed the base branch from main to refactor/settings-controls-primer October 25, 2026 02:36
@setchy
setchy force-pushed the feat/actionable-native-alerts branch 3 times, most recently from 34c218b to f698481 Compare October 25, 2026 03:32
Base automatically changed from refactor/settings-controls-primer to main October 25, 2026 03:33
@setchy
setchy force-pushed the feat/actionable-native-alerts branch 3 times, most recently from b865812 to a32756f Compare October 25, 2026 11:49
Move OS notifications into a main-process service behind typed IPC, with native actions, grouping, and list anchoring.

Keep focus scrolling animated and make the browser tests wait for the scroll to settle. Address the Sonar findings on identifier validation, optional chaining, stable string sorting, and the intentionally sequential native publish loop.
@setchy
setchy force-pushed the feat/actionable-native-alerts branch from a32756f to 0448183 Compare October 25, 2026 11:49
Resolve conflicts from the settings-controls and visual-regression refactors:

- Keep main's shared createGitifyBridgeApi helper and move the native
  notifications bridge mock into it
- Keep both NotificationRow attributes: focus tracking and exit animation
- Merge AlertSettings tests: main's control conventions plus the native
  notification style, actions, and click coverage
- Take the native notification test suite; main's tests covered the
  removed preload API
- Accept main's deletion of the Settings route snapshot
- Refresh the notification-volume visual baselines for the new Alerts rows
@sonarqubecloud

Copy link
Copy Markdown

This branch has not been deployed

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

Labels

enhancement New feature or enhancement to existing functionality

Development

Successfully merging this pull request may close these issues.

1 participant