- Fix RRULE BYDAY filtering for daily frequency events (Tether sync weekdays only) - Fix timezone transfer in recurring event expansion - Add comprehensive timezone-aware iCal generation - Add extensive test suite for recurrence and timezone functionality - Update dependencies and configuration examples - Implement cleanup logic for orphaned events - Add detailed import plan documentation This completes the core import functionality with proper timezone handling, RRULE parsing, and duplicate prevention mechanisms.
96 lines
3.2 KiB
TOML
96 lines
3.2 KiB
TOML
# CalDAV Configuration Example
|
|
# This file demonstrates how to configure CalDAV synchronization
|
|
# Copy and modify this example for your specific setup
|
|
|
|
# Source Server Configuration (e.g., Zoho Calendar)
|
|
[server]
|
|
# CalDAV server URL
|
|
url = "https://calendar.zoho.com/caldav/d82063f6ef084c8887a8694e661689fc/events/"
|
|
# Username for authentication
|
|
username = "your-email@domain.com"
|
|
# Password for authentication (use app-specific password)
|
|
password = "your-app-password"
|
|
# Whether to use HTTPS (recommended)
|
|
use_https = true
|
|
# Request timeout in seconds
|
|
timeout = 30
|
|
|
|
# Source Calendar Configuration
|
|
[calendar]
|
|
# Calendar name/path on the server
|
|
name = "caldav/d82063f6ef084c8887a8694e661689fc/events/"
|
|
# Calendar display name
|
|
display_name = "Work Calendar"
|
|
# Calendar color in hex format
|
|
color = "#4285F4"
|
|
# Default timezone for the calendar
|
|
timezone = "UTC"
|
|
# Whether this calendar is enabled for synchronization
|
|
enabled = true
|
|
|
|
# Synchronization Configuration
|
|
[sync]
|
|
# Synchronization interval in seconds (300 = 5 minutes)
|
|
interval = 300
|
|
# Whether to perform synchronization on startup
|
|
sync_on_startup = true
|
|
# Maximum number of retry attempts for failed operations
|
|
max_retries = 3
|
|
# Delay between retry attempts in seconds
|
|
retry_delay = 5
|
|
# Whether to delete local events that are missing on server
|
|
delete_missing = false
|
|
# Date range configuration
|
|
[sync.date_range]
|
|
# Number of days ahead to sync
|
|
days_ahead = 30
|
|
# Number of days in the past to sync
|
|
days_back = 30
|
|
# Whether to sync all events regardless of date
|
|
sync_all_events = false
|
|
|
|
# Optional filtering configuration
|
|
[filters]
|
|
# Keywords to filter events by (events containing any of these will be included)
|
|
keywords = ["work", "meeting", "project"]
|
|
# Keywords to exclude (events containing any of these will be excluded)
|
|
exclude_keywords = ["personal", "holiday", "cancelled"]
|
|
# Minimum event duration in minutes
|
|
min_duration_minutes = 5
|
|
# Maximum event duration in hours
|
|
max_duration_hours = 24
|
|
|
|
# Import Configuration (for unidirectional sync to target server)
|
|
[import]
|
|
# Target server configuration (e.g., Nextcloud)
|
|
[import.target_server]
|
|
# Nextcloud CalDAV URL
|
|
url = "https://your-nextcloud-domain.com/remote.php/dav/calendars/username/"
|
|
# Username for Nextcloud authentication
|
|
username = "your-nextcloud-username"
|
|
# Password for Nextcloud authentication (use app-specific password)
|
|
password = "your-nextcloud-app-password"
|
|
# Whether to use HTTPS (recommended)
|
|
use_https = true
|
|
# Request timeout in seconds
|
|
timeout = 30
|
|
|
|
# Target calendar configuration
|
|
[import.target_calendar]
|
|
# Target calendar name
|
|
name = "Imported-Zoho-Events"
|
|
# Target calendar display name (optional - will be discovered from server if not specified)
|
|
display_name = ""
|
|
# Target calendar color (optional - will be discovered from server if not specified)
|
|
color = ""
|
|
# Target calendar timezone (optional - will be discovered from server if not specified)
|
|
timezone = ""
|
|
# Whether this calendar is enabled for import
|
|
enabled = true
|
|
|
|
# Import behavior settings
|
|
overwrite_existing = true # Source always wins - overwrite target events
|
|
delete_missing = false # Don't delete events missing from source
|
|
|
|
batch_size = 50 # Number of events to process in each batch
|
|
create_target_calendar = true # Create target calendar if it doesn't exist
|