1
0
Fork
You've already forked caldavtui
0
No description
  • Go 99.7%
  • Shell 0.3%
Find a file
2026年06月28日 12:23:18 +01:00
notes
spikes/overlay
testdata
.gitignore
.golangci.yml
basedelegate.go
cache_test.go Formatting: wrap lines with golines 2026年06月19日 18:21:34 +01:00
caldav.go Formatting: wrap lines with golines 2026年06月19日 18:21:34 +01:00
calendaragenda.go Improve clarity of key handling/definitions eg global vs local to views 2026年06月28日 12:23:18 +01:00
calendarlistscreen.go Improve clarity of key handling/definitions eg global vs local to views 2026年06月28日 12:23:18 +01:00
calendarmonth.go Improve clarity of key handling/definitions eg global vs local to views 2026年06月28日 12:23:18 +01:00
calendarscreen.go Improve clarity of key handling/definitions eg global vs local to views 2026年06月28日 12:23:18 +01:00
calevents.go Introduce newMeasuredForm() to be used with all forms 2026年06月22日 09:39:06 +01:00
calevents_test.go Formatting: wrap lines with golines 2026年06月19日 18:21:34 +01:00
config.go Adjust form theming 2026年06月28日 11:29:38 +01:00
creds-setup Update to use test users/calendars 2026年06月19日 10:18:31 +01:00
datetime.go Event add resourcePath, rawComponent, clone helper 2026年06月17日 11:48:57 +01:00
event.go Formatting: wrap lines with golines 2026年06月19日 18:21:34 +01:00
eventcreate.go Formatting: wrap lines with golines 2026年06月19日 18:21:34 +01:00
eventcreate_test.go Formatting: wrap lines with golines 2026年06月19日 18:21:34 +01:00
eventdelete.go Adjust form theming 2026年06月28日 11:29:38 +01:00
eventform.go Adjust form theming 2026年06月28日 11:29:38 +01:00
eventscreen.go Improve clarity of key handling/definitions eg global vs local to views 2026年06月28日 12:23:18 +01:00
form.go Form focus indicator styling 2026年06月25日 15:17:46 +01:00
go.mod Change app/command name in go.mod 2026年06月19日 10:18:14 +01:00
go.sum
hints.go Implement deletion, probably with bugs 2026年06月18日 17:23:51 +01:00
introscreen.go
keys.go Improve clarity of key handling/definitions eg global vs local to views 2026年06月28日 12:23:18 +01:00
main.go Clean up newEventForm reduce args 2026年06月25日 15:57:13 +01:00
monthview_test.go Formatting: wrap lines with golines 2026年06月19日 18:21:34 +01:00
README.md
theme.go Adjust form theming 2026年06月28日 11:29:38 +01:00
TODO.md Adjust form theming 2026年06月28日 11:29:38 +01:00
ui.go Improve clarity of key handling/definitions eg global vs local to views 2026年06月28日 12:23:18 +01:00

Relevant specs

The core spec you want is RFC 4791 (CalDAV, published 2007) — this is the foundational CalDAV standard and what everything is built on.

But realistically, for solid Apple/Google compatibility, you need to treat three RFCs as a bundle:

RFC What it is Why it matters
RFC 4791 CalDAV core The base spec — calendar collections, GET/PUT/DELETE of .ics files, REPORT queries
RFC 5545 iCalendar The data format CalDAV transports — VEVENT, VTODO, VTIMEZONE etc.
RFC 6638 CalDAV Scheduling Invite/response flow (iTIP over CalDAV) — Apple and Google both use this

RFC 4791 + RFC 5545 + RFC 6638 is your primary reading list.

A few other RFCs worth having open as reference:

  • RFC 7953 — iCalendar VALARM extensions (useful for reminders, which clients care about)
  • RFC 7809 — CalDAV Time Zones by Reference (replaces embedding full VTIMEZONE blobs — both Apple and Google support this)
  • RFC 6352 — CardDAV (not CalDAV, but you'll almost certainly implement both together)

Practical notes:

  • RFC 4791 is deliberately WebDAV-dependent — it extends RFC 4918 (WebDAV). You don't need to read all of 4918 deeply, but the PROPFIND/REPORT/MKCOL mechanics are essential.
  • Discovery is defined in RFC 6764 (using SRV/well-known URIs to find the server) — both Apple and Google use .well-known/caldav so implement this early or clients won't auto-configure.
  • Apple and Google both deviate from spec in minor ways (non-standard properties, quirky scheduling behaviour), but if RFC 4791 + 6638 compliance is solid, you'll handle 95% of what they throw at you.

Bottom line: pin your implementation to RFC 4791 as the authoritative spec, read RFC 5545 alongside it as the data layer, and add RFC 6638 for scheduling. Everything else is supplementary.

https://datatracker.ietf.org/doc/html/rfc4791

calDAV TUI