forked from GitHubMirrors/silverbullet-icalendar
2.2 KiB
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_IANAmapping andresolveIanaNameintimezones.ts
- Write failing tests for
- Task: Implement UTC Offset Resolver using Intl
- Write failing tests for
getUtcOffsetMs - Implement
getUtcOffsetMsintimezones.ts
- Write failing tests for
- 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(mockingIntlif necessary) - Implement
resolveEventStartinicalendar.tsto handle local time ground truth
- Write failing tests for
- Task: Conductor - User Manual Verification 'Phase 2: Core Logic' (Protocol in workflow.md)
Phase 3: Features - Recurring Events & Filtering [checkpoint: ffaef28]
- Task: Integrate
rrulelibrary- Add
rruletodeno.jsonimports - Verify import works in a simple script
- Add
- Task: Implement Recurring Event Expansion
- Write failing tests for
expandRecurrences - Implement
expandRecurrencesinicalendar.ts
- Write failing tests for
- Task: Implement EXDATE support
- Write failing tests for EXDATE exclusion
- Update
expandRecurrencesto handleEXDATE
- 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
tzShiftis ignored/deprecated - Remove
tzShiftandhourShiftfromgetSourcesandfetchAndParseCalendar
- Write failing tests verifying
- Task: Add
syncWindowDaysconfiguration- Write failing tests for configurable expansion window
- Implement
syncWindowDaysin config and sync logic
- Task: Conductor - User Manual Verification 'Phase 4: Cleanup & Configuration' (Protocol in workflow.md)