Manual Overrides¶
You can manually override night routine assignments in two ways:
- Edit calendar event titles directly in Google Calendar to swap between parents
- Assign a babysitter via the web interface to delegate the night to a named babysitter
Both methods lock the assignment as an override and trigger recalculation of future assignments to maintain fairness.
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
- Web Interface - Babysitter assignments made through the assignment details modal
- Database Update - The internal assignment is updated to match
- Fairness Recalculation - Future assignments are recalculated to maintain balance
Making a Manual Override via Google Calendar¶
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
Assigning a Babysitter via the Web Interface¶
You can also override an assignment by assigning a babysitter directly through the web interface.
Step 1: Open the Assignment Details¶
- Open the Night Routine web interface
- Click on any assignment in the calendar grid
- The assignment details modal will open
Step 2: Set the Babysitter¶
- In the assignment details modal, find the babysitter input field
- Enter the babysitter's name (e.g., "Dawn")
- Click the "Set Babysitter" button
Step 3: What Happens¶
The application will:
- Update the assignment's caregiver type to
babysitter - Store the babysitter name
- Lock the assignment as an override (🔒)
- Update the Google Calendar event with
[BabysitterName] 🌃👶Routinetitle and babysitter description - Recalculate future parent assignments to maintain fairness
Removing a Babysitter Assignment¶
To revert a babysitter assignment back to normal parent scheduling:
- Click on the babysitter assignment (shown with 🔒 icon)
- Click "Unlock Event" in the modal that appears
- The assignment will be recalculated using the fairness algorithm
Babysitter vs Parent Fairness
Babysitter assignments are completely excluded from parent fairness calculations. When a babysitter is assigned, the fairness algorithm treats that date as fixed and only recalculates non-override dates.
Calendar Event Format¶
Both parent and babysitter events use the same title format in Google Calendar:
- Parent event:
[ParentName] 🌃👶Routine - Babysitter event:
[BabysitterName] 🌃👶Routine
The difference is in the event description. Babysitter events will show:
While parent events show:
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:
- Parent overrides: Reason shows "Override", with 🔒 icon
- Babysitter assignments: Displayed with slate/gray background, babysitter name visible, with 🔒 icon
- Indicator: Visible in hover tooltips (desktop) or tap-to-view (mobile)
In Google Calendar¶
Overridden parent events still appear as normal night routine events, but the description will show:
Babysitter events use the same title format:
With description:
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: