- Created dedicated EventModal component in src/components/event_modal.rs
- Extracted modal logic and styling from calendar component for better separation
- Updated data flow to pass full CalendarEvent objects instead of strings
- Added PartialEq derive to CalendarEvent for component props
- Updated service layer to group events by CalendarEvent objects
- Enhanced event click handling to show detailed event information
- Modal displays title, description, location, start/end times, and status
- Maintained existing modal styling and user interaction patterns
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added click handlers to calendar days for user interaction
- Implemented selected day state tracking in calendar component
- Added CSS styling for selected days with green highlight
- Selected days show distinct visual feedback with borders and shadows
- Supports combination states (selected+today, selected+events)
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added full CalDAV integration to display real calendar events from Baikal server:
Backend changes:
- Added CalDAV client with iCalendar parsing and XML handling
- Created /api/calendar/events endpoint with authentication
- Fixed multiline regex patterns for namespace-prefixed XML tags
- Added proper calendar path discovery and event filtering
Frontend changes:
- Created CalendarService for API communication
- Updated calendar UI to display events as blue boxes with titles
- Added loading states and error handling
- Integrated real-time event fetching on calendar load
Now successfully displays 3 test events from the Baikal server with proper date formatting and responsive design.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added a comprehensive monthly calendar component with modern styling:
- Full monthly view with proper date calculations
- Current day highlighting and navigation
- Responsive design for all screen sizes
- Event indicator support for future integration
- Takes up most of screen space as requested
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Removed unused imports, fields, methods, and structs that were generating warnings during compilation.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Updated frontend to use BACKEND_API_URL environment variable at compile time with fallback to localhost. Added configuration to Trunk.toml and .env.example for development.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Restructure project with separate frontend/backend architecture
- Create dedicated backend with Axum, SQLite, JWT authentication
- Implement real API endpoints for register/login/verify
- Update frontend to use HTTP requests instead of mock auth
- Add bcrypt password hashing and secure token generation
- Separate Cargo.toml files for frontend and backend builds
- Fix Trunk compilation by isolating WASM-incompatible dependencies
- Create demo user in database for easy testing
- Both servers running: frontend (8081), backend (3000)
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add comprehensive authentication module with mock service
- Create login and registration components with form validation
- Implement protected routing with yew-router
- Add responsive UI styling with gradient design
- Enable JWT token persistence via localStorage
- Support demo credentials (demo/password) and flexible auth for development
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Features:
- Complete CalendarEvent struct with all iCal properties
- EventStatus and EventClass enums for proper typing
- CalDAVClient for server communication with:
- fetch_events() method using CalDAV REPORT queries
- discover_calendars() with intelligent path discovery
- Full iCal parsing using ical crate
- DateTime parsing with multiple format support
- XML response parsing with regex
Integration tests:
- Real server event fetching with calendar discovery
- iCal parsing validation with sample data
- DateTime parsing tests (UTC, local, date-only)
- Successful connection to configured calendar path
Dependencies added:
- regex crate for XML parsing
- Enhanced calendar module structure
Test results: ✓ All 7 tests pass
- Successfully connects to /calendars/test/ path
- Fetches 0 events (empty calendar, connection confirmed)
- No more 404 errors with improved discovery logic
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove #[ignore] attributes from CalDAV tests
- Update documentation to reflect tests run with `cargo test`
- Tests now validate CalDAV connectivity on every test run
- Ensures continuous integration of server authentication
- All 3 tests pass: unit test + 2 integration tests
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Updated base64 usage to new API (BASE64_STANDARD.encode)
- Added tokio dev dependency for async testing
- Created comprehensive integration tests:
- test_baikal_auth: Tests authentication with OPTIONS request
- test_propfind_calendars: Tests calendar discovery with PROPFIND
- Tests validate:
- HTTP Basic Auth with .env credentials
- DAV server capabilities detection
- CalDAV PROPFIND XML responses
- 207 Multi-Status handling
- Both tests pass successfully against Baikal server
- Tests marked as #[ignore] for CI/network isolation
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Multi-stage Dockerfile with rust:alpine and nginx:alpine
- Optimized for small container size (~20MB)
- Includes SPA routing support and gzip compression
- Health check for container monitoring
- .dockerignore to optimize build context
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Set up Cargo.toml with Yew dependencies
- Created main.rs entry point
- Added basic App component with counter functionality
- Included HTML template with styling
- Added Trunk.toml for build configuration
- Added .gitignore to exclude build artifacts
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>