1.7 KiB
Task Desktop Notifications
Added June 2026 to dashboard.js. Tasks now fire browser desktop notifications when overdue or due within 1 hour.
Architecture
The checkForTaskAlerts() function runs on every dashboard refresh tick (configurable, default 30s) alongside existing checkForNewCriticalAlerts() and checkForApproachingPromised().
tick() → loadDashboardData() → checkForNewCriticalAlerts() → checkForApproachingPromised() → checkForTaskAlerts()
Notification types
| Alert | Trigger | Title | Body format |
|---|---|---|---|
| Overdue | Task past due, not completed, newly detected | "🔴 Task Overdue" | "[title] — was due [Xh Ym / Xm] ago" |
| Upcoming | Task due within 1 hour, not completed, newly detected | "⏰ Task Due Soon" | "[title] — due in [<1 min / Xm]" |
Deduplication
New alerts are only sent for tasks NOT in the last-known set:
lastOverdueTaskIds— Set of overdue task IDs (resets each tick)lastUpcomingTaskIds— Set of upcoming task IDs (resets each tick)
A task that's overdue on tick 1 fires once. On tick 2, it's already in the set and won't fire again. If the task is completed, it falls out of both filters.
Respects settings
Uses the same window.appSettings.desktopNotifications toggle as RO overdue alerts. If desktop notifications are disabled in Site Configuration, task alerts are muted too.
Browser API
Uses the existing showDesktopNotification() helper which wraps Notification API. First use prompts for permission. Once granted, notifications appear as OS-level toasts across all tabs/apps.
Code location
dashboard.js:checkForTaskAlerts()function (~line 2011),tick()at line 205dashboard.js:showDesktopNotification()helper at line 2054