What's new
Timezone-aware CalDAV event handling — calrs now extracts and respects the timezone embedded in your CalDAV events (e.g., DTSTART;TZID=Europe/Paris:...), converting them to your host timezone before computing availability. Previously, all event times were treated as-is, causing miscalculations when your calendar events lived in a different timezone than your server.
Example
An event at 10:00 America/New_York now correctly blocks 16:00 for a Europe/Paris host — instead of incorrectly blocking 10:00.
Details
- TZID extracted from iCal DTSTART/DTEND during sync and stored in
events.timezone - All availability computations (slot picker, booking conflicts, group scheduling, troubleshoot timeline) convert event times to the host's timezone
- RRULE expansion happens in the event's own timezone, then converted — correct across DST transitions
- Fully backward-compatible: pre-existing events with no timezone are treated as host-local
- Invalid or unrecognized timezone strings gracefully degrade (no conversion)
- 12 new unit tests for timezone extraction and conversion
Files changed
| File | Change |
|---|---|
src/utils.rs
| New extract_vevent_tzid() + convert_event_to_tz() + 12 tests
|
src/commands/sync.rs
| Populate timezone column during CLI sync
|
src/web/mod.rs
| Web sync + all busy-time queries now timezone-aware |
src/commands/event_type.rs
| CLI slot computation with timezone conversion |
src/commands/booking.rs
| CLI booking conflict check with timezone conversion |
CHANGELOG.md
| v0.9.0 entry |
Cargo.toml
| Version bump to 0.9.0 |
Full changelog: https://github.com/olivierlambert/calrs/blob/main/CHANGELOG.md