Beim ersten Laden wird ein Fenster von ±8 Wochen um die aktuelle
Ansicht geholt. Wochenweise Navigation trifft danach den Cache
sofort (kein Spinner, kein Netzwerk). Nach echten Datenänderungen
(Event speichern/löschen, Sync, Konto-Änderungen) wird der Cache
invalidiert und neu geladen.
Month view now shows 5 weeks starting from the week containing
currentDate (not fixed to month boundaries), enabling views like
"mid-April to mid-May". Prev/Next buttons jump 4 weeks; mouse
wheel scrolls 1 week at a time with 500ms debounce.
Scrolling in month view was moving currentDate by 7 days, but the
grid always renders the complete month — so 4 scrolls were needed
before any visual change. Now each scroll step advances/retreats
by exactly one month (same as the prev/next buttons).
- Month view: Replaced day-strip+events-area with full-height column
divs (.month-col) so borders extend the full row height and clicking
anywhere in a day column (including below events) navigates to day view.
Events overlay uses pointer-events:none (pass-through) while span bars
and +N-more labels stay pointer-events:all.
- Scroll navigation: Changed wheel handler from 80ms debounce to 500ms
leading-edge throttle — one navigation per trackpad gesture.
- Custom date/time picker (date-picker.js): Dark calendar grid with
prev/next navigation, today/selected highlighting, and a CSS
scroll-snap time scroller (hours 0-23, minutes 0-59) matching the
app's primary color. Language-aware (month names, day headers via t()).
- Event modal datetime inputs replaced with hidden inputs + .dt-display
click targets that open the custom picker. setDtValue() helper keeps
hidden input and display label in sync.
- Month view: Multi-day events render as continuous Google Calendar-style
spanning bars across days/weeks using a greedy lane-packing algorithm.
Timed multi-day events no longer repeat per day.
- Mouse wheel / trackpad scrolls week-by-week in month view, day/week in
other views (debounced, prevents default page scroll).
- datetime-local/date inputs now use color-scheme:dark so the native
browser picker opens in dark mode; calendar icon styled to match.
- Contrast/hour-height selectors redesigned as connected segmented pill
controls instead of individual tiles.
- Hidden calendars list gains proper padding and separator lines.
- "Google Konten" settings panel renamed "Konten" and expanded to show
CalDAV, local calendars, iCal subscriptions, and Google accounts in
one unified panel with sync/disconnect actions.
- New i18n keys added for accounts panel in both de and en.