Files
calendula/.planning/STATE.md
Jean-Luc Makiola 024512959f feat(detail): full event read — surface every readable field (v0.6.0)
Round out the read-only model so the detail view shows everything
CalendarContract actually stores, ahead of write support.

Data layer:
- New domain types: Reminder, EventStatus, Availability, AccessLevel,
  AttendeeRelationship, AttendeeType; EventDetail gains reminders, status,
  availability, accessLevel, eventTimezone, selfStatus and Attendee gains
  relationship + type (all defaulted so existing callers compile)
- EventDetailProjection reads STATUS / AVAILABILITY / ACCESS_LEVEL /
  EVENT_TIMEZONE / SELF_ATTENDEE_STATUS; AttendeeProjection reads
  RELATIONSHIP + TYPE; new ReminderProjection queries CalendarContract.Reminders
- Mappers translate each provider integer code, guarding STATUS's null-vs-0
  ambiguity (0 == TENTATIVE) so an absent status reads as Confirmed
- Mapper unit tests cover every new column's codes

Detail UI:
- Status / availability / access chips under the title; cancelled also strikes
  the title through
- Reminders card with humanised lead times (plurals, DE + EN)
- Foreign-timezone card, shown only for timed events in a non-device zone
- Attendee role badges + the user's own "Your response: …" line
- http(s) URLs in the description are now tappable

URL field cut: CalendarContract exposes no Events.URL column (only the
CUSTOM_APP_URI app deep-link), so URLs are surfaced by linkifying the
description instead. Recorded in ROADMAP/CHANGELOG.

Version bumped to 0.6.0 / 6.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 08:56:40 +02:00

1.8 KiB

Calendula — Current State

Last updated: 2026-06-11

Status

Milestone: v0.6 — Full event read (complete) Phase: All V1 screens done and the read model is now complete — the detail view surfaces every readable CalendarContract field. Next up is a UI polish/QA pass before v1.0

Progress

  • Design spec written and committed (docs/superpowers/specs/2026-06-08-calendar-app-design.md)
  • V1 design decisions resolved (App name "Calendula", icon, seed color)
  • Plan 01 written and executed — foundation lands (theme, icon, i18n, Hilt, DataStore, CI green)
  • Plan 02 written and executed — data layer + permission flow + debug screen
  • Month view (S1) — 6-week grid, event dots, today marker, swipe nav, three states (replaces debug screen)
  • Week view (S2) — time schedule with overlap-resolved lanes, all-day strip, swipe nav, three states
  • Day view (S3) — single-column slice reusing the week layout
  • View-switcher (M1) wired — cycles Month ↔ Week ↔ Day
  • Event-detail screen (S4) — full-screen, humanized recurrence
  • Filter sheet (M3) — per-calendar visibility, grouped by account, persisted, applied centrally in the repository
  • Settings (M4) — appearance (theme, dynamic colour, week start), language (per-app locales), about
  • [~] Jump-to-date (M2) — cut from scope; "Today" half shipped in v0.5, date-picker dropped
  • Full event read (v0.6) — reminders, status, availability, access level, attendee role + self-response, foreign timezone, and linkified description URLs in the detail view; new domain enums + mapper unit tests. (A dedicated URL field was cut — no CalendarContract column backs it.)

Next

  1. UI polish / QA pass across all views before v1.0
  2. F-Droid release of v1.0