Skip to content

v00.10.00 — Calendar / CalDAV demo + extracted Vaadin add-on (pre-ChronoGrid rebrand)

Latest

Choose a tag to compare

@svenruppert svenruppert released this 19 Jun 19:28
· 2 commits to main since this release
de36370

Historical note — This is the first tagged release, published before the ChronoGrid rebrand. The module names referenced below (calendar-caldav, calendar-component, caldav-demo) and the com.svenruppert.vaadin.calendar Maven namespace reflect the pre-rebrand state. From main (and v01.00.00 onwards) the artefacts ship under the ChronoGrid name + the com.svenruppert.chronogrid namespace; see docs/CHRONOGRID_EXTRACTION.md for the migration journey.


First tagged release of the Calendar / CalDAV companion code for the blog post — the demo grew into a reusable Vaadin Flow add-on along the way.

What's in this release

The project ships as a Maven reactor with three modules:

Module Coordinates Purpose
calendar-caldav com.svenruppert.vaadin.calendar:calendar-caldav:00.10.00 Headless CalDAV wire (PUT / GET / DELETE / REPORT / PROPFIND), iCalendar mapping (VEVENT + VTODO ↔ FullCalendar Entry), CalendarService façade with Result<T, CalDavError> boundary
calendar-component com.svenruppert.vaadin.calendar:calendar-component:00.10.00 Drop-in Vaadin Flow add-on: CalendarView + sub-components (navigation bar, status badges, settings/subscriptions/connections/event-editor dialogs), bundled CSS
demo (war) com.svenruppert:caldav-demo:00.10.00 The consuming application — jSentinel-secured, iCloud-showcase walkthrough, multi-server / multi-subscription, polished navigation strip + framed view

Highlights

  • Three integration seams for add-on consumers: CalendarStateStore (persistence), CalendarMessages (i18n), CalendarService (optional pre-built service). See README.mdUsing the calendar component in your own Vaadin app for the mount snippet.
  • Apple iCloud quick-connect preset shipped in CalDavProviderPreset.DEFAULTS — one-click discovery + auth + subscription.
  • Multi-server / multi-subscription model: each subscription remembers its owning server's credentials; CalendarService.fromConnections(...) fans out across all configured servers.
  • Per-subscription colour picker (HTML5 <input type=\"color\">) overrides the auto-palette per row.
  • Rolling N-days view (1–21 day window, slider-controlled) + custom Lumo-themed navigation bar; FullCalendar's built-in toolbar fully disabled.
  • Connection liveness: 15-second background probe, per-server status pills, automatic reconnect notification.

Verification numbers

  • 284 tests across the reactor (66 calendar-caldav + 5 calendar-component + 213 demo) — all green.
  • SpotBugs: 0 findings on each of the three modules.
  • Checkstyle: 0 violations on the two add-on modules.
  • Sources + Javadoc jars produced on every ./mvnw install.

Docs

  • README.md — top-level walkthrough, three CalDAV-backend options (testbench / iCloud / Radicale / custom), feature-by-feature tour.
  • calendar-caldav/README.md + calendar-component/README.md — consumer-side docs.
  • docs/CALENDAR_COMPONENT_EXTRACTION.md — post-hoc design rationale + journey.
  • docs/FEATURE_BACKLOG.md — parked post-freeze ideas (per-entry colour with calendar-stripe).

Out of scope for this release

  • Maven Central publish ceremony (configuration is wired; Sonatype-creds + GPG passphrase are interactive).
  • Per-entry colour with kalender-colour stripe (parked in the backlog).
  • Decoupling EntryMapper from org.vaadin.stefan:fullcalendar2 (would let calendar-caldav be truly Vaadin-transitive-free).

Quick start

./mvnw -DskipTests install                # build + install add-on jars to local repo
./start-caldav-dev-server.sh              # Terminal 1: in-process CalDAV testbench
./start-vaadin-demo.sh                    # Terminal 2: Vaadin demo
# http://localhost:8080 → use the bootstrap token printed to stdout