When a recurring event has a modified occurrence, the calendar was showing both the original and modified versions. This happened because the code didn't properly handle RECURRENCE-ID exceptions in iCal data.
Changes:
- Modified extractScheduleEventsInRange() to collect exception events first and filter them from recurring patterns
- Updated expandEventOccurrences() to skip dates that have exceptions
- Applied same fix to extractScheduleEvents() for proper date range filtering
Fixes issue where modified recurring events appeared twice in the UI.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add sticky mobile date selector with year and month dropdowns
- Hide existing calendar on mobile screens
- Display selected values with 年/月 suffixes
- Improve mobile user experience for date navigation
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>