Commit Graph
4 Commits
Author SHA1 Message Date
nmemmertandClaude Sonnet 5.5 d3642a7736 iCloud: find calendars whatever way Apple writes their component list
build-container / build (push) Successful in 2m6s
Apple's listing was recognised as calendars but then discarded by the events/tasks filter.
Read component names from anywhere in the entry (any quoting or prefix), treat a missing or
empty list as events, and keep calendars as event calendars if every one would otherwise be
dropped. Errors now show each item with its component types.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 15:57:06 -04:00
nmemmertandClaude Sonnet 5.5 a4e0e24ab7 iCloud: recognise Apple's calendar entries; say what was seen when none match
build-container / build (push) Successful in 1m56s
Apple writes <calendar xmlns="urn:ietf:params:xml:ns:caldav"/> (attributes, no prefix), which the
previous pattern missed, so a valid sign-in reported "No calendars found". Match it with a
lookahead, check the HTTP status of the listing, and name what iCloud returned if nothing matches.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 15:46:24 -04:00
nmemmertandClaude Sonnet 5.5 916882e55d Tasks tab: NE Hub lists plus iCloud reminder lists where Apple exposes them
build-container / build (push) Successful in 1m43s
- Lists, quick add, due dates, notes, complete/reopen, delete; Home card for overdue/due today
- iCloud VTODO lists read and written over CalDAV (If-Match, edits patch the latest copy so
  priority/alarms survive); NE Hub lists work regardless
- Fix: text inside a nested VALARM was read as the task's / event's own description and then
  written back on edit; nested components are now skipped (regression tests added)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 15:41:59 -04:00
nmemmertandClaude Sonnet 5.5 5466506ffb Calendar: add events (NE Hub calendar + iCloud) and a Podcast tab
build-container / build (push) Successful in 1m55s
- Add, edit and delete events; month/agenda views open them on tap
- NE Hub calendar stored on the server and published as a private ICS subscribe link
- iCloud CalDAV read/write with an app-specific password (encrypted at rest,
  only *.icloud.com contacted, event addresses checked against the calendar)
- Edits patch the existing entry so alarms/attendees survive; writes use If-Match / If-None-Match
- Time zone definitions (VTIMEZONE) generated so other apps read times correctly
- Podcast tab (PODCAST_URL) alongside Podcast Admin

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 15:08:41 -04:00