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 responsive container layout with mobile-first approach
- Implement mobile card component for better touch interaction
- Switch between table (desktop) and cards (mobile) at sm breakpoint
- Make header section responsive with stacked layout on mobile
- Enhance drawer with full-screen mobile support
- Add mobile-optimized filter controls
- Improve touch targets and spacing for mobile devices
- Fix global CSS button border issue for card styling
🤖 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>