Resolved merge conflicts in HeaderNavigation.tsx to integrate GitHub link functionality with existing navigation structure.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added GitHub organization link (github.com/nbtca) to the right side of the header navigation using the provided SVG icon. The link opens in a new tab and maintains proper accessibility attributes.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add getCoverImage function in utils.ts to handle different cover image formats
- Update MarkdownPost.astro to use getCoverImage for consistent image handling
- Update MoreTile.astro to use getCoverImage and remove direct CA_LOGO_URL import
- Update preview.png
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace archive page with new blog page
- Update navigation links from /archive to /blog
- Extract CA logo and iCal URLs to constants
- Update references throughout codebase to use new constants
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add whitespace-pre-wrap CSS class to preserve line breaks and formatting in event descriptions while maintaining proper text wrapping.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Removed redundant useEffect that was causing a race condition where:
1. Page would load showing all events first
2. Then switch to month-filtered events after a delay
The issue was two competing useEffects:
- One for month filtering (extractScheduleEventsInRange)
- One for loading all events (extractScheduleEvents)
Now uses only one useEffect for both initial loading and month filtering,
ensuring consistent behavior on page load.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Removed redundant useEffect that was causing a race condition where:
1. Page would load showing all events first
2. Then switch to month-filtered events after a delay
The issue was two competing useEffects:
- One for month filtering (extractScheduleEventsInRange)
- One for loading all events (extractScheduleEvents)
Now uses only one useEffect for both initial loading and month filtering,
ensuring consistent behavior on page load.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
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>