From Michiel's calendar user-testing session.
The calendar drive app (#101/#145) writes the shortnames day and all-day, and has no end-day property. The host's Calendar view (atomic-server CalendarView.tsx) reads the shared contract in @tomic/lib calendarFields (browser/lib/src/calendar-date.ts):
atomic-calendar-day: a civil date YYYY-MM-DD;
atomic-calendar-all-day: a boolean;
atomic-calendar-end-day: the inclusive last day;
atomic-calendar-notes.
Each can also carry an lt-google-calendar-property- prefix. Imported ranges are opt-in: only rows whose date column matches atomic-calendar-day get all-day and multi-day handling. So the app's all-day and multi-day events render as single-day events in the host view, which is also where the app's Month button hands off to.
Decision: fix the app, not the host. calendarFields is the shared contract other importers follow.
Fix:
- rename the app's
day → atomic-calendar-day and all-day → atomic-calendar-all-day;
- add
atomic-calendar-end-day (the inclusive last day, derived from Google's exclusive end);
- write the event description to
atomic-calendar-notes if the app imports one;
- release as app 0.1.1, since published modules are immutable;
- extend the e2e to open the host Calendar view and assert that a multi-day all-day event spans its days.
Existing installs are experimental test installs only, so there's no migration beyond a re-import.
From Michiel's calendar user-testing session.
The calendar drive app (#101/#145) writes the shortnames
dayandall-day, and has no end-day property. The host's Calendar view (atomic-serverCalendarView.tsx) reads the shared contract in@tomic/libcalendarFields(browser/lib/src/calendar-date.ts):atomic-calendar-day: a civil dateYYYY-MM-DD;atomic-calendar-all-day: a boolean;atomic-calendar-end-day: the inclusive last day;atomic-calendar-notes.Each can also carry an
lt-google-calendar-property-prefix. Imported ranges are opt-in: only rows whose date column matchesatomic-calendar-dayget all-day and multi-day handling. So the app's all-day and multi-day events render as single-day events in the host view, which is also where the app's Month button hands off to.Decision: fix the app, not the host.
calendarFieldsis the shared contract other importers follow.Fix:
day→atomic-calendar-dayandall-day→atomic-calendar-all-day;atomic-calendar-end-day(the inclusive last day, derived from Google's exclusive end);atomic-calendar-notesif the app imports one;Existing installs are experimental test installs only, so there's no migration beyond a re-import.