TaskNotes 3.17.1¶
Bug Fixes¶
Critical Timezone Handling Fixes¶
This patch release resolves three critical timezone-related bugs that affected users in specific timezones, particularly those west of UTC (such as users in the Americas). These fixes ensure consistent calendar rendering and task interaction behavior across all timezones.
Completions Calendar Rendering (#322)¶
Fixed three critical timezone bugs in the completions calendar that caused visual misalignment for users in timezones west of UTC:
- Day Number Display: Corrected day numbers in the calendar grid to display accurately regardless of user timezone by replacing timezone-sensitive formatting with UTC-anchored date extraction
- Month Comparison Logic: Fixed current month highlighting logic that was mixing local and UTC date values, causing incorrect month boundary detection
- Calendar Navigation: Updated previous/next month navigation to use consistent UTC methods, preventing timezone drift when navigating between months
These fixes ensure the completions calendar visual representation aligns with the underlying UTC-anchored recurrence data for all users.
Advanced Calendar Drag-and-Drop Operations (#344)¶
Resolved a critical bug where all-day tasks would shift back by one day after dragging and dropping them in the Advanced Calendar view. This issue particularly affected users in timezones ahead of UTC.
Thanks to @trang-ngn for reporting this issue with clear reproduction steps.
Root Cause: The drag-and-drop system was using formatDateForStorage()
which applies UTC methods to Date objects provided by FullCalendar. For users in positive UTC offset timezones, this would cause the stored date to be one day earlier than the date shown in the UI.
Fixed Operations:
- All-day and timed event drag-and-drop (
handleEventDrop
) - External task drag-and-drop from outside the calendar (
handleExternalDrop
) - Modal-based task scheduling (
scheduleTask
) - Date selection task creation (
handleDateSelect
) - Timeblock creation and event resizing operations
- Event context menu date handling
The fix ensures that the date displayed in the calendar UI exactly matches the date that gets stored in the task data.
Task Completion Status Checks (#322)¶
Fixed incorrect completion status checks in recurring tasks caused by timezone-sensitive date formatting in getEffectiveTaskStatus()
.
Root Cause: The function was using timezone-sensitive date-fns format()
for completion date comparisons, causing completion status to be checked against the wrong date for users west of UTC (e.g., checking October 26 instead of October 27 for EDT users).
Solution: Replaced timezone-sensitive formatting with formatDateForStorage()
to ensure consistent UTC-anchored date strings that match the format used in complete_instances
.
This fix ensures recurring task completions are correctly identified regardless of user timezone, preventing tasks from incorrectly appearing as incomplete.
Technical Implementation¶
All fixes implement the established "UTC Anchor" principle for consistent timezone handling:
- Consistent use of UTC-anchored date operations for date-only comparisons
- Replacement of timezone-sensitive date formatting with UTC-based alternatives
- Proper separation of display dates (which can be timezone-sensitive) from storage dates (which must be timezone-neutral)