adcbed6e029a5749f5d968153f5a6a976021f4ec
M3 — calendar filter: the navigation drawer now hosts the calendar list inline (grouped by account, colour swatch + checkbox per calendar). Hidden calendars are persisted app-side and filtered centrally in the repository, so month/week/day re-filter live the moment a checkbox flips. Drawer trimmed to Today, the calendar filter, and Settings, with leading icons and a clear title/section type scale; the stubbed jump-to-date entry (M2) was removed. M4 — settings: full-screen destination with appearance (theme System/Light/ Dark, Material You dynamic colour auto-disabled < API 31, week start Auto/Mon/ Sun), language (per-app locales via AppCompat, persisted to API 29), and an about section (version, licence, source link). Theme is driven by one activity-scoped settings source so changes apply app-wide at once. Week start now drives the month grid and week view; Auto follows the locale. Also: - default view switched from month to week - Settings screen handles system back (was closing the app) - fix pre-existing NonObservableLocale/LocalContextConfigurationRead lint errors in EventDetailScreen so CI lint is green again - versionName/versionCode bumped to 0.5.0 / 5 Tests: repository hidden-filter (incl. live re-emit), SettingsPrefs round-trip + week-start resolution, filter grouping. lint + unit tests + assembleDebug green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Calendula
A modern Material 3 Expressive calendar app for Android.
Calendula is named after the flower of the same name, whose name comes from
the Latin kalendae — the first day of the month — the same root as the
word "calendar". Calendula reads from Android's built-in CalendarContract,
so any calendar source synced to your device (CalDAV via DAVx5, Google,
local, WebCal subscriptions, ...) is shown.
Features (V1)
- Month, Week, and Day views
- Read-only event details (write support comes in V2)
- Multi-calendar visibility toggle
- Material You Dynamic Color (Android 12+)
- Light/Dark theme follows system
- German + English UI
Building
Requires Android SDK 36 and JDK 17. The Gradle wrapper is checked in, so no host Gradle install is needed:
# Build debug APK
./gradlew assembleDebug
# Run unit tests
./gradlew test
# Run lint
./gradlew lint
If your default JDK is something other than 17, set JAVA_HOME explicitly:
JAVA_HOME=/path/to/jdk-17 ./gradlew assembleDebug
License
MIT — Jean-Luc Makiola, 2026