Commit Graph

  • c62b3df33a fix: Kalenderquelle als Tooltip statt inline (Namen nicht mehr abgeschnitten) Scarriffle 2026-05-31 17:25:47 +02:00
  • 8d2f487607 feat: flache sortierbare Kalenderliste (Drag&Drop) + Fixes Scarriffle 2026-05-31 17:23:28 +02:00
  • c7185a128e fix: Import-500 bei doppelten UIDs, Picker-UI & Settings-URL-State Scarriffle 2026-05-31 17:15:17 +02:00
  • 8abeefcb5a feat: Gruppen-Sichtbarkeit in Einstellungen + "Mit dir geteilt"-Sektion + Import-Fehler Scarriffle 2026-05-31 17:02:03 +02:00
  • 06ba9c2bb1 feat: Gruppen-Sichtbarkeit – genau ein designierter Kalender pro Person Scarriffle 2026-05-31 16:57:42 +02:00
  • 479da29bc4 fix: Gruppen-Mitgliederliste sauber ausrichten (Checkbox links, Name links) Scarriffle 2026-05-31 16:47:58 +02:00
  • f018f33f69 fix: JS/CSS immer revalidieren (no-cache) + Version v24 Scarriffle 2026-05-31 16:42:21 +02:00
  • e8a13ba33c feat: Gruppen im Web-Frontend + Gruppenkalender in /local/calendars Scarriffle 2026-05-31 16:37:08 +02:00
  • 8d2a697f8b feat: Web-Frontend – Sharing, iCal Import/Export, Ersteller & Privat-Flag Scarriffle 2026-05-31 16:30:47 +02:00
  • 32268a18b2 feat: Kalender-Sharing, Gruppen, iCal Import/Export & Ersteller (Server) Scarriffle 2026-05-31 16:05:18 +02:00
  • 362cc7212c fix(version): Sidebar-Copyright wird jetzt auch aus version.js befuellt Scarriffle 2026-05-19 10:22:13 +02:00
  • 275e5a2ae0 fix: unaufgeloeste Merge-Konflikt-Marker aus i18n/calendar/week/css entfernt Scarriffle 2026-05-19 10:18:49 +02:00
  • f102f02cb9 fix(version): Tab-Titel + Impressum dynamisch aus version.js Scarriffle 2026-05-19 10:12:32 +02:00
  • 43575f9042 fix(theme): Defaults weiss-auf-schwarz + Kontrast-Sicherheitsbremse Scarriffle 2026-05-19 10:06:12 +02:00
  • fd7562966a fix(settings): Schrift-/Linien-/Hintergrundfarbe — Live-Vorschau + Hex ohne '#' Scarriffle 2026-05-19 09:57:40 +02:00
  • 8f9eafe561 feat(settings): Schriftfarbe, Linienfarbe und Hintergrundfarbe per Color-Picker Scarriffle 2026-05-19 09:49:45 +02:00
  • d3fa591bef merge: beta into master Scarriffle 2026-05-19 09:35:15 +02:00
  • 254adfa12a ui: Event-Popup-Aktionen modernisiert — kompakte Icon-Toolbar im Header Scarriffle 2026-05-11 09:10:07 +02:00
  • dc1cb4b57d fix: Popup-Action-Icons riesig, "copy" als Text — Cache-Robustheit Scarriffle 2026-05-11 08:54:20 +02:00
  • baa7e4c064 ui: Event-Popup neu strukturiert — Titel volle Breite, Actions im Footer Scarriffle 2026-05-11 08:24:48 +02:00
  • 1d6acceafc ui: Event-Popup-Aktionsbuttons polieren Scarriffle 2026-05-11 08:08:12 +02:00
  • 9013f57d02 feat(ui): Buttons im modernen Pill-Stil + Plus-Icon fixen Scarriffle 2026-05-11 07:56:13 +02:00
  • 199a65e2a5 fix: Caching auf max 2 h reduzieren Scarriffle 2026-05-11 07:44:25 +02:00
  • 3152c744a0 feat: URL-State – Reload erhält View und Datum statt auf heute zu springen Scarriffle 2026-05-10 13:15:28 +02:00
  • ba86092cc8 fix: Wochenansicht – ganztägige Termine spannen sich nicht mehr über zwei Tage Scarriffle 2026-05-10 11:01:13 +02:00
  • e744b1829e fix: Impressum – Open Home Foundation statt Home Assistant Foundation Scarriffle 2026-05-09 18:03:47 +02:00
  • 50c19c7999 fix: Impressum – Open Home Foundation statt Home Assistant Foundation Scarriffle 2026-05-09 18:03:47 +02:00
  • f09b5e7c48 fix: Impressum – Datenspeicherungsabschnitt korrigiert Scarriffle 2026-05-09 17:54:31 +02:00
  • 05e55b3326 fix: Impressum – Datenspeicherungsabschnitt korrigiert Scarriffle 2026-05-09 17:54:31 +02:00
  • 8a34618453 fix: Monatskürzel ~4px (≈1mm) nach rechts verschoben Scarriffle 2026-05-09 17:17:36 +02:00
  • 74ebf6465d fix: Monatskürzel ~4px (≈1mm) nach rechts verschoben Guido Schmit 2026-05-09 17:17:36 +02:00
  • 64d499647d fix: Stufenförmige Monatsgrenze – auch waagerechte Linie unter Vormonats-Tagen Scarriffle 2026-05-09 17:12:57 +02:00
  • 87ebc22d17 fix: Stufenförmige Monatsgrenze – auch waagerechte Linie unter Vormonats-Tagen Guido Schmit 2026-05-09 17:12:57 +02:00
  • b120d9d430 fix: Monatswechsel-Markierung – Linien über Events, mehr Abstand, immer waagerecht Scarriffle 2026-05-09 17:08:17 +02:00
  • 496d4e5745 fix: Monatswechsel-Markierung – Linien über Events, mehr Abstand, immer waagerecht Guido Schmit 2026-05-09 17:08:17 +02:00
  • 371678aac4 feat: Monatswechsel-Markierung in Monatsansicht Scarriffle 2026-05-09 16:49:52 +02:00
  • 006c1f994c feat: Monatswechsel-Markierung in Monatsansicht Guido Schmit 2026-05-09 16:49:52 +02:00
  • 6503d18637 fix(pwa): Layout berücksichtigt iOS-Safe-Area auch im Hauptbereich Scarriffle 2026-05-07 20:01:48 +02:00
  • 15b6c90b11 fix(pwa): Layout berücksichtigt iOS-Safe-Area auch im Hauptbereich Scarriffle 2026-05-07 20:01:48 +02:00
  • ebe250ca01 fix: Plus-Icon symmetrisch + Service-Worker Network-First für HTML Scarriffle 2026-05-07 19:49:48 +02:00
  • e52299fc08 fix: Plus-Icon symmetrisch + Service-Worker Network-First für HTML Scarriffle 2026-05-07 19:49:48 +02:00
  • f4bcdf458b fix(mobile): zweizeiliger Titel, kompaktes Event-Popup, keine Uhrzeit in Monatszelle Scarriffle 2026-05-07 19:40:20 +02:00
  • e7247d2ee1 fix(mobile): zweizeiliger Titel, kompaktes Event-Popup, keine Uhrzeit in Monatszelle Scarriffle 2026-05-07 19:40:20 +02:00
  • e0a61b7368 feat(mobile): Heute-Button im Topbar + runder FAB für Termin-Erstellen Scarriffle 2026-05-07 19:31:17 +02:00
  • 15388e5806 feat(mobile): Heute-Button im Topbar + runder FAB für Termin-Erstellen Scarriffle 2026-05-07 19:31:17 +02:00
  • 7cabfb10de perf: Event-Cache von ±8 Wochen auf ±10 Monate erweitern Scarriffle 2026-05-07 19:23:35 +02:00
  • 85d427f9b2 perf: Event-Cache von ±8 Wochen auf ±10 Monate erweitern Scarriffle 2026-05-07 19:23:35 +02:00
  • b9691ea209 feat(auth): "Angemeldet bleiben"-Checkbox auf Login-Screen Scarriffle 2026-05-07 19:17:26 +02:00
  • 2f8fed0600 feat(auth): "Angemeldet bleiben"-Checkbox auf Login-Screen Scarriffle 2026-05-07 19:17:26 +02:00
  • 49b1935a28 fix(mobile): Monatstitel sichtbar, KW-Bubble unten, Termine mit Text, Long-Press, Settings-Hamburger Scarriffle 2026-05-07 19:08:20 +02:00
  • 264c47fefd fix(mobile): Monatstitel sichtbar, KW-Bubble unten, Termine mit Text, Long-Press, Settings-Hamburger Scarriffle 2026-05-07 19:08:20 +02:00
  • 3d7779ae83 fix(mobile): Zoom blocken, Long-Press, KW-Bubble, Swipe-Nav, Safe-Area Scarriffle 2026-05-07 18:52:51 +02:00
  • fdf9af09cd fix(mobile): Zoom blocken, Long-Press, KW-Bubble, Swipe-Nav, Safe-Area Scarriffle 2026-05-07 18:52:51 +02:00
  • 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
  • d942b82e1d feat: HA-Termine erstellen über calendar.create_event Service - POST /api/homeassistant/events Endpoint mit calendar.create_event - Frontend: HA-Termine erstellen statt 'nicht unterstützt' Toast - Datetime-Format an HA-Konvention angepasst: 'YYYY-MM-DD HH:MM:SS' (Space-Separator, ohne Timezone) - _ha_format_dt Helper für ISO → HA Datetime-Konvertierung Scarriffle 2026-04-29 19:07:02 +02:00
  • 7047f55cf7 feat: HA-Termine erstellen über calendar.create_event Service - POST /api/homeassistant/events Endpoint mit calendar.create_event - Frontend: HA-Termine erstellen statt 'nicht unterstützt' Toast - Datetime-Format an HA-Konvention angepasst: 'YYYY-MM-DD HH:MM:SS' (Space-Separator, ohne Timezone) - _ha_format_dt Helper für ISO → HA Datetime-Konvertierung Guido Schmit 2026-04-29 19:07:02 +02:00
  • a700bc5350 fix: HA-Event-Update Fallback auf delete+create calendar.update_event existiert erst ab HA 2024.6. Wenn der Service nicht verfügbar ist (400), wird stattdessen delete_event + create_event verwendet. Funktioniert mit HA 2022.5+. Scarriffle 2026-04-29 18:54:33 +02:00
  • d859e969d0 fix: HA-Event-Update Fallback auf delete+create calendar.update_event existiert erst ab HA 2024.6. Wenn der Service nicht verfügbar ist (400), wird stattdessen delete_event + create_event verwendet. Funktioniert mit HA 2022.5+. Guido Schmit 2026-04-29 18:54:33 +02:00
  • 9ae247c7c5 fix: HA update_event – bessere Fehlermeldung mit JSON-Response-Details Liest message-Feld aus HA JSON-Response und loggt den Request-Body für Debugging Scarriffle 2026-04-29 18:52:32 +02:00
  • f970276b91 fix: HA update_event – bessere Fehlermeldung mit JSON-Response-Details Liest message-Feld aus HA JSON-Response und loggt den Request-Body für Debugging Guido Schmit 2026-04-29 18:52:32 +02:00
  • 4b6839f1ff fix: HA Service-Call Parameter-Format korrigiert - update_event: start_date_time/end_date_time statt dtstart/dtend - Ganztägig: start_date/end_date statt dtstart/dtend - Datetime-Werte als ISO-String mit Timezone statt space-separated - Bessere Fehlermeldungen: HA-Response-Body wird im Error angezeigt Scarriffle 2026-04-29 18:50:00 +02:00
  • 4964dcf7f3 fix: HA Service-Call Parameter-Format korrigiert - update_event: start_date_time/end_date_time statt dtstart/dtend - Ganztägig: start_date/end_date statt dtstart/dtend - Datetime-Werte als ISO-String mit Timezone statt space-separated - Bessere Fehlermeldungen: HA-Response-Body wird im Error angezeigt Guido Schmit 2026-04-29 18:50:00 +02:00
  • aee9689d46 fix: HA-Events über Service-Call API statt nicht-existierender REST-Endpoints PUT/DELETE /api/calendars/{entity_id}/{uid} existieren nicht in HA. Stattdessen: POST /api/services/calendar/update_event und POST /api/services/calendar/delete_event (HA 2023.x+) Scarriffle 2026-04-29 18:45:24 +02:00
  • 86fa07d18c fix: HA-Events über Service-Call API statt nicht-existierender REST-Endpoints PUT/DELETE /api/calendars/{entity_id}/{uid} existieren nicht in HA. Stattdessen: POST /api/services/calendar/update_event und POST /api/services/calendar/delete_event (HA 2023.x+) Guido Schmit 2026-04-29 18:45:24 +02:00
  • 3351263c85 fix: HA-Event-Update URL-Encoding und Popup-Überlappung bei Lösch-Dialog - HA Update/Delete: UID wird URL-encoded (@ → %40), Delete mit Fallback auf Service-Call API für ältere HA-Versionen - Lösch-Dialog: Event-Popup wird geschlossen BEVOR der Bestätigungsdialog erscheint, kein Überlappen mehr Scarriffle 2026-04-29 18:38:43 +02:00
  • 59f53b5524 fix: HA-Event-Update URL-Encoding und Popup-Überlappung bei Lösch-Dialog - HA Update/Delete: UID wird URL-encoded (@ → %40), Delete mit Fallback auf Service-Call API für ältere HA-Versionen - Lösch-Dialog: Event-Popup wird geschlossen BEVOR der Bestätigungsdialog erscheint, kein Überlappen mehr Guido Schmit 2026-04-29 18:38:43 +02:00
  • 20e98e660a fix: HA-Events bearbeitbar, Selected≠Today Styling, Serien-Löschung - HA-Events: Update/Delete-Endpoints via HA REST API implementiert - HA read-only Guard entfernt, stattdessen korrekte API-Anbindung - Selected-Day: Outline-Ring statt gefüllter Kreis (Today bleibt gefüllt) - Serien-Löschung: RECURRENCE-ID aus CalDAV-Events erkennen, damit expandierte Serientermine als recurring markiert werden und der Lösch-Dialog Einzel-/Serienlöschung anbietet Scarriffle 2026-04-29 18:31:58 +02:00
  • e5265b3694 fix: HA-Events bearbeitbar, Selected≠Today Styling, Serien-Löschung - HA-Events: Update/Delete-Endpoints via HA REST API implementiert - HA read-only Guard entfernt, stattdessen korrekte API-Anbindung - Selected-Day: Outline-Ring statt gefüllter Kreis (Today bleibt gefüllt) - Serien-Löschung: RECURRENCE-ID aus CalDAV-Events erkennen, damit expandierte Serientermine als recurring markiert werden und der Lösch-Dialog Einzel-/Serienlöschung anbietet Guido Schmit 2026-04-29 18:31:58 +02:00
  • 134b238dea fix: CalDAV-Update DTSTART-Fehler und HA-Events read-only - caldav_client: del+add statt direkter Zuweisung bei VEVENT-Properties (behebt "DTSTART MUST appear exactly once" Validierungsfehler) - HA-Events als read-only behandeln (kein Bearbeiten/Löschen im Popup) - [object Object] Toast behoben: HA-Events fallen nicht mehr in CalDAV-Pfad Scarriffle 2026-04-29 18:21:56 +02:00
  • 3e204d3355 fix: CalDAV-Update DTSTART-Fehler und HA-Events read-only - caldav_client: del+add statt direkter Zuweisung bei VEVENT-Properties (behebt "DTSTART MUST appear exactly once" Validierungsfehler) - HA-Events als read-only behandeln (kein Bearbeiten/Löschen im Popup) - [object Object] Toast behoben: HA-Events fallen nicht mehr in CalDAV-Pfad Guido Schmit 2026-04-29 18:21:56 +02:00
  • d4ea097831 fix: Runde-2-Fixes – Monatsauswahl, CalDAV-Update, Lösch-Dialog, EXDATE - Monatsansicht: selectedDate von currentDate getrennt, Klick verschiebt View nicht mehr - Selected-Day Styling: weißer Text auf Primary-Hintergrund statt nur Textfarbe - Kontextmenü: --bg-surface statt fehlendem --bg-card - CalDAV Update/Delete: parent Calendar-Objekt übergeben (behebt NoneType-Fehler) - HA-Kalender im Kalender-Selektor ergänzt - Browser-confirm() durch styled Modal-Dialog ersetzt mit Serie/Einzeln-Option - EXDATE-Support: einzelne Vorkommen wiederkehrender Termine löschen (lokal + CalDAV) - Fehlende i18n-Keys für Lösch-Dialog ergänzt (DE + EN) Scarriffle 2026-04-29 18:13:12 +02:00
  • 1638c9f631 fix: Runde-2-Fixes – Monatsauswahl, CalDAV-Update, Lösch-Dialog, EXDATE - Monatsansicht: selectedDate von currentDate getrennt, Klick verschiebt View nicht mehr - Selected-Day Styling: weißer Text auf Primary-Hintergrund statt nur Textfarbe - Kontextmenü: --bg-surface statt fehlendem --bg-card - CalDAV Update/Delete: parent Calendar-Objekt übergeben (behebt NoneType-Fehler) - HA-Kalender im Kalender-Selektor ergänzt - Browser-confirm() durch styled Modal-Dialog ersetzt mit Serie/Einzeln-Option - EXDATE-Support: einzelne Vorkommen wiederkehrender Termine löschen (lokal + CalDAV) - Fehlende i18n-Keys für Lösch-Dialog ergänzt (DE + EN) Guido Schmit 2026-04-29 18:13:12 +02:00
  • e3984eb5cf feat: Datum-Validierung, Monatsauswahl, CalDAV-Fix, wiederkehrende Termine - End-Datum passt sich automatisch an wenn Start geändert wird (Duration bleibt erhalten) - Erstellen-Button nutzt den aktuell angesehenen Tag statt immer heute - Monatsansicht: Einzelklick = Tag auswählen, Doppelklick = Tagesansicht, Rechtsklick = Kontextmenü - CalDAV URL-Matching robuster (Normalisierung, Path-Fallback, calendar_id Parameter) - iCal-Abo-Termine sind nicht mehr bearbeitbar (Read-Only-Schutz) - Wiederkehrende Termine mit RRULE-Support (täglich/wöchentlich/monatlich/jährlich/benutzerdefiniert) Scarriffle 2026-04-29 17:49:03 +02:00
  • 013fb3dbc2 feat: Datum-Validierung, Monatsauswahl, CalDAV-Fix, wiederkehrende Termine - End-Datum passt sich automatisch an wenn Start geändert wird (Duration bleibt erhalten) - Erstellen-Button nutzt den aktuell angesehenen Tag statt immer heute - Monatsansicht: Einzelklick = Tag auswählen, Doppelklick = Tagesansicht, Rechtsklick = Kontextmenü - CalDAV URL-Matching robuster (Normalisierung, Path-Fallback, calendar_id Parameter) - iCal-Abo-Termine sind nicht mehr bearbeitbar (Read-Only-Schutz) - Wiederkehrende Termine mit RRULE-Support (täglich/wöchentlich/monatlich/jährlich/benutzerdefiniert) Guido Schmit 2026-04-29 17:49:03 +02:00
  • 58c7cbc38c feat(ha): OAuth Authorization-Code-Flow statt kaputtem Password-Grant Home Assistant unterstützt keinen Password-Grant — deshalb kam immer "Ungültige Anmeldedaten", egal was eingegeben wurde. Jetzt wird der Nutzer nach demselben Muster wie bei Google zur HA-Login-Seite weitergeleitet, meldet sich dort an und kommt zurück zu Calendarr. Änderungen: - Neuer POST /api/homeassistant/auth-url und GET /callback Endpoint - Account speichert client_id für spätere Token-Refreshes - Modal: "Benutzername/Passwort" → "Mit Home Assistant anmelden" - Frontend behandelt ?ha_connected=1 / ?ha_error=... nach Rückkehr - Version v1 → v2 Scarriffle 2026-04-24 12:57:38 +02:00
  • 9a59911156 feat(ha): OAuth Authorization-Code-Flow statt kaputtem Password-Grant Home Assistant unterstützt keinen Password-Grant — deshalb kam immer "Ungültige Anmeldedaten", egal was eingegeben wurde. Jetzt wird der Nutzer nach demselben Muster wie bei Google zur HA-Login-Seite weitergeleitet, meldet sich dort an und kommt zurück zu Calendarr. Änderungen: - Neuer POST /api/homeassistant/auth-url und GET /callback Endpoint - Account speichert client_id für spätere Token-Refreshes - Modal: "Benutzername/Passwort" → "Mit Home Assistant anmelden" - Frontend behandelt ?ha_connected=1 / ?ha_error=... nach Rückkehr - Version v1 → v2 Scarriffle 2026-04-24 12:57:38 +02:00
  • 3d4fdb3f8f fix: Versionsanzeige direkt im HTML statt per JS Vorher wurde die Version erst in initCalendar() gesetzt – wenn JS vorher fehlschlug, blieb der Text leer. Jetzt steht v1 direkt im HTML (Titel, Login-Button, Sidebar-Button, Impressum-Modal). Für künftige Releases: v1 → v2 in index.html + version.js ersetzen. Scarriffle 2026-04-24 11:47:55 +02:00