d0aa6fda084562bdd50f37c6322cb33786901073
This commit resolves a significant bug where weekly recurring events with multiple selected days (BYDAY parameter) were only displaying the first 2 chronologically selected days instead of all selected days. ## Root Cause: The `next_weekday_occurrence` function was designed for single-occurrence processing, causing it to: - Find the first matching weekday in the current week - Return immediately, skipping subsequent selected days - Repeat this pattern across weeks, showing only the same first day repeatedly ## Solution: - **New Function**: `generate_weekly_byday_occurrences()` handles multiple days per week - **Week-by-Week Processing**: Generates events for ALL selected weekdays in each interval - **Comprehensive Logic**: Properly handles INTERVAL, COUNT, UNTIL, and EXDATE constraints - **Performance Optimized**: More efficient than single-occurrence iteration ## Technical Details: - Replaced linear occurrence processing with specialized weekly BYDAY handler - Added comprehensive debug logging for troubleshooting - Maintains full RFC 5545 RRULE compliance - Preserves existing functionality for non-BYDAY weekly events ## Expected Result: Users creating weekly recurring events with multiple days (e.g., Mon/Wed/Fri/Sat) will now see events appear on ALL selected days in each week interval, not just the first two. Example: "Every week on Mon, Wed, Fri, Sat" now correctly generates 4 events per week instead of just Monday events. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Calendar App
A full-stack calendar application built with Rust, featuring a Yew frontend and Axum backend with CalDAV integration.
Features
- Interactive calendar interface
- Event creation and management
- CalDAV server integration
- User authentication with JWT
- iCal format support
- Weekly recurrence patterns
- Responsive web design
Architecture
- Frontend: Yew (Rust WebAssembly)
- Backend: Axum (Rust async web framework)
- Shared Models: RFC 5545-compliant VEvent structures
- Protocol: CalDAV for calendar synchronization
- Database: SQLite (via migrations)
- Build Tool: Trunk for frontend bundling
Getting Started
Prerequisites
- Rust (latest stable version)
- Trunk (
cargo install trunk)
Development
-
Start the backend server:
cd backend cargo run -
Start the frontend development server:
cd frontend trunk serve -
Open your browser to
http://localhost:8080
Building for Production
cd frontend
trunk build --release
Project Structure
This is a Cargo workspace with the following structure:
frontend/- Yew frontend applicationsrc/- Frontend source codeindex.html- HTML templatestyles.css- CSS stylesTrunk.toml- Trunk build configuration
backend/- Axum backend servercalendar-models/- Shared RFC 5545 VEvent modelsmigrations/- Database schema migrations
Description
Languages
Rust
76.9%
CSS
22.4%
JavaScript
0.4%
Dockerfile
0.2%
HTML
0.1%