Skip to content

calternal-dav

CalDAV projection over Daily note Log entries.

The provider owns persistence and user isolation. This crate handles only protocol data and never opens a path in the data directory. DAV XML requests use one iterative budget before recursive parsers (#785, DESIGN §21), shared by the virtual collections and the Files adapter.

Source: crates/calternal-dav/src/lib.rs

Module Summary
areas Stable, path-safe identities for the Log entry area calendar projection.
files RFC 4918 class 1 and class 2 access to a User’s Home.
protocol Virtual DAV collections.
reminders iCalendar VTODO resources for Markdown Tasks.
pub struct JournalEvent

A projected Log entry. The block ID is permanent; the ETag changes with the date or canonical line, so a move at the same time cannot be missed.

Fields

  • pub date: String
  • pub entry: LogEntry
  • pub note_url: Option<String>: A stable linked Note deeplink, when the Log entry has such a Note.
  • pub alarms: Vec<String>: Raw folded VALARM components that the Markdown Log line cannot model. The Notes provider stores these beside the block identity in frontmatter.

Implements: Clone, Debug, PartialEq, Eq

pub fn uid(&self) -> Option<String>

No doc comment.

pub fn etag(&self) -> String

No doc comment.

pub fn icalendar(&self) -> Option<String>

The persisted IANA zone is included in the wire value. Legacy lines without a zone remain floating rather than guessing an instant.

Source: crates/calternal-dav/src/lib.rs:26

pub fn parse_journal_icalendar(body: &str) -> Result<JournalEvent, &'static str>

Reject data that cannot round trip through one Log line. The detailed error lets the DAV layer distinguish malformed data from valid CalDAV components and properties that this projection cannot represent.

Source: crates/calternal-dav/src/lib.rs:220