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>
43 lines
2.3 KiB
Markdown
43 lines
2.3 KiB
Markdown
# 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
|
|
|
|
- [x] Design spec written and committed (`docs/superpowers/specs/2026-06-08-calendar-app-design.md`)
|
|
- [x] V1 design decisions resolved (App name "Calendula", icon, seed color)
|
|
- [x] Plan 01 written and executed — foundation lands (theme, icon, i18n, Hilt, DataStore, CI green)
|
|
- [x] Plan 02 written and executed — data layer + permission flow + debug screen
|
|
- [x] Month view (S1) — 6-week grid, event dots, today marker, swipe nav, three states (replaces debug screen)
|
|
- [x] Week view (S2) — time schedule with overlap-resolved lanes, all-day strip, swipe nav, three states
|
|
- [x] Day view (S3) — single-column slice reusing the week layout
|
|
- [x] View-switcher (M1) wired — cycles Month ↔ Week ↔ Day
|
|
- [x] Event-detail screen (S4) — full-screen, humanized recurrence
|
|
- [x] Filter sheet (M3) — per-calendar visibility, grouped by account, persisted, applied centrally in the repository
|
|
- [x] 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
|
|
- [x] 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.)
|
|
|
|
- [x] 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_LEVEL` → `canModifyContents`, 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
|