Files
silverbullet-icalendar/conductor/tracks/timezone_rrule_20260218/plan.md

2.2 KiB

Implementation Plan: Proper Timezone Handling & Recurring Events

Phase 1: Foundation - Timezone Mapping & Resolver [checkpoint: b8bf269]

  • Task: Setup Timezone Map (WINDOWS_TO_IANA)
    • Write failing tests for resolveIanaName
    • Implement WINDOWS_TO_IANA mapping and resolveIanaName in timezones.ts
  • Task: Implement UTC Offset Resolver using Intl
    • Write failing tests for getUtcOffsetMs
    • Implement getUtcOffsetMs in timezones.ts
  • Task: Conductor - User Manual Verification 'Phase 1: Foundation' (Protocol in workflow.md)

Phase 2: Core Logic - Extraction & Shifting [checkpoint: 10a6db5]

  • Task: Fix Wall-Clock Extraction logic
    • Write failing tests for resolveEventStart (mocking Intl if necessary)
    • Implement resolveEventStart in icalendar.ts to handle local time ground truth
  • Task: Conductor - User Manual Verification 'Phase 2: Core Logic' (Protocol in workflow.md)

Phase 3: Features - Recurring Events & Filtering [checkpoint: ffaef28]

  • Task: Integrate rrule library
    • Add rrule to deno.json imports
    • Verify import works in a simple script
  • Task: Implement Recurring Event Expansion
    • Write failing tests for expandRecurrences
    • Implement expandRecurrences in icalendar.ts
  • Task: Implement EXDATE support
    • Write failing tests for EXDATE exclusion
    • Update expandRecurrences to handle EXDATE
  • Task: Implement Status Filtering
    • Write failing tests for filtering "CANCELLED" events
    • Update sync logic to filter based on iCalendar status
  • Task: Conductor - User Manual Verification 'Phase 3: Features' (Protocol in workflow.md)

Phase 4: Cleanup & Configuration [checkpoint: 533c240]

  • Task: Remove obsolete configuration
    • Write failing tests verifying tzShift is ignored/deprecated
    • Remove tzShift and hourShift from getSources and fetchAndParseCalendar
  • Task: Add syncWindowDays configuration
    • Write failing tests for configurable expansion window
    • Implement syncWindowDays in config and sync logic
  • Task: Conductor - User Manual Verification 'Phase 4: Cleanup & Configuration' (Protocol in workflow.md)