Skip to content

Conversation

@liketheduck
Copy link

@liketheduck liketheduck commented Jan 6, 2026

Summary

This PR adds two related notification features:

Location-Based Reminders

  • Geofence monitoring for task reminders triggered by arrival/departure
  • Location search with Apple Maps integration
  • Configurable radius (50m to 500m) and trigger conditions
  • Respects iOS 20-region monitoring limit with smart prioritization by due date
  • Authorization flow handling for all location permission states

Critical Alerts

  • Critical alerts bypass Do Not Disturb and silent mode for important reminders
  • Volume presets (100%, 75%, 50%, 25%) plus custom slider option
  • Per-task toggle available when a due date is set
  • Global settings page accessible from menu (Critical Alerts)
  • Red bell indicator on task list for critical alert items
  • Works with both time-based and location-based reminders

Implementation Details

Location Reminders:

  • LocationService: CLLocationManager, geofence monitoring, notifications
  • LocationPickerView: MapKit UI for selecting locations with search
  • TCTask.locationReminder: Stored as Taskchampion annotation

Critical Alerts:

  • TCCriticalAlert model with volume preset and custom volume
  • CriticalAlertSettingsView: Per-task configuration component
  • CriticalAlertGlobalSettingsView: Settings page for authorization and defaults
  • NotificationService: Authorization tracking and critical sound delivery

Requirements

  • Location reminders require "Always" location authorization
  • Critical alerts require the com.apple.developer.usernotifications.critical-alerts entitlement (needs Apple approval for production distribution)

Test Plan

  • Verify location reminder creation with search and map selection
  • Test geofence triggering for arrival and departure
  • Verify critical alert toggle enables when due date is set
  • Test volume presets and custom slider
  • Confirm critical alert sounds play through silent mode
  • Check red bell indicator appears on tasks with critical alerts enabled
  • Test global settings page toggle and default volume preset

Testing note: These features have been verified in Xcode simulator. Real-world testing on physical devices is recommended, particularly for geofence accuracy and notification delivery in various device states.

Implements Apple Reminders-style location triggers for tasks:
- CoreLocation integration with geofencing (CLCircularRegion)
- MapKit-based location picker with search autocomplete
- Support for "Arrive" and "Leave" trigger conditions
- Configurable radius (50-500m, default 50m)
- Local notifications on geofence entry/exit
- Proper authorization handling for location services
- Location reminders persisted as Taskchampion annotations

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Copy link
Owner

@marriagav marriagav left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for contributing to taskchamp! i will take a look at this sometime in the next couple of weeks since im currently off the grid : )

Critical alerts bypass Do Not Disturb and silent mode, ensuring important
reminders are never missed. Available for any task with a due date.

Features:
- Critical alert toggle in task create/edit views (requires due date)
- Volume preset selector (100%, 75%, 50%, 25%, Custom)
- Custom volume slider when Custom preset selected
- Global settings page (Menu → Critical Alerts)
- Red bell indicator on task list for critical alert items
- Location-based reminders also support critical alerts

Technical:
- Added com.apple.developer.usernotifications.critical-alerts entitlement
- TCCriticalAlert model stored via task annotations
- NotificationService handles authorization and status tracking
- Default volume preset is 50%

Note: Tested in Xcode simulator only. Real-world testing recommended,
especially for notification delivery in various device states.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
@liketheduck
Copy link
Author

Additional Feature: Critical Alerts

This branch now also includes critical alerts support for task reminders.

What's Added

Critical alerts bypass Do Not Disturb and silent mode, ensuring important reminders are never missed:

  • Critical alert toggle in task create/edit views (available when due date is set)
  • Volume control with presets (100%, 75%, 50%, 25%, Custom) plus fine-tune slider
  • Global settings page (Menu → Critical Alerts) for authorization status and defaults
  • Visual indicator (red bell icon) in task list for tasks with critical alerts
  • Location reminders also support critical alerts

Technical Notes

  • Added com.apple.developer.usernotifications.critical-alerts entitlement (requires Apple approval for App Store)
  • TCCriticalAlert model stored via task annotations
  • Default volume is 50%

Testing Status

Tested in Xcode simulator. Real-world testing recommended for notification delivery in DND/silent mode.


🤖 Generated with Claude Code

@liketheduck liketheduck changed the title Add location-based reminders feature Add location-based reminders and critical alerts Jan 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants