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>
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
| v0.3 | Month + Week + Day views, view switcher | complete |
|
||||
| v0.4 | Event Detail (S4) + humanized recurrence | complete |
|
||||
| v0.5 | Calendar filter (M3) + Settings (M4) | complete |
|
||||
| v0.6 | Full event read — surface every readable field | pending |
|
||||
| v0.6 | Full event read — surface every readable field | complete |
|
||||
| v1.0 | Polish pass, F-Droid release | pending |
|
||||
|
||||
Delivery ran ahead of the original table: Day view (S3) shipped in v0.3 and
|
||||
@@ -30,9 +30,13 @@ columns we don't yet read/display:
|
||||
- **Attendee extras** — role (required / optional / organizer) + the user's own
|
||||
`SELF_ATTENDEE_STATUS`
|
||||
- **Timezone** (`EVENT_TIMEZONE`) — shown only when it differs from the device zone
|
||||
- **URL** — tappable link card
|
||||
- **URL** — ~~tappable link card~~ **cut**: `CalendarContract` exposes no
|
||||
`Events.URL` column (only `CUSTOM_APP_URI`, an originating-app deep-link).
|
||||
URLs are instead surfaced by linkifying the description text
|
||||
- **Access level / class** (private / confidential) — small chip (optional, trivial)
|
||||
|
||||
All of the above shipped in v0.6.0 (2026-06-11).
|
||||
|
||||
Deliberately out of v0.6:
|
||||
- Recurrence exception / modified-occurrence badges — `Instances` already
|
||||
resolves correct per-occurrence times for display; this only matters for
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
# Calendula — Current State
|
||||
|
||||
*Last updated: 2026-06-10*
|
||||
*Last updated: 2026-06-11*
|
||||
|
||||
## Status
|
||||
|
||||
**Milestone:** v0.5 — Calendar filter (M3) + Settings (M4) (complete)
|
||||
**Phase:** All V1 screens done. Jump-to-date (date-picker half of M2) cut from
|
||||
scope. Next up is v0.6 — full event read (surface every readable
|
||||
`CalendarContract` field) — then a polish/QA pass before v1.0
|
||||
**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
|
||||
|
||||
@@ -23,12 +23,12 @@ scope. Next up is v0.6 — full event read (surface every readable
|
||||
- [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.)
|
||||
|
||||
## Next
|
||||
|
||||
1. v0.6 — full event read: reminders, status, availability, attendee role +
|
||||
self-status, timezone (when it differs), URL, access level. Read the
|
||||
`CalendarContract` columns we don't yet pull and show them in the detail
|
||||
view. (Planned, not started — implement another day.)
|
||||
2. UI polish / QA pass across all views before v1.0
|
||||
3. F-Droid release of v1.0
|
||||
1. UI polish / QA pass across all views before v1.0
|
||||
2. F-Droid release of v1.0
|
||||
|
||||
Reference in New Issue
Block a user