6c7c8a4662
feat: PWA-Unterstützung und Mobile-Responsiveness
Scarriffle
2026-05-07 10:35:42 +02:00
528d63d7dd
feat: PWA-Unterstützung und Mobile-Responsiveness
Scarriffle
2026-05-07 10:35:42 +02:00
0aeb421970
fix: HA Update-Fallback auf delete+create wenn Integration nicht unterstützt HA's Google-Calendar-Integration unterstützt kein calendar/event/update und gibt 'not_supported: Calendar does not support event update' zurück. In dem Fall wird jetzt automatisch der Termin gelöscht und neu erstellt (beide Operationen werden von der Integration unterstützt). Der Termin bekommt dabei eine neue UID, aber für den User sieht es wie ein Update aus.
Scarriffle
2026-05-05 18:19:00 +02:00
23a18b0a20
fix: HA Update-Fallback auf delete+create wenn Integration nicht unterstützt HA's Google-Calendar-Integration unterstützt kein calendar/event/update und gibt 'not_supported: Calendar does not support event update' zurück. In dem Fall wird jetzt automatisch der Termin gelöscht und neu erstellt (beide Operationen werden von der Integration unterstützt). Der Termin bekommt dabei eine neue UID, aber für den User sieht es wie ein Update aus.
Guido Schmit
2026-05-05 18:19:00 +02:00
29fef6ea77
fix: Ganztägig-Termine zeigen End-Datum jetzt korrekt inklusive iCal speichert DTEND exklusiv (Tag NACH dem letzten Tag). Bisher führte das dazu, dass ein Termin mit Ende=18.08 nur bis zum 17.08 angezeigt wurde, obwohl der User 18.08 als letzten Tag erwartete. Fix: Im Date-Picker arbeiten wir jetzt mit inklusiven End-Daten ('endet am 18.08' = 18.08 ist letzter Tag) und konvertieren beim Speichern auf exklusiv (DTEND=19.08). Beim Laden umgekehrt: -1 Tag fürs Anzeigen im Picker. Betrifft: openEditEventModal, openCopyEditModal, Save-Handler.
Scarriffle
2026-05-05 18:16:56 +02:00
e7174770f3
fix: Ganztägig-Termine zeigen End-Datum jetzt korrekt inklusive iCal speichert DTEND exklusiv (Tag NACH dem letzten Tag). Bisher führte das dazu, dass ein Termin mit Ende=18.08 nur bis zum 17.08 angezeigt wurde, obwohl der User 18.08 als letzten Tag erwartete. Fix: Im Date-Picker arbeiten wir jetzt mit inklusiven End-Daten ('endet am 18.08' = 18.08 ist letzter Tag) und konvertieren beim Speichern auf exklusiv (DTEND=19.08). Beim Laden umgekehrt: -1 Tag fürs Anzeigen im Picker. Betrifft: openEditEventModal, openCopyEditModal, Save-Handler.
Guido Schmit
2026-05-05 18:16:56 +02:00
dd18a0b594
feat: 'Vor dem Kopieren bearbeiten' Checkbox im Kopieren-Popup Über der Kalenderliste im Kopieren-Menü gibt es jetzt eine Checkbox 'Vor dem Kopieren bearbeiten'. Wenn aktiviert und ein Ziel-Kalender geklickt wird, öffnet sich der Termin-erstellen-Dialog mit allen Daten des Quell-Termins vorausgefüllt (Titel, Datum, Ort, Beschreibung, Farbe, Wiederholung) und dem Ziel-Kalender vorausgewählt.
Scarriffle
2026-05-05 18:11:33 +02:00
c12f30cbbf
feat: 'Vor dem Kopieren bearbeiten' Checkbox im Kopieren-Popup Über der Kalenderliste im Kopieren-Menü gibt es jetzt eine Checkbox 'Vor dem Kopieren bearbeiten'. Wenn aktiviert und ein Ziel-Kalender geklickt wird, öffnet sich der Termin-erstellen-Dialog mit allen Daten des Quell-Termins vorausgefüllt (Titel, Datum, Ort, Beschreibung, Farbe, Wiederholung) und dem Ziel-Kalender vorausgewählt.
Guido Schmit
2026-05-05 18:11:33 +02:00
4aaf6672f7
fix: Quell-Kalender wird beim Kopieren ausgeblendet buildWritableCalendars excluded jetzt den Kalender, in dem das Event bereits ist – so kann man nicht mehr in denselben Kalender kopieren.
Scarriffle
2026-05-05 17:54:15 +02:00
da74e8dc78
fix: Quell-Kalender wird beim Kopieren ausgeblendet buildWritableCalendars excluded jetzt den Kalender, in dem das Event bereits ist – so kann man nicht mehr in denselben Kalender kopieren.
Guido Schmit
2026-05-05 17:54:15 +02:00
ac5996693f
fix: Termine in unchecked Kalendern erstellen + HA-Kalender als Kopier-Ziel - populateCalendarSelect: filtert jetzt nach !sidebar_hidden statt enabled. Unchecked (versteckte) Kalender bleiben so im Termin-erstellen-Dropdown verfügbar - buildWritableCalendars: HA-Kalender werden als Kopier-Ziele aufgeführt - copyEventToCalendar: routet HA-Ziele über /homeassistant/events Endpoint (vorher fielen sie in den CalDAV-Fallback)
Scarriffle
2026-05-05 17:46:12 +02:00
b1b08072e7
fix: Termine in unchecked Kalendern erstellen + HA-Kalender als Kopier-Ziel - populateCalendarSelect: filtert jetzt nach !sidebar_hidden statt enabled. Unchecked (versteckte) Kalender bleiben so im Termin-erstellen-Dropdown verfügbar - buildWritableCalendars: HA-Kalender werden als Kopier-Ziele aufgeführt - copyEventToCalendar: routet HA-Ziele über /homeassistant/events Endpoint (vorher fielen sie in den CalDAV-Fallback)
Guido Schmit
2026-05-05 17:46:12 +02:00
0e6672b909
fix: CalDAV-Events bekommen source-Feld – Kalenderfarbe-Patch wirkt sofort CalDAV-Events hatten bisher kein source-Feld gesetzt. applyCalendarColor filtert aber via ev.source !== 'caldav', sodass der Patch nie auf CalDAV-Events angewendet wurde – die Farbe blieb sichtbar bis F5. Jetzt wird source: 'caldav' beim Anreichern der Events gesetzt.
Scarriffle
2026-04-29 20:27:31 +02:00
b961cf94ef
fix: CalDAV-Events bekommen source-Feld – Kalenderfarbe-Patch wirkt sofort CalDAV-Events hatten bisher kein source-Feld gesetzt. applyCalendarColor filtert aber via ev.source !== 'caldav', sodass der Patch nie auf CalDAV-Events angewendet wurde – die Farbe blieb sichtbar bis F5. Jetzt wird source: 'caldav' beim Anreichern der Events gesetzt.
Guido Schmit
2026-04-29 20:27:31 +02:00
8d95dd0b97
fix: Termin-Änderungen (Farbe, Titel, etc.) sofort ohne Reload anzeigen Nach dem Speichern eines Termins wird das gecachte Event-Objekt direkt in-place gepatcht und die View neu gerendert. Vorher war die neue Farbe erst nach F5 sichtbar, weil zwar fetchAndRender(true) aufgerufen wurde, aber der Render-Pfad das Update nicht zuverlässig übernommen hat.
Scarriffle
2026-04-29 20:22:34 +02:00
dce9890bfa
fix: Termin-Änderungen (Farbe, Titel, etc.) sofort ohne Reload anzeigen Nach dem Speichern eines Termins wird das gecachte Event-Objekt direkt in-place gepatcht und die View neu gerendert. Vorher war die neue Farbe erst nach F5 sichtbar, weil zwar fetchAndRender(true) aufgerufen wurde, aber der Render-Pfad das Update nicht zuverlässig übernommen hat.
Guido Schmit
2026-04-29 20:22:34 +02:00
e99f91dcf3
feat: HA-Events über WebSocket API (calendar/event/delete und update) Manche HA-Integrationen registrieren nur den WebSocket-Handler, keinen Service-Call. Die HA-Web-UI nutzt deshalb den WebSocket-Pfad. Calendarr macht das jetzt auch: - _ha_ws_call: minimaler WebSocket-Client für eine einzelne Command - create: erst WS, dann Service-Call als Fallback - update: nur WS (Service-Call existiert oft nicht) - delete: nur WS (Service-Call existiert oft nicht) Neue Dependency: websocket-client==1.8.0
Scarriffle
2026-04-29 20:01:12 +02:00
98870ccfb3
feat: HA-Events über WebSocket API (calendar/event/delete und update) Manche HA-Integrationen registrieren nur den WebSocket-Handler, keinen Service-Call. Die HA-Web-UI nutzt deshalb den WebSocket-Pfad. Calendarr macht das jetzt auch: - _ha_ws_call: minimaler WebSocket-Client für eine einzelne Command - create: erst WS, dann Service-Call als Fallback - update: nur WS (Service-Call existiert oft nicht) - delete: nur WS (Service-Call existiert oft nicht) Neue Dependency: websocket-client==1.8.0
Guido Schmit
2026-04-29 20:01:12 +02:00
64f8b901dd
fix: HA Delete – mehrere Body-Formate ausprobieren HA's Service-Call-Schema akzeptiert je nach Version verschiedene Body-Shapes für entity_id. Wir probieren jetzt der Reihe nach: 1. entity_id als String 2. entity_id als Liste 3. target-Wrapper Wenn alle fehlschlagen, klare Anweisung zum HA-Developer-Tools-Test.
Scarriffle
2026-04-29 19:58:56 +02:00
1f010078d3
fix: HA Delete – mehrere Body-Formate ausprobieren HA's Service-Call-Schema akzeptiert je nach Version verschiedene Body-Shapes für entity_id. Wir probieren jetzt der Reihe nach: 1. entity_id als String 2. entity_id als Liste 3. target-Wrapper Wenn alle fehlschlagen, klare Anweisung zum HA-Developer-Tools-Test.
Guido Schmit
2026-04-29 19:58:56 +02:00
c61d7fd698
fix: HA Delete – Fallback auf REST DELETE und klarere Fehlermeldung calendar.delete_event schlägt mit 400 fehl, wenn die HA-Integration das Feature nicht unterstützt (z.B. Google-Calendar via HA hat nur CREATE_EVENT, kein DELETE/UPDATE). - Versucht erst Service-Call, dann REST DELETE als Fallback - Bei 400 wird der User aufgeklärt, dass die Integration vermutlich kein Löschen unterstützt
Scarriffle
2026-04-29 19:55:04 +02:00
80cde5aaee
fix: HA Delete – Fallback auf REST DELETE und klarere Fehlermeldung calendar.delete_event schlägt mit 400 fehl, wenn die HA-Integration das Feature nicht unterstützt (z.B. Google-Calendar via HA hat nur CREATE_EVENT, kein DELETE/UPDATE). - Versucht erst Service-Call, dann REST DELETE als Fallback - Bei 400 wird der User aufgeklärt, dass die Integration vermutlich kein Löschen unterstützt
Guido Schmit
2026-04-29 19:55:04 +02:00
b803d4bf4c
fix: HA Datetime-Format mit Timezone, leere Strings filtern, Debug-Logs - _ha_format_dt: Parst ISO-Datetime zu datetime-Objekt, emittiert ohne Millisekunden, MIT Timezone-Offset. Vorher landeten Termine am falschen Datum, weil das Frontend UTC schickt aber wir die Timezone gestrippt haben → HA hat als lokale Zeit interpretiert - Leere Strings werden nicht mehr in den Body aufgenommen (HA Validator könnte diese ablehnen) - Logging in create/delete/update für besseres Debugging der HA-Calls
Scarriffle
2026-04-29 19:50:52 +02:00
0ea0a530f6
fix: HA Datetime-Format mit Timezone, leere Strings filtern, Debug-Logs - _ha_format_dt: Parst ISO-Datetime zu datetime-Objekt, emittiert ohne Millisekunden, MIT Timezone-Offset. Vorher landeten Termine am falschen Datum, weil das Frontend UTC schickt aber wir die Timezone gestrippt haben → HA hat als lokale Zeit interpretiert - Leere Strings werden nicht mehr in den Body aufgenommen (HA Validator könnte diese ablehnen) - Logging in create/delete/update für besseres Debugging der HA-Calls
Guido Schmit
2026-04-29 19:50:52 +02:00