Skip to content

Add notification cooldown, quiet hours, and per-device notification settings #255

@Starosdev

Description

@Starosdev

Summary

The notification system currently has a limited set of configuration options. Several commonly requested settings are missing that would give users more control over when and how they are notified.

Why

Users with many drives or noisy notification channels need finer-grained control. Currently, the only options are global toggles and a single timeout threshold. This leads to either notification spam or users disabling notifications entirely.

Proposed Settings

Notification cooldown / rate limiting

  • missed_ping_cooldown_minutes -- minimum time between repeated notifications for the same device (currently deduplication is binary: notified or not)
  • notification_rate_limit -- maximum notifications per hour across all types

Quiet hours

  • notification_quiet_start -- time to stop sending notifications (e.g., "22:00")
  • notification_quiet_end -- time to resume notifications (e.g., "07:00")
  • Queued notifications sent as a digest when quiet hours end

Per-device notification overrides

  • Allow overriding the global missed_ping_timeout_minutes per device (some devices report less frequently by design)
  • Expose this in the device detail settings alongside the existing mute toggle

Acceptance Criteria

  • At least one of the above settings groups is implemented end-to-end (backend setting, DB migration, frontend UI, notification logic)
  • Existing default behavior is unchanged for users who don't configure new settings
  • Settings are exposed in the dashboard settings UI
  • Unit tests cover the new logic paths

Additional Context

  • Current settings: webapp/backend/pkg/models/settings.go lines 24-37
  • MissedPingMonitor: webapp/backend/pkg/web/missed_ping_monitor.go
  • Frontend settings: webapp/frontend/src/app/layout/common/dashboard-settings/dashboard-settings.component.ts

Metadata

Metadata

Assignees

Labels

backendBackend/Go relatedenhancementNew feature or requestfrontendFrontend/Angular relatednotificationsNotification system relatedpriority:lowLow priority

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions