# Roadmap ## Foundation — current milestone - C++20 domain model and deterministic six-week month layout - Responsive, theme-native ANSI month view with keyboard navigation - Appointment focus, dense-day traversal, and full-frame detail reader - Validated add/edit/delete forms with confirmation and failure rollback - Guarded atomic `.ics` persistence, advisory locking, and round-trip tests - Bounded session undo/redo, exact external-change detection, and backup recovery - Meson build, Nix development shell, desktop entry, and Hyprland launcher - Seeded sample data when explicitly requested, never silent data mutation ## 0.1 — complete local calendar - Recurrence rules, exclusions, time zones, multi-day presentation - Search, agenda view, calendar toggles, import/export, configurable week start - Screen-reader-friendly linear view and full Unicode display-width handling ## 0.2 — durable cache and provider boundary - SQLite WAL cache and migration framework - Background job queue, immutable UI snapshots, observable sync status - Secret Service credentials and OAuth callback helper - Generic `SyncProvider` contract plus a fake provider test suite ## 0.3 — CalDAV - Discovery and incremental sync for Nextcloud and standards-compliant servers - ETag-aware writes, offline mutation queue, conflict UI - TLS and failure-path integration tests ## 0.4 — hosted providers - Google Calendar adapter with incremental synchronization - Microsoft 365 adapter over Microsoft Graph delta queries - Account/calendar management UI and per-calendar ANSI identity ## 1.0 — distribution quality - Stable configuration/data format and documented recovery procedures - Nomarchy package, Hyprland defaults, man page, shell completions - Performance budgets exercised against large and adversarial calendars - Fuzzed iCalendar parser, accessibility review, translations ## Quality gates Every milestone requires clean warning-enabled builds, unit and integration tests, sanitizer runs, terminal-state recovery after signals/errors, no network access without explicit account setup, and no loss of unknown calendar data.