b9e8778f8f01de59a87d70d1c032bc43ce822720
Resolves the same "Failed to fetch" cancellation issue that was occurring in the "modify single event in a series" flow by eliminating concurrent HTTP requests from the frontend. ## Problem: The RecurringEditAction::ThisEvent handler was making two concurrent requests: 1. UPDATE request via update_callback.emit() 2. CREATE request via create_callback.emit() This caused the same race condition and HTTP cancellation (~700-900ms) that we previously fixed in the "this_and_future" flow. ## Solution: - **Remove concurrent CREATE request** from frontend - **Use single UPDATE request** with "this_only" scope - **Backend handles both operations** atomically: 1. Add EXDATE to original series (exclude occurrence) 2. Create exception event with RECURRENCE-ID (user modifications) ## Implementation: - Frontend sends single request with occurrence_date and dragged times - Backend update_single_occurrence() already handled both operations - Added comprehensive RFC 5545 documentation for single occurrence modification - Cleaned up unused imports and variables ## Benefits: - No more HTTP request cancellation for single event modifications - Proper RFC 5545 EXDATE + RECURRENCE-ID exception handling - Atomic operations ensure data consistency - Matches the pattern used in this_and_future fix The "modify single event" drag operations now work reliably without network errors, completing the fix for all recurring event modification flows. 🤖 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%