From 03a390a1ff010e34be83f6e66f948c47bdd1f468 Mon Sep 17 00:00:00 2001 From: Breadway Date: Tue, 16 Jun 2026 17:07:06 +0800 Subject: [PATCH] docs: add CalDAV calendar-sync walkthrough The [calendar] config keys existed without explanation. Document enabling CalDAV sync end to end: finding the collection URL, creating an app password, the config block, and the best-effort sync behaviour. Co-Authored-By: Claude Opus 4.8 --- README.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/README.md b/README.md index 02ec8a2..b39ea3d 100644 --- a/README.md +++ b/README.md @@ -190,8 +190,41 @@ enabled = true # set false to never call Ollama [reminders] default_morning = "08:00" # what "tomorrow morning" resolves to missed_grace_minutes = 60 # how long after boot to still fire a missed reminder + +[calendar] +enabled = false # turn on CalDAV sync (see below) +url = "" # CalDAV calendar collection URL +username = "" +password = "" # app password / token recommended ``` +### Calendar sync (CalDAV) + +When `[calendar].enabled = true`, reminders and dated notes are pushed to a +CalDAV calendar as events (tracked by `caldav_uid` on each note), so they show +up alongside the rest of your calendar. + +1. Find your calendar's **collection URL**. It's the per-calendar CalDAV path, + not the server root — e.g. Nextcloud: + `https://host/remote.php/dav/calendars///`. +2. Create an **app password** for breadpad (don't use your main password): + Nextcloud → Settings → Security → *Devices & sessions* → "Create new app + password". Most CalDAV servers have an equivalent. +3. Fill in `breadpad.toml` (or BOS Settings → breadpad → Calendar): + + ```toml + [calendar] + enabled = true + url = "https://host/remote.php/dav/calendars/me/breadpad/" + username = "me" + password = "xxxx-xxxx-xxxx-xxxx" + ``` +4. Restart breadpad. New dated/reminder notes sync up; the `caldav_uid` field + links each note to its event so updates and deletes stay in step. + +If the server is unreachable, breadpad logs a warning and keeps the note +locally — sync is best-effort and never blocks capture. + --- ## Usage