Add CalDAV support for calendar synchronization#316
Add CalDAV support for calendar synchronization#316kallal79 wants to merge 26 commits intoemersion:masterfrom
Conversation
…list support, also thunderbird support
This commit implements full CalDAV support to enable calendar synchronization with ProtonMail calendars, addressing issue emersion#207. Changes: - Added caldav/ package with complete CalDAV backend implementation - Integrated CalDAV server alongside existing CardDAV, SMTP, and IMAP - Extended ProtonMail API client with calendar operations support - Added calendar encryption/decryption using OpenPGP - Implemented CRUD operations for calendar events - Added notification support for calendar events Features: - Read calendar events from multiple ProtonMail calendars - Create and update calendar events - Delete calendar events - Support for recurring events and notifications - End-to-end encryption for calendar data - Tested with Evolution, Thunderbird, and KOrganizer Technical details: - CalDAV server listens on port 8081 by default - Uses shared and calendar-specific encryption keys - Proper handling of signed and encrypted event cards - Fixed CardDAV port configuration bug (was using caldav variables) - Updated go-webdav to v0.6.0 with CreateCalendar method - Compatible with standard CalDAV clients Bug fixes: - Fixed incorrect port variable usage in carddav command - Updated PutCalendarObject to return CalendarObject per new API - Added CreateCalendar stub (returns not supported error) Testing: Verified to work with: - GNOME Evolution - Mozilla Thunderbird - KDE KOrganizer Closes emersion#207
- Added comprehensive POC documentation - Included manual testing procedures - Documented architecture and implementation details - Added troubleshooting guide and verification checklist
- Replace nil context with context.TODO() in CalDAV backend - Fix tautological condition check for calProps map - Ensure proper code quality and linting compliance
|
HI @emersion , @zCri , @primalmotion , @yulqen Thanks! |
|
http://localhost:8081/caldav/[username]/calendars/ |
|
file:///C:/Users/USER/OneDrive/Desktop/issue%20no1/hydroxide/ |
freecompress-Screen.Recording.2025-11-06.064354.mp4 |
|
Sorry, I am not interested in reviewing/merging AI work. |
|
Hi @emersion, Thank you for the response. I understand your position regarding AI-generated contributions. Just to clarify: while I did use AI tools to assist with documentation formatting and linting, the core implementation—including CalDAV server setup, ProtonMail API integration, event CRUD logic, and CLI options—was manually developed and tested by me. I also built upon @zCri’s groundwork with full compatibility for go-webdav v0.6.0 and added comprehensive testing and encryption support. If there's any specific concern about the provenance or integrity of the code, I’m happy to walk through the commits, explain the logic, or even refactor sections to meet your standards. My goal is to contribute meaningfully to hydroxide and help advance calendar sync support for ProtonMail users. I respect your decision to close the PR, but if you're open to a manual review or partial merge of the non-AI-assisted portions, I’d be grateful for the opportunity. Thanks again for your time and for maintaining this important project. Best regards, @7908837174 |

Fixes #207 - This PR implements CalDAV support for hydroxide, enabling calendar synchronization with ProtonMail calendars. Features: CalDAV server on port 8081, calendar listing/retrieval, event CRUD operations, end-to-end encryption, ProtonMail API integration. Built upon @zCri work in PR #282 with go-webdav v0.6.0 compatibility and comprehensive documentation. Total: 10 files changed, 2,089 insertions.