CardDAV Contacts Integration
This release adds comprehensive CardDAV support for contacts with multi-account management and multi-value fields.
New Features
CardDAV Multi-Account Sync
- Connect multiple CardDAV servers (Nextcloud, iCloud, Radicale, Baikal) simultaneously
- 8 new API endpoints for account management under
/api/v1/contacts/cardav/ - Per-addressbook enable/disable via checkboxes
- Test connections before saving
- Manual sync trigger per account
- Automatic addressbook discovery and refresh
Multi-Value Contact Fields
- Multiple phone numbers, email addresses, and physical addresses per contact
- Each entry has a label (mobile, work, home, etc.), value, and optional "primary" flag
- Atomic transaction support with replacement semantics on update
- Backward compatible with existing single-field contacts
- Full validation with length limits and format checks
Technical Details
- New service:
server/services/cardav-sync.js - New router:
server/routes/cardav.js - Extended router:
server/routes/contacts.js(multi-value support) - Database tables:
carddav_accounts,carddav_addressbook_selection,contact_phones,contact_emails,contact_addresses - 109 tests across 20 test suites (all passing)
- Full OpenAPI documentation
Related
- Pull Request: #122
- Migration: Automatic via
server/db.js(Migration 30)
Full Changelog: https://github.com/ulsklyc/oikos/blob/main/CHANGELOG.md#0450---2026-05-04