Manual Overrides¶
You can manually override night routine assignments by editing calendar event titles directly in Google Calendar. This allows you to make quick changes without using the web interface.
How Manual Overrides Work¶
The application automatically detects when you change a night routine event title in Google Calendar and updates its internal schedule accordingly.
Override Detection¶
The system detects overrides through:
- Webhook Notifications - Google Calendar sends real-time notifications when events change
- Event Title Parsing - The application parses the parent name from the title
- Database Update - The internal assignment is updated to match
- Fairness Recalculation - Future assignments are recalculated to maintain balance
Making a Manual Override¶
Step 1: Find the Event¶
- Open Google Calendar
- Navigate to the date you want to change
- Find the night routine event (e.g.,
[Parent1] 🌃👶Routine)
Step 2: Edit the Event Title¶
- Click on the event to open it
- Click the edit button (pencil icon)
- Change the parent name in the title:
- From:
[Parent1] 🌃👶Routine - To:
[Parent2] 🌃👶Routine
- From:
Title Format
Keep the format: [ParentName] 🌃👶Routine
Only change the name inside the square brackets. The name must match one of your configured parent names exactly.
- Click "Save" to save the change
Step 3: Verification¶
The application will:
- Receive a webhook notification from Google Calendar (usually within seconds)
- Parse the new parent name from the event title
- Check if the date is within the allowed threshold
- Update the internal database
- Recalculate future assignments to maintain fairness
You can verify the change by:
- Checking the application logs for override detection messages
- Viewing the web interface (the assignment should update after refresh)
- Looking for the "Override" decision reason in future assignments
Time Window for Overrides¶
By default, the application only accepts manual overrides for events within 5 days in the past (configurable).
Configuration¶
Set the threshold in your routine.toml:
Examples¶
If today is January 15th and past_event_threshold_days = 5:
| Date | Can Override? |
|---|---|
| Jan 9 | ❌ No (6 days ago) |
| Jan 10 | ✅ Yes (5 days ago) |
| Jan 11-15 | ✅ Yes (within 5 days) |
| Jan 16+ | ✅ Yes (future dates) |
Why a Threshold?¶
The threshold prevents:
- Accidental historical changes - Old events being modified unintentionally
- Fairness calculation errors - Past assignments affecting current balance
- Data integrity issues - Conflicting historical records
Adjusting the Threshold
Increase the threshold if you frequently need to correct past assignments:
Impact on Future Assignments¶
When you manually override an assignment, the fairness algorithm recalculates future assignments to compensate.
Example Scenario¶
Initial schedule:
| Date | Assignment | Reason |
|---|---|---|
| Jan 15 | Parent A | Alternating |
| Jan 16 | Parent B | Alternating |
| Jan 17 | Parent A | Alternating |
| Jan 18 | Parent B | Alternating |
You manually change Jan 15 from Parent A to Parent B
Updated schedule:
| Date | Assignment | Reason |
|---|---|---|
| Jan 15 | Parent B | Override |
| Jan 16 | Parent A | Total Count (compensating) |
| Jan 17 | Parent B | Alternating |
| Jan 18 | Parent A | Alternating |
Notice how the algorithm adjusted Jan 16 to maintain balance.
Valid Override Formats¶
The application recognizes several event title formats:
Standard Format¶
Example: [Alice] 🌃👶Routine
Without Emojis¶
Example: [Bob] Routine
Case Sensitivity¶
Parent names are case-sensitive and must match your configuration exactly.
✅ Valid:
-[Alice] 🌃👶Routine ✅
- [Bob] 🌃👶Routine ✅
❌ Invalid:
- [alice] 🌃👶Routine ❌ (wrong case)
- [ALICE] 🌃👶Routine ❌ (wrong case)
- [AliceSmith] 🌃👶Routine ❌ (doesn't match)
Common Use Cases¶
Swapping Assignments¶
Scenario: Parent A can't do tonight, switch with Parent B
- Find tonight's event in Google Calendar
- Change title from
[Parent A]to[Parent B] - Find Parent B's next assignment
- Change it from
[Parent B]to[Parent A]
Result: The nights are swapped, and future assignments remain balanced.
Emergency Changes¶
Scenario: Parent is sick and unavailable for several days
- Edit each affected event's title to assign the other parent
- The algorithm will compensate in future assignments
- Once the parent is available again, normal scheduling resumes
Preference-Based Adjustments¶
Scenario: One parent prefers weekend duties
- Edit weekend events to assign the preferred parent
- The algorithm balances weekday assignments accordingly
Monitoring Overrides¶
In the Web Interface¶
Overridden assignments show a special decision reason:
- Reason: "Override"
- Indicator: Visible in hover tooltips (desktop) or tap-to-view (mobile)
In Google Calendar¶
Overridden events still appear as normal night routine events, but the description will show:
In Application Logs¶
Watch for log messages:
INF Processing calendar change notification
INF Override detected date=2024-01-15 old_parent=Parent1 new_parent=Parent2
INF Recalculating future assignments
Troubleshooting¶
Override Not Detected¶
Problem: You changed an event title but the web interface doesn't update
Possible causes:
- Webhook delay - Wait 30-60 seconds and refresh
- Outside threshold - Event is too far in the past
- Invalid format - Parent name doesn't match configuration
- Webhook not configured - Check application logs
Solutions:
- Click "Sync Now" in the web interface to force synchronization
- Check the event date vs.
past_event_threshold_days - Verify parent name matches configuration exactly (case-sensitive)
- Check logs for webhook errors
Wrong Parent Name¶
Problem: You mistyped the parent name
Solution:
- Edit the event again in Google Calendar
- Correct the parent name
- Save the change
- The override will be reprocessed
Future Assignments Didn't Recalculate¶
Problem: You made an override but future dates didn't change
Explanation:
The algorithm only recalculates when necessary to maintain fairness. If the override doesn't create an imbalance, future assignments may remain unchanged.
To force recalculation:
- Click "Sync Now" in the web interface
- Check the statistics page to verify balance
Past Event Beyond Threshold¶
Problem: Cannot override an event from last month
Solution:
- Increase
past_event_threshold_daysin configuration: - Restart the application
- Make the override in Google Calendar
- Consider: Do you really need to change historical data?
Best Practices¶
Use Overrides Sparingly¶
- Overrides should be for exceptions, not routine changes
- Frequent overrides can disrupt the fairness algorithm
- Consider adjusting configuration instead for permanent changes
Keep Titles Consistent¶
- Use the same format for all overrides
- Don't modify the emoji or "Routine" text
- Only change the parent name in brackets
Document Major Changes¶
- If you make significant overrides, note why in event descriptions
- This helps track unusual patterns in statistics
Verify After Overriding¶
- Check the web interface after overrides
- Review statistics to ensure balance is maintained
- Click "Sync Now" if changes don't appear
Communicate Changes¶
- If you override an assignment, inform the other parent
- Update any family calendars or notifications
- Ensure both parents are aware of the change
Alternative: Configuration Changes¶
For permanent changes, update configuration instead of using overrides:
Changing Availability¶
Instead of: Manually overriding every Wednesday
Do this:
Changing Frequency¶
Instead of: Manually spreading assignments further apart
Do this: