feat: add recurrence and time zone support

This commit is contained in:
2026-07-17 21:52:02 +01:00
parent 22c6399056
commit c19098004e
18 changed files with 2321 additions and 132 deletions

View File

@@ -35,11 +35,16 @@ Run the tests with `meson test -C build --print-errorlogs`. Nocal reads
positional argument. `--demo` adds a few unsaved sample appointments and
`--print` emits a non-interactive frame.
Nocal will not rewrite a calendar containing iCalendar data this version
cannot preserve, such as recurrence rules, alarms, attendees, or `TZID`
parameters. The calendar remains browsable, while mutation attempts explain
that it is read-only. This guard prevents a local edit from silently discarding
unknown data until those features are represented by the domain model.
Nocal expands and safely round-trips a focused iCalendar recurrence subset:
daily, weekly, monthly, and yearly rules with interval, count or until, common
weekly/monthly/yearly selectors, `EXDATE`, floating times, UTC, and system IANA
`TZID` names. Recurring instances are individually navigable; edit and delete
clearly operate on the entire series.
Calendars containing features this version cannot preserve—such as `RDATE`,
detached recurrence overrides, ordinal `BYDAY`, embedded `VTIMEZONE`
definitions, alarms, or attendees—remain browsable but read-only. This guard
prevents a local edit from silently discarding unknown data.
Every replacement checks that the source has not changed since it was loaded.
If another Nocal instance or an external editor changes the file, the mutation