Commit Graph

22 Commits

Author SHA1 Message Date
33c1f0ab73 README hinzufügen 2026-03-27 14:52:33 +01:00
4f3db6142d Fix: Login case-insensitive, Settings zusammengeführt, SVG-Icon, Copyright einzeilig
- Login: Benutzername wird case-insensitiv verglichen (func.lower auf beiden Seiten)
- Benutzer anlegen: Username wird immer lowercase gespeichert
- Einstellungen: Panels "Darstellung", "Ansicht & Raster" und "Ausgeblendete Kalender" zu einem einzigen Panel zusammengeführt
- App-Icon: Emoji 📅 durch plattformunabhängiges Inline-SVG ersetzt
- Copyright: white-space:nowrap +   damit Zeile nie umbricht
2026-03-27 14:50:16 +01:00
c849f77651 Einstellungen: Vollbild-Seite, Kontrast, Stundenhöhe, KW-Anzeige
- Einstellungen von Modal-Popup auf Vollbild-Seite mit Seitennavigation umgestellt
- Schriftkontrast (4 Stufen) und Linienkontrast (4 Stufen) pro Benutzer gespeichert
- Stundenhöhe (40/60/80/100px) in Wochen-/Tagesansicht per Einstellung steuerbar
- Kalenderwoche in Monats- und Wochenansicht grösser dargestellt
- CSS-Variable --hour-h für dynamische Zeitraster-Höhe in week.js und app.css
- Backend: neue Felder text_contrast, line_contrast, hour_height in UserSettings
2026-03-27 10:43:39 +01:00
2128f07037 Login: Untertitel "das minimalistische Kalender Frontend" hinzufügen 2026-03-27 10:16:10 +01:00
9f39be8e33 Fix Impressum: Login-Button z-index + Google-Datenschutzhinweis
- Impressum-Modal z-index auf 1100 erhöht (war hinter Login-Screen versteckt)
- Hinweis zu Google-Daten hinzugefügt (ausserhalb CH, Google-Datenschutz gilt)
2026-03-27 10:10:13 +01:00
fa0a96994e Impressum-Popup: Copyright in Sidebar und Login-Seite hinzufügen
- © 2026 Scarriffleservices am unteren Rand der Sidebar (sticky)
- Gleicher Link auf der Login-Seite (unten mittig)
- Impressum-Modal: Anbieter, Datenspeicherung Schweiz, Haftungsausschluss, Kontakt
2026-03-27 10:06:31 +01:00
bad1ed500f Kalender-Sichtbarkeit persistent speichern + Sidebar-Overflow-Fix
- sidebar_hidden-Spalte zu calendars und google_calendars hinzugefügt
- Ausblenden-Button persistiert jetzt server-seitig (cross-device)
- Einblenden in Einstellungen schreibt sidebar_hidden=false zurück
- Sidebar: overflow-x hidden verhindert dass lange Namen den Button rausschieben
2026-03-27 10:02:05 +01:00
f9f5d8c4cb Fix: langer Kalendername überdeckt Ausblenden-Button in Sidebar 2026-03-27 09:51:18 +01:00
b867554e23 Google Kalender: individuelle Kalender in Sidebar anzeigen wie bei CalDAV
- GoogleCalendar-Modell hinzugefügt (pro Account, mit enabled/color/name)
- Kalender werden nach OAuth automatisch synchronisiert
- Sidebar zeigt individuelle Google-Kalender mit Checkbox, Farbpunkt und Ausblenden-Button
- Einstellungen: Google-Konten-Bereich mit Sync- und Trennen-Button
- Ausgeblendete Kalender-Liste zeigt auch Google-Kalender
- Event-Erstellung/Bearbeitung/Löschung nutzt GoogleCalendar-ID statt Account-ID
2026-03-27 09:45:10 +01:00
21d8ddfb7c Fix Google OAuth: email scope hinzufügen für korrekte Email-Anzeige 2026-03-27 09:30:36 +01:00
0ffb6e5c49 Google Calendar OAuth2 Integration + CalDAV-Kalender ausblenden statt löschen
- Google OAuth2 Flow: Admin konfiguriert Client-ID/Secret, User verbindet per Klick
- Google Calendar API v3: Events lesen, erstellen, bearbeiten, löschen
- GoogleAccount Model + google_router mit Token-Refresh
- Google-Events in Event-Pipeline integriert
- Frontend: Google Kalender in Sidebar, Dropdown, Event-CRUD-Routing
- CalDAV-Kalender: Ausblenden statt ganzes Konto löschen, Einblenden in Einstellungen
- Ausgeblendete Kalender Sektion in Einstellungen
2026-03-27 08:44:51 +01:00
cd46b45ec6 Lokale Kalender und iCal-URL-Abonnements
Neue Features:
- Lokale Kalender erstellen mit vollem Event-CRUD (in SQLite gespeichert)
- iCal-URLs abonnieren mit Auto-Refresh und lokalem Caching
- iCal-Events sind editierbar/löschbar (Änderungen als lokale Overrides)
- Sidebar zeigt alle 3 Kalendertypen mit Farbe, Umbenennen, Löschen
- Dropdown "Kalender hinzufügen" mit 3 Optionen (Lokal, CalDAV, iCal)
Backend: models.py (4 neue Tabellen), local_router.py, ical_router.py
Frontend: Neue Modals, erweiterte Sidebar, Source-basiertes Event-Routing
2026-03-27 07:39:41 +01:00
b2bc107d47 Einstellungen: native Color-Inputs durch Gradient-Colorpicker ersetzen
Primärfarbe, Akzentfarbe, Heutige-Tag-Farbe und Account-Farbe
verwenden jetzt den gleichen Dark-Style Gradient-Picker.
2026-03-26 19:41:17 +01:00
c0cbb22633 Gradient-Colorpicker im Dark-Style für Event- und Kalenderfarben
Feste Farb-Swatches durch den HSV-Gradient-Colorpicker ersetzt.
Neues Dark-Theme-CSS für den Picker passend zum Rest der App.
2026-03-26 19:35:08 +01:00
a1001bad68 Fix Avatar-Anzeige: Auth-Header bei Avatar-Requests mitsenden
Avatar-Bilder wurden per <img src="..."> geladen, was keinen Authorization-Header
mitsendet. Der Endpoint erfordert aber Auth, daher kam immer 401 zurück.
Jetzt werden alle Avatar-Requests per fetch() mit Bearer-Token geladen und als Blob-URL gesetzt.
2026-03-26 19:23:58 +01:00
3f3609c944 big update i guess 2026-03-26 18:55:15 +01:00
1bbabd6c4d UI-Verbesserungen: Favicon, Tab-Titel, Kalender umbenennen, Avatar-Crop, Farbpalette
- SVG-Favicon hinzugefügt
- Dynamischer Tab-Titel (z.B. "Calendarr - März 2026")
- Kalender per Doppelklick umbenennen (Backend + Frontend)
- Avatar-Anzeige im Topbar gefixt (onerror Fallback, robustes Laden)
- Avatar-Upload mit Cropper.js Bildausschnitt-Wahl
- Avatar-Limit auf 5 MB erhöht, Thumbnail auf 512px
- Farbpalette statt nativem Color-Picker für Kalenderfarben
2026-03-26 15:14:34 +01:00
77d6e20f86 Fix Avatar-Dropdown: Klick auf Child-Elemente korrekt erkennen
avatar.contains() statt e.target !== avatar, damit Klicks auf
das img innerhalb des Avatar-Divs das Dropdown nicht sofort schließen.
2026-03-26 14:18:24 +01:00
128f1b468a Profilseite mit Avatar, Passwort-Änderung und TOTP 2FA
- Neues Profil-Modal: Avatar-Upload, E-Mail bearbeiten, Kalender-Übersicht
- Passwort ändern mit Validierung des aktuellen Passworts
- TOTP 2FA: QR-Code + manueller Schlüssel, Aktivierung/Deaktivierung
- Login-Flow unterstützt 2FA-Code (neuer JSON-Endpoint /auth/login)
- User-Dropdown mit Profil-Link statt confirm()-Dialog
- Kalenderfarben in Sidebar editierbar (Color-Picker auf Farbpunkt)
- Monatsansicht nutzt volle Höhe (#view-container flex fix)
- requirements.txt: passlib durch bcrypt ersetzt, pyotp/qrcode/Pillow hinzugefügt
2026-03-26 14:10:53 +01:00
8e200e9d11 Fix dayKey Tippfehler in renderMiniCal der die gesamte App crashte
dayKey war nicht definiert in calendar.js - korrekt ist dateKey (aus utils.js importiert).
Der ReferenceError verhinderte die Registrierung aller Event-Handler.
2026-03-26 13:51:23 +01:00
ad3a375031 Korrektur Adminerstellung fehler 2026-03-26 11:44:37 +01:00
f029ed1544 initialer commit, Grundcode 2026-03-26 11:20:48 +01:00