- New built-in classes Event and Contact (schema 65.37), plus a
Calendar View view type alongside table/list/gallery, backed by a new
fixed month-grid calendar-view component in components/views.cljs
reusing the existing scheduled/deadline properties.
- New worker/handler/caldav.cljs: a deliberately-scoped CalDAV
(VEVENT/VTODO) + CardDAV (VCARD) client against a single Nextcloud
calendar/addressbook collection, with its own minimal iCalendar/vCard
encoder-decoder and namespace-agnostic multistatus XML extraction
(no external ical/rrule/xml dependency exists in this project).
- RRULE <-> :logseq.property.repeat/* translation covers only the
`plus` (advance-from-scheduled) repeat mode with a bare FREQ(;INTERVAL)
rule -- dotted-plus/double-plus and anything with BYDAY/COUNT/UNTIL
are left untranslated on purpose rather than mistranslated.
- Credentials live in the platform keychain (save-secret-text!), never
in the graph. Sync runs Node-only, every 15 minutes per open repo,
started/stopped alongside the repo's lifecycle in db_core.cljs.
Conflicts are last-write-wins via ETag: a 412 on push is skipped and
retried after the next pull refreshes the stored ETag.