Commit Graph

8 Commits

Author SHA1 Message Date
efa0abbaed feat(detail): full-screen event detail (S4) with humanized recurrence
Some checks failed
CI / ci (push) Failing after 6m55s
Build and Release to F-Droid / ci (push) Successful in 7m48s
Build and Release to F-Droid / build-and-deploy (push) Successful in 9m40s
Tapping an event in the week/day timeline opens a full-screen detail
destination (MD3 list→detail, not a bottom sheet) overlaying the calendar
with a slide transition. One card per field (when, calendar, location,
description, attendees, recurrence) with leading icons; location taps open
a maps intent. Loading/Failure/Success throughout.

Recurrence is humanized from the RRULE — e.g. "Every week on Tue and Thu
until 31 Dec 2026" — covering FREQ/INTERVAL/BYDAY/UNTIL/COUNT with
abbreviated, italicised day names and localized list formatting, falling
back to a generic label for rules it can't render.

Also:
- fix: recurring events failed to open (series row stores DURATION, not
  DTEND, so the mapper dropped them as EventNotFound). The detail keeps
  them and shows the tapped occurrence's own times from Instances.
- feat: month day cell → opens the day view anchored to that date.
- build: add material-icons-extended (R8 strips unused icons in release).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 21:52:35 +02:00
6a90bade8a feat(ui): month card grid + week timeline, wire view switcher
Replace the throwaway debug screen with the first real calendar UI and a
functional Month <-> Week switcher, on Material 3 Expressive.

Month view (S1):
- Material 3 Expressive card-per-day grid; only the current month's weeks
  render (neighbouring days left blank)
- per-day event dots with "+N" overflow, today via primaryContainer
- spring-based press feedback from the active motion scheme
- swipe + drawer navigation, Loading/Failure/Success states

Week view (S2):
- vertical time schedule with overlap-resolved lanes (per-day clipping,
  midnight spanning, instant events)
- all-day / multi-day events as connected horizontal spans
- single scroll container (gutter + day columns stay aligned), columns
  bundled in a rounded container, noon-centred on load
- top section colour-shifts with the app bar on scroll; swipe navigation,
  three states

Shared / infra:
- CalendarHost holds the active view; RootScreen renders it post-permission
- ui/common building blocks: CalendarDrawer, CalendarFailure,
  ViewSwitcherPill, pastelize, observable locale, M3 Expressive slide
  transition (motionScheme fastSpatialSpec)
- unit tests for the week layout (lanes, clipping, all-day spans)
- build: compileSdk 37, material3 pinned to 1.5.0-alpha21 for Expressive

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 20:05:40 +02:00
b792ddc2f0 style: fix launcher icon scaling and centering, update AGP
All checks were successful
CI / ci (push) Successful in 9m58s
2026-06-08 20:30:40 +02:00
a826e82bdc build: add kotlinx-datetime, coroutines, turbine, hilt-nav-compose, lifecycle-compose 2026-06-08 17:32:45 +02:00
Jean-Luc Makiola
2cf2dafacd fix(deps): correct Compose BOM to 2026.05.01
The previously-declared 2026.06.00 is listed on
developer.android.com's BOM mapping page but is not yet published to
Google's Maven repository. Verified against maven-metadata.xml directly
that 2026.05.01 is the actual latest published BOM.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-08 15:31:52 +02:00
Jean-Luc Makiola
5e2cee1147 chore(gradle): drop orphaned kotlin-android plugin references
AGP 9.0+ removes the kotlin-android plugin requirement (handled
automatically by AGP itself once kotlin-compose is applied). Task 5
removed it from app/build.gradle.kts; this commit removes the
no-longer-consumed alias from the root build and version catalog.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-08 15:18:47 +02:00
Jean-Luc Makiola
89e89eb47e chore(gradle): add wrapper sha256 + parallel/caching flags
Code review on Task 4 flagged:
- distributionSha256Sum missing (F-Droid reproducibility concern)
- gradle.properties lacked org.gradle.parallel/caching (default off)
- inaccurate K2 attribution in a comment

SHA256 fetched live from downloads.gradle.org. Configuration cache
left commented for now until all plugins confirm AGP 9.1 compat.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-08 15:13:52 +02:00
Jean-Luc Makiola
df5a358b74 chore: add gradle wrapper + version catalog + root build
Bootstrapped Gradle 8.14 wrapper from HouseHoldKeaper, then upgraded
to 9.5.1 (required by AGP 9.1.1). All dependency versions verified as
latest stable on 2026-06-08, with Material 3 deliberately pinned to
1.5.0-alpha21 (Expressive APIs are not in any stable release yet).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-08 15:08:58 +02:00