- Single system splash (core-splashscreen) kept on screen until the first
events load (StartupState), then reveals the ready app — removes the
two-stage 'icon then title' splash and the laggy half-loaded entry
- Month scrolling: dropped per-row BoxWithConstraints (measured grid width once
via onSizeChanged) and resolve bar colours once during packing instead of
every recomposition → much smoother scroll
- Serialize all event loads behind a Mutex and skip redundant state writes so
scroll-triggered month loads no longer pile up / thrash the UI
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Month view now draws multi-day events as continuous bars (lane packing,
per-week column span clipped at week boundaries, +N overflow) instead of a
chip on every day; events bucketed per week once + memoized packing for
smooth scrolling
- Startup: core-splashscreen covers the window from frame 0 (no warm-start
flash); the in-app splash stays until the first events finish loading (loading
starts behind the splash via an early-obtained CalendarViewModel + ready flow),
so you no longer enter a laggy app
- Background load shows a small spinner in the top bar (removed the linear bar)
- Week/Day titles wrap to two smaller lines (no more truncation)
- Event detail opens with a slide+fade animation
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>