Files
calendula/.planning/STATE.md
Jean-Luc Makiola 9529f19c60 feat(write): event delete + WRITE_CALENDAR foundation (v1.1)
First slice of milestone 2 (write support), per the new plan in
docs/superpowers/plans/2026-06-11-03-write-support.md:

- Delete from the event detail screen with confirmation; recurring events
  choose "only this event" (cancelled exception via CONTENT_EXCEPTION_URI,
  series survives) or "all events in the series" (Events-row delete)
- WRITE_CALENDAR in the manifest; onboarding requests read+write in one
  system dialog but only read gates the app — declining write keeps it
  usable read-only. v1.0 installs get a contextual write request on their
  first delete
- CALENDAR_ACCESS_LEVEL is read into CalendarSource.canModifyContents;
  read-only calendars (WebCal, birthdays, …) show no write actions. The
  no-op placeholder Edit button is removed until edit ships (v1.3)
- Onboarding copy drops the now-false "read-only" claim (DE+EN)
- Tests: repository delete delegation/error propagation, access-level
  mapping; FakeCalendarDataSource grows write ops

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 12:55:15 +02:00

2.3 KiB

Calendula — Current State

Last updated: 2026-06-11

Status

Milestone: v2.0 — Write support (milestone 2, in progress) Phase: v1.0.0 shipped 2026-06-11. Milestone 2 is planned in four slices (docs/superpowers/plans/2026-06-11-03-write-support.md); slice v1.1 (write foundation + delete) is implemented and awaiting release.

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.)

  • v1.1 write foundation — WRITE_CALENDAR (onboarding asks READ+WRITE, only READ gates; contextual upgrade for v1.0 installs), read-only-calendar detection (CALENDAR_ACCESS_LEVELcanModifyContents, actions hidden for WebCal/birthday calendars), delete from the detail screen (recurring: "only this event" via cancelled exception / "all events in the series"), repository + mapper tests

Next

  1. Cut v1.1 release (changelog entry is staged under [Unreleased])
  2. v1.2 — create event: form screen, FAB, default-calendar pref, insertEvent
  3. v1.0.0 — keep monitoring the F-Droid build/publish