Skip to content

feat: add CalDAV server support for ProtonMail calendar [FaaFyfxR9WAQrL7FcAgEHJvztd8cVMxvjHRS55rw1nwH] - #352

Closed
waterWang wants to merge 1 commit into
emersion:masterfrom
waterWang:feat/caldav-support
Closed

feat: add CalDAV server support for ProtonMail calendar [FaaFyfxR9WAQrL7FcAgEHJvztd8cVMxvjHRS55rw1nwH]#352
waterWang wants to merge 1 commit into
emersion:masterfrom
waterWang:feat/caldav-support

Conversation

@waterWang

Copy link
Copy Markdown

Summary

Adds CalDAV server support for ProtonMail calendar, allowing users to sync their ProtonMail calendar events with any CalDAV-compatible client (e.g., Thunderbird, macOS Calendar, GNOME Evolution).

Changes

caldav/caldav.go (new)

  • Full CalDAV backend implementation implementing the caldav.Backend interface from go-webdav
  • Supports: PROPFIND, REPORT (calendar-query, calendar-multiget), GET, PUT (create/update), DELETE
  • Calendar event decryption/decoding from ProtonMail encrypted calendar cards
  • Event caching for performance

protonmail/calendar.go (updated)

  • Added missing CalendarEvent fields: StartTime, EndTime, UID, etc.
  • Added CalendarEventCard decryption (Read method) with cleartext, signed, and encrypted card support
  • Added CRUD methods: GetCalendarEvent, CreateCalendarEvent, UpdateCalendarEvent, DeleteCalendarEvent

cmd/hydroxide/main.go (updated)

  • Added caldav command
  • Added CalDAV support to serve command
  • Added -caldav-host, -caldav-port, -disable-caldav flags

Related

Closes #207, Closes #340

BountyHub: https://bountyhub.dev/bounty/81479fc7-ca8b-40aa-a117-8a01277e12b0

This was referenced Jul 26, 2026
@emersion

Copy link
Copy Markdown
Owner

Original issue has been closed: there is no bounty for this anymore.

@emersion emersion closed this Jul 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CalDAV support CalDAV support

2 participants