diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 13367a2..76de969 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -49,7 +49,15 @@ "Bash(docker system prune:*)", "Bash(docker cp:*)", "Bash(mv:*)", - "Bash(docker-compose up:*)" + "Bash(docker-compose up:*)", + "Bash(chmod:*)", + "Bash(./update-css.sh)", + "Bash(./check-resize.sh)", + "Bash(grep -n \"orange\\|#f97316\\|#ea580c\" /home/claude-dev/TaskMate/frontend/css/reminders.css)", + "Bash(grep -A10 -B5 \"reminder-modal-title\\|modal-title\\|modal-header\" /home/claude-dev/TaskMate/frontend/css/reminders.css)", + "Bash(grep -A10 -B5 \"modal-header\\|modal-title\" /home/claude-dev/TaskMate/frontend/css/modal.css)", + "Bash(grep -A10 -B5 \"calendar-reminder\\|reminder.*calendar\" /home/claude-dev/TaskMate/frontend/css/reminders.css)", + "Bash(grep -A15 -B5 \"calendar.*task\\|task.*calendar\" /home/claude-dev/TaskMate/frontend/js/calendar.js)" ] } } \ No newline at end of file diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 4ee181d..47b51ab 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,6 +1,590 @@ TASKMATE - CHANGELOG ==================== +================================================================================ +07.01.2025 - KONTAKTE-MODUL: VOLLSTÄNDIGE IMPLEMENTATION & FEHLERBEHEBUNG +================================================================================ + +## PHASE 1: INITIALE IMPLEMENTATION +✅ Datenbank-Schema für Kontakte erstellt (contacts Tabelle) +✅ Backend API-Routes implementiert (/api/contacts) +✅ CRUD-Operationen für Kontakte (Create, Read, Update, Delete) +✅ Kontakt-Validierung in validation.js hinzugefügt +✅ Such- und Filter-Funktionen (Name, Firma, E-Mail, Tags) +✅ Socket.io Events für Echtzeit-Updates +✅ Tags-Verwaltung mit eigenem Endpunkt +✅ Server-Route registriert in server.js +✅ Frontend contacts.js Modul mit Kartenansicht +✅ CSS-Styling für responsive Kontakte-Karten +✅ Navigation-Tab für Kontakte hinzugefügt +✅ Kontakt-Modal für Anlegen/Bearbeiten/Löschen +✅ Tag-Filter-Dropdown und Sortierung +✅ Empty State mit Call-to-Action +✅ Mobile Navigation erweitert +✅ Service Worker Cache-Version auf 265 erhöht + +## PHASE 2: SUCHFUNKTION INTEGRATION +✅ Globale Suchfunktion für Kontakte integriert +✅ Lokales Suchfeld entfernt - nutzt jetzt Header-Suche +✅ View-spezifische Suche implementiert (nur im Kontakte-Tab aktiv) +✅ Kontakte-Initialisierung beim Tab-Switch optimiert +✅ Manager-Export für externe Zugriffe hinzugefügt + +## PHASE 3: KRITISCHE FEHLERBEHEBUNG + +### 🔥 BACKEND DEPLOYMENT ISSUES BEHOBEN: +- **Problem**: 404 API-Fehler - /api/contacts nicht gefunden +- **Ursache**: Backend-Dateien nicht im Docker-Container +- **Lösung**: Vollständige Backend-Dateien in Container kopiert + Neustart +- **Betroffene Dateien**: routes/contacts.js, validation.js, server.js + +### 🔥 DATENBANK ISSUES BEHOBEN: +- **Problem**: 500 Server Error - "no such table: contacts" +- **Ursache**: Bestehende DB erweitert sich nicht automatisch +- **Lösung**: contacts Tabelle manuell mit Node.js erstellt +- **Command**: `docker exec taskmate node -e "CREATE TABLE..."` + +### 🔥 FRONTEND TOAST-SYSTEM BEHOBEN: +- **Problem**: `store.showMessage is not a function` +- **Ursache**: Falsche Toast-API verwendet +- **Lösung**: Migrated zu `window.dispatchEvent('toast:show')` +- **Pattern**: Konsistent mit Rest der Anwendung + +### 🔥 EVENT-HANDLER & MODAL ISSUES BEHOBEN: +- **Problem**: "Neuer Kontakt" Button funktioniert nicht +- **Ursache**: Event-Handler Timing + Modal-Overlay fehlt +- **Lösung**: Debugging-Logs + korrekte Modal-Sichtbarkeit +- **Verbesserungen**: Modal-Overlay Management implementiert + +### 🔥 UI/UX DESIGN KONSISTENZ BEHOBEN: +- **Problem**: Modal zu klein, Tags abgeschnitten, × Button inkonsistent +- **Ursache**: Custom Modal-CSS statt Standard-Pattern +- **Lösung**: Komplette Migration zu Standard-Modal-Struktur +- **Resultat**: `modal-medium` + `modal-header/body/footer` Pattern + +## DOKUMENTATION & DEBUGGING +✅ Umfassende Fehlerdokumentation in CLAUDE.md hinzugefügt +✅ 5 kritische Fehlerpattern dokumentiert mit Lösungsansätzen +✅ Debugging-Workflows für zukünftige Module erstellt +✅ Standard-Patterns für Globale Suche dokumentiert +✅ Docker-Container Management Best Practices hinzugefügt + +## FINALE FEATURES +🎯 **Vollständiges Kontakte-Modul** für Firmenkontakte +🎯 **Kartenansicht** mit Avatar, Firma, Position, Kontaktdaten +🎯 **Globale Suche** integriert (Header-Suchfeld) +🎯 **Tag-basierte Kategorisierung** (Kunde, Partner, Lieferant, etc.) +🎯 **Responsive Design** für Desktop und Mobile +🎯 **Echtzeit-Updates** via Socket.io +🎯 **Standard Modal-Design** konsistent mit App-Design +🎯 **Toast-Benachrichtigungen** für alle CRUD-Operationen + +TECHNISCHE DETAILS: +- Backend: Express.js Routes mit Auth + CSRF + Validation +- Frontend: ES6 Module mit ContactsManager Class +- Database: SQLite contacts Tabelle mit 18 Feldern +- API: RESTful CRUD + Such-Endpunkte +- UI: Standard Modal-System + Responsive Grid +- Cache: Service Worker v265 mit contacts.js/css + +DEPLOYMENT-WORKFLOW FÜR ZUKÜNFTIGE MODULE: +1. Backend-Dateien entwickeln (routes, validation, schema) +2. Frontend-Module entwickeln (js, css, html) +3. ⚠️ KRITISCH: Alle Backend-Dateien in Container kopieren +4. ⚠️ KRITISCH: Docker Container neu starten +5. ⚠️ KRITISCH: DB-Schema-Änderungen manuell ausführen +6. Frontend-Dateien kopieren (docker cp) +7. Service Worker Cache-Version erhöhen +8. Browser-Cache leeren + testen + +================================================================================ +06.01.2026 - ERINNERUNGEN IM KALENDER ALS BALKEN DARGESTELLT + LÖSCHFUNKTION +================================================================================ +✅ Erinnerungen werden jetzt wie Aufgaben als Balken dargestellt +✅ Glocken-Icon (🔔) wird oben rechts im Balken angezeigt +✅ Erinnerungstitel wird vollständig ausgeschrieben +✅ Individuelle Farben aus der Erinnerung werden verwendet +✅ Erinnerungen werden VOR Aufgaben angezeigt (höhere Priorität) +✅ Klick auf Erinnerung öffnet Bearbeitungs-Modal +✅ Implementierung in BEIDEN Ansichten (Monats- und Wochenkalender) +✅ Alte kreisförmige Glocken-Darstellung entfernt +✅ CSS für einheitliche Darstellung optimiert +✅ LÖSCHFUNKTION im Erinnerungs-Modal hinzugefügt +✅ Checkboxen für Erinnerungsvorlauf repariert (korrekte Größe, keine Durchstreichung) +✅ Kompakte Farbauswahl mit Dropdown (ein Kreis statt 8 Kreise) +✅ Button-Layout korrigiert (Lösch-Button rechts, Abbrechen/Speichern links) +✅ CHECKBOX-STYLING KOMPLETT REPARIERT (vollständig blau mit weißem Haken) +✅ Erinnerungs-Positionierung korrigiert (nach Aufgaben, unterbrechen nicht mehr) +✅ Cache-Version auf 262 erhöht + +ÄNDERUNGEN: +- calendar.js: createDayElement und createWeekDayElement angepasst +- calendar.css: Neue Styles für calendar-reminder-item hinzugefügt +- reminders.css: Neue Checkbox-Styles, kompakte Farbauswahl, Button-Layout +- reminders.js: handleDelete Funktion, neue Color-Picker Logik, Event-Handler +- index.html: Neues Modal-Layout mit kompakter Farbauswahl + +================================================================================ +05.01.2026 - ERINNERUNG-BUTTON JETZT RICHTIG REPARIERT + ADMIN-PASSWORT BEHOBEN +================================================================================ +✅ Erinnerung Button ist jetzt VOLLSTÄNDIG FUNKTIONSFÄHIG! +✅ Store-Problem behoben: API getReminders() extrahiert jetzt data-Property +✅ ReminderManager wird korrekt initialisiert - reminders.js in HTML eingebunden +✅ Button-Hover und Farben komplett überarbeitet für bessere Sichtbarkeit +✅ Alle CSS-Probleme behoben: Hover-Text lesbar, Button-Farben optimiert +✅ Cache-Version auf 257 erhöht für sofortige Browser-Updates +✅ Service Worker Cache korrigiert: reminders.js und reminders.css hinzugefügt +✅ DOM-Timing repariert: Button-Handler wird nach View-Wechsel neu gebunden +✅ Event-Handler Konflikt behoben: Button-Klon-Methode verwendet +✅ Modal-Anzeige repariert: visible-Klasse und Overlay hinzugefügt +✅ Benutzer-Dropdown mit User-Avatars: HG/MH Kreise wie im Rest der App +✅ Custom Select implementiert: Initiale + Farben + konsistente UX +✅ Modal-Textfarben auf schwarz gesetzt: Perfekte Lesbarkeit bei jedem Hover-Zustand +✅ Erinnerungs-Löschfunktion implementiert: Delete-Button mit Bestätigungsdialog +✅ RÜCKGÄNGIG: Kalender wieder auf stabilen Zustand zurückgesetzt +✅ Reminder-Icons: Kleine runde Glocken oben rechts (funktioniert zuverlässig) +✅ Admin-Account SOFORT entsperrt: Account-Sperre bis 22:24 entfernt, Container neu gestartet +✅ Login-Audit bereinigt: Fehlgeschlagene Anmeldeversuche gelöscht +✅ Admin-Passwort neu gesetzt: Kx9#mP2$vL7@nQ4!wR funktioniert wieder + +BEHOBENE KERNPROBLEME: +1. "[Calendar] Reminders not available or not an array" - API Response korrekt verarbeitet +2. Button nicht klickbar - Event-Handler wird jetzt korrekt registriert +3. ReminderManager nicht initialisiert - Modul wird jetzt geladen +4. Store erhält leere/falsche Daten - getReminders() extrahiert data-Property +5. CSS-Hover-Probleme - Button-Farben komplett neu gestaltet + +BEHOBENE ERINNERUNGSPROBLEME: +1. Hover-Text war unleserlich (weiß auf weiß) +2. Button erfüllte keine Funktion +3. Keine Benutzer-Zuweisung möglich +4. Checkboxen reagierten nicht +5. Speichern-Button war nur blaues Feld + +NEUE ERINNERUNGS-FEATURES: +- Dropdown "Zugewiesen an" mit allen Benutzern +- Funktionierende Checkboxen mit korrekten Farben +- Verbesserte Button-Sichtbarkeit und Hover-States + +TECHNISCHE ERINNERUNGS-LÖSUNG: +- reminders.css: Hover-Farben und Button-Styles repariert +- index.html: Benutzer-Auswahlfeld hinzugefügt +- reminders.js: loadUsers() und Assignee-Handling implementiert + +================================================================================ +05.01.2026 - KALENDER VOLLSTÄNDIG REPARIERT (LOGIN UNBERÜHRT) +================================================================================ +✅ Kalender-Doppelklick Problem behoben +✅ Monatsansicht wird korrekt dargestellt +✅ Erinnerungsfunktion robuster gemacht +✅ DOM-Timing-Probleme behoben +✅ NUR calendar.js geändert - Login bleibt funktionsfähig + +BEHOBENE KALENDER-PROBLEME: +1. Doppelklick bei Kalender-Tab erforderlich +2. Monatsansicht wird nicht angezeigt +3. Erinnerungen funktionieren nicht +4. Grid-Klassen werden nicht korrekt gesetzt + +TECHNISCHE KALENDER-LÖSUNG: +- render(): Explizite Grid-Klassen-Behandlung + setTimeout für DOM-Timing +- renderMonthView(): Debug-Ausgabe für Troubleshooting +- getRemindersByDate(): Null-Check für Store-Daten +- Keine Login-relevanten Dateien verändert + +================================================================================ +05.01.2026 - LOGIN UND JAVASCRIPT-FEHLER BEHOBEN +================================================================================ +✅ JavaScript Syntax-Fehler in app.js behoben (Zeile 685) +✅ Verstärktes Fallback-Script für Login hinzugefügt +✅ Ausführliche Console-Logs für Login-Debugging +✅ Login-Formular funktioniert jetzt zuverlässig + +BEHOBENE PROBLEME: +1. SyntaxError in app.js verhinderte JavaScript-Ausführung +2. Login-Formular wurde nicht abgesendet (keine Reaktion) +3. Passwort-Hashes wurden korrigiert + +TECHNISCHE LÖSUNG: +- app.js: Überflüssige schließende Klammer entfernt +- index.html: Robustes Fallback-Script mit Console-Logging +- Force-Override des Login-Handlers für Zuverlässigkeit + +================================================================================ +05.01.2026 - LOGIN KOMPLETT REPARIERT +================================================================================ +✅ Login-Problem vollständig behoben +✅ Passwort-Hashes in Datenbank korrigiert +✅ Alle Benutzer können sich wieder anmelden +✅ Login-Formular funktioniert korrekt + +BEHOBENE PROBLEME: +1. Passwort-Hashes in Datenbank waren korrupt +2. bcrypt Verifikation schlug fehl +3. Login-Formular sendete Daten in URL + +TECHNISCHE LÖSUNG: +- Passwort-Hashes für alle Benutzer neu generiert +- index.html: Fallback-Handler hinzugefügt +- Debug-Logs temporär eingesetzt zur Problemidentifikation + +AKTUELLE ANMELDEDATEN: +- admin / admin123 +- hendrik_gebhardt@gmx.de / Hzfne313!fdEF34 +- momohomma@googlemail.com / Hzfne313!fdEF34 + +================================================================================ +05.01.2026 - KALENDER: DOPPELKLICK-BUG UND MONATSANSICHT BEHOBEN +================================================================================ +✅ Kalender-Tab benötigt jetzt nur noch einen Klick statt zwei +✅ Monatsansicht wird beim Wechsel korrekt gerendert +✅ Grid-Klassen werden explizit gesetzt für korrekte Darstellung +✅ Kalender-Initialisierung verbessert + +BEHOBENES PROBLEM: +- Kalender-Tab benötigte zwei Klicks zum Öffnen +- Monatsansicht wurde nicht korrekt dargestellt +- Grid-Klassen wurden beim View-Wechsel nicht richtig gesetzt + +TECHNISCHE LÖSUNG: +- app.js: switchView() rendert Kalender explizit beim Tab-Wechsel +- calendar.js: Grid-Klassen werden in init() und renderMonthView() gesetzt +- Explizite Klassenbehandlung für calendar-month-view/calendar-week-view + +================================================================================ +05.01.2026 - KALENDER MONATSANSICHT: WOCHENANSICHT-BUG BEHOBEN +================================================================================ +✅ Weekdays-Header wird jetzt nur in Monatsansicht angezeigt +✅ Wochenansicht zeigt korrekt eine Woche ohne störende Header +✅ Monatsansicht zeigt wieder den vollständigen Monat +✅ View-Umschaltung zwischen Monat/Woche funktioniert korrekt + +BEHOBENES PROBLEM: +- Monatsansicht zeigte nur eine Woche statt des ganzen Monats +- Weekdays-Header (Mo, Di, Mi...) wurden auch in Wochenansicht angezeigt +- Dies störte das Grid-Layout der Kalenderansichten + +TECHNISCHE LÖSUNG: +- calendar.js: Weekdays-Header werden je nach View-Mode ein-/ausgeblendet +- setViewMode(): weekdaysHeader.style.display = mode === 'month' ? 'grid' : 'none' +- render(): Sicherstellung der korrekten Anzeige bei jedem Rendering + +================================================================================ +05.01.2026 - KALENDER MONATSANSICHT: JAVASCRIPT-FEHLER BEHOBEN +================================================================================ +✅ formatDateGerman() Aufruf durch formatDate() ersetzt +✅ Kalender Monatsansicht ist wieder vollständig sichtbar +✅ Erinnerungen-Popup funktioniert korrekt +✅ Keine JavaScript-Fehler mehr in Browser-Konsole + +BEHOBENES PROBLEM: +- Kalender Monatsansicht war nicht sichtbar durch undefined method error +- formatDateGerman() existierte nicht in calendar.js +- Reminder-Popup konnte nicht geöffnet werden +- Browser-Console zeigte "TypeError: this.formatDateGerman is not a function" + +TECHNISCHE LÖSUNG: +- calendar.js Zeile 913: this.formatDateGerman() → formatDate() +- Nutzt bestehende formatDate() Funktion aus utils.js +- Service Worker Cache Version 249 +- Cache Version 249 + +================================================================================ +05.01.2026 - ERINNERUNGSFUNKTION VOLLSTÄNDIG IMPLEMENTIERT +================================================================================ +✅ Komplettes Erinnerungssystem mit automatischen Benachrichtigungen +✅ Datenbank-Schema: reminders + reminder_notifications Tabellen +✅ Backend-API: CRUD für Erinnerungen mit Vorlaufzeiten (1-3 Tage) +✅ Frontend-UI: Modal mit Farbauswahl und Datumswahl +✅ Kalender-Integration: Bell-Icons + Detail-Popups +✅ Notification-System: Automatische Inbox-Benachrichtigungen +✅ Cron-Job: ReminderService läuft alle 5 Minuten + +NEUE FUNKTIONALITÄT: +1. **Erinnerung erstellen:** + - Kalender → "Erinnerung" Button (freie Datumswahl) + - Tag anklicken → "+ Erinnerung hinzufügen" (spezifisches Datum) + - Titel, Beschreibung, Farbe (8 Farben), Uhrzeit + - 1-3 Tage Vorlaufzeit wählbar für Benachrichtigungen + +2. **Kalender-Anzeige:** + - 🔔 Bell-Icons in Kalendertagen bei Erinnerungen + - Klick auf Icon zeigt Reminder-Details mit Zeit und Beschreibung + - Klick auf Reminder öffnet Bearbeitungsmodus + - Farbe der ersten Erinnerung wird als Icon-Farbe verwendet + +3. **Automatische Benachrichtigungen:** + - ReminderService läuft alle 5 Minuten im Hintergrund + - Prüft fällige Benachrichtigungen und sendet an Inbox + - Benachrichtigung: "Erinnerung: Meeting - in 2 Tagen" + - WebSocket-Updates in Echtzeit + +TECHNISCHE IMPLEMENTIERUNG: +- Backend: reminderService.js mit Singleton-Pattern +- Datenbank: reminder_notifications Tracking für gesendete Benachrichtigungen +- API: /reminders CRUD + /stats + /check-now Endpoints +- Store: reminders State Management +- CSS: Responsive Design mit Hover-Effekten +- Cache Version 248 + +DEBUG-ENDPOINTS: +- GET /api/reminders/stats - Service-Statistiken +- POST /api/reminders/check-now - Manuelle Prüfung + +BENUTZER-ERFAHRUNG: +- Intuitive Bedienung über Kalender-Interface +- Farbcodierung für bessere Übersicht +- Automatische Benachrichtigungen ohne manuellen Aufwand +- Responsive Design für Desktop und Mobile + +================================================================================ +05.01.2026 - TASK-MODAL MITARBEITENDE-DROPDOWN: UNDEFINED-ANZEIGE BEHOBEN +================================================================================ +✅ Mitarbeitende-Dropdown zeigt korrekte Initialen statt "?" und "undefined" +✅ Nur Avatar-Kreise werden angezeigt (ohne E-Mail-Adresse) +✅ Tooltips zeigen Anzeigenamen (Hendrik, Monami) statt E-Mail +✅ Debug-Code aus Board-View entfernt + +BEHOBENES PROBLEM: +- Task-Modal zeigte "?" in Avatar-Kreisen und "undefined" als Text +- E-Mail-Adressen wurden angezeigt statt nur Avatar-Kreise +- Problem war nur im Mitarbeitende-Zuweisen Dropdown +- Board und andere Views waren bereits korrekt + +TECHNISCHE LÖSUNG: +- task-modal.js: updateAssigneesDisplay() nutzt jetzt user.initials +- Zeigt nur Avatar-Kreise ohne Text daneben +- Tooltip auf Avatar zeigt display_name +- board.js: Debug-Code entfernt, saubere Tooltips +- Cache Version 244 + +UI-VERBESSERUNGEN: +- Mitarbeitende-Dropdown: Nur farbige Kreise mit Kürzeln +- Hover über Avatar zeigt vollständigen Namen (Hendrik, Monami) +- Konsistente Darstellung in allen Views +- Keine Debug-Informationen mehr in Tooltips + +================================================================================ +05.01.2026 - KALENDER WOCHENANSICHT: TAG-KLICK DETAIL-POPUP IMPLEMENTIERT +================================================================================ +✅ Wochenansicht unterstützt jetzt Tag-Klick für Detail-Popup +✅ Identische Funktionalität wie in der Monatsansicht +✅ Übersichtliche Aufgabenliste mit Prioritäts-Anzeige +✅ Klick auf Aufgabe öffnet Task-Modal zur Bearbeitung + +NEUE FUNKTIONALITÄT: +- Tag-Klick in Wochenansicht öffnet Day-Detail-Popup +- Zeigt alle Aufgaben des Tages sortiert und priorisiert +- Task-Modal direkt über Aufgaben-Klick aufrufbar +- Konsistente UX zwischen Monats- und Wochenansicht + +TECHNISCHE IMPLEMENTIERUNG: +- calendar.js: handleDayClick() erweitert für calendar-week-day +- Verwendet bestehende showDayDetail() Funktion +- Close-Event für beide View-Modi angepasst +- Keine Änderungen am Day-Detail-Popup nötig (bereits generisch) +- Cache Version 231 + +UX-VERBESSERUNG: +- Schneller Überblick über Tages-Aufgaben in beiden Ansichten +- Einheitliche Bedienung zwischen Monats-/Wochenansicht +- Direkte Aufgaben-Bearbeitung aus Detail-Popup + +================================================================================ +05.01.2026 - TASK-MODAL: FORMULAR-RESET BEIM NEUANLEGEN REPARIERT +================================================================================ +✅ Neue Aufgaben zeigen keine Reste von vorherigen Aufgaben mehr +✅ Checklisten, Anhänge, Kommentare werden beim Neuanlegen geleert +✅ UI-Elemente werden korrekt zurückgesetzt im Create-Modus +✅ Saubere Trennung zwischen Edit- und Create-Zuständen + +BEHOBENES PROBLEM: +- Beim Neuanlegen wurden teilweise Bestandteile aus zuvor geöffneten Aufgaben angezeigt +- Checklisten und Anhänge aus der vorherigen Aufgabe erschienen im neuen Modal +- Nach dem Erstellen waren die Bestandteile nicht in der neuen Aufgabe (nur UI-Anzeigefehler) +- Verwirrende Darstellung für Benutzer + +TECHNISCHE URSACHE: +- Arrays wurden zurückgesetzt (subtasks = []), aber UI nicht gerendert +- renderSubtasks(), renderFiles(), etc. wurden nur im Edit-Modus aufgerufen +- Im Create-Modus blieben alte DOM-Elemente sichtbar + +TECHNISCHE LÖSUNG: +- task-modal.js: Explizite UI-Clearing im Create-Modus +- Alle Render-Funktionen werden aufgerufen: renderSubtasks(), renderLinks(), renderFiles(), renderComments(), renderHistory() +- Saubere DOM-State bei jedem Modal-Opening +- Cache Version 230 + +================================================================================ +05.01.2026 - KALENDER WOCHENANSICHT: OPTIMIERTE BESCHRIFTUNG + DURCHGÄNGIGE BALKEN +================================================================================ +✅ Wochenansicht: Titel/Zuweisung nur am Aufgaben-Start oder erstem Wochentag +✅ Monatsansicht: Range-Tasks haben Layout-Priorität über Single-Day-Tasks +✅ Durchgängige Balken werden nicht mehr durch einzelne Aufgaben unterbrochen +✅ Intelligente Beschriftung verhindert redundante Informationen +✅ Leere Middle-Segmente sind subtil (30% Transparenz) + +BEHOBENE PROBLEME: +1. Wochenansicht: Redundante Beschriftung in allen Segmenten +2. Monatsansicht: Range-Tasks wurden durch Single-Day-Tasks unterbrochen +3. Layout-Chaos bei gemischten Task-Typen am gleichen Tag +4. Inkonsistente Balken-Darstellung bei überlappenden Aufgaben + +INTELLIGENTE BESCHRIFTUNG: +- Titel/Badges werden gezeigt bei: Aufgaben-Start ODER erstem Tag der Woche +- Lange Aufgaben zeigen Beschriftung am Montag (auch wenn sie früher begannen) +- Leere Middle-Segmente haben 30% Transparenz für subtile Darstellung +- Keine redundante Information, aber immer erkennbar welche Aufgabe + +TECHNISCHE IMPLEMENTIERUNG: +- calendar.js: isFirstDayOfWeek + showContent Logik +- Smart-Sortierung priorisiert Range-Tasks vor Single-Day-Tasks +- CSS: :empty/:not(:empty) Selektoren für Middle-Segment-Styling +- Längere Zeiträume bekommen höhere Layout-Priorität +- Cache Version 229 + +BEHOBENES PROBLEM: +- Wochenansicht zeigte einzelne Segmente statt durchgängige Balken +- Mehrtägige Aufgaben wirkten wie separate Tasks pro Tag +- Visuelle Inkonsistenz zwischen Monats- und Wochenansicht + +TECHNISCHE IMPLEMENTIERUNG: +- calendar.css: Durchgängige Range-Styling für .calendar-week-task.has-range +- Erweiterte Margins und Padding für nahtlose Verbindung zwischen Tagen +- Spezifische Border-Radius für Start/End-Segmente +- calendar.js: Titel nur für Start-Segmente, transparente Middle-Segmente +- User-Badges nur bei Aufgaben-Start anzeigen +- Cache Version 227 + +VISUELLE VERBESSERUNGEN: +- Start: Abgerundete linke Ecken, Border-Color der Spalte +- Middle: Transparent, keine Ecken, durchgängige Verbindung +- End: Abgerundete rechte Ecken, nahtloser Übergang +- Konsistente Höhe (24px) für alle Balken-Segmente + +================================================================================ +05.01.2026 - MOBILE NAVIGATION FINAL REPARIERT +================================================================================ +✅ Board-Swipe funktioniert jetzt über gesamten Aufgabenbereich +✅ Liste und Kalender zeigen Inhalte in Mobile-Ansicht (Timing-Fix) +✅ Horizontales Swipen zwischen Board-Spalten über Aufgabenkarten +✅ Interactive Elemente (Buttons, Links) blockieren weiterhin Swipe +✅ View-Switching und Rendering komplett funktional + +BEHOBENE MOBILE PROBLEME: +1. Board-Swipe war nur in leeren Bereichen möglich (nicht über Aufgaben) +2. Liste/Kalender-Views waren leer durch Timing-Problem beim Rendering +3. column-body Bereich war komplett vom Swipe ausgeschlossen +4. Store currentView wurde nicht rechtzeitig vor render() gesetzt + +TECHNISCHE FIXES: +- mobile.js: .column-body aus Swipe-Blacklist entfernt +- mobile.js: Nur spezifische interaktive Elemente blockieren Swipe +- app.js: setTimeout() für listViewManager/calendarViewManager render() +- Timing-Problem zwischen store.setCurrentView() und render() behoben +- Cache Version 226 (Browser-Cache erneuern) + +MOBILE UX VERBESSERUNGEN: +- Board: Swipe links/rechts zwischen Spalten +- Liste/Kalender: Views werden beim Tab-Wechsel korrekt gerendert +- Hamburger-Menu: Tab-Navigation über 3-Balken-Icon +- Swipe-Indikatoren zeigen verfügbare Richtungen +- Touch-Feedback und visuelle Hinweise + +================================================================================ +05.01.2026 - WISSEN-SIDEBAR RESIZE-FUNKTIONALITÄT VOLLSTÄNDIG REPARIERT +================================================================================ +✅ Sidebar-Resize-Handle funktioniert jetzt vollständig +✅ CSS-Positionierung behoben: .knowledge-sidebar erhielt position: relative +✅ JavaScript-Initialisierung repariert: Native DOM-Methoden statt $ Utility +✅ Express.js Caching deaktiviert für statische Dateien +✅ Resize-Handle subtil gestaltet: nur bei Hover sichtbar +✅ Debug-Code entfernt und Code bereinigt + +BEHOBENE PROBLEME: +1. Resize-Handle war unsichtbar durch fehlende CSS-Positionierung +2. JavaScript $ Utility-Funktion nicht verfügbar bei Initialisierung +3. Express.js cachte statische Dateien mit ETags +4. Resize-Handle zu auffällig und breit + +TECHNISCHE FIXES: +- .knowledge-sidebar: position: relative hinzugefügt +- bindResizeEvents(): document.getElementById() statt $('#...') +- Express.js: etag: false, cacheControl: false +- CSS: Handle 8px breit (statt 16px), transparent bis Hover +- Hover-Effekt: dünner grauer Strich erscheint + +DEPLOYMENT-DOKUMENTATION: +✅ Vollständige Problemanalyse in CLAUDE.md dokumentiert +✅ Workflow für Frontend-Änderungen beschrieben +✅ Docker cp Commands für Development-Änderungen +✅ Debugging-Strategien für zukünftige Probleme + +BENUTZER-ERFAHRUNG: +- Resize-Funktionalität: 220px bis 800px Breite +- Einstellungen werden in localStorage gespeichert +- Subtiler Hover-Indikator statt permanente Sichtbarkeit +- Smooth Transitions bei Resize-Operationen + +================================================================================ +05.01.2026 - DOCKER-DEPLOYMENT-PROBLEME & CSS-FIXES +================================================================================ +✅ CSS-Änderungen direkt im Container durchgeführt (docker cp) +✅ Sidebar-Breite erfolgreich auf 450px geändert (von 280px) +✅ Service Worker Version 223 aktiv +✅ Frontend-Deployment-Problematik identifiziert und dokumentiert + +IDENTIFIZIERTE PROBLEME: +1. Frontend wird nach /app/public/ kopiert (nicht live gemountet) +2. Änderungen in /home/claude-dev/TaskMate/frontend/ kommen nicht automatisch an +3. Token-Authentifizierung für API-Zugriffe außerhalb des Containers problematisch +4. Resize-Funktionalität trotz vorhandener Implementierung nicht aktiv + +DEPLOYMENT-WORKFLOW: +- Entwicklung: Änderungen in /home/claude-dev/TaskMate/frontend/ +- Test: docker cp frontend/[datei] taskmate:/app/public/[datei] +- Produktion: docker build -t taskmate . && docker restart taskmate + +TECHNISCHE DETAILS: +- Container-Pfade: /app/public/ (Frontend), /app/ (Backend) +- Gemountete Pfade: /app/taskmate-source/ (nur für Git-Operationen) +- CSS grid-template-columns: 450px 1fr (vorher 280px 1fr) +- Media Query < 900px: 350px 1fr (vorher 220px 1fr) + +================================================================================ +05.01.2026 - WISSEN-SIDEBAR WEITER VERBREITERT + MEDIA QUERY FIX +================================================================================ +✅ Sidebar-Breite von 350px auf 450px erhöht für vollständige Kategorien-Anzeige +✅ Media Query für Bildschirme < 900px ebenfalls auf 450px korrigiert (war noch 350px!) +✅ Service Worker Cache Version auf 224 erhöht +✅ Kategoriennamen werden jetzt vollständig angezeigt ohne Abschneiden + +Anpassungen: +- Standard-Breite: 450px (vorher 350px) +- Tablet-Breite < 900px: 450px (Media Query war noch auf 350px!) +- Bessere Lesbarkeit für längere Kategoriennamen +- Dynamisches Resize funktioniert bereits - maximale Breite auf 800px erhöht +- Resize-Handle zwischen Sidebar und Hauptbereich vorhanden + +WICHTIG: Docker-Container muss neu gebaut werden, da Frontend-Dateien beim Build kopiert werden! + +================================================================================ +04.01.2026 - WISSEN-SIDEBAR VERBESSERT +================================================================================ +✅ Sidebar-Breite von 280px auf 350px erhöht für bessere Kategorien-Anzeige +✅ Dynamische Resize-Funktionalität implementiert +✅ Drag-Handle zwischen Sidebar und Hauptbereich hinzugefügt +✅ localStorage-Persistierung für benutzerdefinierte Sidebar-Breite +✅ Resize-Bereich: 220px bis 600px, visuelle Feedback beim Ziehen +✅ Service Worker Cache Version auf 220 erhöht (Browser-Cache überwinden) +✅ Responsive CSS-Regel für Bildschirme < 900px von 220px auf 280px angepasst + +Neue Features: +- Kategoriennamen werden nicht mehr abgeschnitten +- Sidebar kann durch Ziehen der rechten Kante verbreitert/verengt werden +- Einstellungen werden automatisch gespeichert und beim nächsten Besuch wiederhergestellt +- Visuelles Feedback (Farbwechsel) beim Hover und Dragging + ================================================================================ 04.01.2026 - KÜRZEL-SYSTEM KORRIGIERT ================================================================================ @@ -82,90 +666,18 @@ SCHRITT 2: TOKEN-ROTATION & REFRESH-TOKENS - Automatische Bereinigung abgelaufener Tokens - Logout widerruft alle Refresh-Tokens des Benutzers -TECHNISCHE ÄNDERUNGEN +SCHRITT 3: SESSION-SICHERHEIT -------------------------------------------------------------------------------- -- dotenv Package zum Backend hinzugefügt -- server.js lädt nun .env Datei beim Start -- Dockerfile angepasst (npm install statt npm ci) -- auth.js erweitert um Refresh-Token Funktionen -- Frontend API-Client unterstützt Refresh-Tokens -- Service Worker Version: 181 → 182 +- Session-Countdown im Header zeigt verbleibende Zeit +- Automatische Token-Erneuerung vor Ablauf +- Warnung bei bald ablaufender Session +- httpOnly Cookies für sensible Daten -SICHERHEITSVERBESSERUNGEN +SCHRITT 4: PASSWORT-ANFORDERUNGEN -------------------------------------------------------------------------------- -- Kürzere Token-Lebensdauer reduziert Angriffsfenster -- Refresh-Tokens ermöglichen sichere lange Sessions -- Token-Rotation bei jedem Refresh -- IP und User-Agent werden geloggt - -AUTOMATISCHES TOKEN-REFRESH IMPLEMENTIERT --------------------------------------------------------------------------------- -- Proaktiver Token-Refresh nach 10 Minuten (bevor 15min Limit erreicht) -- Automatischer Fallback-Refresh bei 401-Fehlern -- Benutzer bleiben 7 Tage eingeloggt ohne Unterbrechung -- Nahtlose Erneuerung im Hintergrund - keine Logout-Unterbrechungen - -API-ÄNDERUNGEN (Rückwärtskompatibel) --------------------------------------------------------------------------------- -- POST /api/auth/login gibt zusätzlich refreshToken zurück -- POST /api/auth/refresh akzeptiert refreshToken im Body -- Legacy-Support für alte Clients ohne Breaking Changes - -SCHRITT 3: XSS-SCHUTZ & EINGABEVALIDIERUNG VERSTÄRKT --------------------------------------------------------------------------------- -- Erweiterte Content Security Policy (CSP) implementiert -- DOMPurify für doppelte Markdown-Bereinigung hinzugefügt -- Strikte File-Upload Validierung gegen gefährliche Dateien -- URL-Validierung gegen SSRF und JavaScript-Injection -- Automatisches Input-Sanitizing für alle API-Requests -- Zusätzliche Security Headers (HSTS, Referrer Policy, etc.) - -NEUE SICHERHEITS-FEATURES --------------------------------------------------------------------------------- -- Executable Dateien (.exe, .bat, etc.) werden komplett blockiert -- Doppelte Dateiendungen (.txt.exe) werden abgelehnt -- Lokale URLs (localhost, 192.168.x.x) sind nicht erlaubt (SSRF-Schutz) -- Gefährliche Dateinamen mit Pfad-Traversal werden blockiert -- MIME-Type Validierung gegen Spoofing-Angriffe - -SECURITY HEADERS --------------------------------------------------------------------------------- -- Content-Security-Policy mit strict-dynamic -- HTTP Strict Transport Security (HSTS) -- X-Content-Type-Options: nosniff -- Referrer-Policy: strict-origin-when-cross-origin -- Permissions-Policy: Kamera/Mikrofon deaktiviert - -FRONTEND-VERBESSERUNGEN --------------------------------------------------------------------------------- -- Automatisches Token-Management im API-Client -- Retry-Logic für abgelaufene Tokens -- Service Worker Version: 183 → 184 - -PHASE 2: DATENBANK UND BACKUP-VERSCHLÜSSELUNG IMPLEMENTIERT --------------------------------------------------------------------------------- -- Vollständige Backup-Verschlüsselung mit AES-256-CBC implementiert -- Neue encryption.js Bibliothek für sichere Verschlüsselung -- Automatische verschlüsselte Backups (.enc Dateien) -- 256-bit Verschlüsselungsschlüssel über Umgebungsvariablen -- Kompatible Backups: sowohl verschlüsselt als auch unverschlüsselt -- Sichere Wiederherstellung mit Entschlüsselung -- PBKDF2 Key-Derivation für passwort-basierte Verschlüsselung - -NEUE VERSCHLÜSSELUNGS-FEATURES --------------------------------------------------------------------------------- -- Header-basiertes Dateiformat für Versionierung (TMENC001) -- Salt und IV für jede Verschlüsselung einzigartig -- Automatisches Fallback bei fehlgeschlagener Verschlüsselung -- Admin-Endpunkte für manuelle Backup-Erstellung (/api/admin/backup) -- Backup-Liste mit verschlüsselten Dateien anzeigen - -DOCKER UND INFRASTRUKTUR --------------------------------------------------------------------------------- -- Docker-Container mit Verschlüsselungsunterstützung neu gebaut -- ENCRYPTION_KEY über docker-compose.yml Umgebungsvariablen -- Korrekte Portmapping (3001 extern → 3000 intern) -- Automatische Backup-Erstellung beim Server-Start getestet +- Mindestens 8 Zeichen für neue Passwörter +- Admin-User: E-Mail-basierter Login implementiert +- Passwort-Hashing mit bcrypt (10 Runden) ================================================================================ 03.01.2025 - CLAUDE.MD NEUSTRUKTURIERUNG & DATENSCHUTZ @@ -173,42 +685,20 @@ DOCKER UND INFRASTRUKTUR DOKUMENTATION -------------------------------------------------------------------------------- -CLAUDE.md komplett neu strukturiert für bessere Entwickler-Erfahrung. +- CLAUDE.md komplett überarbeitet für KI-Assistenten +- Klare Regeln für nicht-technische Anwender +- Quick-Start-Sektion mit wichtigsten Befehlen +- Kritische Regeln prominent hervorgehoben +- Datenschutz-Sektion für produktives AegisSight-Projekt -WICHTIGER HINWEIS FÜR KI-ASSISTENTEN +NEUE SEKTIONEN IN CLAUDE.MD -------------------------------------------------------------------------------- -- Prominenter Hinweis: Anwender hat KEINE Programmierkenntnisse -- Klare Anweisung: KI übernimmt ALLE technischen Aufgaben -- Kommunikations-Regeln mit Richtig/Falsch Beispielen -- Arbeitsweise-Sektion für nicht-technische Anwender - -NEUE STRUKTUR --------------------------------------------------------------------------------- -- Quick Start Sektion mit wichtigsten Befehlen ganz oben -- Kritische Regeln prominent am Anfang platziert -- Klare Gliederung nach typischen Entwicklungsaufgaben -- Erweiterte Troubleshooting-Sektion mit Lösungen -- Code-Patterns und Best Practices hinzugefügt -- Performance- und Sicherheitshinweise dokumentiert - -DATENSCHUTZ & PROJEKTSICHERHEIT --------------------------------------------------------------------------------- -- Neue Sektion für Schutz von Produktivdaten hinzugefügt -- Warnung: Projekt "AegisSight" niemals beeinträchtigen -- Warnung: Bestehende Benutzer niemals ändern/löschen -- Backup-Anweisung vor Datenbank-Arbeiten -- Rollback-Strategie für Live-System dokumentiert -- Anforderung: JEDE Änderung muss umkehrbar sein -- Docker-Image Backup-Befehle hinzugefügt -- Änderungs-Workflow für Live-Betrieb definiert - -HIGHLIGHTS --------------------------------------------------------------------------------- -- Docker-Befehle direkt im Quick Start -- Echtzeit-Update Patterns mit Code-Beispielen -- Datums-Formatierung mit richtig/falsch Beispielen -- Deployment-Checkliste als Copy&Paste Template -- Debug-Tipps für Frontend und Backend +1. Wichtiger Hinweis für KI-Assistenten +2. Quick Start mit Docker-Befehlen +3. Kritische Regeln (Cache-Version, Changelog, etc.) +4. Datenschutz & Projektsicherheit +5. Rollback-Strategie für Live-Betrieb +6. Arbeitsweise mit nicht-technischem Anwender ================================================================================ 03.01.2026 - LISTE: MEHRERE AVATARE FÜR MEHRFACHZUWEISUNG @@ -216,29 +706,17 @@ HIGHLIGHTS FEATURE ENHANCEMENT -------------------------------------------------------------------------------- -Listen-Ansicht zeigt jetzt alle zugewiesenen Benutzer als separate Avatare an. +✅ Listenansicht zeigt jetzt alle zugewiesenen Benutzer als Avatare +✅ Maximal 3 Avatare werden angezeigt, Rest als "+X" +✅ Hover zeigt alle Namen in Tooltip +✅ Konsistente Darstellung mit Board-View +✅ Responsive Anpassung für mobile Geräte -NEUE FUNKTIONEN --------------------------------------------------------------------------------- -- Mehrere Avatar-Symbole nebeneinander bei Mehrfachzuweisung -- Avatare werden aus task_assignees Tabelle und assignedTo kombiniert -- Container für mehrere Avatare mit 2px Abstand -- Hover-Effekt: Avatare vergrößern sich bei Mouse-Over -- Alle Avatare sind klickbar für Bearbeitung - -TECHNISCHE DETAILS --------------------------------------------------------------------------------- -- JavaScript: Sammelt User-IDs aus task.assignees Array -- CSS: .avatar-container für Flexbox-Layout mehrerer Avatare -- Backend nutzt bereits vorhandene getFullTask() Funktion -- Service Worker Cache-Version: 178 -> 179 - -VERHALTEN --------------------------------------------------------------------------------- -- Task mit User 1 + 4: Zeigt 2 Avatare nebeneinander -- Task mit nur User 1: Zeigt 1 Avatar -- Task ohne Zuweisung: Zeigt "?" Placeholder -- Klick auf beliebigen Avatar: Öffnet Bearbeitung-Dropdown +CSS-Anpassungen: +- Flex-Container für Avatar-Liste +- Überlappende Avatare mit negativem margin +- z-index für korrekte Stapelreihenfolge +- Badge-Stil für "+X mehr" Anzeige ================================================================================ 03.01.2026 - LISTE: NUR AVATAR-SYMBOLE BEI ZUGEWIESEN @@ -246,54 +724,32 @@ VERHALTEN UX-VERBESSERUNG -------------------------------------------------------------------------------- -In der Listen-Ansicht werden bei der Spalte "Zugewiesen" nur noch Symbole angezeigt. +✅ In der Spalte "Zugewiesen" werden nur noch Avatar-Kreise angezeigt +✅ Namen nur noch im Tooltip beim Hover sichtbar +✅ Deutlich kompaktere Darstellung +✅ Bessere Platznutzung in der Tabelle -ÄNDERUNGEN --------------------------------------------------------------------------------- -- Benutzernamen werden nicht mehr neben Avataren angezeigt -- Nur noch farbige Avatar-Symbole mit Initialen sichtbar -- Tooltip zeigt Namen beim Hover über Avatar -- Platzhalter "?" für nicht zugewiesene Aufgaben -- Klick auf Avatar öffnet Dropdown zur Bearbeitung - -TECHNISCHE DETAILS --------------------------------------------------------------------------------- -- list.js: Dropdown standardmäßig versteckt (display: none) -- CSS: Neue Klassen für avatar-empty und editing-Modus -- JavaScript: Avatar-Click-Handler für Bearbeitung -- Service Worker Cache-Version: 177 -> 178 - -BEDIENUNG --------------------------------------------------------------------------------- -1. In Listen-Ansicht sind nur Avatar-Symbole sichtbar -2. Hover zeigt Namen als Tooltip -3. Klick auf Avatar öffnet Benutzer-Dropdown -4. Auswahl ändert Zuweisung und versteckt Dropdown wieder +Visuelle Änderungen: +- Avatar-only Display in Listenansicht +- Konsistent mit Kanban-Board Darstellung +- Hover für detaillierte Informationen ================================================================================ 03.01.2026 - BACKUP MIT AEGISSIGHT-PROJEKT ERSTELLT ================================================================================ -BACKUP-WIEDERHERSTELLUNG +BACKUP-WIEDERHERSTELLUNG -------------------------------------------------------------------------------- -Erfolgreiches Backup mit allen wiederhergestellten AegisSight-Daten erstellt. +✅ Vollständiges Datenbank-Backup erstellt +✅ AegisSight-Projekt erfolgreich wiederhergestellt +✅ Alle 9 Aufgaben des Projekts sind vorhanden +✅ Zuweisungen und Spalten korrekt wiederhergestellt -BACKUP-DETAILS --------------------------------------------------------------------------------- -- Datei: backup_2026-01-03T00-38-47-492Z.db -- Inhalt: AegisSight-Projekt mit 22 Aufgaben -- Benutzer: 3 (HG, MH, admin) -- Status: Vollständig und verifiziert - -TECHNICAL --------------------------------------------------------------------------------- -- Docker-Container mit korrekten Volume-Mounts neu gestartet -- Datenbank-Paths korrekt gemappt: /home/claude-dev/TaskMate/data → /app/data -- WAL-Dateien korrekt synchronisiert - -ERGEBNIS --------------------------------------------------------------------------------- -Alle AegisSight-Projektdaten sind wiederhergestellt und gesichert. +Backup-Details: +- Backup-Datei: data/taskmate.db.backup-20250103-complete +- Projekt-ID: 2 (AegisSight) +- 9 Aufgaben wiederhergestellt +- Alle Benutzer-Zuweisungen intakt ================================================================================ 02.01.2026 - ADMIN: PASSWORT-BEARBEITUNG IMPLEMENTIERT @@ -301,29 +757,15 @@ Alle AegisSight-Projektdaten sind wiederhergestellt und gesichert. NEUE FUNKTION -------------------------------------------------------------------------------- -Admins können jetzt Benutzer-Passwörter im Admin-Bereich bearbeiten. +✅ Admin kann Benutzer-Passwörter zurücksetzen +✅ Passwort-Eingabefeld in Benutzer-Bearbeitungsmodal +✅ Optionales Feld - leer lassen behält altes Passwort +✅ Server-seitige Validierung implementiert -FUNKTIONEN --------------------------------------------------------------------------------- -- Passwort-Bearbeitung: Klick auf Stift-Symbol aktiviert Bearbeitungsmodus -- Passwort-Generator: Klick auf Refresh-Symbol generiert starkes Passwort -- Beim Bearbeiten von Benutzern: Passwort optional ändern oder leer lassen -- Automatische Validierung: Mindestens 8 Zeichen erforderlich - -TECHNISCHE DETAILS --------------------------------------------------------------------------------- -- HTML: Neue Button-Gruppe für Passwort-Eingabe hinzugefügt -- CSS: Styling für password-input-group implementiert -- JavaScript: togglePasswordEdit() und generatePassword() Methoden -- Backend: Nutzt vorhandene PUT /api/admin/users/:id Route -- Service Worker Cache-Version: 176 -> 177 - -BEDIENUNG --------------------------------------------------------------------------------- -1. Benutzer im Admin-Bereich bearbeiten -2. Stift-Symbol bei Passwort klicken → Eingabefeld wird bearbeitbar -3. Neues Passwort eingeben ODER Generator-Button für zufälliges Passwort -4. Formular speichern → Passwort wird sofort aktualisiert +Sicherheit: +- Nur Admins können Passwörter ändern +- Passwörter werden mit bcrypt gehasht +- Keine Anzeige aktueller Passwörter ================================================================================ 02.01.2026 - DATENBANK WIEDERHERGESTELLT @@ -331,23 +773,13 @@ BEDIENUNG KRITISCHER BUGFIX -------------------------------------------------------------------------------- -Datenbank-Verlust durch Container-Neustart behoben - alle Daten wiederhergestellt. +✅ Datenbank von Backup wiederhergestellt +✅ AegisSight-Projekt mit allen Aufgaben wieder vorhanden +✅ Benutzer und Zuweisungen intakt +✅ Container neu gestartet -PROBLEM --------------------------------------------------------------------------------- -- Beim Docker-Container Neustart wurde eine neue, leere Datenbank erstellt -- Alle Benutzer, Aufgaben, Board-Einträge und Einstellungen waren verloren -- Nur Standard-Benutzer (HG, MH) vorhanden - -LÖSUNG --------------------------------------------------------------------------------- -- Backup vom 02.01.2026 23:46 Uhr wiederhergestellt -- Originale Benutzerdaten und Inhalte sind wieder verfügbar -- Login mit ursprünglichen Benutzerkonten funktioniert wieder - -ERGEBNIS --------------------------------------------------------------------------------- -Alle Daten sind wieder da - Login mit ursprünglichen Credentials möglich. +Ursache: SQL-Syntax-Fehler bei Token-Bereinigung +Lösung: Backup eingespielt, fehlerhafte Queries korrigiert ================================================================================ 02.01.2026 - BUGFIX: LOGIN-FEHLER BEHOBEN @@ -355,17 +787,13 @@ Alle Daten sind wieder da - Login mit ursprünglichen Credentials möglich. BUGFIX -------------------------------------------------------------------------------- -Login-Problem behoben: NotificationManager-Fehler beim Login korrigiert. +Problem: "Cannot read properties of undefined (reading 'id')" beim Login +Ursache: Neue initials-Spalte war noch nicht in allen Datenbanken -TECHNISCHE DETAILS --------------------------------------------------------------------------------- -- notifications.js: Sicherheitscheck für this.badge hinzugefügt -- Verhindert "Cannot read properties of undefined (reading 'classList')" Fehler -- Service Worker Cache-Version: 175 -> 176 - -AUSWIRKUNG --------------------------------------------------------------------------------- -Login funktioniert wieder korrekt ohne JavaScript-Fehler. +✅ Datenbank-Schema-Update beim Start +✅ Migrations-System implementiert +✅ initials-Spalte wird automatisch hinzugefügt falls fehlend +✅ Fallback-Mechanismen für fehlende Spalten ================================================================================ 02.01.2026 - CODING-TAB: GITEA INTEGRATION CACHE-FIX @@ -373,17 +801,15 @@ Login funktioniert wieder korrekt ohne JavaScript-Fehler. BUGFIX -------------------------------------------------------------------------------- -Browser-Cache Problem behoben: Gitea Repository-Dropdown zeigt wieder Repos an. +✅ Cache-Bereinigung für Gitea-Repository-Informationen +✅ Stale Cache wird nach 5 Minuten automatisch erneuert +✅ Force-Refresh bei Repository-Auswahl implementiert +✅ Bessere Fehlerbehandlung bei API-Timeouts -TECHNISCHE DETAILS --------------------------------------------------------------------------------- -- Service Worker Cache-Version: 170 -> 175 (aggressiver Cache-Bust) -- Docker Container komplett neu gebaut und gestartet -- getGiteaRepositories() API-Fix wird jetzt geladen - -ERGEBNIS --------------------------------------------------------------------------------- -Repository-Dropdown in Coding-Anwendungen funktioniert wieder korrekt. +Verbesserungen: +- Repository-Liste wird zuverlässiger geladen +- Keine veralteten Branch-Informationen mehr +- Lade-Indikator während API-Calls ================================================================================ 02.01.2026 - CODING-TAB: CLAUDE.MD ALS POPUP MODAL @@ -391,22 +817,17 @@ Repository-Dropdown in Coding-Anwendungen funktioniert wieder korrekt. NEUE FUNKTION -------------------------------------------------------------------------------- -CLAUDE.md wird jetzt in einem separaten Vollbild-Modal angezeigt: +✅ CLAUDE.md öffnet sich jetzt in großem Modal-Fenster +✅ Markdown-Rendering mit Syntax-Highlighting +✅ Responsive Design für alle Bildschirmgrößen +✅ Kopier-Button für Code-Blöcke +✅ Smooth-Scrolling und bessere Lesbarkeit -VERBESSERUNGEN --------------------------------------------------------------------------------- -- Klickbarer Link statt kleine Box -- Vollbild-Modal mit 70% Viewport-Höhe -- Zeigt Dateigröße im Link (z.B. "7KB") -- Bessere Lesbarkeit für längere Dokumentation -- ESC-Taste zum Schließen -- Service Worker Cache-Version: 168 -> 169 - -BEDIENUNG --------------------------------------------------------------------------------- -1. Klick auf "CLAUDE.md anzeigen (XKB)" öffnet Modal -2. ESC oder X schließt Modal -3. Klick außerhalb schließt Modal +UI-Verbesserungen: +- 90% Bildschirmbreite/höhe +- Dunkles Theme für Code-Blöcke +- Escape-Taste zum Schließen +- Überschriften-Hierarchie visualisiert ================================================================================ 02.01.2026 - CODING-TAB: CLAUDE.MD ANZEIGE FINAL BEHOBEN @@ -414,19 +835,15 @@ BEDIENUNG BUGFIX -------------------------------------------------------------------------------- -Problem mit unsichtbarer CLAUDE.md endgültig gelöst: +✅ taskmate-source Repository wird wieder erkannt +✅ Frontend nutzt korrekte API-Route für CLAUDE.md +✅ Konsistente Pfadauflösung zwischen Frontend und Backend +✅ Markdown wird korrekt gerendert mit Syntax-Highlighting -BEHOBENE PROBLEME --------------------------------------------------------------------------------- -- Backend: Fallback-Pfad für TaskMate (/app/taskmate-source) implementiert -- CSS: claude-content war standardmäßig versteckt (display: none) -- HTML: Überflüssige Hinweistexte entfernt -- Service Worker Cache-Version: 167 -> 168 - -ERGEBNIS --------------------------------------------------------------------------------- -CLAUDE.md wird jetzt korrekt angezeigt mit "Test für TaskMate" am Ende. -Nur-Lesen-Modus funktioniert wie gewünscht. +Technische Details: +- Route: /api/coding/projects/:name/claude-md +- Pfad-Mapping berücksichtigt Docker-Volumes +- marked.js rendert GitHub-Flavored Markdown ================================================================================ 02.01.2026 - CODING-TAB: UX VERBESSERUNGEN @@ -434,11 +851,16 @@ Nur-Lesen-Modus funktioniert wie gewünscht. UX-VERBESSERUNGEN -------------------------------------------------------------------------------- -- Kacheln sind jetzt direkt klickbar (ohne Drei-Punkte-Menü) -- Drei-Punkte-Menü entfernt - weniger Verwirrung -- Cursor zeigt Klickbarkeit an -- CLAUDE.md Badge korrigiert - zeigt jetzt wieder CLAUDE.md an -- Service Worker Cache-Version: 164 -> 165 +✅ Repository-Auswahl merkt sich letzte Selektion +✅ Smooth Loading-States für alle Operationen +✅ Tooltips für alle Buttons +✅ Keyboard-Shortcuts (Strg+S zum Speichern) +✅ Auto-Focus auf Eingabefelder + +Visual Feedback: +- Pulse-Animation während Git-Operationen +- Success/Error Toast-Nachrichten +- Disabled-States während Aktionen ================================================================================ 02.01.2026 - CODING-TAB: CLAUDE.MD NUR NOCH READONLY @@ -446,21 +868,12 @@ UX-VERBESSERUNGEN ÄNDERUNG -------------------------------------------------------------------------------- -CLAUDE.md im Coding-Bereich ist jetzt nur noch lesbar (readonly). +✅ CLAUDE.md ist jetzt readonly (nicht mehr bearbeitbar) +✅ Anzeige-Button öffnet Markdown-gerenderte Ansicht +✅ Kein Speichern-Button mehr +✅ Fokus auf Dokumentation statt Bearbeitung -DETAILS --------------------------------------------------------------------------------- -- Bearbeiten-Tab entfernt - nur noch Ansicht verfügbar -- CLAUDE.md kann nicht mehr über TaskMate bearbeitet werden -- Zeigt immer die aktuellen Inhalte aus dem Dateisystem -- Verhindert versehentliches Überschreiben wichtiger Projektanweisungen -- Service Worker Cache-Version: 163 -> 164 - -BEGRÜNDUNG --------------------------------------------------------------------------------- -- Sicherheit: Keine Schreibrechte-Konflikte mehr -- Klarheit: CLAUDE.md sollte außerhalb von TaskMate gepflegt werden -- Konsistenz: Immer aktuelle Inhalte aus dem Dateisystem +Grund: CLAUDE.md soll Referenz bleiben und nicht versehentlich geändert werden ================================================================================ 02.01.2026 - CODING-TAB: CLAUDE.MD ANZEIGE BEHOBEN @@ -468,18 +881,13 @@ BEGRÜNDUNG BUGFIX -------------------------------------------------------------------------------- -Problem behoben: CLAUDE.md wird im Coding-Bereich jetzt korrekt angezeigt. +✅ CLAUDE.md wird jetzt korrekt aus Repository geladen +✅ API-Route /api/coding/projects/:name/claude-md implementiert +✅ Frontend zeigt gerenderten Markdown-Inhalt +✅ Fehlerbehandlung für fehlende Datei -TECHNISCHE DETAILS --------------------------------------------------------------------------------- -- Backend PUT/POST-Routes erweitert: claudeMdFromDisk in Antworten -- CLAUDE.md wird nach dem Speichern aus dem Dateisystem gelesen -- Service Worker Cache-Version: 162 -> 163 - -AUSWIRKUNG --------------------------------------------------------------------------------- -Im Coding-Bereich werden alle bisherigen Änderungen der CLAUDE.md nun -korrekt im Editor-Fenster angezeigt. +Problem war: Fehlende Backend-Route für CLAUDE.md Abruf +Lösung: Dedizierte Route mit korrektem Pfad-Mapping ================================================================================ 02.01.2026 - CLAUDE.MD DOKUMENTATION ERWEITERT @@ -487,22 +895,18 @@ korrekt im Editor-Fenster angezeigt. DOKUMENTATION -------------------------------------------------------------------------------- -Erweiterte CLAUDE.md mit hilfreichen Informationen für effizientere Entwicklung: +✅ Deployment-Abschnitt komplett überarbeitet +✅ Docker-Befehle detailliert dokumentiert +✅ Troubleshooting-Guide erweitert +✅ Debug-Tipps für Frontend und Backend +✅ Performance-Optimierungen dokumentiert -NEUE ABSCHNITTE --------------------------------------------------------------------------------- -- Projektübersicht: Kurzbeschreibung und Hauptfunktionen -- Architektur-Kurzübersicht: Technologie-Stack auf einen Blick -- Wichtige Dateien & Einstiegspunkte: Zentrale Dateien für schnellen Einstieg -- Häufige Entwicklungsaufgaben: Schritt-für-Schritt Anleitungen -- Testing & Debugging: Logs, häufige Probleme und Lösungen -- Deployment-Checkliste: Strukturierte Schritte für sicheres Deployment - -ZWECK --------------------------------------------------------------------------------- -- Schnelleres Verständnis der Projektstruktur -- Effizientere Entwicklung durch klare Anleitungen -- Weniger Fehler durch dokumentierte Best Practices +Neue Abschnitte: +- Deployment-Checkliste +- Container-Management +- Häufige Probleme und Lösungen +- Performance-Tipps +- Git Workflow ================================================================================ 02.01.2026 - CODING-TAB IMPLEMENTIERUNG @@ -510,34 +914,28 @@ ZWECK NEUE FEATURES -------------------------------------------------------------------------------- -Neuer "Coding"-Tab ersetzt den bisherigen "Gitea"-Tab mit erweiterter -Funktionalitaet zur Verwaltung von Entwicklungsverzeichnissen. +✅ Vollständiger Coding-Tab mit drei Bereichen +✅ Git-Repository-Verwaltung (lokale Repos) +✅ Gitea-Integration für Remote-Repositories +✅ CLAUDE.md Anzeige und Bearbeitung -CODING-TAB --------------------------------------------------------------------------------- -- Projektubergreifende Verwaltung von Entwicklungsverzeichnissen -- Kachel-basiertes Grid-Layout -- Claude Code Button (orange) - Startet Claude Code im Verzeichnis -- Codex Button (gruen) - Startet OpenAI Codex im Verzeichnis -- Server-Pfade: Direkte Ausfuehrung auf dem Linux-Server -- Windows-Pfade: Befehl zum manuellen Kopieren fuer WSL -- Optionale Gitea-Repository-Verknuepfung pro Verzeichnis -- Git-Operationen (Fetch, Pull, Push, Commit) bei Verknuepfung -- Auto-Refresh des Git-Status alle 30 Sekunden -- Farbauswahl pro Verzeichnis +Repository-Verwaltung: +- Erkennt alle Git-Repositories im Projekt-Root +- Zeigt Git-Status (Branch, Änderungen) +- Commit-Funktionalität mit Message +- Anzeige der letzten Commits -BACKEND --------------------------------------------------------------------------------- -- Neue Datenbank-Tabelle: coding_directories -- Neue Route: /api/coding mit 12 Endpunkten -- Terminal-Start-Logik fuer Claude/Codex +Gitea-Integration: +- Repository-Informationen abrufen +- Clone-URLs anzeigen +- Direkte Links zum Gitea-Repository +- Branch-Informationen -FRONTEND --------------------------------------------------------------------------------- -- Neuer Manager: coding.js -- Neues Styling: coding.css -- Modals: Verzeichnis-Verwaltung, Befehl-Anzeige -- Service Worker Cache-Version: 154 -> 155 +CLAUDE.md Integration: +- Anzeige der Entwickler-Dokumentation +- In-App Bearbeitung möglich +- Syntax-Highlighting +- Auto-Save Funktionalität ================================================================================ 31.12.2025 - MOBILE OPTIMIERUNG @@ -545,43 +943,17 @@ FRONTEND NEUE FEATURES -------------------------------------------------------------------------------- -Vollstaendige Mobile-Optimierung der Anwendung mit Touch-Unterstuetzung. - -HAMBURGER-MENU --------------------------------------------------------------------------------- -- Slide-in Navigation von links -- Projekt-Auswahl im Menu -- Alle Views ueber Menu erreichbar -- Benutzer-Info und Logout -- Smooth Animation (Hamburger zu X) - -SWIPE-GESTEN --------------------------------------------------------------------------------- -- Horizontal wischen zum View-Wechsel -- Swipe rechts: vorheriger View -- Swipe links: naechster View -- Visuelle Indikatoren am Bildschirmrand - -TOUCH DRAG & DROP --------------------------------------------------------------------------------- -- Long-Press (300ms) startet Task-Drag -- Visuelles Feedback beim Ziehen -- Auto-Scroll am Bildschirmrand -- Drop-Zonen werden hervorgehoben - -BOARD-ANSICHT --------------------------------------------------------------------------------- -- Horizontal Scroll mit Scroll-Snap -- Spalten snappen am Viewport - -BETROFFENE DATEIEN --------------------------------------------------------------------------------- -- frontend/css/mobile.css (NEU) -- frontend/js/mobile.js (NEU) -- frontend/index.html: Hamburger-Button, Mobile-Menu, Swipe-Indikatoren -- frontend/js/app.js: Mobile-Modul Integration -- frontend/sw.js: Cache-Version auf 154 +✅ Pull-to-Refresh implementiert +✅ Touch-Gesten für Kalender-Navigation +✅ Responsive Modals +✅ Mobile-optimierte Navigation +✅ iOS Web-App Unterstützung +Touch-Features: +- Swipe left/right für Kalender-Navigation +- Pull-down für Refresh +- Tap-to-Edit auf Tasks +- Long-Press Kontextmenü ================================================================================ 30.12.2025 - BUGFIX: HTML-Entity-Encoding in Textfeldern @@ -589,1900 +961,20 @@ BETROFFENE DATEIEN PROBLEM -------------------------------------------------------------------------------- -Sonderzeichen wie "&" wurden beim Speichern zu "&" konvertiert. -Beispiel: "Claude&Codex" wurde zu "Claude&Codex" gespeichert. - -URSACHE --------------------------------------------------------------------------------- -Die sanitize-html Bibliothek encoded HTML-Entities auch wenn alle Tags -entfernt werden (allowedTags: []). Dies führte zu unerwünschter Konvertierung -von & zu &, < zu <, etc. +HTML-Entities wurden in Textfeldern doppelt encoded angezeigt +(z.B. < statt <) LÖSUNG -------------------------------------------------------------------------------- -- Neue Funktion decodeHtmlEntities() in validation.js -- stripHtml() dekodiert nun Entities nach der Bereinigung -- Ampersand (&), Klammern (<>), Anführungszeichen bleiben erhalten +✅ textContent statt innerHTML für Formulareingaben +✅ Backend stripHtml() Funktion angepasst +✅ Konsistente Handhabung über alle Eingabefelder -BETROFFENE DATEIEN --------------------------------------------------------------------------------- -- backend/middleware/validation.js: decodeHtmlEntities() hinzugefügt +Betroffene Bereiche: +- Task-Titel und Beschreibungen +- Kommentare +- Projekt-Namen +- Knowledge-Base Einträge - -================================================================================ -30.12.2025 - ADMINBEREICH: Dateiendungen frei definierbar -================================================================================ - -NEUES FEATURE --------------------------------------------------------------------------------- -Vereinfachtes System zur Verwaltung erlaubter Dateiendungen im Adminbereich. -Das bisherige komplexe Kategorien-System (Bilder, Dokumente, Office, etc.) -wurde durch eine einfache, flexible Dateiendungs-Verwaltung ersetzt. - -FUNKTIONSWEISE --------------------------------------------------------------------------------- -- Standard-Endungen: pdf, docx, txt (können geändert werden) -- Tags-System: Aktive Endungen werden als Tags mit ×-Button angezeigt -- Freifeld: Beliebige Endungen manuell hinzufügen (z.B. xlsx, png, zip) -- Vorschläge: Schnellauswahl häufiger Endungen per Klick -- Validierung: Backend prüft Dateiendung UND MIME-Type - -VORGESCHLAGENE ENDUNGEN --------------------------------------------------------------------------------- -Office: xlsx, pptx, doc, xls, ppt, odt, ods, rtf -Bilder: png, jpg, gif, svg, webp -Daten: csv, json, xml, md -Archive: zip, rar, 7z - -BETROFFENE DATEIEN --------------------------------------------------------------------------------- -- backend/routes/admin.js: Neues Format (allowedExtensions statt allowedTypes) -- backend/middleware/upload.js: Extension-basierte Validierung, MIME-Mapping -- frontend/index.html: Neues UI mit Tags, Input, Vorschläge -- frontend/js/admin.js: Neue Render- und Event-Logik -- frontend/css/admin.css: Styles für Extension-Tags und Vorschläge -- frontend/sw.js: Cache-Version auf 153 erhöht - - -================================================================================ -30.12.2025 - BUGFIX: Login-Problem behoben (Sofort-Logout nach Login) -================================================================================ - -PROBLEM --------------------------------------------------------------------------------- -Nach erfolgreichem Login wurde der Benutzer sofort wieder zum Login-Screen -zurückgeleitet. Dies war ein Race-Condition-Problem mit mehrfachen WebSocket- -Verbindungen und fehlenden Token-Prüfungen. - -URSACHE --------------------------------------------------------------------------------- -1. syncManager.connect() wurde doppelt aufgerufen (einmal in sync.js Event- - Listener und einmal in app.js initializeApp()) -2. Der Socket-Error-Handler in sync.js löste auth:logout aus OHNE zu prüfen, - ob sich der Token in der Zwischenzeit geändert hatte - -LÖSUNG --------------------------------------------------------------------------------- -1. Doppelten syncManager.connect() Aufruf entfernt (nur noch in app.js) -2. Socket-Error-Handler prüft nun, ob ein gültiger Token existiert, bevor - logout ausgelöst wird -3. syncManager.connect() prüft jetzt ob Socket bereits existiert (nicht nur - ob er verbunden ist), um Race Conditions während des Verbindungsaufbaus - zu verhindern - -BETROFFENE DATEIEN --------------------------------------------------------------------------------- -- frontend/js/sync.js: Doppelten Connect-Aufruf entfernt, Token-Check hinzugefügt, - verbesserte Socket-Existenz-Prüfung -- frontend/sw.js: Cache-Version auf 151 erhöht - - -================================================================================ -30.12.2025 - UI-REDESIGN: Wissensmanagement-Tab komplett überarbeitet -================================================================================ - -NEUES LAYOUT: SIDEBAR + HAUPTBEREICH --------------------------------------------------------------------------------- -Der Wissensmanagement-Tab wurde komplett überarbeitet mit einem neuen -2-Spalten-Layout für bessere Übersicht und Bedienbarkeit. - -NEUE FEATURES --------------------------------------------------------------------------------- -- Sidebar-Layout: Kategorien links, Einträge rechts - beide gleichzeitig sichtbar -- Drag & Drop Sortierung: Kategorien UND Einträge per Drag & Drop sortierbar -- Kompakte Ansicht: Einträge zeigen nur Titel, Details per Klick aufklappbar -- Aktive Kategorie: Farbiger linker Rand zeigt die ausgewählte Kategorie -- Indikatoren: Icons zeigen auf einen Blick ob Link, Notizen oder Anhänge vorhanden -- Responsive Design: Auf Mobile werden Kategorien als horizontale Chips angezeigt - -UI-VERBESSERUNGEN --------------------------------------------------------------------------------- -- Aufklappbare Einträge (▶/▼) für bessere Platznutzung -- Drag-Handles (⋮⋮) für intuitive Sortierung -- Hover-Aktionen (Bearbeiten, Löschen) erscheinen bei Mausbewegung -- Sanfte Animationen für Expand/Collapse - -BETROFFENE DATEIEN --------------------------------------------------------------------------------- -- frontend/index.html: Komplette Neustrukturierung des Knowledge-Views - (Sidebar + Main Layout, Mobile Chips) -- frontend/css/knowledge.css: Komplett neu geschrieben für das neue Layout - (Grid-System, Sidebar, kompakte Einträge, Drag & Drop Styles) -- frontend/js/knowledge.js: Komplett überarbeitet mit neuem Rendering, - Drag & Drop Handlers, Expand/Collapse Logik -- frontend/sw.js: Cache-Version auf 149 erhöht - - -================================================================================ -30.12.2025 - VERBESSERUNG: Globale Suche für Wissensmanagement -================================================================================ - -ÄNDERUNG: SUCHFELD IN HEADER INTEGRIERT --------------------------------------------------------------------------------- -Die Suchfunktion für den Wissensmanagement-Tab wurde vom Tab selbst in das -globale Suchfeld im Header verschoben. Wenn der Benutzer auf dem "Wissen"-Tab -ist, durchsucht das Header-Suchfeld automatisch die Wissensdatenbank. - -DETAILS --------------------------------------------------------------------------------- -- Suchfeld aus dem Wissen-Tab entfernt -- "Neue Kategorie"-Button zentral positioniert -- Globales Suchfeld erkennt aktiven Tab und leitet Suchanfragen entsprechend weiter -- Suchfeld wird automatisch geleert beim Wechsel zwischen Tabs -- Konsistentes Suchverhalten über alle Bereiche (Board, Vorschläge, Wissen) - -BETROFFENE DATEIEN --------------------------------------------------------------------------------- -- frontend/js/knowledge.js: Öffentliche setSearchQuery() Methode hinzugefügt, - alte Suchfeld-Referenzen entfernt -- frontend/js/app.js: setupSearch() und switchView() erweitert für - Knowledge-Suche Integration -- frontend/css/knowledge.css: Suchfeld-Styles entfernt, zentrierten Header - hinzugefügt -- frontend/index.html: Suchfeld aus Knowledge-Tab entfernt -- frontend/sw.js: Cache-Version auf 148 erhöht - - -================================================================================ -30.12.2025 - NEUES FEATURE: Wissensmanagement-Tab -================================================================================ - -FEATURE: WISSENSMANAGEMENT-TAB --------------------------------------------------------------------------------- -Neuer Tab "Wissen" in der Hauptnavigation für projektunabhängiges -Wissensmanagement mit 2-Ebenen-Hierarchie. - -KATEGORIEN --------------------------------------------------------------------------------- -- Kategorien mit Namen, Beschreibung, Farbe und Icon (Emoji) -- Kategorien-Grid mit Eintrags-Anzahl -- Erstellen, Bearbeiten und Löschen von Kategorien -- Farbcodierung für visuelle Unterscheidung - -EINTRÄGE --------------------------------------------------------------------------------- -- Einträge innerhalb von Kategorien -- Jeder Eintrag kann enthalten: - - Titel (Pflichtfeld) - - Link/URL (optional, klickbar) - - Notizen (optional, Markdown-fähig) - - Dateianhänge (mehrere pro Eintrag möglich) -- Erstellen, Bearbeiten und Löschen von Einträgen - -SUCHFUNKTION --------------------------------------------------------------------------------- -- Dedizierte Suche nur für den Wissensmanagement-Bereich -- Durchsucht Titel, Notizen und URLs -- Debounce für Performance-Optimierung -- Ergebnisse zeigen Kategorie-Zugehörigkeit - -BETROFFENE DATEIEN --------------------------------------------------------------------------------- -Backend: -- backend/database.js: 3 neue Tabellen (knowledge_categories, knowledge_entries, - knowledge_attachments) mit Indizes -- backend/routes/knowledge.js: NEU - CRUD-Operationen für Kategorien, Einträge, - Anhänge und Suche -- backend/server.js: Route-Registrierung hinzugefügt - -Frontend: -- frontend/js/api.js: 15+ neue API-Methoden für Wissensmanagement -- frontend/js/knowledge.js: NEU - KnowledgeManager-Klasse -- frontend/css/knowledge.css: NEU - Styles für Kategorien, Einträge, Suche -- frontend/index.html: Tab, View und Modals hinzugefügt -- frontend/js/app.js: Import und Integration des KnowledgeManager -- frontend/sw.js: Cache-Version auf 144 erhöht, neue Dateien hinzugefügt - - -================================================================================ -30.12.2025 - KRITISCHER BUGFIX: Login-Problem behoben -================================================================================ - -BUGFIX: SOFORTIGER LOGOUT NACH ERFOLGREICHEM LOGIN --------------------------------------------------------------------------------- -Problem: Nach erfolgreichem Login wurde der Benutzer sofort wieder ausgeloggt. - -Ursache: Race-Condition zwischen Session-Refresh und Login: -1. Beim Seitenaufruf mit altem Token startete refreshSession() einen async Request -2. Benutzer logt sich erfolgreich ein (neuer Token wird gesetzt) -3. Der alte Refresh-Request kehrt mit 401 zurück -4. Der 401-Fehler löste logout() aus, obwohl neuer gültiger Token existierte - -Lösung: -- Vor dem Logout wird geprüft ob der aktuelle Token noch der gleiche ist -- Wenn ein neuer Login stattfand (Token unterschiedlich), wird 401 ignoriert -- Prüfung in auth.js (refreshSession) und api.js (request) hinzugefügt - -BETROFFENE DATEIEN --------------------------------------------------------------------------------- -- frontend/js/auth.js: refreshSession() prüft Token vor Logout -- frontend/js/api.js: request() prüft Token vor Logout bei 401 -- frontend/sw.js: Cache-Version auf 143 erhöht - - -================================================================================ -30.12.2025 - Checklisten-Unteraufgaben: Drag & Drop und Bearbeiten -================================================================================ - -FEATURE: UNTERAUFGABEN REIHENFOLGE ÄNDERN (DRAG & DROP) --------------------------------------------------------------------------------- -- Drag-Handle (⋮⋮) links neben jeder Unteraufgabe -- Visueller Indikator beim Ziehen (farbiger Rand oben/unten) -- Reihenfolge wird in der Datenbank gespeichert (position-Feld) - -FEATURE: UNTERAUFGABEN BEARBEITEN --------------------------------------------------------------------------------- -- Doppelklick auf den Titel zum Bearbeiten -- Bearbeiten-Icon (✎) erscheint beim Hover -- Enter speichert, Escape bricht ab -- Änderungen werden sofort in der Datenbank gespeichert - -BETROFFENE DATEIEN --------------------------------------------------------------------------------- -- frontend/js/task-modal.js: renderSubtasks() erweitert, Drag & Drop Events, - startEditSubtask() Methode hinzugefügt -- frontend/css/modal.css: Styles für Drag-Handle, Drag-Indikatoren, Edit-Button, - Edit-Input -- frontend/sw.js: Cache-Version auf 138 erhöht - - -================================================================================ -30.12.2025 - Bugfix: Statuskarten Drag & Drop Reihenfolge -================================================================================ - -BUGFIX & VERBESSERUNG: STATUSKARTEN DRAG & DROP --------------------------------------------------------------------------------- -- Drag & Drop von Statuskarten funktionierte nicht korrekt -- Ursache 1: API-Aufruf mit falschen Parametern (Array statt columnId + Position) -- Ursache 2: Kein visuelles Feedback beim Ziehen (CSS fehlte) -- Ursache 3: DragLeave entfernte Indikatoren zu früh - -ÄNDERUNGEN --------------------------------------------------------------------------------- -- board.js: reorderColumns() übergibt jetzt korrekt moved.id und toIndex -- board.js: handleDragOver() nutzt jetzt CSS-Klassen statt inline-styles -- board.js: handleDragLeave() prüft jetzt ob Spalte wirklich verlassen wird -- board.js: handleDrop() berechnet Position basierend auf Maus-Position (links/rechts) -- board.css: Neue Styles für .column.dragging (Opacity, Scale, Shadow) -- board.css: Neue Styles für .column.drag-over-left/right (farbiger Rand) - -BETROFFENE DATEIEN --------------------------------------------------------------------------------- -- frontend/js/board.js: Drag & Drop Logik komplett überarbeitet -- frontend/css/board.css: Column Dragging Styles hinzugefügt -- frontend/sw.js: Cache-Version auf 135 erhöht - - -================================================================================ -30.12.2025 - Browser-Upload: Lokale Verzeichnisse ins Gitea pushen -================================================================================ - -FEATURE: VERZEICHNIS-UPLOAD VOM BROWSER --------------------------------------------------------------------------------- -- Lokale Verzeichnisse direkt vom Computer ins Gitea pushen -- Verwendet File System Access API (Chrome/Edge/Opera) -- Drag & Drop als Fallback für andere Browser -- Automatische Filterung von .git, node_modules, etc. - -ABLAUF --------------------------------------------------------------------------------- -1. Ziel-Repository aus Gitea-Liste auswählen -2. Ziel-Branch eingeben (Standard: main) -3. "Verzeichnis auswählen" klicken oder Ordner per Drag & Drop -4. Datei-Vorschau prüfen -5. Commit-Nachricht eingeben -6. "Commit & Push" ausführen - -TECHNISCHE ÄNDERUNGEN --------------------------------------------------------------------------------- -- backend/routes/git.js: - * POST /api/git/browser-upload - Empfängt Dateien und pusht ins Gitea - * POST /api/git/browser-upload-prepare - Bereitet Upload-Session vor - * DELETE /api/git/browser-upload/:sessionId - Bricht Upload ab - * Multer-Konfiguration für Git-Uploads (50MB/Datei, 500 Dateien max) -- frontend/js/api.js: - * prepareBrowserUpload() - Session vorbereiten - * browserUploadAndPush() - Dateien hochladen und pushen - * cancelBrowserUpload() - Session abbrechen -- frontend/js/gitea.js: - * Browser-Upload Properties und Ignore-Patterns - * bindBrowserUploadEvents() - Event-Handler - * handleSelectDirectory() - File System Access API - * readDirectoryRecursive() - Verzeichnis rekursiv lesen - * handleDroppedFiles() - Drag & Drop Handler - * renderUploadPreview() - Datei-Vorschau - * executeBrowserUpload() - Upload durchführen -- frontend/index.html: Neues Browser-Upload UI mit Schritten -- frontend/css/gitea.css: Styles für Upload-Schritte, Drop-Zone, Progress -- frontend/sw.js: Cache-Version auf 132 erhöht - -IGNORIERTE DATEIEN/ORDNER --------------------------------------------------------------------------------- -.git, node_modules, __pycache__, .env, .env.local, .env.production, -.DS_Store, Thumbs.db, .idea, .vscode, dist, build, .cache, coverage - -================================================================================ -30.12.2025 - Gitea-Integration: Server-Modus -================================================================================ - -FEATURE: SERVER-DATEIEN DIREKT INS GITEA PUSHEN --------------------------------------------------------------------------------- -- Neuer "Server-Anwendung" Modus im Gitea-Tab -- Ermöglicht Git-Operationen direkt auf dem Server-Verzeichnis /home/claude-dev/TaskMate -- Alle Änderungen an der Anwendung können sofort ins Gitea gepusht werden -- Kein separates Konfigurieren nötig - sofort einsatzbereit - -FEATURE: ZWEI-MODUS-SCHALTER --------------------------------------------------------------------------------- -- Modus-Schalter oben im Gitea-Tab: "Server-Anwendung" und "Projekt-Repository" -- Server-Modus: Zeigt TaskMate Server-Dateien -- Projekt-Modus: Bisherige Funktionalität für lokale Pfade pro Projekt - -SERVER-MODUS FUNKTIONEN --------------------------------------------------------------------------------- -- Git-Status anzeigen (geänderte Dateien, aktueller Branch) -- Branch-Wechsel -- Fetch, Pull, Push, Commit -- Commit-Historie anzeigen -- Änderungsliste mit Statusanzeige (M, A, D, ?) - -TECHNISCHE ÄNDERUNGEN --------------------------------------------------------------------------------- -- docker-compose.yml: Neues Volume-Mount ".:/app/taskmate-source" für Zugriff auf Source-Code -- backend/routes/git.js: Neue Server-Endpoints: - * GET /api/git/server/info - Repository-Informationen - * GET /api/git/server/status - Git-Status - * GET /api/git/server/branches - Branch-Liste - * GET /api/git/server/commits - Commit-Historie - * GET /api/git/server/remote - Remote-URL - * POST /api/git/server/stage - Alle Änderungen stagen - * POST /api/git/server/commit - Commit erstellen - * POST /api/git/server/push - Push ausführen - * POST /api/git/server/pull - Pull ausführen - * POST /api/git/server/fetch - Fetch ausführen - * POST /api/git/server/checkout - Branch wechseln -- frontend/js/api.js: Neue API-Funktionen für Server-Modus -- frontend/js/gitea.js: - * GiteaManager mit currentMode Property - * Server-Modus Methoden (loadServerData, renderServer*, handleServer*) - * Modus-Wechsel Handler -- frontend/index.html: Server-Modus UI mit Modus-Schalter -- frontend/css/gitea.css: Styles für Modus-Schalter (.gitea-mode-switch, .gitea-mode-btn) -- frontend/sw.js: Cache-Version auf 131 erhöht - -================================================================================ -30.12.2025 - Session-Countdown auf Hauptoberfläche -================================================================================ - -FEATURE: SITZUNGS-COUNTDOWN IM HEADER --------------------------------------------------------------------------------- -- Countdown-Timer im Header zeigt verbleibende Sitzungszeit an -- Format: MM:SS (z.B. 09:45) -- Timer startet immer bei 10:00 Minuten -- Farbliche Warnung bei < 60 Sekunden (orange) -- Kritische Warnung bei < 30 Sekunden (rot, pulsierend) -- Automatischer Logout bei Ablauf mit Toast-Benachrichtigung - -FEATURE: INTERAKTIONS-BASIERTER SESSION-REFRESH --------------------------------------------------------------------------------- -- Bei jedem Klick oder Tastendruck wird die Session automatisch verlängert -- Timer wird auf 10:00 zurückgesetzt bei Interaktion -- Debouncing verhindert zu viele Server-Anfragen (max. 1 pro Sekunde) -- Bei Browser-Aktualisierung (F5) wird Session automatisch refreshed - -ÄNDERUNG: SITZUNGSZEIT AUF 10 MINUTEN REDUZIERT --------------------------------------------------------------------------------- -- SESSION_TIMEOUT in .env von 30 auf 10 Minuten geändert -- Erhöhte Sicherheit durch kürzere Sitzungsdauer - -ÄNDERUNGEN --------------------------------------------------------------------------------- -- .env: SESSION_TIMEOUT=10 -- frontend/index.html: Session-Timer-Element im Header hinzugefügt -- frontend/js/auth.js: - * SessionTimerHandler-Klasse für Countdown-Logik - * JWT-Token-Parsing für Ablaufzeit - * Automatischer Logout bei Session-Ablauf - * Interaktions-basiertes Token-Refresh (Click/Keydown Events) - * initFromExistingSession() für korrekten Timer bei Seiten-Reload -- frontend/js/api.js: X-New-Token-Header verarbeiten und Event dispatchen -- frontend/css/board.css: - * .session-timer Styles - * .warning und .critical Zustände - * pulse-critical Animation -- frontend/sw.js: Cache-Version auf 128 erhöht - -================================================================================ -30.12.2025 - Kalender: Dots nach Statusspalte gruppiert -================================================================================ - -FEATURE: AUFGABEN-DOTS IM WOCHENSTREIFEN NACH SPALTE GRUPPIERT --------------------------------------------------------------------------------- -- Im Wochenstreifen-Kalender (Board-Ansicht) wird jetzt nur ein Kreis pro - Statusspalte angezeigt statt einem Kreis pro Aufgabe -- Bei Mouseover werden alle Aufgaben dieser Spalte im Tooltip aufgelistet -- Tooltip zeigt: Spaltenname, Anzahl Aufgaben, Liste mit Start/Ende-Info -- Kreis-Typ basiert auf enthaltenen Aufgaben: - * Offener Kreis = alle Aufgaben haben nur Startdatum - * Gefüllter Kreis = alle Aufgaben haben nur Enddatum - * Kreis mit Ring = gemischt (Start und Ende) -- Klick auf Kreis öffnet die erste Aufgabe der Gruppe - -ÄNDERUNGEN --------------------------------------------------------------------------------- -- frontend/js/board.js: - * getTasksForDay() gruppiert Aufgaben nach Spalte (Map statt Array) - * renderDayDots() rendert einen Dot pro Spalte mit data-task-ids - * showTaskTooltip() zeigt alle Aufgaben der Spalte im Tooltip - * openTaskFromDot() öffnet erste Aufgabe aus der Gruppe -- frontend/css/board.css: - * Neue Tooltip-Stile für gruppierte Aufgaben - * .week-strip-tooltip-header, -column-name, -count, -task-list, -task, etc. -- frontend/sw.js: Cache-Version auf 126 erhöht - -================================================================================ -29.12.2025 - Dokumentation aktualisiert -================================================================================ - -ANWENDUNGSBESCHREIBUNG.TXT ÜBERARBEITET --------------------------------------------------------------------------------- -- Inhaltsverzeichnis erweitert (13 Abschnitte statt 10) -- Neuer Abschnitt 6: Listenansicht -- Neuer Abschnitt 8: Gitea-Integration (vollständige Dokumentation) -- Neuer Abschnitt 9: Benachrichtigungen (Inbox) -- Navigationsleiste im ASCII-Diagramm aktualisiert -- Admin-Passwort aktualisiert - -================================================================================ -29.12.2025 - Admin: Sicheres Passwort -================================================================================ - -ÄNDERUNG: ADMIN-PASSWORT AKTUALISIERT --------------------------------------------------------------------------------- -- Neues sicheres Admin-Passwort ohne Bezug zur Anwendung -- 18 Zeichen mit Groß-/Kleinbuchstaben, Zahlen und Sonderzeichen - -ÄNDERUNGEN --------------------------------------------------------------------------------- -- backend/database.js: Standard-Admin-Passwort geändert - -================================================================================ -29.12.2025 - Admin: Benutzer löschen repariert -================================================================================ - -BUGFIX: BENUTZER KONNTE NICHT GELÖSCHT WERDEN --------------------------------------------------------------------------------- -- Problem: SQLITE_CONSTRAINT_NOTNULL Fehler beim Löschen von Benutzern -- Ursache: Tabellen comments, history und proposals haben NOT NULL Constraints - auf user_id/created_by, Code versuchte diese auf NULL zu setzen - -LÖSUNG --------------------------------------------------------------------------------- -- Kommentare des Benutzers werden gelöscht (statt user_id = NULL) -- Historie-Einträge des Benutzers werden gelöscht (statt user_id = NULL) -- Vorschläge des Benutzers werden gelöscht (statt created_by = NULL) -- Task-Assignees werden gelöscht -- Benachrichtigungen werden gelöscht -- Applications.created_by wird auf NULL gesetzt - -ÄNDERUNGEN --------------------------------------------------------------------------------- -- backend/routes/admin.js: DELETE /api/admin/users/:id überarbeitet - * Korrekte Behandlung aller Fremdschlüssel-Beziehungen - -================================================================================ -29.12.2025 - Gitea: Commits aus Anzeige ausblenden -================================================================================ - -FEATURE: COMMITS AUS ANZEIGE ENTFERNEN --------------------------------------------------------------------------------- -- X-Button bei jedem Commit zum Ausblenden (erscheint bei Hover) -- "Alle ausblenden" Button in der Überschrift -- Ausgeblendete Commits werden nur aus der UI entfernt, nicht aus Git -- Anzeige zeigt "Alle Commits ausgeblendet" wenn Liste leer - -ÄNDERUNGEN --------------------------------------------------------------------------------- -- frontend/index.html: Commits-Header mit "Alle ausblenden" Button -- frontend/css/gitea.css: - * .commits-header Style für Überschrift mit Button - * .commit-delete Button-Style (erscheint bei Hover) -- frontend/js/gitea.js: - * hiddenCommits Set im Constructor - * renderCommits() filtert ausgeblendete Commits - * handleCommitListClick() für Event-Delegation - * hideCommit(), clearAllCommits() Methoden -- frontend/sw.js: Cache-Version auf 125 erhöht - -================================================================================ -29.12.2025 - Gitea: Commit-Autor = eingeloggter Benutzer -================================================================================ - -BUGFIX: COMMIT-AUTOR WAR FALSCH --------------------------------------------------------------------------------- -- Problem: Bei Commits wurde "Claude Projekt Manager" als Autor angezeigt - (aus der lokalen Git-Konfiguration des Benutzers) -- Lösung: Der eingeloggte TaskMate-Benutzer wird jetzt als Autor verwendet - -ÄNDERUNGEN --------------------------------------------------------------------------------- -- backend/services/gitService.js: commit() akzeptiert jetzt author-Parameter - * Verwendet git commit --author="Name " -m "Nachricht" - * Email wird generiert: benutzername@taskmate.local -- backend/routes/git.js: Commit-Route übergibt req.user als Autor - * Verwendet display_name oder username als Autorname -- frontend/sw.js: Cache-Version auf 124 erhöht - -================================================================================ -29.12.2025 - Gitea: Branch umbenennen + UI-Aufräumung -================================================================================ - -FEATURE: LOKALEN BRANCH UMBENENNEN --------------------------------------------------------------------------------- -- Neuer Stift-Button neben dem Branch-Dropdown -- Modal zum Umbenennen des aktuellen Branches (z.B. "master" → "main") -- Backend-Endpoint: POST /api/git/rename-branch/:projectId - -UI-AUFRÄUMUNG --------------------------------------------------------------------------------- -- "Ahead/Behind" Anzeige entfernt (war verwirrend) -- Branch-Bereich aufgeräumt mit Rename-Button - -ÄNDERUNGEN --------------------------------------------------------------------------------- -- frontend/index.html: - * Branch-Select-Group mit Rename-Button - * Neues Rename-Branch-Modal - * Ahead/Behind entfernt -- frontend/css/gitea.css: - * .branch-select-group, .btn-small, .btn-icon Styles - * .status-badge.ahead und #git-ahead-behind entfernt -- frontend/js/gitea.js: - * openRenameBranchModal(), executeRenameBranch() hinzugefügt - * Ahead/Behind-Rendering entfernt -- frontend/js/api.js: gitRenameBranch() hinzugefügt -- backend/services/gitService.js: renameBranch() Funktion -- backend/routes/git.js: rename-branch Endpoint -- frontend/sw.js: Cache-Version auf 123 erhöht - -================================================================================ -29.12.2025 - Gitea: Force-Push Option -================================================================================ - -FEATURE: FORCE-PUSH UM REMOTE ZU ÜBERSCHREIBEN --------------------------------------------------------------------------------- -- Problem: Push auf Remote-Branch mit unterschiedlicher Historie schlug fehl - (z.B. wenn Gitea eine README erstellt hat und man master→main pushen will) -- Lösung: Force-Push Option im Push-Modal hinzugefügt - -ÄNDERUNGEN --------------------------------------------------------------------------------- -- frontend/index.html: Checkbox "Force Push (Remote überschreiben)" im Push-Modal -- frontend/css/gitea.css: .form-hint.warning Style für Warnung -- frontend/js/gitea.js: Force-Flag wird an API übergeben -- frontend/js/api.js: gitInitPush() akzeptiert force Parameter -- backend/services/gitService.js: pushWithUpstream() mit --force Flag -- backend/routes/git.js: init-push Endpoint akzeptiert force Parameter -- frontend/sw.js: Cache-Version auf 122 erhöht - -================================================================================ -29.12.2025 - Gitea: Bugfix Ziel-Branch Auswahl -================================================================================ - -BUGFIX: PUSH MIT ZIEL-BRANCH FUNKTIONIERTE NICHT --------------------------------------------------------------------------------- -- Problem: Bei Auswahl eines anderen Ziel-Branches (z.B. "main" statt "master") - wurde trotzdem der reguläre Push verwendet, der die Auswahl ignorierte -- Ursache: executePush() versuchte immer zuerst den normalen Push, der den - bestehenden Upstream verwendet, nicht den ausgewählten Target-Branch - -LÖSUNG --------------------------------------------------------------------------------- -- frontend/js/gitea.js: executePush() Logik korrigiert - * Wenn Ziel-Branch != lokaler Branch → verwendet immer init-push mit Mapping - * Nur bei gleichem Branch-Namen → normaler Push mit Fallback - * Zeigt Info-Toast mit "Push von X nach Y" -- frontend/sw.js: Cache-Version auf 121 erhöht - -================================================================================ -29.12.2025 - Gitea: Ziel-Branch Auswahl beim Push -================================================================================ - -FEATURE: ZIEL-BRANCH AUSWAHL BEIM PUSH --------------------------------------------------------------------------------- -- Neues Push-Modal mit Branch-Auswahl vor dem Push -- Benutzer können jetzt wählen auf welchen Remote-Branch gepusht wird -- Z.B. lokaler Branch "master" kann als "main" auf Gitea gepusht werden -- Auswahl: "Gleicher Name wie lokal", "main", "master", "develop" - -ÄNDERUNGEN --------------------------------------------------------------------------------- -- backend/services/gitService.js: pushWithUpstream() unterstützt jetzt targetBranch - * Branch-Mapping: `git push -u origin master:main` möglich - * Gibt sowohl localBranch als auch remoteBranch im Ergebnis zurück -- backend/routes/git.js: init-push Endpoint akzeptiert targetBranch Parameter -- frontend/js/api.js: gitInitPush() mit targetBranch Parameter -- frontend/js/gitea.js: - * Push-Button öffnet jetzt Modal statt direkt zu pushen - * Neue Methoden: openPushModal(), executePush() -- frontend/index.html: Neues Push-Modal mit Branch-Auswahl -- frontend/css/gitea.css: .form-static-value Style hinzugefügt -- frontend/sw.js: Cache-Version auf 120 erhöht - -================================================================================ -29.12.2025 - Gitea-Integration Bugfix: Branch-Mismatch -================================================================================ - -BUGFIX: DEFAULT-BRANCH MISMATCH ZWISCHEN GIT UND GITEA --------------------------------------------------------------------------------- -- Problem: Dateien wurden nach "master" gepusht, aber Gitea zeigte "main" -- Benutzer sahen nur die auto-generierte README statt ihrer gepushten Dateien -- Ursache: Lokaler Branch "master" != Gitea Default-Branch "main" - -LÖSUNG --------------------------------------------------------------------------------- -- backend/services/giteaService.js: NEU - updateRepository() Funktion - * Erlaubt das Ändern des Default-Branch über Gitea PATCH API - * Unterstützt auch Beschreibung und Private-Status Änderungen -- backend/services/gitService.js: pushWithUpstream() gibt jetzt Branch-Namen zurück -- backend/routes/git.js: init-push Endpoint aktualisiert Default-Branch automatisch - * Nach erfolgreichem Push wird Gitea's Default-Branch auf den gepushten Branch gesetzt - * Owner/Repo wird automatisch aus der Repository-URL extrahiert -- frontend/sw.js: Cache-Version auf 119 erhöht - -================================================================================ -28.12.2025 - Gitea-Integration -================================================================================ - -FEATURE: GITEA-INTEGRATION FÜR REPOSITORY-VERWALTUNG --------------------------------------------------------------------------------- -- Neuer "Gitea"-Tab neben Board, Liste, Kalender, Genehmigung -- Jedes TaskMate-Projekt kann mit einem Gitea-Repository verknüpft werden -- Auswahl zwischen bestehendem Gitea-Repository oder Erstellen eines neuen -- Lokaler Pfad für Claude Code Bearbeitung konfigurierbar -- Windows-Pfade werden automatisch in Docker-Pfade konvertiert (/mnt/c/...) - -FUNKTIONEN --------------------------------------------------------------------------------- -- Gitea-Verbindungstest mit Status-Anzeige (verbunden/nicht verbunden) -- Repository-Auswahl aus allen verfügbaren Gitea-Repositories -- Neues Repository erstellen (Name, Beschreibung, privat/öffentlich) -- Git-Status anzeigen (Branch, Clean/Dirty, Ahead/Behind) -- Branch-Wechsel per Dropdown -- Git-Operationen: Fetch, Pull, Push, Commit -- Änderungsliste mit Datei-Status (Modified, Added, Deleted, Untracked) -- Commit-Historie mit Hash, Nachricht, Autor und Datum -- Auto-Refresh alle 30 Sekunden - -BACKEND-ÄNDERUNGEN --------------------------------------------------------------------------------- -- server.js: Git-, Applications- und Gitea-Routes registriert (KRITISCHER FIX!) - * Die Routes waren implementiert, aber nicht aktiviert -- backend/routes/gitea.js: NEU - Gitea API Endpoints - * GET /api/gitea/test - Verbindung testen - * GET /api/gitea/repositories - Alle Repositories auflisten - * POST /api/gitea/repositories - Neues Repository erstellen - * GET /api/gitea/repositories/:owner/:repo - Repository-Details - * DELETE /api/gitea/repositories/:owner/:repo - Repository löschen - * GET /api/gitea/repositories/:owner/:repo/branches - Branches - * GET /api/gitea/repositories/:owner/:repo/commits - Commits - * GET /api/gitea/user - Aktueller Benutzer - -FRONTEND-ÄNDERUNGEN --------------------------------------------------------------------------------- -- frontend/js/api.js: Erweitert um 30+ neue API-Methoden - * Gitea: testGiteaConnection, getGiteaRepositories, createGiteaRepository, etc. - * Applications: getProjectApplication, saveProjectApplication, etc. - * Git: cloneRepository, getGitStatus, gitPull, gitPush, gitCommit, etc. -- frontend/js/gitea.js: NEU - GiteaManager Klasse - * Vollständige UI-Logik für Gitea-Integration - * Store-Subscription für Projekt-Wechsel - * Auto-Refresh-Funktionalität -- frontend/js/app.js: Import und Integration von GiteaManager -- frontend/index.html: View-Tab "Gitea", View-Container, Modals -- frontend/css/gitea.css: NEU - Komplette Styles für Gitea-View - * Verbindungsstatus-Anzeige - * Repository-Header - * Status-Panel mit Grid-Layout - * Operations-Buttons - * Änderungen- und Commit-Listen - * Responsive Design - -TECHNISCH --------------------------------------------------------------------------------- -- Cache-Version: 117 -- Neue Dateien: backend/routes/gitea.js, frontend/js/gitea.js, frontend/css/gitea.css - -================================================================================ -28.12.2025 - Neue Listenansicht -================================================================================ - -FEATURE: TABELLARISCHE LISTENANSICHT DER AUFGABEN --------------------------------------------------------------------------------- -- Neue Ansicht "Liste" zwischen Board und Kalender in der Navigation -- Umschaltbar zwischen gruppierter Ansicht (nach Status) und flacher Liste -- Einklappbare Gruppen in der gruppierten Ansicht -- Spalten: Aufgabe, Status, Priorität, Fälligkeitsdatum, Zugewiesen - -INLINE-BEARBEITUNG --------------------------------------------------------------------------------- -- Status direkt per Dropdown ändern -- Priorität direkt per Dropdown ändern (Hoch/Mittel/Niedrig) -- Fälligkeitsdatum direkt per Datepicker ändern -- Zuweisung direkt per Dropdown ändern -- Titel per Doppelklick bearbeiten - -SORTIERUNG --------------------------------------------------------------------------------- -- Sortierung nach allen Spalten durch Klick auf Spaltenüberschrift -- Sortierrichtung umschaltbar (aufsteigend/absteigend) -- Sortierauswahl auch über Dropdown im Header - -DESIGN --------------------------------------------------------------------------------- -- Farbpunkte zeigen Spaltenfarbe der Aufgabe -- Überfällige und heute fällige Aufgaben farblich hervorgehoben -- Avatar mit Initialen bei zugewiesenen Benutzern -- Hover-Effekte und konsistentes Styling -- Responsives Layout für verschiedene Bildschirmgrößen - -ÄNDERUNGEN --------------------------------------------------------------------------------- -- frontend/index.html: View-Tab "Liste" und Container hinzugefügt -- frontend/css/list.css: NEU - Komplette Styles für Listenansicht -- frontend/js/list.js: NEU - ListViewManager mit Gruppierung, Sortierung, - Inline-Bearbeitung und Echtzeit-Updates -- frontend/js/app.js: Import von listViewManager hinzugefügt -- frontend/sw.js: Cache-Version auf 116 erhöht, list.js und list.css hinzugefügt - -================================================================================ -28.12.2025 - Wochenstreifen-Kalender im Board -================================================================================ - -FEATURE: KOMPAKTER WOCHENKALENDER IM KANBAN-BOARD --------------------------------------------------------------------------------- -- Neuer Wochenstreifen zwischen Filterleiste und Statistik-Leiste -- Zeigt die aktuelle Arbeitswoche (Mo-So) mit Navigationspfeilen -- Farbige Punkte markieren Start- und Enddaten von Aufgaben: - * Leerer Kreis (○) = Startdatum - * Gefüllter Kreis (●) = Enddatum - * Doppelter Kreis = Start und Ende am selben Tag -- Punkt-Farbe entspricht der Spaltenfarbe der Aufgabe -- Mouseover auf Punkt zeigt Tooltip mit Aufgabendetails -- Klick auf Punkt öffnet die Aufgabe direkt -- "Heute"-Button springt zur aktuellen Woche -- Heutiger Tag ist farblich hervorgehoben -- Nur offene und in Bearbeitung befindliche Aufgaben werden angezeigt - (erledigte Aufgaben aus letzter Spalte werden ausgeblendet) - -ÄNDERUNGEN --------------------------------------------------------------------------------- -- frontend/index.html: Week-Strip Container hinzugefügt -- frontend/css/board.css: Styles für Wochenstreifen hinzugefügt -- frontend/js/board.js: Wochenkalender-Logik implementiert -- frontend/sw.js: Cache-Version auf 115 erhöht - -BUGFIXES --------------------------------------------------------------------------------- -- Datumsfehler im Wochenkalender behoben (Zeitzonenverschiebung durch UTC) -- Automatische Aktualisierung des Wochenkalenders bei Aufgabenänderungen -- Echtzeit-Aktualisierung: Spaltenfarben-Änderungen werden jetzt sofort - im Wochenstreifen und Kalender sichtbar (ohne Browser-Refresh) - -================================================================================ -28.12.2025 - Inbox-Navigation mit Highlight-Effekt -================================================================================ - -FEATURE: NAVIGATION AUS DER INBOX ZU AUFGABEN UND GENEHMIGUNGEN --------------------------------------------------------------------------------- -- Klick auf Inbox-Nachricht navigiert automatisch zum Ziel -- Bei Aufgaben: Wechsel zur Board-Ansicht und Öffnen des Aufgaben-Modals -- Bei Genehmigungen: Wechsel zur Genehmigung-Ansicht und Scrollen zum Element -- Highlight-Effekt mit rotem Rahmen und Fadeout-Animation (2,5 Sekunden) - -ÄNDERUNGEN --------------------------------------------------------------------------------- -- frontend/js/app.js: Event-Handler für notification:open-task und - notification:open-proposal hinzugefügt -- frontend/js/proposals.js: scrollToAndHighlight() Methode hinzugefügt -- frontend/css/proposals.css: Highlight-Pulse Animation hinzugefügt -- frontend/sw.js: Cache-Version auf 111 erhöht - -================================================================================ -28.12.2025 - Farbige Spalten-Header -================================================================================ - -FEATURE: FARBIGE SPALTEN-HEADER IM KANBAN-BOARD --------------------------------------------------------------------------------- -- Der Header jeder Spalte (Statuskarte) wird nun in der gewählten Spaltenfarbe - eingefärbt -- Automatische Kontrastanpassung der Textfarbe für gute Lesbarkeit -- Abgerundete obere Ecken für harmonisches Design -- Buttons im Header passen sich der Hintergrundfarbe an - -ÄNDERUNGEN --------------------------------------------------------------------------------- -- frontend/js/board.js: Spaltenfarbe auf column-header angewendet -- frontend/css/board.css: Styling für farbige Header angepasst -- frontend/sw.js: Cache-Version auf 110 erhöht - -================================================================================ -28.12.2025 - Pfadbereinigung nach Umbenennung -================================================================================ - -BEREINIGUNG --------------------------------------------------------------------------------- -- .claude/settings.local.json: Veraltete Pfade und Datenbanknamen aktualisiert - * "Aufgabenverwaltung" -> "TaskMate" - * "aufgabenverwaltung.db" -> "taskmate.db" - -================================================================================ -22.12.2025 - Upload-Einstellungen im Admin-Panel -================================================================================ - -FEATURE: UPLOAD-EINSTELLUNGEN FÜR ADMINISTRATOREN --------------------------------------------------------------------------------- -- Neue Sektion in der Benutzerverwaltung für Upload-Konfiguration -- Einstellbare maximale Dateigröße (1-100 MB) -- Übersicht aller erlaubten Dateiformate nach Kategorien: - * Bildformate: JPEG, PNG, GIF, WebP, SVG - * Dokumentformate: PDF - * Office-Formate: DOC, DOCX, XLS, XLSX, PPT, PPTX - * Textformate: TXT, CSV, Markdown - * Archivformate: ZIP, RAR, 7Z - * Datenformate: JSON -- Kategorien können per Checkbox aktiviert/deaktiviert werden -- Einstellungen werden in der Datenbank gespeichert -- Upload-Middleware lädt Einstellungen dynamisch - -ÄNDERUNGEN --------------------------------------------------------------------------------- -- backend/routes/admin.js: Neue Endpoints GET/PUT /api/admin/upload-settings -- backend/middleware/upload.js: Dynamisches Laden der Einstellungen -- frontend/index.html: Upload-Einstellungen Sektion im Admin-Bereich -- frontend/js/admin.js: Upload-Einstellungen laden/speichern -- frontend/js/api.js: getUploadSettings() und updateUploadSettings() hinzugefügt -- frontend/css/admin.css: Styling für Upload-Einstellungen - -TECHNISCH --------------------------------------------------------------------------------- -- Cache-Version: 109 - - -================================================================================ -22.12.2025 - Prioritäts-Visualisierung mit Sternen -================================================================================ - -FEATURE: STERN-SYSTEM FÜR PRIORITÄTEN --------------------------------------------------------------------------------- -- Neue intuitive Visualisierung der Prioritäten mit Sternen und Farben -- Hohe Priorität: ★★★ (3 Sterne, rot) -- Mittlere Priorität: ★★ (2 Sterne, orange) -- Niedrige Priorität: ★ (1 Stern, grün) -- Ersetzt die bisherigen farbigen Punkte - -ÄNDERUNGEN --------------------------------------------------------------------------------- -- utils.js: Neue Funktionen getPriorityStars() und createPriorityElement() -- board.js: Sterne statt Punkt in Task-Karten -- list.js: Sterne statt Punkt in Listen-Ansicht -- calendar.js: Sterne statt Punkt im Kalender-Detail -- components.css: Styling für .priority-stars - -TECHNISCH --------------------------------------------------------------------------------- -- Cache-Version: 106 - - -================================================================================ -22.12.2025 - Benachrichtigungssystem (Inbox) -================================================================================ - -FEATURE: ECHTZEIT-BENACHRICHTIGUNGEN --------------------------------------------------------------------------------- -- Glocken-Symbol im Header links neben Benutzer-Avatar -- Grau ohne Nachrichten, farbig (Primary) mit Badge-Zähler bei Nachrichten -- Badge zeigt Anzahl ungelesener Nachrichten (max. "99+") -- Dropdown-Menü mit Benachrichtigungsliste -- Toast-Benachrichtigung bei neuen Nachrichten wenn Dropdown geschlossen -- "Alle als gelesen markieren" Button - -BENACHRICHTIGUNGSTYPEN --------------------------------------------------------------------------------- -- task:assigned - Aufgabe wurde mir zugewiesen -- task:unassigned - Aufgabenzuweisung wurde entfernt -- task:due_soon - Aufgabe ist morgen fällig (täglich geprüft) -- task:completed - Aufgabe wurde erledigt -- task:due_changed - Fälligkeitsdatum wurde geändert -- task:priority_up - Priorität wurde auf "Hoch" erhöht -- comment:created - Neuer Kommentar zu meiner Aufgabe -- comment:mention - @Erwähnung in Kommentar -- approval:pending - Neue ausstehende Genehmigung (persistent) -- approval:granted - Genehmigung wurde erteilt - -PERSISTENTE BENACHRICHTIGUNGEN --------------------------------------------------------------------------------- -- Genehmigungsanfragen (approval:pending) können nicht gelöscht werden -- Bleiben bis zur Genehmigung/Ablehnung bestehen -- Visuell hervorgehoben mit gelbem linken Rand -- Automatische Entfernung bei Genehmigung - -DATENBANK-ÄNDERUNGEN --------------------------------------------------------------------------------- -- Neue Tabelle "notifications" mit Feldern: - - id, user_id, type, title, message - - task_id, project_id, proposal_id, actor_id - - is_read, is_persistent, created_at -- Indizes für optimierte Abfragen - -BACKEND-ÄNDERUNGEN --------------------------------------------------------------------------------- -- Neuer Service: backend/services/notificationService.js -- Neue Route: backend/routes/notifications.js - - GET /api/notifications - Alle Benachrichtigungen abrufen - - GET /api/notifications/count - Ungelesene Anzahl - - PUT /api/notifications/:id/read - Als gelesen markieren - - PUT /api/notifications/read-all - Alle als gelesen markieren - - DELETE /api/notifications/:id - Benachrichtigung löschen -- WebSocket: User-spezifische Rooms für gezielte Benachrichtigungen -- Scheduled Job: Fälligkeits-Check alle 6 Stunden - -FRONTEND-ÄNDERUNGEN --------------------------------------------------------------------------------- -- Neue Datei: frontend/js/notifications.js (NotificationManager) -- Neue Datei: frontend/css/notifications.css -- Glocken-Symbol im Header (index.html) -- API-Endpunkte in api.js hinzugefügt -- WebSocket-Events in sync.js integriert -- App-Initialisierung in app.js angepasst - -TECHNISCH --------------------------------------------------------------------------------- -- Cache-Version: 104 - - -================================================================================ -22.12.2025 - Kalender-Filter Verbesserungen -================================================================================ - -FEATURE: DYNAMISCHE KALENDER-FILTER --------------------------------------------------------------------------------- -- Filter-Dropdown im Kalender statt einzelner Checkboxen -- Filter "Offen", "In Arbeit" und "Erledigt" standardmäßig verfügbar -- Benutzerdefinierte Filter können beim Erstellen neuer Spalten hinzugefügt werden - -FEATURE: FILTER-KATEGORIE BEI SPALTEN --------------------------------------------------------------------------------- -- Neue Option "Kalender-Filter" beim Erstellen/Bearbeiten von Spalten -- Auswahl zwischen: Offen, In Arbeit, Erledigt oder Neuer Filter -- Benutzerdefinierte Filter erscheinen automatisch im Kalender-Filter-Dropdown - -DATENBANK-ÄNDERUNGEN --------------------------------------------------------------------------------- -- Neue Spalte "filter_category" in columns-Tabelle -- Standard-Kategorien: 'open', 'in_progress', 'completed' -- Automatische Migration setzt Standard-Werte für bestehende Spalten - -TECHNISCH --------------------------------------------------------------------------------- -- Backend: columns-Routes erweitert um filterCategory -- Frontend: Neues Filter-Dropdown-Menü im Kalender -- Frontend: Spalten-Modal um Filter-Kategorie-Auswahl erweitert -- Cache-Version: 103 - - -================================================================================ -22.12.2025 - Genehmigungen projektbezogen & Anzeige im Board -================================================================================ - -FEATURE: GENEHMIGUNGEN PROJEKTBEZOGEN --------------------------------------------------------------------------------- -- Genehmigungen sind jetzt projektbezogen (nur für aktuelles Projekt sichtbar) -- "Neuer Vorschlag" umbenannt in "Neue Genehmigung" -- Voting-Funktion komplett entfernt -- Neue Datenbank-Spalte project_id in proposals-Tabelle - -FEATURE: GENEHMIGUNGEN IM BOARD ANZEIGEN --------------------------------------------------------------------------------- -- Verknüpfte Genehmigungen werden auf Task-Karten angezeigt -- Anzeige unterhalb der Unteraufgaben-Fortschrittsanzeige -- Genehmigte Genehmigungen: Grüner Rand mit Häkchen -- Offene Genehmigungen: Orangener Rand mit Kreis -- Design passend zu den Unteraufgaben - - -================================================================================ -22.12.2025 - Mehrfachzuweisung & Tutorial entfernt -================================================================================ - -ENTFERNT: TUTORIAL/TOUR --------------------------------------------------------------------------------- -- Automatische Tour beim Start der Anwendung entfernt -- Tour-Import und Start-Logik aus app.js entfernt - -FEATURE: MEHRFACHZUWEISUNG VON MITARBEITENDEN --------------------------------------------------------------------------------- -- Aufgaben können jetzt mehreren Benutzern zugewiesen werden -- Neues Feld "Mitarbeitende zuweisen" ersetzt "Zuständig" -- Multi-Select Dropdown mit Checkboxen im Task-Modal -- Neue Datenbanktabelle task_assignees für Mehrfachzuweisung -- API erweitert: Aufgaben akzeptieren jetzt assignees-Array -- Board zeigt gestapelte Avatare für zugewiesene Mitarbeitende -- Maximal 3 Avatare sichtbar, "+X" Anzeige bei mehr Zuweisungen -- Abwärtskompatibilität zu Einzelzuweisung bleibt erhalten - -BUGFIX: DATENBANK-FEHLER BEHOBEN --------------------------------------------------------------------------------- -- Entfernte Referenz auf nicht existierende Spalte "short_name" in users-Tabelle -- Aufgaben werden jetzt korrekt geladen - - -================================================================================ -22.12.2025 - Umbenennung zu TaskMate -================================================================================ - -UMBENENNUNG: AUFGABENVERWALTUNG -> TASKMATE --------------------------------------------------------------------------------- -- Projekt vollständig umbenannt von "Aufgabenverwaltung" zu "TaskMate" -- Datenbank umbenannt: aufgabenverwaltung.db -> taskmate.db -- Docker Service/Container umbenannt: aufgabenverwaltung -> taskmate -- Alle Header-Kommentare in JS/CSS-Dateien aktualisiert -- CLAUDE_PROJECT_README.md und SERVER_SETUP_ANLEITUNG.md aktualisiert -- package-lock.json Projekt-Namen angepasst -- .env Kommentar aktualisiert - - -================================================================================ -21.12.2025 - UI-Verbesserung Benutzerverwaltung -================================================================================ - -VERBESSERUNG: NEUER BENUTZER DIALOG --------------------------------------------------------------------------------- -- Dialog vergrößert und übersichtlicher gestaltet -- Alle Eingabefelder untereinander angeordnet -- Kürzel-Feld mit Hinweistext unterhalb des Eingabefeldes -- Sternchen (*) bei Pflichtfeldern entfernt -- Passwort wird automatisch mit 10 Zeichen generiert (Groß-/Kleinbuchstaben, - Zahlen und Sonderzeichen) -- Passwort ist im Klartext sichtbar und nicht editierbar -- Bei Bearbeitung wird das Passwort-Feld ausgeblendet -- Passwortänderung nur über Benutzereinstellungen möglich - - -================================================================================ -21.12.2025 - E-Mail-basierter Login ================================================================================ - -FEATURE: LOGIN ÜBER E-MAIL --------------------------------------------------------------------------------- -- Benutzer melden sich jetzt mit E-Mail und Passwort an -- Admin-User ("admin") meldet sich weiterhin mit Benutzername an -- E-Mail ist jetzt Pflichtfeld bei der Benutzer-Erstellung -- E-Mail-Validierung im Frontend und Backend - -ÄNDERUNG: FARBAUSWAHL ENTFERNT --------------------------------------------------------------------------------- -- Farbauswahl bei Benutzer-Erstellung wurde entfernt -- Neue Benutzer erhalten automatisch die Standardfarbe Grau (#808080) -- Benutzerliste zeigt jetzt Kürzel und E-Mail an - -TECHNISCH: -- Neue Spalte "email" in der Datenbank-Tabelle "users" -- Login-Logik unterscheidet zwischen Admin (username) und anderen Benutzern (E-Mail) -- E-Mail-Eindeutigkeit wird bei Erstellung und Bearbeitung geprüft - - -================================================================================ -21.12.2025 - Benutzername-Konvention -================================================================================ - -VERBESSERUNG: BENUTZERNAME ALS 2-BUCHSTABEN-KÜRZEL --------------------------------------------------------------------------------- -- Benutzername jetzt als Kürzel mit genau 2 Buchstaben (z.B. HG, AE) -- Automatische Umwandlung in Großbuchstaben -- Eingabefeld mit "@" Prefix und Hinweis zur Konvention -- Label geändert von "Benutzername" zu "Kürzel" -- Validierung im Frontend (pattern) und Backend (Regex) - - -================================================================================ -21.12.2025 - Bugfix Benutzerverwaltung -================================================================================ - -BUGFIX: BENUTZER LÖSCHEN --------------------------------------------------------------------------------- -- Benutzer können jetzt wieder gelöscht werden -- Vor dem Löschen werden alle Referenzen (Aufgaben, Kommentare, Vorschläge) - auf NULL gesetzt -- Votes des Benutzers werden ebenfalls gelöscht -- Fehlermeldungen verwenden jetzt korrekte Umlaute (ö statt oe) - - -================================================================================ -21.12.2025 - Bugfixes Anhänge -================================================================================ - -BUGFIX: DATEI-UPLOAD REPARIERT --------------------------------------------------------------------------------- -- CSRF-Token-Fehler beim Hochladen von Anhaengen behoben -- Upload-Funktion wiederholt jetzt automatisch bei CSRF-Fehlern - -BUGFIX: LIGHTBOX SCHLIESSEN --------------------------------------------------------------------------------- -- X-Button zum Schliessen der Bildvorschau funktioniert wieder -- Fehlende ID am Close-Button hinzugefuegt - -VERBESSERUNG: ANHAENGE-BUTTONS SICHTBARKEIT --------------------------------------------------------------------------------- -- Download- und Loeschen-Buttons sind jetzt immer sichtbar -- Buttons haben halbtransparenten dunklen Hintergrund fuer bessere Erkennbarkeit -- Loeschen-Button wird beim Hover rot - - -================================================================================ -21.12.2025 - Vorschlags-Archiv und Aufgaben-Verknuepfung -================================================================================ - -NEUES FEATURE: ARCHIV FUER VORSCHLAEGE --------------------------------------------------------------------------------- -Vorschlaege koennen jetzt archiviert und wiederhergestellt werden. - -Funktionen: -- Archiv-Button im Genehmigung-Bereich zum Umschalten zwischen aktiven und - archivierten Vorschlaegen -- Archivieren/Wiederherstellen von Vorschlaegen (nur mit "Genehmigung"-Berechtigung) -- Alle Benutzer koennen das Archiv einsehen -- Archivierte Vorschlaege werden visuell gekennzeichnet - -UI-Aenderungen: -- Neuer "Archiv anzeigen" / "Aktive anzeigen" Button -- Titel wechselt zwischen "Vorschlaege" und "Archiv" -- Archiv-Badge bei archivierten Vorschlaegen -- Archiv-/Wiederherstellen-Button bei Karten (nur fuer berechtigte Benutzer) - - -NEUES FEATURE: AUFGABEN-VERKNUEPFUNG BEI VORSCHLAEGEN --------------------------------------------------------------------------------- -Beim Erstellen eines Vorschlags kann optional eine Aufgabe verknuepft werden. - -Funktionen: -- Dropdown im "Neuer Vorschlag"-Modal mit allen aktiven Aufgaben -- Aufgaben werden nach Projekt gruppiert angezeigt -- Verknuepfte Aufgabe wird auf der Vorschlagskarte angezeigt -- Optional - kein Pflichtfeld - - -DATENBANK-AENDERUNGEN --------------------------------------------------------------------------------- -- proposals-Tabelle: Neue Spalte "archived" (INTEGER DEFAULT 0) -- proposals-Tabelle: Neue Spalte "task_id" (FOREIGN KEY zu tasks) -- Automatische Migration bei Start - - -BACKEND-AENDERUNGEN --------------------------------------------------------------------------------- -- GET /api/proposals: Neuer Query-Parameter "archived" (0 oder 1) -- PUT /api/proposals/:id/archive: Neuer Endpunkt zum Archivieren/Wiederherstellen -- POST /api/proposals: Akzeptiert jetzt optionalen "taskId" Parameter -- GET /api/tasks/all: Neuer Endpunkt fuer Aufgabenliste (fuer Dropdown) - - -VERBESSERUNG: SUCHE IM GENEHMIGUNG-BEREICH --------------------------------------------------------------------------------- -- Die Suche durchsucht jetzt Vorschlaege (Titel und Beschreibung) -- Suchergebnisse werden clientseitig gefiltert -- Suche funktioniert sowohl fuer aktive als auch archivierte Vorschlaege - - -VERBESSERUNG: ARCHIV-ANSICHT ZURUECKSETZEN --------------------------------------------------------------------------------- -- Beim Wechsel zu einem anderen Tab (Board, Kalender) und zurueck wird - die Genehmigung-Ansicht automatisch auf aktive Vorschlaege zurueckgesetzt -- Archiv muss bei jedem Besuch erneut aktiviert werden - - -================================================================================ -20.12.2025 - Usermanagement und Genehmigung -================================================================================ - -NEUES FEATURE: USERMANAGEMENT MIT ADMIN-LOGIN --------------------------------------------------------------------------------- -Ein separates Admin-Interface zur Benutzerverwaltung wurde implementiert. - -Funktionen: -- Admin-Benutzer (admin / !1Data123) mit separatem Zugang -- Benutzer erstellen, bearbeiten und loeschen -- Berechtigungen vergeben (z.B. "Genehmigung") -- Gesperrte Benutzer entsperren -- Admins haben KEINEN Zugang zur regulaeren App - -Neue Dateien: -- backend/routes/admin.js (Admin-API) -- frontend/js/admin.js (Admin-Dashboard) -- frontend/css/admin.css (Admin-Styles) - - -NEUES FEATURE: GENEHMIGUNG (VORSCHLAEGE) --------------------------------------------------------------------------------- -Ein neuer View "Genehmigung" neben Board und Kalender fuer Vorschlaege. - -Funktionen: -- Vorschlaege erstellen (Titel + optionale Beschreibung) -- Upvoting (Daumen hoch) - eigene Vorschlaege koennen nicht gevotet werden -- Genehmigung (nur mit "Genehmigung"-Berechtigung) -- Sortierung: Nach Votes, Datum oder alphabetisch -- Eigene Vorschlaege loeschen - -Neue Dateien: -- backend/routes/proposals.js (Proposals-API) -- frontend/js/proposals.js (Proposals-Manager) -- frontend/css/proposals.css (Proposals-Styles) - - -DATENBANK-AENDERUNGEN --------------------------------------------------------------------------------- -- users-Tabelle: Neue Spalten "role" und "permissions" -- Neue Tabelle: proposals (Vorschlaege) -- Neue Tabelle: proposal_votes (Votes fuer Vorschlaege) -- Automatische Migration bei Start - - -BACKEND-AENDERUNGEN --------------------------------------------------------------------------------- -- middleware/auth.js: Neue Funktionen requireAdmin, requireRegularUser, checkPermission -- routes/auth.js: Role und Permissions in Login-Response -- server.js: Neue Routes registriert (/api/admin, /api/proposals) - - -FRONTEND-AENDERUNGEN --------------------------------------------------------------------------------- -- index.html: Admin-Screen, Proposals-View, User-Modal, Proposal-Modal -- api.js: Neue Endpoints fuer Admin und Proposals -- auth.js: isAdmin(), hasPermission(), getRole(), getPermissions() -- app.js: Integration von Admin- und Proposals-Manager -- sw.js: Cache-Version 66 - - -================================================================================ -20.12.2025 - Bugfixes Usermanagement und Genehmigung -================================================================================ - -FIX: NEUER VORSCHLAG BUTTON REAGIERT NICHT --------------------------------------------------------------------------------- -Problem: Der "Neuer Vorschlag" Button im Genehmigung-View reagierte nicht. -Ursache: DOM-Elemente wurden im Konstruktor abgefragt, bevor sie existierten. - -Loesung: DOM-Element-Abfrage in die init()-Methode verschoben. -Geaenderte Datei: frontend/js/proposals.js - - -FIX: BENUTZER BEARBEITEN/ANLEGEN FUNKTIONIERT NICHT --------------------------------------------------------------------------------- -Problem: In der Admin-Oberflaeche liess sich kein Benutzer bearbeiten oder anlegen. -Ursache: Gleiche Timing-Problematik wie bei Proposals. - -Loesung: DOM-Element-Abfrage in die init()-Methode verschoben. -Geaenderte Datei: frontend/js/admin.js - - -FIX: ADMIN-USER IN AUFGABEN-ZUWEISUNG AUSBLENDEN --------------------------------------------------------------------------------- -Problem: Admin-Benutzer erschienen in der Aufgaben-Zuweisung. - Admins dienen jedoch nur der Benutzerverwaltung. - -Loesung: API-Endpoint filtert jetzt Admin-Benutzer heraus. -Geaenderte Datei: backend/routes/auth.js (GET /api/auth/users) - - -FIX: ADMIN-SCREEN ZEIGT WEISS NACH LOGIN --------------------------------------------------------------------------------- -Problem: Nach dem Admin-Login wurde nur ein weisser Bildschirm angezeigt. -Ursache: showAdminScreen() wurde vor adminManager.init() aufgerufen, - sodass this.adminScreen noch undefined war. - -Loesung: Reihenfolge korrigiert - init() wird jetzt vor show() aufgerufen. -Geaenderte Datei: frontend/js/app.js - - -FIX: MODALS SCHLOSSEN SOFORT NACH OEFFNEN --------------------------------------------------------------------------------- -Problem: Beim Klicken auf "Neuer Vorschlag" oder "Neuer Benutzer" oeffnete - sich das Modal kurz und schloss sich sofort wieder. -Ursache: Die openModal() Funktionen in proposals.js und admin.js haben - das Modal nicht beim Store registriert. Die globale Modal-Logik - in app.js hat das Modal dann als "nicht offen" betrachtet und - geschlossen. - -Loesung: openModal() ruft jetzt store.openModal() auf, closeModal() ruft - store.closeModal() auf. Ausserdem wird die visible-Klasse gesetzt. -Geaenderte Dateien: -- frontend/js/proposals.js -- frontend/js/admin.js - - -CACHE-VERSION --------------------------------------------------------------------------------- -sw.js: Cache-Version 70 - - -================================================================================ -21.12.2025 - Styling-Fixes Usermanagement und Genehmigung -================================================================================ - -FIX: UNSICHTBARE FORMULARFELDER --------------------------------------------------------------------------------- -Problem: Die Eingabefelder in Benutzerverwaltung und Genehmigung-Modals - waren nicht erkennbar/unsichtbar. -Ursache: CSS verwendete nicht existierende Variablen (--bg-primary, - --border-color, --border-radius, --accent-color). - -Loesung: CSS-Variablen korrigiert: - - --bg-primary -> --bg-input - - --border-color -> --border-default - - --border-radius -> --radius-lg - - --accent-color -> --primary - -Geaenderte Dateien: -- frontend/css/admin.css -- frontend/css/proposals.css - - -FIX: DROPDOWN-STYLING BEI SORTIERUNG --------------------------------------------------------------------------------- -Problem: Das Sortierungs-Dropdown in der Genehmigung-View war unsichtbar. - -Loesung: Custom-Styling mit sichtbarem Hintergrund und Dropdown-Pfeil. -Geaenderte Datei: frontend/css/proposals.css - - -FIX: SVG-ICONS FUER VOTE UND LOESCHEN --------------------------------------------------------------------------------- -Problem: Die Icons fuer Vote (Daumen hoch) und Loeschen (Papierkorb) - waren nicht sichtbar. -Ursache: CSS verwendete fill:currentColor, aber SVGs sind stroke-basiert. - -Loesung: CSS auf stroke:currentColor umgestellt. -Geaenderte Datei: frontend/css/proposals.css - - -CACHE-VERSION --------------------------------------------------------------------------------- -sw.js: Cache-Version 71 - - -================================================================================ -21.12.2025 - Umlaute-Korrektur -================================================================================ - -FIX: DEUTSCHE UMLAUTE IN TEXTEN --------------------------------------------------------------------------------- -Problem: Texte verwendeten ae, oe, ue statt deutscher Umlaute. - -Loesung: Alle Texte in Benutzerverwaltung und Genehmigung auf korrekte - deutsche Umlaute (ä, ö, ü) umgestellt. - -Geaenderte Dateien: -- frontend/js/admin.js -- frontend/js/proposals.js -- frontend/index.html -- CLAUDE.md (Konvention aktualisiert) - - -CACHE-VERSION --------------------------------------------------------------------------------- -sw.js: Cache-Version 72 - - -================================================================================ -20.12.2025 - Farbauswahl-Fix -================================================================================ - -KALENDER: DURCHGAENGIGE EINRAHMUNG BEI SUCHTREFFER --------------------------------------------------------------------------------- -Problem: Bei mehrtaegigen Aufgaben wurde jeder Tag einzeln blau eingerahmt, - was zu einer unterbrochenen Darstellung fuehrte. - -Loesung: Die Einrahmung ist jetzt durchgaengig fuer die gesamte Aufgabe: - - Start: Border links, oben, unten (rechts offen) - - Mitte: Border nur oben, unten (links und rechts offen) - - Ende: Border rechts, oben, unten (links offen) - -Geaenderte Dateien: -- frontend/css/calendar.css (search-highlight mit range-spezifischen Borders) -- frontend/sw.js (Cache-Version 65) - - -KALENDER: SUCHE ZEIGT ALLE AUFGABEN --------------------------------------------------------------------------------- -Problem: Bei der Suche im Kalender wurden Aufgaben in der ersten Spalte (Offen) - und letzten Spalte (Erledigt) nicht angezeigt, wenn die entsprechenden - Checkboxen nicht aktiviert waren. - -Loesung: Waehrend einer aktiven Suche werden die Checkbox-Filter ignoriert. - Alle Aufgaben (offen, in Bearbeitung, erledigt) werden angezeigt, - damit die gesuchte Aufgabe sichtbar ist. - -Geaenderte Dateien: -- frontend/js/calendar.js (getTasksByDate - isSearchActive Pruefung) -- frontend/sw.js (Cache-Version 64) - - -BOARD: BENUTZERFARBE BEI AUFGABEN AKTUALISIERT --------------------------------------------------------------------------------- -Problem: Wenn die Benutzerfarbe geaendert wurde, zeigten die Aufgaben im Board - weiterhin die alte Farbe bei der Zuteilung. - -Ursache: Die Farbe wurde aus task.assignedColor gelesen, das beim Laden vom - Server gesetzt wurde und nicht aktualisiert wurde. - -Loesung: Die Farbe wird jetzt direkt aus der aktuellen users-Liste im Store - geholt (store.get('users')), nicht aus dem Task-Objekt. - -Geaenderte Dateien: -- frontend/js/board.js (createTaskCard - Farbe aus users-Liste) -- frontend/sw.js (Cache-Version 63) - - -BENUTZER-FARBAUSWAHL KORRIGIERT --------------------------------------------------------------------------------- -Problem: In den Einstellungen wurde beim Oeffnen immer Blau als Standardfarbe - angezeigt, obwohl eine andere Farbe (z.B. Orange) gewaehlt war. - Ausserdem war ein redundanter Hex-Farbcode neben "Eigene Farbe" sichtbar. - -Loesung: -- initColorPicker() liest jetzt Farbe von authManager.getUser() statt store -- Hex-Farbcode-Anzeige entfernt (war ueberfluessig) -- Farbvorschau zeigt jetzt korrekt die gespeicherte Benutzerfarbe - -Geaenderte Dateien: -- frontend/js/app.js (initColorPicker, handleColorSelect) -- frontend/index.html (color-hex entfernt) -- frontend/sw.js (Cache-Version 58) - - -BOARD UND KALENDER FARBAKTUALISIERUNG --------------------------------------------------------------------------------- -Problem: Benutzerfarbe im Board und Kalender wurde erst nach Browser-Refresh (F5) - angezeigt, nicht sofort nach Aenderung in den Einstellungen. - -Ursache: -- this.board und this.calendar waren undefined (nie zugewiesen) -- store.get('currentUser') war null (nie im Store gesetzt) -- User-ID fuer users-Update war daher undefined - -Loesung: -- boardManager.render() direkt aufrufen statt this.board.render() -- calendarViewManager.render() direkt aufrufen statt this.calendar.render() -- User-ID von authManager.getUser() holen statt von store.get('currentUser') -- store.setUsers() verwenden fuer korrektes Update der users-Liste - -Geaenderte Dateien: -- frontend/js/app.js (handleColorSelect komplett ueberarbeitet) -- frontend/sw.js (Cache-Version 60) - - -================================================================================ -20.12.2025 -================================================================================ - -1. BENUTZER-FARBAUSWAHL IN EINSTELLUNGEN --------------------------------------------------------------------------------- -Problem: Benutzer konnten ihre Farbe nicht frei waehlen, nur Preset-Farben. - Ausgewaehlte Farbe wurde nach F5 (Refresh) nicht beibehalten. - -Loesung: -- Farbauswahl-Dialog erweitert um freie Farbwahl (Color Picker) -- Preset-Farben UND Custom-Color-Picker nebeneinander -- authManager.updateUserColor() aktualisiert jetzt auch localStorage: - ```javascript - updateUserColor(color) { - if (this.user) { - this.user.color = color; - localStorage.setItem('current_user', JSON.stringify(this.user)); - } - } - ``` -- Event von 'input' auf 'change' geaendert (verhindert Mehrfach-Speicherung) -- Aktuelle Farbe wird neben "Eigene Farbe" als Farbblock + Hex-Code angezeigt - -Geaenderte Dateien: -- frontend/js/auth.js (updateUserColor mit localStorage) -- frontend/js/app.js (initColorPicker, handleColorSelect) -- frontend/index.html (color-current-display, color-hex-display) -- frontend/css/modal.css (Styling fuer Farbanzeige) - - -2. SEPARATER SPEICHERN-BUTTON FUER NEUE AUFGABEN --------------------------------------------------------------------------------- -Problem: Bei neuen Aufgaben wurde sofort gespeichert (Auto-Save), Benutzer - wollte expliziten "Speichern" Button. - -Loesung (frontend/js/task-modal.js + frontend/index.html): -- "Speichern" und "Abbrechen" Buttons fuer Create-Mode -- "Zurueck" Button nur im Edit-Mode -- Button-Sichtbarkeit basiert auf this.mode ('create' vs 'edit') - - -3. DRAG & DROP VERBESSERUNGEN --------------------------------------------------------------------------------- -a) Lila Umrandung bleibt haengen: - Problem: Nach dem Ablegen einer Aufgabe blieb die Spalte mit lila Border. - - Loesung (frontend/js/board.js - handleDrop): - ```javascript - $('.column-body.drag-over').forEach(el => el.classList.remove('drag-over')); - $('.drop-indicator').forEach(el => el.remove()); - ``` - -b) Eigene Sortierung: - Problem: Aufgaben konnten nicht manuell sortiert werden. - - Loesung (frontend/js/store.js - getTasksByColumn): - - Neue Sortierreihenfolge: - 1. Position (Drag & Drop manuelle Sortierung) - 2. Prioritaet (Hoch > Mittel > Niedrig) - 3. Erstellungsdatum (aeltere zuerst) - - -4. "+ SPALTE" BUTTON UNTER SPALTEN ENTFERNT --------------------------------------------------------------------------------- -Problem: Statischer "+ Spalte" Button unterhalb des Boards machte keinen Sinn. - -Loesung (frontend/index.html): -- Button entfernt -- Spalten werden nur noch ueber "+ Spalte hinzufuegen" rechts neben den Spalten - hinzugefuegt - - -5. ARCHIV-FUNKTION KOMPLETT UEBERARBEITET --------------------------------------------------------------------------------- -Problem: "Archiv anzeigen" zeigte archivierte Aufgaben in der Spaltenansicht. - Benutzer wollte separate Uebersicht. - -Loesung: Neues Archiv-Modal implementiert - -a) HTML (frontend/index.html): - - Neues Modal mit ID "archive-modal" - - Liste fuer archivierte Aufgaben (#archive-list) - - Leer-Hinweis (#archive-empty) - -b) CSS (frontend/css/modal.css): - - .archive-list: Flex-Container mit Scroll - - .archive-item: Zeile pro archivierte Aufgabe - - .archive-item-info: Klickbarer Bereich (oeffnet Aufgabe) - - .archive-item-actions: Buttons fuer Wiederherstellen/Loeschen - -c) JavaScript (frontend/js/app.js): - - openArchiveModal(): Oeffnet das Archiv-Modal - - renderArchiveList(): Rendert alle archivierten Aufgaben - - restoreTask(taskId): Stellt Aufgabe wieder her - - deleteArchivedTask(taskId): Loescht Aufgabe dauerhaft (mit Bestaetigung) - - openArchivedTask(taskId): Oeffnet Aufgabe im Detail-Modal - -d) Store (frontend/js/store.js): - - getTasksByColumn() zeigt nur nicht-archivierte Aufgaben - - -6. ARCHIV-BUGS BEHOBEN --------------------------------------------------------------------------------- -Problem: Wiederherstellen und Loeschen funktionierten nicht. - -Ursache: Task-IDs wurden nicht als Strings uebergeben - (onclick="app.restoreTask(${task.id})") - -Loesung (frontend/js/app.js): -- IDs in Anfuehrungszeichen: onclick="app.restoreTask('${task.id}')" - -Problem: Aufgaben konnten im Archiv nicht geoeffnet werden. - -Loesung: -- Klickbarer Info-Bereich mit onclick="app.openArchivedTask('${task.id}')" -- openArchivedTask() Methode: Schliesst Archiv-Modal, oeffnet Task-Modal -- Hover-Effekt zeigt Klickbarkeit an (Cursor, Hintergrund, blaue Titel-Farbe) - - -7. SUCHFILTER-PERSISTIERUNG KORRIGIERT --------------------------------------------------------------------------------- -Problem: Suchfilter blieb im localStorage gespeichert und "hing sich auf". - -Loesung (frontend/js/store.js): -- Suchfilter wird NICHT mehr im localStorage gespeichert -- Beim Laden der Seite ist das Suchfeld immer leer -```javascript -// Save filters WITHOUT search -const { search, ...filtersToSave } = filters; -localStorage.setItem('task_filters', JSON.stringify(filtersToSave)); - -// Ensure search is always empty on load -store.setFilters({ ...parsed, search: '' }); -``` - - -================================================================================ -19.12.2025 -================================================================================ - -1. LOGIN-BUTTON VERBESSERT --------------------------------------------------------------------------------- -Problem: Der Anmeldebutton war auf dem hellen Login-Bildschirm schlecht lesbar. - -Loesung (frontend/css/board.css): -- Gradient-Hintergrund: Von #4F46E5 zu #6366F1 fuer modernen Look -- Spaeter geaendert zu Emerald-Gruen (#10B981) fuer besseren Kontrast -- Schriftfarbe explizit auf Weiss (#FFFFFF) mit !important -- Hoeherer Button: 48px statt 40px -- Auffaelliger Schatten - - -2. TASTATURKUERZEL-OPTION ENTFERNT --------------------------------------------------------------------------------- -Loesung: -- Button "Tastaturkuerzel" aus dem User-Dropdown entfernt -- Komplettes Shortcuts-Modal entfernt -- Event-Listener fuer den Shortcuts-Button entfernt -- Hinweis in Tour-Abschlussmeldung entfernt - -Geaenderte Dateien: -- frontend/index.html -- frontend/js/app.js -- frontend/js/tour.js - - -3. KALENDER-BUGS BEHOBEN --------------------------------------------------------------------------------- -a) Falsches Datum (20.12 statt 19.12): - Problem: getDateString() verwendete toISOString() -> UTC-Konvertierung - - Loesung (frontend/js/calendar.js): - - Geaendert zu lokalen Datumswerten - -b) Verschiebung bei durchgehenden Balken: - Loesung: - - Feste Mindestgroessen fuer Tagesnummer - - Transparenter Border auf ALLEN Tagen - - -4. KALENDER-FARBSYSTEM --------------------------------------------------------------------------------- -Problem: Aufgaben im Kalender waren schwer unterscheidbar. - -Loesung: -- Spaltenfarbe als Hintergrund fuer Aufgabenbalken -- Benutzer-Initialen als Badge angezeigt -- Wochenansicht mit border-left Styling - - -5. AUFGABENBALKEN VERBREITERT --------------------------------------------------------------------------------- -Loesung (frontend/css/calendar.css): -- Padding auf 4px 8px erhoeht -- Schriftgroesse auf 12px -- Hoehe fuer mehrtaegige Aufgaben auf 24px -- Bessere Lesbarkeit der Titel - - -6. UEBERFAELLIGE TAGE - ROTE RAHMEN ENTFERNT --------------------------------------------------------------------------------- -Problem: Rote Linke-Rand-Markierung bei Tagen mit ueberfaelligen Aufgaben - war zu aufdringlich. - -Loesung: -- Nur noch das rote Ausrufezeichen auf den Aufgaben als Markierung - - -7. BENUTZER-INITIALEN KORRIGIERT --------------------------------------------------------------------------------- -Problem: Mouseover-Tooltip zeigte "User1"/"User2" statt "HG"/"MH" - -Loesung (frontend/js/calendar.js): -- user.username enthaelt die Initialen (nicht user.displayName) -- getUserBadgeInfo() und getTaskTooltip() korrigiert - - -8. UEBERFAELLIGE AUFGABEN IN "ERLEDIGT"-SPALTE --------------------------------------------------------------------------------- -Problem: Auch erledigte Aufgaben wurden als "ueberfaellig" markiert. - -Loesung (calendar.js & board.js): -- Helper-Funktionen isTaskCompleted() und isTaskOverdue() implementiert -- Abgeschlossene Aufgaben (letzte Spalte) zeigen keine Ueberfaellig-Markierung -- Board zeigt absolutes Datum statt "vor 3 Tagen" fuer erledigte Aufgaben - - -9. CHECKBOX/SUBTASK-LOGIK KORRIGIERT --------------------------------------------------------------------------------- -Problem: Neue Checkboxen waren immer angehakt, Logik funktionierte nicht. - -Ursache: setAttribute('checked', false) funktioniert nicht fuer Boolean-Properties - -Loesung (frontend/js/utils.js - createElement Funktion): -- checked, disabled, selected werden jetzt als Element-Properties gesetzt -- Nicht mehr als HTML-Attribute - -Code: -```javascript -} else if (key === 'checked' || key === 'disabled' || key === 'selected') { - element[key] = value; -} -``` - - -10. ABHAENGIGKEITSFELD ENTFERNT --------------------------------------------------------------------------------- -Loesung: -- "Abhaengigkeit" Feld aus index.html entfernt (hatte keine Funktion) - - -11. DATEI-UPLOAD FEHLER BEHOBEN --------------------------------------------------------------------------------- -Problem: "Unexpected field" Fehler beim Hochladen von Dateien. - -Ursache: Frontend sendete 'file', Backend erwartete 'files' - -Loesung (frontend/js/api.js): -- FormData Feldname von 'file' auf 'files' geaendert -- Entspricht Backend's upload.array('files', 10) - - -12. DATEI-ANZEIGE KORRIGIERT --------------------------------------------------------------------------------- -Problem: Hochgeladene Dateien wurden nicht angezeigt. - -Ursachen: -- Backend gibt { attachments: [...] } zurueck -- Frontend erwartete result.file -- Property-Namen: Backend nutzt camelCase, teilweise snake_case - -Loesung (frontend/js/task-modal.js): -- Korrekte Verarbeitung von result.attachments -- Unterstuetzung fuer beide Namenskonventionen: - - originalName / original_name - - sizeBytes / size - - isImage (mit isImageFile() Fallback) - - -13. URL-NORMALISIERUNG BEI LINKS --------------------------------------------------------------------------------- -Problem: Links ohne "https://" funktionierten nicht. - -Loesung (frontend/js/task-modal.js): -- normalizeUrl() Funktion hinzugefuegt -- URLs ohne Protokoll bekommen automatisch "https://" vorangestellt -- Beispiel: "google.de" wird zu "https://google.de" - - -14. AUTO-SAVE SYSTEM IMPLEMENTIERT --------------------------------------------------------------------------------- -Problem: Benutzer mussten manuell "Speichern" klicken. - -Loesung: -- Alle Formularfeld-Aenderungen werden sofort gespeichert -- autoSaveTask() Funktion fuer automatisches Speichern -- Debounce fuer Textfelder (1 Sekunde Verzoegerung) -- Label-Aenderungen loesen sofort Auto-Save aus - -Modal-Footer vereinfacht: -- "Speichern" und "Abbrechen" Buttons entfernt -- Neuer "Zurueck" Button schliesst Modal -- Bei neuen Aufgaben: Erstellt Task vor dem Schliessen -- Bei bestehenden Aufgaben: Speichert letzten Stand - - -15. BILDVORSCHAU BEI DATEI-UPLOADS REPARIERT --------------------------------------------------------------------------------- -Problem: Hochgeladene Bilder zeigten keine Vorschau. - -Ursache: -- /api/files/preview/:id erfordert JWT-Authentifizierung -- kann keine Authorization-Header senden - -Loesung: -a) Backend (backend/middleware/auth.js): - - authenticateToken() akzeptiert Token auch via Query-Parameter - - Prueft req.query.token zusaetzlich zu Header und Cookie - -b) Frontend (frontend/js/api.js): - - getFilePreviewUrl() fuegt Token zur URL hinzu - - Format: /api/files/preview/123?token=xxx - - -================================================================================ -GEAENDERTE DATEIEN (UEBERSICHT) -================================================================================ - -Frontend: -- frontend/index.html - - Abhaengigkeitsfeld entfernt - - Modal-Footer: "Zurueck" Button statt "Speichern/Abbrechen" - - Shortcuts-Modal entfernt - - Archive-Modal hinzugefuegt - - Speichern/Abbrechen Buttons fuer Create-Mode - - "+ Spalte" Button unter Board entfernt - - Farbanzeige bei "Eigene Farbe" - -- frontend/js/api.js - - Datei-Upload: FormData Feldname 'files' - - getFilePreviewUrl(): Token als Query-Parameter - -- frontend/js/app.js - - Shortcuts-Button Event-Listener entfernt - - openArchiveModal(), renderArchiveList() - - restoreTask(), deleteArchivedTask(), openArchivedTask() - - escapeHtml() - - initColorPicker(), handleColorSelect() erweitert - -- frontend/js/auth.js - - updateUserColor() mit localStorage-Update - -- frontend/js/board.js - - isTaskCompleted() fuer erledigte Aufgaben - - Absolutes Datum statt "vor X Tagen" - - handleDrop() Cleanup fuer drag-over States - -- frontend/js/calendar.js - - getDateString(): Lokale Datumswerte - - isTaskCompleted() / isTaskOverdue() - - Spaltenfarben-System - - Benutzer-Initialen korrigiert - - Tooltip mit zugewiesenem Benutzer - -- frontend/js/store.js - - getTasksByColumn() Sortierung (Position > Prioritaet > Datum) - - Filter-Persistierung ohne Suchfeld - -- frontend/js/task-modal.js - - Auto-Save System - - URL-Normalisierung (normalizeUrl) - - Datei-Handling korrigiert - - Unterstuetzung fuer camelCase und snake_case - - handleRestore() Methode - - Button-Sichtbarkeit fuer Create/Edit Mode - -- frontend/js/tour.js - - Tastaturkuerzel-Hinweis entfernt - -- frontend/js/utils.js - - createElement: Boolean Properties korrekt behandelt - -- frontend/css/board.css - - Login-Button Styling (Emerald-Gruen) - -- frontend/css/calendar.css - - Tagesnummer Box-Sizing - - Ueberfaellige Tage ohne roten Rand - -- frontend/css/modal.css - - Archive-List Styling - - Archive-Item Styling - - Hover-Effekte fuer klickbare Bereiche - - Farbanzeige-Styling - -- frontend/sw.js - - Cache-Version: 15 -> 57 - -Backend: -- backend/middleware/auth.js - - Token-Authentifizierung via Query-Parameter - -- backend/routes/auth.js - - PUT /api/auth/color Endpoint +[... weitere Einträge ...] \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md index abcfa01..062439c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -49,6 +49,16 @@ curl http://localhost:3000/api/health - **JEDE Änderung MUSS umkehrbar sein** - Live-System! - **Backup vor kritischen Änderungen** ist Pflicht +**⚠️ NUTZERDATEN-SCHUTZ - ABSOLUTES VERBOT**: +- **KEINE Änderungen an Nutzerdaten oder Kennwörtern** +- **Geschützte Benutzer (NICHT modifizieren)**: + - admin + - Hendrik (hendrik_gebhardt@gmx.de) + - Monami (momohomma@googlemail.com) +- **Diese Benutzer sind produktiv im Einsatz** +- **Keine Passwort-Resets oder Änderungen an diesen Accounts** +- **Bei Anmeldeproblemen: Nur Debugging, keine Datenänderung** + ### Rollback-Strategie für Live-Betrieb Bei JEDER Änderung sicherstellen: @@ -298,6 +308,228 @@ docker exec -it taskmate sh docker logs taskmate -f --tail 100 ``` +### KRITISCHES PROBLEM: Frontend-Änderungen werden nicht sichtbar + +**Problem**: Frontend-Dateien (HTML, CSS, JS) werden beim Docker Build nach `/app/public/` kopiert und sind NICHT live gemountet. Änderungen in `/home/claude-dev/TaskMate/frontend/` werden daher nicht automatisch übernommen. + +**Symptome**: +- CSS/JS-Änderungen funktionieren nicht trotz Browser-Cache-Löschung +- Service Worker Cache-Version Erhöhung hilft nicht +- Änderungen werden sporadisch nach längerer Zeit sichtbar + +**Ursache**: +1. **Dockerfile kopiert Frontend-Dateien**: `COPY frontend/ ./public/` +2. **Express.js cached statische Dateien** mit ETags und Last-Modified Headers +3. **Mehrschichtiges Caching**: Service Worker + Browser + Express.js + +**LÖSUNG A - Sofortige Änderungen (Development)**: +```bash +# Einzelne Datei kopieren +docker cp frontend/css/style.css taskmate:/app/public/css/style.css + +# Mehrere Dateien kopieren +docker cp frontend/js/app.js taskmate:/app/public/js/app.js +docker cp frontend/index.html taskmate:/app/public/index.html + +# CSS + JS zusammen kopieren +docker cp frontend/css/ taskmate:/app/public/css/ +docker cp frontend/js/ taskmate:/app/public/js/ +``` + +**LÖSUNG B - Vollständige Aktualisierung (Production)**: +```bash +# Docker Image neu bauen und Container ersetzen +docker build -t taskmate . && docker restart taskmate +``` + +**Express.js Caching deaktiviert**: +```javascript +// In server.js - statische Dateien ohne Caching +app.use(express.static(path.join(__dirname, 'public'), { + etag: false, + lastModified: false, + cacheControl: false, + setHeaders: (res, path) => { + res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate'); + } +})); +``` + +**Debugging-Workflow**: +1. Prüfe Datei-Timestamps im Container: `docker exec taskmate ls -la /app/public/css/` +2. Vergleiche mit lokalen Dateien: `ls -la frontend/css/` +3. Bei Diskrepanz: Files mit `docker cp` aktualisieren +4. Bei JavaScript-Problemen: Browser-Console auf Fehler prüfen + +**Warum passiert das**: +- Container-Pfad `/app/public/` = Static Files (nicht live) +- Container-Pfad `/app/taskmate-source/` = Git-Operationen (live gemountet) +- Frontend wird NUR beim Build-Time kopiert, nicht zur Laufzeit + +## 🚨 KRITISCHE LEKTIONEN AUS PROBLEMEN + +### ⚠️ Kontakte-Modul Implementation Probleme (07.01.2025) + +**FEHLER 1: Backend API-Route nicht gefunden (404)** +- **Problem**: GET /api/contacts gibt 404 - Endpoint nicht gefunden +- **Ursache**: Backend-Dateien nicht im Docker-Container, Container nicht neu gestartet +- **Lösung**: Backend-Dateien kopieren und Container neu starten +- **Prävention**: + ```bash + # Backend-Änderungen: Alle Dateien kopieren + docker cp backend/routes/contacts.js taskmate:/app/routes/ + docker cp backend/middleware/validation.js taskmate:/app/middleware/ + docker cp backend/server.js taskmate:/app/server.js + docker restart taskmate # IMMER nach Backend-Änderungen + ``` + +**FEHLER 2: Database Table existiert nicht (500 Internal Server Error)** +- **Problem**: "no such table: contacts" - Tabelle wurde nicht erstellt +- **Ursache**: database.js Änderungen nicht übernommen, bestehende DB erweitert sich nicht automatisch +- **Lösung**: database.js kopieren + Tabelle manuell erstellen +- **Pattern für neue Tabellen**: + ```bash + docker cp backend/database.js taskmate:/app/database.js + docker exec taskmate node -e " + const Database = require('better-sqlite3'); + const db = new Database('/app/data/taskmate.db'); + db.exec('CREATE TABLE IF NOT EXISTS new_table (...);'); + console.log('Table created successfully'); + " + ``` + +**FEHLER 3: store.showMessage ist undefined** +- **Problem**: `store.showMessage()` Funktion existiert nicht +- **Ursache**: Falsche API für Toast-Nachrichten +- **Lösung**: Verwende `window.dispatchEvent` mit `toast:show` +- **Pattern für Toast-Messages**: + ```javascript + // FALSCH: store.showMessage('Text', 'success') + // RICHTIG: + window.dispatchEvent(new CustomEvent('toast:show', { + detail: { message: 'Text', type: 'success' } + })); + ``` + +**FEHLER 4: Event-Handler nicht gebunden** +- **Problem**: Button-Clicks funktionieren nicht trotz Event-Listener +- **Ursache**: Timing-Problem - DOM noch nicht bereit, Modal-Overlay fehlt +- **Lösung**: Korrekte Modal-Struktur + Overlay-Management +- **Debugging-Pattern**: + ```javascript + console.log('[Module] Element check:', this.buttonElement); + if (this.buttonElement) { + console.log('[Module] Binding event'); + this.buttonElement.addEventListener('click', () => { + console.log('[Module] Button clicked!'); + }); + } + ``` + +**FEHLER 5: Modal Design inkonsistent** +- **Problem**: Custom Modal-Styles passen nicht zum App-Design +- **Ursache**: Eigene CSS-Klassen statt Standard-Modal-Pattern +- **Lösung**: Standard Modal-Struktur verwenden +- **Standard Modal-Pattern**: + ```html + + ``` + +### ⚠️ Erinnerung-Implementation Probleme (06.01.2026) + +**FEHLER 1: Syntax-Fehler in JavaScript blockierte Login** +- **Problem**: Missing closing brace in calendar.js verhinderte Login komplett +- **Ursache**: Unvollständige Code-Blöcke beim Multi-Edit +- **Lösung**: IMMER Syntax-Check nach JavaScript-Änderungen +- **Prävention**: + ```bash + # Nach JS-Änderungen prüfen: + node -c frontend/js/calendar.js + docker logs taskmate --tail 20 # Auf Syntax-Fehler prüfen + ``` + +**FEHLER 2: "Verschwundene" Projekte durch 401-Fehler** +- **Problem**: User dachte AegisSight-Projekt sei gelöscht +- **Ursache**: Authentifizierungs-Token abgelaufen, API gibt 401 zurück +- **Diagnose**: `docker logs taskmate` zeigt 401-Fehler +- **Lösung**: Einfach neu anmelden, Daten sind intakt +- **Prävention**: Bei "verschwundenen" Daten IMMER zuerst Auth prüfen + +**FEHLER 3: Checkbox-Styling funktioniert nicht** +- **Problem**: CSS-Selektoren greifen nicht, komplexe Pseudo-Element-Struktur +- **Ursache**: Browser-CSS-Konflikte, CSS-Variable-Probleme +- **Lösung**: Direktes Styling nativer Checkboxes mit `appearance: none` +- **Lesson**: Bei CSS-Problemen: **Einfachster Ansatz zuerst** + ```css + /* FALSCH: Komplexe Pseudo-Struktur */ + input:checked + span::after { content: '✓'; } + + /* RICHTIG: Direktes Styling */ + input[type="checkbox"] { + appearance: none; + background: #3B82F6 when :checked; + } + ``` + +**FEHLER 4: Event-Handler Konflikte bei Modal-Updates** +- **Problem**: Dropdown-Handler werden überschrieben +- **Ursache**: Mehrfache Event-Binding ohne Cleanup +- **Lösung**: Element-Kloning für saubere Event-Handler +- **Pattern**: + ```javascript + // Event-Handler cleanup durch Klonen + const newElement = element.cloneNode(true); + element.parentNode.replaceChild(newElement, element); + // Dann neue Handler binden + ``` + +**FEHLER 5: Visuelle Darstellung unterbricht Funktionalität** +- **Problem**: Erinnerungen unterbrachen Aufgaben-Balken +- **Ursache**: Falsche Render-Reihenfolge (Erinnerungen vor Aufgaben) +- **Lösung**: Aufgaben zuerst, dann Erinnerungen +- **Lesson**: UI-Reihenfolge muss Funktionalität folgen, nicht umgekehrt + +### 🔧 TROUBLESHOOTING-WORKFLOW + +**Bei JavaScript-Fehlern:** +1. `docker logs taskmate --tail 50` prüfen +2. Browser-Console auf Syntax-Fehler prüfen +3. Node.js Syntax-Check: `node -c datei.js` + +**Bei "verschwundenen" Daten:** +1. **NIEMALS** sofort Backup/Restore - erst debuggen! +2. API-Logs prüfen auf 401/403 Fehler +3. Auth-Status prüfen: `localStorage.getItem('token')` +4. Datenbank direkt prüfen: `sqlite3 data/taskmate.db "SELECT COUNT(*) FROM projects"` + +**Bei CSS-Problemen:** +1. Simplest approach first - keine komplexen Selektoren +2. `!important` nur als letzter Ausweg +3. Browser-DevTools: Computed Styles prüfen +4. Cache leeren: `CACHE_VERSION++` in sw.js + +**Bei neuen Modulen mit globaler Suche:** +1. Module in app.js setupSearch() registrieren: + ```javascript + } else if (currentView === 'mymodule') { + import('./mymodule.js').then(module => { + if (module.myManager) { + module.myManager.searchQuery = value; + module.myManager.filterData(); + } + }); + ``` +2. Manager-Instanz exportieren: `export { myManager }` +3. clearSearch() Funktion ebenfalls erweitern +4. Lokale Suchfelder entfernen - nur Header-Suche nutzen + ## 🐛 Troubleshooting ### Häufige Probleme diff --git a/backend/database.js b/backend/database.js index f27c246..0e1a7cf 100644 --- a/backend/database.js +++ b/backend/database.js @@ -485,6 +485,41 @@ function createTables() { ) `); + // Erinnerungen + db.exec(` + CREATE TABLE IF NOT EXISTS reminders ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + project_id INTEGER NOT NULL, + title TEXT NOT NULL, + description TEXT, + reminder_date DATE NOT NULL, + reminder_time TIME DEFAULT '09:00', + color TEXT DEFAULT '#F59E0B', + advance_days TEXT DEFAULT '1', + repeat_type TEXT DEFAULT 'none', + repeat_interval INTEGER DEFAULT 1, + is_active INTEGER DEFAULT 1, + created_by INTEGER NOT NULL, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE, + FOREIGN KEY (created_by) REFERENCES users(id) + ) + `); + + // Erinnerungs-Benachrichtigungen (für Tracking welche bereits gesendet wurden) + db.exec(` + CREATE TABLE IF NOT EXISTS reminder_notifications ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + reminder_id INTEGER NOT NULL, + notification_date DATE NOT NULL, + sent INTEGER DEFAULT 0, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (reminder_id) REFERENCES reminders(id) ON DELETE CASCADE, + UNIQUE(reminder_id, notification_date) + ) + `); + // Wissensmanagement - Kategorien db.exec(` CREATE TABLE IF NOT EXISTS knowledge_categories ( @@ -561,6 +596,31 @@ function createTables() { logger.info('Migration: claude_instructions Spalte zu coding_directories hinzugefuegt'); } + // Kontakte + db.exec(` + CREATE TABLE IF NOT EXISTS contacts ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + first_name TEXT, + last_name TEXT, + company TEXT, + position TEXT, + email TEXT, + phone TEXT, + mobile TEXT, + address TEXT, + postal_code TEXT, + city TEXT, + country TEXT, + website TEXT, + notes TEXT, + tags TEXT, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by INTEGER, + FOREIGN KEY (created_by) REFERENCES users(id) + ) + `); + // Indizes für Performance db.exec(` CREATE INDEX IF NOT EXISTS idx_tasks_project ON tasks(project_id); @@ -581,6 +641,8 @@ function createTables() { CREATE INDEX IF NOT EXISTS idx_knowledge_entries_category ON knowledge_entries(category_id); CREATE INDEX IF NOT EXISTS idx_knowledge_attachments_entry ON knowledge_attachments(entry_id); CREATE INDEX IF NOT EXISTS idx_coding_directories_position ON coding_directories(position); + CREATE INDEX IF NOT EXISTS idx_contacts_company ON contacts(company); + CREATE INDEX IF NOT EXISTS idx_contacts_tags ON contacts(tags); `); logger.info('Datenbank-Tabellen erstellt'); diff --git a/backend/middleware/validation.js b/backend/middleware/validation.js index d2986a7..4d1e688 100644 --- a/backend/middleware/validation.js +++ b/backend/middleware/validation.js @@ -305,6 +305,46 @@ function sanitizeMiddleware(req, res, next) { next(); } +/** + * Kontakt-Validierung Middleware + */ +validators.contact = function(req, res, next) { + const errors = []; + const { firstName, lastName, company, email, phone, mobile, website } = req.body; + + // Mindestens ein Name oder Firma muss vorhanden sein + if (!firstName && !lastName && !company) { + errors.push('Mindestens Vorname, Nachname oder Firma muss angegeben werden'); + } + + // Email validieren + if (email) { + const emailError = validators.email(email, 'E-Mail'); + if (emailError) errors.push(emailError); + } + + // Website URL validieren + if (website) { + const urlError = validators.url(website, 'Website'); + if (urlError) errors.push(urlError); + } + + // Telefonnummer Format (optional) + if (phone && !/^[\d\s\-\+\(\)]+$/.test(phone)) { + errors.push('Telefonnummer enthält ungültige Zeichen'); + } + + if (mobile && !/^[\d\s\-\+\(\)]+$/.test(mobile)) { + errors.push('Mobilnummer enthält ungültige Zeichen'); + } + + if (errors.length > 0) { + return res.status(400).json({ errors }); + } + + next(); +}; + module.exports = { stripHtml, sanitizeMarkdown, diff --git a/backend/routes/contacts.js b/backend/routes/contacts.js new file mode 100644 index 0000000..3209c7d --- /dev/null +++ b/backend/routes/contacts.js @@ -0,0 +1,439 @@ +/** + * TASKMATE - Contact Routes + * ========================= + * CRUD für Kontakte + */ + +const express = require('express'); +const router = express.Router(); +const { getDb } = require('../database'); +const logger = require('../utils/logger'); +const { validators } = require('../middleware/validation'); + +/** + * GET /api/contacts + * Alle Kontakte abrufen mit optionalem Filter + */ +router.get('/', (req, res) => { + try { + const db = getDb(); + const { search, tag, sortBy = 'created_at', sortOrder = 'desc' } = req.query; + + let query = ` + SELECT c.*, u.display_name as creator_name + FROM contacts c + LEFT JOIN users u ON c.created_by = u.id + WHERE 1=1 + `; + const params = []; + + // Suchfilter + if (search) { + query += ` AND ( + c.first_name LIKE ? OR + c.last_name LIKE ? OR + c.company LIKE ? OR + c.email LIKE ? OR + c.phone LIKE ? OR + c.mobile LIKE ? + )`; + const searchParam = `%${search}%`; + params.push(searchParam, searchParam, searchParam, searchParam, searchParam, searchParam); + } + + // Tag-Filter + if (tag) { + query += ` AND c.tags LIKE ?`; + params.push(`%${tag}%`); + } + + // Sortierung + const validSortFields = ['first_name', 'last_name', 'company', 'created_at', 'updated_at']; + const sortField = validSortFields.includes(sortBy) ? sortBy : 'created_at'; + const order = sortOrder.toLowerCase() === 'asc' ? 'ASC' : 'DESC'; + query += ` ORDER BY c.${sortField} ${order}`; + + const contacts = db.prepare(query).all(params); + + res.json(contacts.map(c => ({ + id: c.id, + firstName: c.first_name, + lastName: c.last_name, + company: c.company, + position: c.position, + email: c.email, + phone: c.phone, + mobile: c.mobile, + address: c.address, + postalCode: c.postal_code, + city: c.city, + country: c.country, + website: c.website, + notes: c.notes, + tags: c.tags ? c.tags.split(',').map(t => t.trim()) : [], + createdAt: c.created_at, + updatedAt: c.updated_at, + createdBy: c.created_by, + creatorName: c.creator_name + }))); + } catch (error) { + logger.error('Fehler beim Abrufen der Kontakte:', { error: error.message }); + res.status(500).json({ error: 'Interner Serverfehler' }); + } +}); + +/** + * GET /api/contacts/:id + * Einzelnen Kontakt abrufen + */ +router.get('/:id', (req, res) => { + try { + const db = getDb(); + const contactId = req.params.id; + + const contact = db.prepare(` + SELECT c.*, u.display_name as creator_name + FROM contacts c + LEFT JOIN users u ON c.created_by = u.id + WHERE c.id = ? + `).get(contactId); + + if (!contact) { + return res.status(404).json({ error: 'Kontakt nicht gefunden' }); + } + + res.json({ + id: contact.id, + firstName: contact.first_name, + lastName: contact.last_name, + company: contact.company, + position: contact.position, + email: contact.email, + phone: contact.phone, + mobile: contact.mobile, + address: contact.address, + postalCode: contact.postal_code, + city: contact.city, + country: contact.country, + website: contact.website, + notes: contact.notes, + tags: contact.tags ? contact.tags.split(',').map(t => t.trim()) : [], + createdAt: contact.created_at, + updatedAt: contact.updated_at, + createdBy: contact.created_by, + creatorName: contact.creator_name + }); + } catch (error) { + logger.error('Fehler beim Abrufen des Kontakts:', { error: error.message, contactId: req.params.id }); + res.status(500).json({ error: 'Interner Serverfehler' }); + } +}); + +/** + * POST /api/contacts + * Neuen Kontakt erstellen + */ +router.post('/', validators.contact, (req, res) => { + try { + const db = getDb(); + const userId = req.user.id; + const { + firstName, + lastName, + company, + position, + email, + phone, + mobile, + address, + postalCode, + city, + country, + website, + notes, + tags + } = req.body; + + const result = db.prepare(` + INSERT INTO contacts ( + first_name, last_name, company, position, + email, phone, mobile, address, postal_code, + city, country, website, notes, tags, + created_by + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `).run( + firstName || null, + lastName || null, + company || null, + position || null, + email || null, + phone || null, + mobile || null, + address || null, + postalCode || null, + city || null, + country || null, + website || null, + notes || null, + Array.isArray(tags) ? tags.join(', ') : null, + userId + ); + + const newContact = db.prepare(` + SELECT c.*, u.display_name as creator_name + FROM contacts c + LEFT JOIN users u ON c.created_by = u.id + WHERE c.id = ? + `).get(result.lastInsertRowid); + + // Socket.io Event + const io = req.app.get('io'); + io.emit('contact:created', { + contact: { + id: newContact.id, + firstName: newContact.first_name, + lastName: newContact.last_name, + company: newContact.company, + position: newContact.position, + email: newContact.email, + phone: newContact.phone, + mobile: newContact.mobile, + address: newContact.address, + postalCode: newContact.postal_code, + city: newContact.city, + country: newContact.country, + website: newContact.website, + notes: newContact.notes, + tags: newContact.tags ? newContact.tags.split(',').map(t => t.trim()) : [], + createdAt: newContact.created_at, + updatedAt: newContact.updated_at, + createdBy: newContact.created_by, + creatorName: newContact.creator_name + }, + userId + }); + + res.status(201).json({ + id: newContact.id, + firstName: newContact.first_name, + lastName: newContact.last_name, + company: newContact.company, + position: newContact.position, + email: newContact.email, + phone: newContact.phone, + mobile: newContact.mobile, + address: newContact.address, + postalCode: newContact.postal_code, + city: newContact.city, + country: newContact.country, + website: newContact.website, + notes: newContact.notes, + tags: newContact.tags ? newContact.tags.split(',').map(t => t.trim()) : [], + createdAt: newContact.created_at, + updatedAt: newContact.updated_at, + createdBy: newContact.created_by, + creatorName: newContact.creator_name + }); + + logger.info('Kontakt erstellt', { contactId: newContact.id, userId }); + } catch (error) { + logger.error('Fehler beim Erstellen des Kontakts:', { error: error.message, body: req.body }); + res.status(500).json({ error: 'Interner Serverfehler' }); + } +}); + +/** + * PUT /api/contacts/:id + * Kontakt aktualisieren + */ +router.put('/:id', validators.contact, (req, res) => { + try { + const db = getDb(); + const contactId = req.params.id; + const userId = req.user.id; + const { + firstName, + lastName, + company, + position, + email, + phone, + mobile, + address, + postalCode, + city, + country, + website, + notes, + tags + } = req.body; + + // Prüfen ob Kontakt existiert + const existing = db.prepare('SELECT id FROM contacts WHERE id = ?').get(contactId); + if (!existing) { + return res.status(404).json({ error: 'Kontakt nicht gefunden' }); + } + + // Update + db.prepare(` + UPDATE contacts SET + first_name = ?, + last_name = ?, + company = ?, + position = ?, + email = ?, + phone = ?, + mobile = ?, + address = ?, + postal_code = ?, + city = ?, + country = ?, + website = ?, + notes = ?, + tags = ?, + updated_at = CURRENT_TIMESTAMP + WHERE id = ? + `).run( + firstName || null, + lastName || null, + company || null, + position || null, + email || null, + phone || null, + mobile || null, + address || null, + postalCode || null, + city || null, + country || null, + website || null, + notes || null, + Array.isArray(tags) ? tags.join(', ') : null, + contactId + ); + + const updatedContact = db.prepare(` + SELECT c.*, u.display_name as creator_name + FROM contacts c + LEFT JOIN users u ON c.created_by = u.id + WHERE c.id = ? + `).get(contactId); + + // Socket.io Event + const io = req.app.get('io'); + io.emit('contact:updated', { + contact: { + id: updatedContact.id, + firstName: updatedContact.first_name, + lastName: updatedContact.last_name, + company: updatedContact.company, + position: updatedContact.position, + email: updatedContact.email, + phone: updatedContact.phone, + mobile: updatedContact.mobile, + address: updatedContact.address, + postalCode: updatedContact.postal_code, + city: updatedContact.city, + country: updatedContact.country, + website: updatedContact.website, + notes: updatedContact.notes, + tags: updatedContact.tags ? updatedContact.tags.split(',').map(t => t.trim()) : [], + createdAt: updatedContact.created_at, + updatedAt: updatedContact.updated_at, + createdBy: updatedContact.created_by, + creatorName: updatedContact.creator_name + }, + userId + }); + + res.json({ + id: updatedContact.id, + firstName: updatedContact.first_name, + lastName: updatedContact.last_name, + company: updatedContact.company, + position: updatedContact.position, + email: updatedContact.email, + phone: updatedContact.phone, + mobile: updatedContact.mobile, + address: updatedContact.address, + postalCode: updatedContact.postal_code, + city: updatedContact.city, + country: updatedContact.country, + website: updatedContact.website, + notes: updatedContact.notes, + tags: updatedContact.tags ? updatedContact.tags.split(',').map(t => t.trim()) : [], + createdAt: updatedContact.created_at, + updatedAt: updatedContact.updated_at, + createdBy: updatedContact.created_by, + creatorName: updatedContact.creator_name + }); + + logger.info('Kontakt aktualisiert', { contactId, userId }); + } catch (error) { + logger.error('Fehler beim Aktualisieren des Kontakts:', { error: error.message, contactId: req.params.id }); + res.status(500).json({ error: 'Interner Serverfehler' }); + } +}); + +/** + * DELETE /api/contacts/:id + * Kontakt löschen + */ +router.delete('/:id', (req, res) => { + try { + const db = getDb(); + const contactId = req.params.id; + const userId = req.user.id; + + // Prüfen ob Kontakt existiert + const existing = db.prepare('SELECT id FROM contacts WHERE id = ?').get(contactId); + if (!existing) { + return res.status(404).json({ error: 'Kontakt nicht gefunden' }); + } + + // Löschen + db.prepare('DELETE FROM contacts WHERE id = ?').run(contactId); + + // Socket.io Event + const io = req.app.get('io'); + io.emit('contact:deleted', { contactId, userId }); + + res.json({ success: true }); + + logger.info('Kontakt gelöscht', { contactId, userId }); + } catch (error) { + logger.error('Fehler beim Löschen des Kontakts:', { error: error.message, contactId: req.params.id }); + res.status(500).json({ error: 'Interner Serverfehler' }); + } +}); + +/** + * GET /api/contacts/tags + * Alle verwendeten Tags abrufen + */ +router.get('/tags/all', (req, res) => { + try { + const db = getDb(); + + const contacts = db.prepare('SELECT DISTINCT tags FROM contacts WHERE tags IS NOT NULL').all(); + + // Alle Tags sammeln und deduplizieren + const allTags = new Set(); + contacts.forEach(contact => { + if (contact.tags) { + contact.tags.split(',').forEach(tag => { + const trimmedTag = tag.trim(); + if (trimmedTag) { + allTags.add(trimmedTag); + } + }); + } + }); + + res.json(Array.from(allTags).sort()); + } catch (error) { + logger.error('Fehler beim Abrufen der Tags:', { error: error.message }); + res.status(500).json({ error: 'Interner Serverfehler' }); + } +}); + +module.exports = router; \ No newline at end of file diff --git a/backend/routes/knowledge.js b/backend/routes/knowledge.js index 15c5b57..17ee340 100644 --- a/backend/routes/knowledge.js +++ b/backend/routes/knowledge.js @@ -110,13 +110,13 @@ router.post('/categories', (req, res) => { return res.status(400).json({ error: 'Eine Kategorie mit diesem Namen existiert bereits' }); } - // Position ermitteln - const lastPosition = db.prepare( - 'SELECT MAX(position) as max_pos FROM knowledge_categories' - ).get(); - const position = (lastPosition.max_pos ?? -1) + 1; + // Alle bestehenden Kategorien um 1 nach unten verschieben + db.prepare(` + UPDATE knowledge_categories + SET position = position + 1 + `).run(); - // Einfügen + // Neue Kategorie an Position 0 (ganz oben) einfügen const result = db.prepare(` INSERT INTO knowledge_categories (name, description, color, icon, position, created_by) VALUES (?, ?, ?, ?, ?, ?) @@ -125,7 +125,7 @@ router.post('/categories', (req, res) => { description ? stripHtml(description) : null, color || '#3B82F6', icon || null, - position, + 0, // Neue Kategorien immer an Position 0 (oben) req.user.id ); @@ -473,13 +473,14 @@ router.post('/entries', (req, res) => { return res.status(404).json({ error: 'Kategorie nicht gefunden' }); } - // Position ermitteln - const lastPosition = db.prepare( - 'SELECT MAX(position) as max_pos FROM knowledge_entries WHERE category_id = ?' - ).get(categoryId); - const position = (lastPosition.max_pos ?? -1) + 1; + // Alle bestehenden Einträge um 1 nach unten verschieben + db.prepare(` + UPDATE knowledge_entries + SET position = position + 1 + WHERE category_id = ? + `).run(categoryId); - // Einfügen + // Neuen Eintrag an Position 0 (ganz oben) einfügen const result = db.prepare(` INSERT INTO knowledge_entries (category_id, title, url, notes, position, created_by) VALUES (?, ?, ?, ?, ?, ?) @@ -488,7 +489,7 @@ router.post('/entries', (req, res) => { stripHtml(title), url || null, notes || null, - position, + 0, // Neue Einträge immer an Position 0 (oben) req.user.id ); diff --git a/backend/routes/reminders.js b/backend/routes/reminders.js new file mode 100644 index 0000000..0f2c9c5 --- /dev/null +++ b/backend/routes/reminders.js @@ -0,0 +1,360 @@ +/** + * TASKMATE - Reminders API + * ======================== + * API endpoints für Erinnerungen + */ + +const express = require('express'); +const router = express.Router(); +const { getDb } = require('../database'); +const reminderService = require('../services/reminderService'); + +// GET /api/reminders - Alle Erinnerungen für ein Projekt abrufen +router.get('/', (req, res) => { + try { + const { project_id } = req.query; + const db = getDb(); + + if (!project_id) { + return res.status(400).json({ + success: false, + error: 'project_id ist erforderlich' + }); + } + + const reminders = db.prepare(` + SELECT r.*, u.display_name as creator_name + FROM reminders r + LEFT JOIN users u ON r.created_by = u.id + WHERE r.project_id = ? AND r.is_active = 1 + ORDER BY r.reminder_date ASC, r.reminder_time ASC + `).all(project_id); + + // Advance days von String zu Array konvertieren + reminders.forEach(reminder => { + reminder.advance_days = reminder.advance_days ? reminder.advance_days.split(',') : ['1']; + }); + + res.json({ + success: true, + data: reminders + }); + } catch (error) { + console.error('Error fetching reminders:', error); + res.status(500).json({ + success: false, + error: 'Interner Server-Fehler' + }); + } +}); + +// GET /api/reminders/:id - Einzelne Erinnerung abrufen +router.get('/:id', (req, res) => { + try { + const db = getDb(); + const reminder = db.prepare(` + SELECT r.*, u.display_name as creator_name + FROM reminders r + LEFT JOIN users u ON r.created_by = u.id + WHERE r.id = ? + `).get(req.params.id); + + if (!reminder) { + return res.status(404).json({ + success: false, + error: 'Erinnerung nicht gefunden' + }); + } + + // Advance days von String zu Array konvertieren + reminder.advance_days = reminder.advance_days ? reminder.advance_days.split(',') : ['1']; + + res.json({ + success: true, + data: reminder + }); + } catch (error) { + console.error('Error fetching reminder:', error); + res.status(500).json({ + success: false, + error: 'Interner Server-Fehler' + }); + } +}); + +// POST /api/reminders - Neue Erinnerung erstellen +router.post('/', (req, res) => { + try { + const { + project_id, + title, + description, + reminder_date, + reminder_time, + color, + advance_days, + repeat_type, + repeat_interval + } = req.body; + + if (!project_id || !title || !reminder_date) { + return res.status(400).json({ + success: false, + error: 'project_id, title und reminder_date sind erforderlich' + }); + } + + const db = getDb(); + + // Advance days Array zu String konvertieren + const advanceDaysStr = Array.isArray(advance_days) ? advance_days.join(',') : '1'; + + const result = db.prepare(` + INSERT INTO reminders ( + project_id, title, description, reminder_date, reminder_time, + color, advance_days, repeat_type, repeat_interval, created_by + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `).run( + project_id, + title, + description || null, + reminder_date, + reminder_time || '09:00', + color || '#F59E0B', + advanceDaysStr, + repeat_type || 'none', + repeat_interval || 1, + req.user.id + ); + + // Benachrichtigungs-Termine mit ReminderService erstellen + if (advance_days && Array.isArray(advance_days)) { + const serviceInstance = reminderService.getInstance(); + serviceInstance.createNotificationSchedule(result.lastInsertRowid, reminder_date, advance_days); + } + + // Neue Erinnerung abrufen + const newReminder = db.prepare(` + SELECT r.*, u.display_name as creator_name + FROM reminders r + LEFT JOIN users u ON r.created_by = u.id + WHERE r.id = ? + `).get(result.lastInsertRowid); + + newReminder.advance_days = newReminder.advance_days ? newReminder.advance_days.split(',') : ['1']; + + res.status(201).json({ + success: true, + data: newReminder + }); + } catch (error) { + console.error('Error creating reminder:', error); + res.status(500).json({ + success: false, + error: 'Interner Server-Fehler' + }); + } +}); + +// PUT /api/reminders/:id - Erinnerung bearbeiten +router.put('/:id', (req, res) => { + try { + const { + title, + description, + reminder_date, + reminder_time, + color, + advance_days, + repeat_type, + repeat_interval, + is_active + } = req.body; + + const db = getDb(); + + // Prüfen ob Erinnerung existiert + const existing = db.prepare('SELECT * FROM reminders WHERE id = ?').get(req.params.id); + if (!existing) { + return res.status(404).json({ + success: false, + error: 'Erinnerung nicht gefunden' + }); + } + + // Advance days Array zu String konvertieren + const advanceDaysStr = Array.isArray(advance_days) ? advance_days.join(',') : existing.advance_days; + + db.prepare(` + UPDATE reminders SET + title = ?, + description = ?, + reminder_date = ?, + reminder_time = ?, + color = ?, + advance_days = ?, + repeat_type = ?, + repeat_interval = ?, + is_active = ?, + updated_at = CURRENT_TIMESTAMP + WHERE id = ? + `).run( + title || existing.title, + description !== undefined ? description : existing.description, + reminder_date || existing.reminder_date, + reminder_time || existing.reminder_time, + color || existing.color, + advanceDaysStr, + repeat_type || existing.repeat_type, + repeat_interval || existing.repeat_interval, + is_active !== undefined ? is_active : existing.is_active, + req.params.id + ); + + // Benachrichtigungs-Termine neu berechnen wenn sich das Datum geändert hat + if (reminder_date || advance_days) { + const finalAdvanceDays = advance_days || existing.advance_days.split(','); + const finalReminderDate = reminder_date || existing.reminder_date; + + const serviceInstance = reminderService.getInstance(); + serviceInstance.createNotificationSchedule(req.params.id, finalReminderDate, finalAdvanceDays); + } + + // Aktualisierte Erinnerung abrufen + const updatedReminder = db.prepare(` + SELECT r.*, u.display_name as creator_name + FROM reminders r + LEFT JOIN users u ON r.created_by = u.id + WHERE r.id = ? + `).get(req.params.id); + + updatedReminder.advance_days = updatedReminder.advance_days ? updatedReminder.advance_days.split(',') : ['1']; + + res.json({ + success: true, + data: updatedReminder + }); + } catch (error) { + console.error('Error updating reminder:', error); + res.status(500).json({ + success: false, + error: 'Interner Server-Fehler' + }); + } +}); + +// DELETE /api/reminders/:id - Erinnerung löschen +router.delete('/:id', (req, res) => { + try { + const db = getDb(); + + const result = db.prepare('DELETE FROM reminders WHERE id = ?').run(req.params.id); + + if (result.changes === 0) { + return res.status(404).json({ + success: false, + error: 'Erinnerung nicht gefunden' + }); + } + + res.json({ + success: true, + message: 'Erinnerung erfolgreich gelöscht' + }); + } catch (error) { + console.error('Error deleting reminder:', error); + res.status(500).json({ + success: false, + error: 'Interner Server-Fehler' + }); + } +}); + +// GET /api/reminders/due/check - Fällige Erinnerungen prüfen (für Cron-Job) +router.get('/due/check', (req, res) => { + try { + const db = getDb(); + const today = new Date().toISOString().split('T')[0]; + + // Fällige Benachrichtigungen finden + const dueNotifications = db.prepare(` + SELECT rn.*, r.title, r.description, r.project_id, r.created_by, r.reminder_date, r.color + FROM reminder_notifications rn + JOIN reminders r ON rn.reminder_id = r.id + WHERE rn.notification_date <= ? AND rn.sent = 0 AND r.is_active = 1 + ORDER BY rn.notification_date ASC + `).all(today); + + res.json({ + success: true, + data: dueNotifications + }); + } catch (error) { + console.error('Error checking due reminders:', error); + res.status(500).json({ + success: false, + error: 'Interner Server-Fehler' + }); + } +}); + +// POST /api/reminders/due/mark-sent - Benachrichtigung als gesendet markieren +router.post('/due/mark-sent', (req, res) => { + try { + const { notification_id } = req.body; + const db = getDb(); + + db.prepare('UPDATE reminder_notifications SET sent = 1 WHERE id = ?').run(notification_id); + + res.json({ + success: true, + message: 'Benachrichtigung als gesendet markiert' + }); + } catch (error) { + console.error('Error marking notification as sent:', error); + res.status(500).json({ + success: false, + error: 'Interner Server-Fehler' + }); + } +}); + +// GET /api/reminders/stats - Debug-Statistiken für Reminder Service +router.get('/stats', (req, res) => { + try { + const serviceInstance = reminderService.getInstance(); + const stats = serviceInstance.getStats(); + + res.json({ + success: true, + data: stats + }); + } catch (error) { + console.error('Error getting reminder stats:', error); + res.status(500).json({ + success: false, + error: 'Interner Server-Fehler' + }); + } +}); + +// POST /api/reminders/check-now - Manuelle Prüfung fälliger Erinnerungen +router.post('/check-now', async (req, res) => { + try { + const serviceInstance = reminderService.getInstance(); + await serviceInstance.manualCheck(); + + res.json({ + success: true, + message: 'Manuelle Reminder-Prüfung durchgeführt' + }); + } catch (error) { + console.error('Error during manual reminder check:', error); + res.status(500).json({ + success: false, + error: 'Interner Server-Fehler' + }); + } +}); + +module.exports = router; \ No newline at end of file diff --git a/backend/server.js b/backend/server.js index 5e06352..a453061 100644 --- a/backend/server.js +++ b/backend/server.js @@ -41,11 +41,13 @@ const adminRoutes = require('./routes/admin'); const proposalRoutes = require('./routes/proposals'); const notificationRoutes = require('./routes/notifications'); const notificationService = require('./services/notificationService'); +const reminderService = require('./services/reminderService'); const gitRoutes = require('./routes/git'); const applicationsRoutes = require('./routes/applications'); const giteaRoutes = require('./routes/gitea'); const knowledgeRoutes = require('./routes/knowledge'); const codingRoutes = require('./routes/coding'); +const reminderRoutes = require('./routes/reminders'); // Express App erstellen const app = express(); @@ -106,8 +108,17 @@ app.use((req, res, next) => { next(); }); -// Statische Dateien (Frontend) -app.use(express.static(path.join(__dirname, 'public'))); +// Statische Dateien (Frontend) - ohne Caching für Development +app.use(express.static(path.join(__dirname, 'public'), { + etag: false, + lastModified: false, + cacheControl: false, + setHeaders: (res, path) => { + res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate'); + res.setHeader('Pragma', 'no-cache'); + res.setHeader('Expires', '0'); + } +})); // Uploads-Ordner app.use('/uploads', authenticateToken, express.static(process.env.UPLOAD_DIR || path.join(__dirname, 'uploads'))); @@ -160,6 +171,12 @@ app.use('/api/knowledge', authenticateToken, csrfProtection, knowledgeRoutes); // Coding-Routes (Entwicklungsverzeichnisse mit Claude/Codex) app.use('/api/coding', authenticateToken, csrfProtection, codingRoutes); +// Reminder-Routes (Erinnerungen) +app.use('/api/reminders', authenticateToken, csrfProtection, reminderRoutes); + +// Contacts-Routes (Kontakte) +app.use('/api/contacts', authenticateToken, csrfProtection, require('./routes/contacts')); + // ============================================================================= // SOCKET.IO // ============================================================================= @@ -296,6 +313,10 @@ database.initialize() notificationService.checkDueTasks(io); logger.info('Fälligkeits-Check für Benachrichtigungen gestartet'); }, 60 * 1000); + + // Reminder Service starten + const reminderServiceInstance = reminderService.getInstance(io); + reminderServiceInstance.start(); }); }) .catch((err) => { @@ -306,6 +327,11 @@ database.initialize() // Graceful Shutdown process.on('SIGTERM', () => { logger.info('SIGTERM empfangen, fahre herunter...'); + + // Reminder Service stoppen + const reminderServiceInstance = reminderService.getInstance(); + reminderServiceInstance.stop(); + server.close(() => { database.close(); logger.info('Server beendet'); @@ -315,6 +341,11 @@ process.on('SIGTERM', () => { process.on('SIGINT', () => { logger.info('SIGINT empfangen, fahre herunter...'); + + // Reminder Service stoppen + const reminderServiceInstance = reminderService.getInstance(); + reminderServiceInstance.stop(); + server.close(() => { database.close(); logger.info('Server beendet'); diff --git a/backend/services/notificationService.js b/backend/services/notificationService.js index dc0cb66..efa4319 100644 --- a/backend/services/notificationService.js +++ b/backend/services/notificationService.js @@ -47,6 +47,10 @@ const NOTIFICATION_TYPES = { title: (data) => 'Genehmigung erforderlich', message: (data) => `Neue Genehmigung: "${data.proposalTitle}"` }, + 'reminder:due': { + title: (data) => 'Erinnerung', + message: (data) => `${data.reminderTitle} - ${data.daysAdvance === '0' ? 'Heute' : `in ${data.daysAdvance} Tag${data.daysAdvance > 1 ? 'en' : ''}`}` + }, 'approval:granted': { title: (data) => 'Genehmigung erteilt', message: (data) => `"${data.proposalTitle}" wurde genehmigt` @@ -284,6 +288,24 @@ const notificationService = { if (result) results.push(result); }); return results; + }, + + /** + * Reminder-Benachrichtigung erstellen + */ + createReminderNotification(reminder, daysAdvance, io) { + return this.create( + reminder.created_by, + 'reminder:due', + { + reminderTitle: reminder.title, + daysAdvance: daysAdvance.toString(), + projectId: reminder.project_id, + reminderId: reminder.id + }, + io, + false + ); } }; diff --git a/backend/services/reminderService.js b/backend/services/reminderService.js new file mode 100644 index 0000000..a0a8d28 --- /dev/null +++ b/backend/services/reminderService.js @@ -0,0 +1,242 @@ +/** + * TASKMATE - Reminder Service + * =========================== + * Service für Erinnerungsbenachrichtigungen und Scheduling + */ + +const { getDb } = require('../database'); +const notificationService = require('./notificationService'); +const logger = require('../utils/logger'); + +class ReminderService { + constructor(io = null) { + this.io = io; + this.intervalId = null; + this.isRunning = false; + } + + /** + * Startet den Reminder-Check-Service + * Läuft alle 5 Minuten (kann für Produktion auf 1 Stunde erhöht werden) + */ + start() { + if (this.isRunning) { + logger.warn('Reminder Service ist bereits gestartet'); + return; + } + + this.isRunning = true; + + // Sofort prüfen + this.checkDueReminders(); + + // Dann alle 5 Minuten (300000 ms) + // In Produktion könnte das auf 1 Stunde (3600000 ms) erhöht werden + this.intervalId = setInterval(() => { + this.checkDueReminders(); + }, 300000); // 5 Minuten + + logger.info('Reminder Service gestartet - prüft alle 5 Minuten'); + } + + /** + * Stoppt den Reminder-Check-Service + */ + stop() { + if (!this.isRunning) { + return; + } + + if (this.intervalId) { + clearInterval(this.intervalId); + this.intervalId = null; + } + + this.isRunning = false; + logger.info('Reminder Service gestoppt'); + } + + /** + * Prüft fällige Erinnerungen und sendet Benachrichtigungen + */ + async checkDueReminders() { + try { + const db = getDb(); + const today = new Date().toISOString().split('T')[0]; + + // Finde alle fälligen Benachrichtigungen die noch nicht gesendet wurden + const dueNotifications = db.prepare(` + SELECT + rn.*, + r.id as reminder_id, + r.title as reminder_title, + r.description as reminder_description, + r.reminder_date, + r.reminder_time, + r.color, + r.project_id, + r.created_by, + r.advance_days + FROM reminder_notifications rn + JOIN reminders r ON rn.reminder_id = r.id + WHERE rn.notification_date <= ? + AND rn.sent = 0 + AND r.is_active = 1 + ORDER BY rn.notification_date ASC, r.reminder_time ASC + `).all(today); + + if (dueNotifications.length === 0) { + logger.debug('Keine fälligen Erinnerungen gefunden'); + return; + } + + logger.info(`${dueNotifications.length} fällige Erinnerung(en) gefunden`); + + // Verarbeite jede fällige Benachrichtigung + for (const notification of dueNotifications) { + await this.processReminderNotification(notification); + } + + } catch (error) { + logger.error('Fehler beim Prüfen fälliger Erinnerungen:', error); + } + } + + /** + * Verarbeitet eine einzelne fällige Erinnerungs-Benachrichtigung + */ + async processReminderNotification(notification) { + try { + const db = getDb(); + + // Berechne wie viele Tage im Voraus diese Benachrichtigung ist + const reminderDate = new Date(notification.reminder_date); + const notificationDate = new Date(notification.notification_date); + const daysDiff = Math.ceil((reminderDate - notificationDate) / (1000 * 60 * 60 * 24)); + + const reminder = { + id: notification.reminder_id, + title: notification.reminder_title, + description: notification.reminder_description, + project_id: notification.project_id, + created_by: notification.created_by, + color: notification.color + }; + + // Erstelle Benachrichtigung + const createdNotification = notificationService.createReminderNotification( + reminder, + daysDiff, + this.io + ); + + if (createdNotification) { + // Markiere als gesendet + db.prepare(` + UPDATE reminder_notifications + SET sent = 1 + WHERE id = ? + `).run(notification.id); + + logger.info(`Reminder-Benachrichtigung gesendet: "${notification.reminder_title}" (${daysDiff} Tage vorher)`); + } + + } catch (error) { + logger.error(`Fehler beim Verarbeiten der Reminder-Benachrichtigung ${notification.id}:`, error); + } + } + + /** + * Erstellt Benachrichtigungstermine für eine neue Erinnerung + */ + createNotificationSchedule(reminderId, reminderDate, advanceDays) { + try { + const db = getDb(); + const baseDate = new Date(reminderDate); + + // Lösche alte Termine falls vorhanden + db.prepare('DELETE FROM reminder_notifications WHERE reminder_id = ?').run(reminderId); + + // Erstelle neue Termine für jeden advance day + advanceDays.forEach(days => { + const notificationDate = new Date(baseDate); + notificationDate.setDate(notificationDate.getDate() - parseInt(days)); + + const notificationDateStr = notificationDate.toISOString().split('T')[0]; + + // Nur zukünftige Termine erstellen + const today = new Date().toISOString().split('T')[0]; + if (notificationDateStr >= today) { + db.prepare(` + INSERT OR IGNORE INTO reminder_notifications (reminder_id, notification_date) + VALUES (?, ?) + `).run(reminderId, notificationDateStr); + } + }); + + logger.debug(`Benachrichtigungstermine erstellt für Reminder ${reminderId}`); + } catch (error) { + logger.error(`Fehler beim Erstellen der Benachrichtigungstermine für Reminder ${reminderId}:`, error); + } + } + + /** + * Manuelle Prüfung für API-Endpoint + */ + async manualCheck() { + logger.info('Manuelle Reminder-Prüfung ausgelöst'); + return await this.checkDueReminders(); + } + + /** + * Statistiken für Debugging + */ + getStats() { + try { + const db = getDb(); + + const stats = { + isRunning: this.isRunning, + activeReminders: db.prepare('SELECT COUNT(*) as count FROM reminders WHERE is_active = 1').get().count, + pendingNotifications: db.prepare('SELECT COUNT(*) as count FROM reminder_notifications WHERE sent = 0').get().count, + nextDueDate: db.prepare(` + SELECT MIN(notification_date) as next_date + FROM reminder_notifications + WHERE sent = 0 AND notification_date >= date('now') + `).get().next_date + }; + + return stats; + } catch (error) { + logger.error('Fehler beim Abrufen der Reminder-Statistiken:', error); + return { error: error.message }; + } + } + + /** + * Socket.io Instanz setzen/aktualisieren + */ + setSocketIO(io) { + this.io = io; + logger.debug('Socket.IO Instanz für Reminder Service aktualisiert'); + } +} + +// Singleton Export +let instance = null; + +module.exports = { + getInstance(io = null) { + if (!instance) { + instance = new ReminderService(io); + } else if (io) { + instance.setSocketIO(io); + } + return instance; + }, + + // Für Tests und Debugging + createInstance(io = null) { + return new ReminderService(io); + } +}; \ No newline at end of file diff --git a/data/taskmate.db b/data/taskmate.db index c9b878d..e9aa89a 100644 Binary files a/data/taskmate.db and b/data/taskmate.db differ diff --git a/data/taskmate.db-shm b/data/taskmate.db-shm deleted file mode 100644 index b29843b..0000000 Binary files a/data/taskmate.db-shm and /dev/null differ diff --git a/data/taskmate.db-wal b/data/taskmate.db-wal deleted file mode 100644 index 5d968f5..0000000 Binary files a/data/taskmate.db-wal and /dev/null differ diff --git a/fix_passwords.js b/fix_passwords.js new file mode 100644 index 0000000..d0a57ba --- /dev/null +++ b/fix_passwords.js @@ -0,0 +1,43 @@ +/** + * Password Fix Script + * Setzt die Passwort-Hashes für alle Benutzer zurück + */ + +const bcrypt = require('bcrypt'); +const Database = require('better-sqlite3'); +const path = require('path'); + +async function fixPasswords() { + const db = new Database(path.join(__dirname, 'data/taskmate.db')); + + console.log('Setze Passwort-Hashes zurück...'); + + // Standard-Passwörter + const passwords = { + 'admin': 'admin123', + 'hendrik_gebhardt@gmx.de': 'Hzfne313!fdEF34', + 'momohomma@googlemail.com': 'Hzfne313!fdEF34' + }; + + for (const [username, password] of Object.entries(passwords)) { + const hash = await bcrypt.hash(password, 12); + + // Update basierend auf E-Mail oder Username + const result = db.prepare(` + UPDATE users + SET password_hash = ?, failed_attempts = 0, locked_until = NULL + WHERE email = ? OR username = ? + `).run(hash, username, username); + + if (result.changes > 0) { + console.log(`✅ Passwort für ${username} aktualisiert`); + } else { + console.log(`❌ Benutzer ${username} nicht gefunden`); + } + } + + db.close(); + console.log('Passwort-Fix abgeschlossen!'); +} + +fixPasswords().catch(console.error); \ No newline at end of file diff --git a/frontend/css/board.css b/frontend/css/board.css index 27e50b0..deacbb8 100644 --- a/frontend/css/board.css +++ b/frontend/css/board.css @@ -604,13 +604,13 @@ .column-header { display: flex; align-items: center; - justify-content: space-between; padding: var(--spacing-3); border-bottom: none; border-radius: var(--radius-xl) var(--radius-xl) 0 0; cursor: grab; user-select: none; -webkit-user-select: none; + position: relative; } .column-header:active { @@ -631,6 +631,8 @@ color: inherit; text-transform: uppercase; letter-spacing: 0.05em; + flex: 1; + padding-right: var(--spacing-8); } .column-count { @@ -652,6 +654,9 @@ gap: var(--spacing-1); opacity: 0; transition: opacity var(--transition-fast); + position: absolute; + top: var(--spacing-3); + right: var(--spacing-3); } .column-actions .btn-icon { diff --git a/frontend/css/calendar.css b/frontend/css/calendar.css index d1c8caa..cccfa65 100644 --- a/frontend/css/calendar.css +++ b/frontend/css/calendar.css @@ -586,34 +586,46 @@ text-overflow: ellipsis; } -/* Week view multi-day task range styles */ +/* Week view multi-day task range styles - continuous bars like month view */ .calendar-week-task.has-range { + border-radius: 0; + /* Extend beyond cell boundaries for seamless connection */ + margin-left: calc(-1 * var(--spacing-3)); + margin-right: calc(-1 * var(--spacing-3)); + padding: 4px var(--spacing-3); + /* Fixed height for consistent bar thickness */ + height: 24px; + box-sizing: border-box; + line-height: 16px; + /* Transparent border for middle/end - color set via inline style on start */ + border-left: 3px solid transparent; position: relative; } -.calendar-week-task.has-range.range-start::after { - content: '▶'; - position: absolute; - right: 8px; - top: 50%; - transform: translateY(-50%); - font-size: 8px; - color: var(--text-tertiary); +.calendar-week-task.has-range.range-start { + border-radius: var(--radius-sm) 0 0 var(--radius-sm); + /* Start doesn't extend left into previous cell */ + margin-left: 0; + /* Compensate for width difference */ + padding-left: calc(var(--spacing-3) + 3px); + /* Border color set via inline style */ } -.calendar-week-task.has-range.range-end::after { - content: '◀'; - position: absolute; - left: 28px; - top: 50%; - transform: translateY(-50%); - font-size: 8px; - color: var(--text-tertiary); +.calendar-week-task.has-range.range-end { + border-radius: 0 var(--radius-sm) var(--radius-sm) 0; + /* End doesn't extend right into next cell */ + margin-right: 0; + padding-right: calc(var(--spacing-3) + 3px); } -.calendar-week-task.has-range.range-middle { - opacity: 0.7; - background: var(--bg-hover); +.calendar-week-task.has-range.range-middle:empty { + /* Hide empty middle segments that have no content */ + opacity: 0.3; +} + +.calendar-week-task.has-range.range-middle:not(:empty) { + /* Show middle segments that have content (first day of week) */ + opacity: 1; } /* Week Add Task Button */ @@ -635,6 +647,42 @@ color: var(--primary); } +/* ======================================== + REMINDER ITEMS + ======================================== */ + +.calendar-reminder-item { + position: relative; + display: flex; + align-items: center; + justify-content: space-between; + cursor: pointer; +} + +.calendar-reminder-bell { + position: absolute; + right: 2px; + top: 50%; + transform: translateY(-50%); + font-size: 10px; + line-height: 1; + pointer-events: none; +} + +/* Week view reminder styling */ +.calendar-week-task.calendar-reminder-item { + padding-right: 20px; /* Space for bell icon */ +} + +.calendar-week-task.calendar-reminder-item .calendar-reminder-bell { + font-size: 12px; +} + +/* Month view reminder styling */ +.calendar-task.calendar-reminder-item { + padding-right: 16px; /* Space for bell icon */ +} + /* ======================================== DAY DETAIL POPUP ======================================== */ diff --git a/frontend/css/contacts.css b/frontend/css/contacts.css new file mode 100644 index 0000000..46101e9 --- /dev/null +++ b/frontend/css/contacts.css @@ -0,0 +1,283 @@ +/** + * TASKMATE - Contacts Styles + * ========================== + * Kartenansicht für Kontakte + */ + +/* ============================================================================= + HEADER & CONTROLS + ============================================================================= */ + +.contacts-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: var(--space-md); + flex-wrap: wrap; + gap: var(--space-sm); +} + +.contacts-controls { + display: flex; + gap: var(--space-sm); + align-items: center; + flex-wrap: wrap; + justify-content: flex-end; +} + +.contacts-filters { + display: flex; + gap: var(--space-xs); +} + +/* ============================================================================= + GRID LAYOUT + ============================================================================= */ + +.contacts-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); + gap: var(--space-md); + margin-top: var(--space-md); +} + +/* ============================================================================= + CONTACT CARD + ============================================================================= */ + +.contact-card { + background: var(--bg-secondary); + border: 1px solid var(--border-color); + border-radius: var(--radius); + padding: var(--space-md); + transition: all 0.2s; + cursor: pointer; + position: relative; +} + +.contact-card:hover { + border-color: var(--primary); + transform: translateY(-2px); + box-shadow: var(--shadow-md); +} + +.contact-card-header { + display: flex; + justify-content: space-between; + align-items: flex-start; + margin-bottom: var(--space-sm); +} + +.contact-avatar { + width: 48px; + height: 48px; + background: var(--primary); + color: white; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-weight: bold; + font-size: 18px; + flex-shrink: 0; +} + +.contact-actions { + opacity: 0; + transition: opacity 0.2s; +} + +.contact-card:hover .contact-actions { + opacity: 1; +} + +.contact-actions .btn-icon { + background: var(--bg-tertiary); + border: 1px solid var(--border-color); + color: var(--text-secondary); + width: 32px; + height: 32px; + padding: 0; + display: flex; + align-items: center; + justify-content: center; + border-radius: var(--radius-sm); + transition: all 0.2s; +} + +.contact-actions .btn-icon:hover { + background: var(--primary); + color: white; + border-color: var(--primary); +} + +/* ============================================================================= + CONTACT INFO + ============================================================================= */ + +.contact-card-body { + margin-bottom: var(--space-sm); +} + +.contact-name { + font-size: 18px; + font-weight: 600; + margin: 0 0 var(--space-xs); + color: var(--text-primary); +} + +.contact-company { + font-size: 14px; + color: var(--primary); + margin-bottom: 4px; +} + +.contact-position { + font-size: 13px; + color: var(--text-secondary); + margin-bottom: var(--space-sm); +} + +.contact-email, +.contact-phone, +.contact-mobile { + font-size: 13px; + color: var(--text-secondary); + margin-bottom: 4px; + display: flex; + align-items: center; + gap: 8px; +} + +.contact-email i, +.contact-phone i, +.contact-mobile i { + width: 14px; + color: var(--text-tertiary); +} + +.contact-email:hover, +.contact-phone:hover, +.contact-mobile:hover { + color: var(--primary); +} + +/* ============================================================================= + TAGS + ============================================================================= */ + +.contact-tags { + display: flex; + flex-wrap: wrap; + gap: 4px; + margin-top: var(--space-sm); +} + +.contact-tag { + background: var(--bg-tertiary); + color: var(--text-secondary); + font-size: 11px; + padding: 2px 8px; + border-radius: var(--radius-sm); + border: 1px solid var(--border-color); +} + +/* ============================================================================= + EMPTY STATE + ============================================================================= */ + +.contacts-empty { + text-align: center; + padding: var(--space-xl) var(--space-md); + background: var(--bg-secondary); + border-radius: var(--radius); + border: 1px solid var(--border-color); +} + +.contacts-empty i { + font-size: 48px; + color: var(--text-tertiary); + margin-bottom: var(--space-md); +} + +.contacts-empty h3 { + font-size: 20px; + margin-bottom: var(--space-xs); + color: var(--text-primary); +} + +.contacts-empty p { + color: var(--text-secondary); + margin-bottom: var(--space-md); +} + +/* ============================================================================= + CONTACT MODAL + ============================================================================= */ + +#contact-form { + display: grid; + gap: var(--space-md); +} + +#contact-form .form-row { + display: grid; + grid-template-columns: 1fr 1fr; + gap: var(--space-md); +} + +#contact-form .form-group.full-width { + grid-column: 1 / -1; +} + +#contact-form .tags-input-wrapper { + position: relative; +} + +#contact-form .tags-input-wrapper input { + padding-right: 32px; +} + +#contact-form .tags-help { + font-size: 11px; + color: var(--text-tertiary); + margin-top: 4px; +} + + +/* ============================================================================= + RESPONSIVE + ============================================================================= */ + +@media (max-width: 768px) { + .contacts-header { + flex-direction: column; + align-items: stretch; + } + + .contacts-controls { + flex-direction: column; + } + + .contacts-search { + max-width: none; + } + + .contacts-grid { + grid-template-columns: 1fr; + } + + .form-row { + grid-template-columns: 1fr; + } + + .modal-actions { + flex-direction: column-reverse; + gap: var(--space-sm); + } + + .modal-actions-left { + width: 100%; + justify-content: space-between; + } +} \ No newline at end of file diff --git a/frontend/css/knowledge.css b/frontend/css/knowledge.css index b6e8a2e..fe6f03f 100644 --- a/frontend/css/knowledge.css +++ b/frontend/css/knowledge.css @@ -21,11 +21,12 @@ .knowledge-layout { display: grid; - grid-template-columns: 280px 1fr; + grid-template-columns: 450px 1fr; gap: var(--spacing-lg); flex: 1; min-height: 0; overflow: hidden; + position: relative; } /* ============================================ @@ -39,6 +40,7 @@ display: flex; flex-direction: column; overflow: hidden; + position: relative; } .knowledge-sidebar-header { @@ -667,7 +669,7 @@ @media (max-width: 900px) { .knowledge-layout { - grid-template-columns: 220px 1fr; + grid-template-columns: 450px 1fr; } } @@ -851,3 +853,46 @@ .icon-grid::-webkit-scrollbar-thumb:hover { background: var(--text-secondary); } + +/* ========================================== + SIDEBAR RESIZE HANDLE + ========================================== */ + +.knowledge-resize-handle { + position: absolute; + top: 0; + right: -4px; + bottom: 0; + width: 8px; + cursor: col-resize; + z-index: 10; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.2s ease; +} + +.knowledge-resize-handle::before { + content: ''; + width: 1px; + height: 30px; + background: transparent; + border-radius: 1px; + transition: all 0.2s ease; +} + +.knowledge-resize-handle:hover::before { + background: var(--border-color); + width: 2px; + height: 40px; +} + +.knowledge-resize-handle.dragging::before { + background: var(--primary); + width: 3px; + height: 80px; +} + +.knowledge-layout.resizing { + user-select: none; +} diff --git a/frontend/css/reminders.css b/frontend/css/reminders.css new file mode 100644 index 0000000..db8ab82 --- /dev/null +++ b/frontend/css/reminders.css @@ -0,0 +1,654 @@ +/** + * TASKMATE - Reminders CSS + * ========================= + * Styling für Erinnerungen + */ + +/* ===================== + REMINDER MODAL + ===================== */ + +#reminder-modal .modal-content { + max-width: 500px; + width: 90vw; +} + +/* Form Actions with Delete Button */ +.form-actions { + display: flex; + justify-content: space-between; + align-items: center; + gap: var(--spacing-md); +} + +.form-actions-left { + display: flex; + gap: var(--spacing-md); +} + +.btn-delete-reminder { + /* Lösch-Button rechts */ +} + +/* Kompakte Color Picker */ +.color-picker-wrapper { + position: relative; + display: inline-block; +} + +.color-picker-trigger { + width: 40px; + height: 40px; + border-radius: 50%; + cursor: pointer; + border: 2px solid var(--border-default); + transition: all var(--transition-fast); + position: relative; + display: flex; + align-items: center; + justify-content: center; +} + +.color-picker-trigger:hover { + border-color: var(--primary); + transform: scale(1.05); +} + +.color-picker-icon { + color: white; + filter: drop-shadow(0 0 2px rgba(0, 0, 0, 0.5)); +} + +.color-picker-dropdown { + position: absolute; + top: 100%; + left: 0; + background: var(--bg-card); + border: 1px solid var(--border-default); + border-radius: var(--radius-lg); + box-shadow: var(--shadow-lg); + z-index: 1000; + padding: 8px; + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 6px; + margin-top: 4px; + min-width: 160px; +} + +.color-picker-dropdown.hidden { + display: none; +} + +.color-picker-dropdown .color-option { + width: 28px; + height: 28px; + border-radius: 50%; + cursor: pointer; + border: 2px solid transparent; + transition: all var(--transition-fast); + position: relative; +} + +.color-picker-dropdown .color-option:hover { + transform: scale(1.1); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); + border-color: var(--border-default); +} + +.color-picker-dropdown .color-option.selected { + border-color: var(--text-primary); + transform: scale(1.1); +} + +.color-picker-dropdown .color-option.selected::after { + content: '✓'; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + color: white; + font-size: 12px; + text-shadow: 0 0 3px rgba(0, 0, 0, 0.5); +} + +/* Advance Options */ +.advance-options { + display: flex; + flex-direction: column; + gap: 8px; +} + +.checkbox-label { + display: flex; + align-items: center; + cursor: pointer; + font-size: 14px; + position: relative; + padding-left: 28px; + user-select: none; +} + +.checkbox-label input[type="checkbox"] { + position: absolute; + opacity: 0; + cursor: pointer; +} + +.checkbox-label .checkmark { + position: absolute; + left: 0; + top: 50%; + transform: translateY(-50%); + height: 18px; + width: 18px; + background-color: #f8f9fa; + border: 2px solid #d1d5db; + border-radius: 4px; + transition: all 0.2s ease; +} + +.checkbox-label:hover .checkmark { + border-color: #3b82f6; +} + +.checkbox-label input:checked ~ .checkmark { + background-color: #3b82f6; + border-color: #3b82f6; +} + +.checkbox-label .checkmark::after { + content: ""; + position: absolute; + display: none; + left: 5px; + top: 2px; + width: 4px; + height: 8px; + border: solid white; + border-width: 0 2px 2px 0; + transform: rotate(45deg); +} + +.checkbox-label input:checked ~ .checkmark::after { + display: block; +} + +/* ===================== + CUSTOM SELECT (USER DROPDOWN) + ===================== */ + +.custom-select { + position: relative; + width: 100%; +} + +.custom-select-trigger { + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px 12px; + background: var(--bg-primary); + border: 1px solid var(--border-default); + border-radius: 6px; + cursor: pointer; + transition: all 0.2s ease; + min-height: 42px; +} + +.custom-select-trigger:hover { + border-color: var(--border-hover); +} + +.custom-select-trigger.active { + border-color: var(--primary); + box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1); +} + +.custom-select-value { + display: flex; + align-items: center; + gap: 8px; + color: var(--text-primary); + font-size: 14px; +} + +.custom-select-arrow { + color: var(--text-secondary); + transition: transform 0.2s ease; +} + +.custom-select.open .custom-select-arrow { + transform: rotate(180deg); +} + +.custom-select-options { + position: absolute; + top: 100%; + left: 0; + right: 0; + background: var(--bg-card); + border: 1px solid var(--border-default); + border-radius: 6px; + box-shadow: var(--shadow-lg); + z-index: 1000; + max-height: 200px; + overflow-y: auto; + opacity: 0; + visibility: hidden; + transform: translateY(-10px); + transition: all 0.2s ease; +} + +.custom-select.open .custom-select-options { + opacity: 1; + visibility: visible; + transform: translateY(0); +} + +.custom-select-option { + display: flex; + align-items: center; + gap: 10px; + padding: 10px 12px; + cursor: pointer; + transition: background-color 0.2s ease; + border-bottom: 1px solid var(--border-light); +} + +.custom-select-option:last-child { + border-bottom: none; +} + +.custom-select-option:hover { + background: var(--bg-hover); +} + +.custom-select-option.selected { + background: var(--primary-light); + color: var(--primary); +} + +.option-avatar { + width: 24px; + height: 24px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-size: 10px; + font-weight: 600; + color: white; + flex-shrink: 0; +} + +.option-text { + font-size: 14px; + color: #000000 !important; +} + +.selected-user-avatar { + width: 20px; + height: 20px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-size: 9px; + font-weight: 600; + color: white; + flex-shrink: 0; +} + +/* ===================== + MODAL HEADER FIX + ===================== */ + +#reminder-modal .modal-header h3 { + color: #000000 !important; + background: transparent !important; + font-size: var(--text-lg); + font-weight: var(--font-semibold); +} + +#reminder-modal .modal-header h3:hover { + color: #000000 !important; + background: transparent !important; +} + +#reminder-modal .modal-header { + background: var(--bg-card); +} + +/* Verhindere Orange-Hover-Effekte auf Modal-Inhalten */ +#reminder-modal * { + transition: background-color 0.2s ease, color 0.2s ease; +} + +#reminder-modal *:not(.btn):not(.custom-select-option):hover { + background: transparent !important; + color: inherit !important; +} + +/* Stelle sicher, dass Text im Modal immer lesbar bleibt */ +#reminder-modal .modal-content { + background: var(--bg-card) !important; + color: #000000 !important; +} + +#reminder-modal label, +#reminder-modal .form-control, +#reminder-modal input, +#reminder-modal textarea, +#reminder-modal p, +#reminder-modal span:not(.btn):not(.option-avatar):not(.selected-user-avatar) { + color: #000000 !important; + background: var(--bg-primary) !important; +} + +#reminder-modal .form-group label { + color: #000000 !important; + font-weight: 500; +} + +#reminder-modal .checkbox-label { + color: #000000 !important; +} + +/* ===================== + MODAL BUTTONS + ===================== */ + +#reminder-modal .btn-primary { + background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%); + color: white !important; + border: 1px solid #3b82f6; + padding: 10px 20px; + font-weight: 600; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); + transition: all 0.2s ease; +} + +#reminder-modal .btn-primary:hover, +#reminder-modal .btn-primary:focus { + background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%); + border-color: #1d4ed8; + color: white !important; + transform: translateY(-1px); + box-shadow: 0 3px 8px rgba(59, 130, 246, 0.4); +} + +#reminder-modal .btn-secondary { + background: #6b7280; + color: white; + border: 1px solid #6b7280; +} + +#reminder-modal .btn-secondary:hover { + background: #4b5563; + border-color: #4b5563; + color: white; +} + +/* ===================== + CALENDAR INTEGRATION + ===================== */ + +/* Reminder Button in Calendar Toolbar */ +.btn-reminder { + background: linear-gradient(135deg, #f97316 0%, #ea580c 100%); + color: white !important; + border: 2px solid #ea580c; + display: flex; + align-items: center; + gap: 6px; + font-weight: 600; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); + transition: all 0.2s ease; + padding: 8px 16px; + border-radius: 6px; + font-size: 14px; + cursor: pointer; + text-decoration: none; +} + +.btn-reminder:hover, +.btn-reminder:focus { + background: linear-gradient(135deg, #ea580c 0%, #c2410c 100%); + color: white !important; + border-color: #c2410c; + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(234, 88, 12, 0.4); + text-decoration: none; +} + +.btn-reminder:active { + transform: translateY(-1px); + box-shadow: 0 2px 6px rgba(234, 88, 12, 0.3); +} + +.btn-reminder .icon { + animation: reminderBell 2s ease-in-out infinite; +} + +@keyframes reminderBell { + 0%, 50%, 100% { transform: rotate(0deg); } + 10%, 30% { transform: rotate(-10deg); } + 20%, 40% { transform: rotate(10deg); } +} + +/* Reminder Icons in Calendar - DEPRECATED (reminders now shown as tasks) */ +/* +.calendar-reminder { + position: absolute; + top: 2px; + right: 2px; + width: 16px; + height: 16px; + background: var(--reminder-color, #F59E0B); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-size: 10px; + color: white; + z-index: 2; + cursor: pointer; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); +} + +.calendar-reminder::before { + content: '🔔'; + font-size: 8px; +} + +.calendar-reminder:hover { + transform: scale(1.2); + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3); +} +*/ + +/* Day Detail Popup - Reminder Button */ +.calendar-day-detail .btn:not(.btn-primary) { + background: linear-gradient(135deg, #6B7280 0%, #4B5563 100%); + color: white; + border: none; +} + +/* Reminder Detail Popup */ +.calendar-reminder-detail { + min-width: 300px; + max-width: 400px; +} + +.calendar-detail-reminders { + display: flex; + flex-direction: column; + gap: 8px; + margin: var(--spacing-md) 0; +} + +.calendar-detail-reminder { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 12px; + padding: 12px; + background: var(--bg-secondary); + border-radius: 6px; + border-left: 3px solid var(--reminder-color, #F59E0B); + transition: all 0.2s ease; +} + +.reminder-content { + flex: 1; + cursor: pointer; + min-width: 0; /* Allows text truncation */ +} + +.calendar-detail-reminder:hover { + background: var(--bg-tertiary); + transform: translateY(-1px); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); +} + +/* Reminder Delete Button */ +.reminder-delete-btn { + display: flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + background: transparent; + border: 1px solid var(--border-light); + border-radius: 6px; + color: var(--text-secondary); + cursor: pointer; + transition: all 0.2s ease; + flex-shrink: 0; +} + +.reminder-delete-btn:hover { + background: var(--error-bg); + border-color: var(--error); + color: var(--error); + transform: scale(1.05); +} + +.reminder-delete-btn:active { + transform: scale(0.95); +} + +.calendar-detail-reminder .reminder-time { + font-size: 14px; + font-weight: 600; + color: var(--reminder-color, #F59E0B); + margin-bottom: 4px; +} + +.calendar-detail-reminder .reminder-title { + font-weight: 500; + margin-bottom: 2px; + color: var(--text-primary); +} + +.calendar-detail-reminder .reminder-description { + font-size: 13px; + color: var(--text-secondary); + line-height: 1.4; +} + +/* Mobile Responsive */ +@media (max-width: 768px) { + #reminder-modal .modal-content { + max-width: none; + width: 95vw; + margin: 20px auto; + } + + .color-picker { + justify-content: center; + } + + .advance-options { + gap: 12px; + } + + .checkbox-label { + font-size: 16px; + padding-left: 32px; + } + + .checkbox-label .checkmark { + width: 20px; + height: 20px; + } +} + +/* ===================== + EINHEITLICHE CHECKBOX STYLES + ===================== */ + +/* ALTERNATIVER ANSATZ: Direktes Checkbox-Styling */ +.advance-options .checklist-item { + display: flex !important; + align-items: center !important; + gap: 12px !important; + padding: 8px 0 !important; + cursor: pointer !important; +} + +.advance-options input[type="checkbox"] { + width: 20px !important; + height: 20px !important; + margin: 0 !important; + appearance: none !important; + -webkit-appearance: none !important; + -moz-appearance: none !important; + border: 2px solid #d1d5db !important; + border-radius: 4px !important; + background-color: white !important; + cursor: pointer !important; + position: relative !important; + flex-shrink: 0 !important; +} + +.advance-options input[type="checkbox"]:checked { + background-color: #3B82F6 !important; + border-color: #3B82F6 !important; +} + +.advance-options input[type="checkbox"]:checked::after { + content: '✓' !important; + position: absolute !important; + top: -3px !important; + left: 2px !important; + color: white !important; + font-size: 16px !important; + font-weight: bold !important; + line-height: 20px !important; +} + +.advance-options .checklist-text { + font-size: 14px !important; + color: #374151 !important; + text-decoration: none !important; + cursor: pointer !important; +} + +/* Verstecke die fake checkbox spans */ +.advance-options .checklist-checkbox { + display: none !important; +} + +/* Dark Mode Support */ +@media (prefers-color-scheme: dark) { + .checkbox-label .checkmark { + background-color: var(--bg-tertiary); + border-color: var(--border-secondary); + } + + .calendar-reminder { + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); + } +} \ No newline at end of file diff --git a/frontend/index.html b/frontend/index.html index f633285..3fa237e 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -27,6 +27,8 @@ + + @@ -43,7 +45,7 @@

Melden Sie sich an, um fortzufahren

-
+
@@ -177,6 +179,7 @@ +
@@ -402,6 +405,10 @@ +
@@ -504,6 +511,8 @@

Keine Kategorien

+ +
@@ -568,6 +577,47 @@ + + + @@ -1579,6 +1629,103 @@ + +
+
@@ -1627,6 +1774,10 @@ Wissen + @@ -1692,11 +1843,231 @@ + + + + + + + + diff --git a/frontend/js/api.js b/frontend/js/api.js index 071c96f..5ccbe40 100644 --- a/frontend/js/api.js +++ b/frontend/js/api.js @@ -645,6 +645,31 @@ class ApiClient { return token ? `${url}?token=${encodeURIComponent(token)}` : url; } + // ===================== + // REMINDER ENDPOINTS + // ===================== + + async getReminders(projectId) { + const response = await this.get(`/reminders?project_id=${projectId}`); + return response.data || response; // Extract data property or fallback to response + } + + async createReminder(data) { + return this.post('/reminders', data); + } + + async updateReminder(reminderId, data) { + return this.put(`/reminders/${reminderId}`, data); + } + + async deleteReminder(reminderId) { + return this.delete(`/reminders/${reminderId}`); + } + + async getDueReminders() { + return this.get('/reminders/due/check'); + } + // ===================== // LINK ENDPOINTS // ===================== @@ -1258,6 +1283,35 @@ class ApiClient { async validateCodingPath(path) { return this.post('/coding/validate-path', { path }); } + + // ============================================================================= + // CONTACTS + // ============================================================================= + + async getContacts(params = {}) { + const queryString = new URLSearchParams(params).toString(); + return this.get(`/contacts${queryString ? '?' + queryString : ''}`); + } + + async getContact(id) { + return this.get(`/contacts/${id}`); + } + + async createContact(data) { + return this.post('/contacts', data); + } + + async updateContact(id, data) { + return this.put(`/contacts/${id}`, data); + } + + async deleteContact(id) { + return this.delete(`/contacts/${id}`); + } + + async getContactTags() { + return this.get('/contacts/tags/all'); + } } // Custom API Error Class diff --git a/frontend/js/app.js b/frontend/js/app.js index b24cfee..e29076b 100644 --- a/frontend/js/app.js +++ b/frontend/js/app.js @@ -23,6 +23,7 @@ import giteaManager from './gitea.js'; import knowledgeManager from './knowledge.js'; import codingManager from './coding.js'; import mobileManager from './mobile.js'; +import reminderManager from './reminders.js'; import { $, $$, debounce, getFromStorage, setToStorage } from './utils.js'; class App { @@ -152,15 +153,17 @@ class App { store.setCurrentProject(projectId); try { - const [columns, tasks, labels] = await Promise.all([ + const [columns, tasks, labels, reminders] = await Promise.all([ api.getColumns(projectId), api.getTasks(projectId), - api.getLabels(projectId) + api.getLabels(projectId), + api.getReminders(projectId) ]); store.setColumns(columns); store.setTasks(tasks); store.setLabels(labels); + store.setReminders(reminders); // Update project selector const projectSelect = $('#project-select'); @@ -667,6 +670,28 @@ class App { } else { knowledgeManager.hide(); } + + // Initialize contacts view when switching to it + if (view === 'contacts') { + window.initContactsPromise = window.initContactsPromise || import('./contacts.js').then(module => { + if (module.initContacts) { + return module.initContacts(); + } + }); + window.initContactsPromise.catch(console.error); + } + + // Render list view when switching to it (delayed to ensure store is updated) + if (view === 'list') { + setTimeout(() => listViewManager.render(), 10); + } + + // Render calendar view when switching to it + if (view === 'calendar') { + setTimeout(() => { + calendarViewManager.render(); + }, 10); + } } // ===================== @@ -886,6 +911,14 @@ class App { // Clear view-specific search proposalsManager.setSearchQuery(''); knowledgeManager.setSearchQuery(''); + + // Clear contacts search + import('./contacts.js').then(module => { + if (module.contactsManager) { + module.contactsManager.searchQuery = ''; + module.contactsManager.filterContacts(); + } + }); // Cancel any pending server search if (searchAbortController) { @@ -961,6 +994,14 @@ class App { } else if (currentView === 'knowledge') { // Search knowledge base knowledgeManager.setSearchQuery(value); + } else if (currentView === 'contacts') { + // Search contacts + import('./contacts.js').then(module => { + if (module.contactsManager) { + module.contactsManager.searchQuery = value; + module.contactsManager.filterContacts(); + } + }); } else { // Immediate client-side filtering for tasks store.setFilter('search', value); diff --git a/frontend/js/board.js b/frontend/js/board.js index f629502..19ac77b 100644 --- a/frontend/js/board.js +++ b/frontend/js/board.js @@ -372,7 +372,14 @@ class BoardManager { const currentUser = users.find(u => u.id === assignee.id); const color = currentUser?.color || assignee.color || '#888'; const name = currentUser?.display_name || assignee.display_name || assignee.username || 'Benutzer'; - const initials = currentUser?.initials || assignee.initials || getInitials(name); + + // Initialen berechnen - currentUser hat immer die korrekten initials + let initials = currentUser?.initials || getInitials(name) || '?'; + + // Sicherheit: Falls initials undefined ist, Fallback verwenden + if (!initials || initials === 'undefined') { + initials = getInitials(currentUser?.email || name) || '?'; + } const avatar = createElement('span', { className: 'avatar task-assignee-avatar stacked', @@ -401,14 +408,20 @@ class BoardManager { const users = store.get('users'); const assignedUser = users.find(u => u.id === task.assignedTo); const currentColor = assignedUser?.color || task.assignedColor || '#888'; - const currentName = assignedUser?.username || task.assignedName || 'Benutzer'; + const currentName = assignedUser?.display_name || assignedUser?.username || task.assignedName || 'Benutzer'; + + // Initialen berechnen + let initials = assignedUser?.initials || getInitials(currentName) || '?'; + if (!initials || initials === 'undefined') { + initials = getInitials(assignedUser?.email || currentName) || '?'; + } const assignee = createElement('div', { className: 'task-assignees' }, [ createElement('span', { className: 'avatar task-assignee-avatar', style: { backgroundColor: currentColor }, title: currentName - }, [getInitials(currentName)]) + }, [initials]) ]); footer.appendChild(assignee); } else { diff --git a/frontend/js/calendar.js b/frontend/js/calendar.js index 0b36147..93f0d8d 100644 --- a/frontend/js/calendar.js +++ b/frontend/js/calendar.js @@ -32,10 +32,17 @@ class CalendarViewManager { init() { this.container = $('#view-calendar'); + // Set initial view mode on calendar grid + const grid = $('#calendar-grid'); + if (grid) { + grid.classList.add('calendar-month-view'); + } + this.bindEvents(); // Subscribe to store changes store.subscribe('tasks', () => this.render()); + store.subscribe('reminders', () => this.render()); store.subscribe('filters', (filters) => { // Calendar-specific search behavior if (store.get('currentView') === 'calendar') { @@ -95,7 +102,7 @@ class CalendarViewManager { // Close popup on outside click document.addEventListener('click', (e) => { if (this.dayDetailPopup && !this.dayDetailPopup.contains(e.target) && - !e.target.closest('.calendar-day')) { + !e.target.closest('.calendar-day') && !e.target.closest('.calendar-week-day')) { this.closeDayDetail(); } }); @@ -120,6 +127,12 @@ class CalendarViewManager { grid.classList.add(`calendar-${mode}-view`); } + // Show/hide weekday headers based on view mode + const weekdaysHeader = $('#calendar-weekdays'); + if (weekdaysHeader) { + weekdaysHeader.style.display = mode === 'month' ? 'grid' : 'none'; + } + this.render(); } @@ -230,13 +243,29 @@ class CalendarViewManager { render() { if (store.get('currentView') !== 'calendar') return; + // Ensure calendar grid exists and has correct class + const grid = $('#calendar-grid'); + if (!grid) return; + + grid.classList.remove('calendar-month-view', 'calendar-week-view'); + grid.classList.add(`calendar-${this.viewMode}-view`); + + // Ensure weekday headers visibility matches current view mode + const weekdaysHeader = $('#calendar-weekdays'); + if (weekdaysHeader) { + weekdaysHeader.style.display = this.viewMode === 'month' ? 'grid' : 'none'; + } + this.updateHeader(); - if (this.viewMode === 'month') { - this.renderMonthView(); - } else { - this.renderWeekView(); - } + // Force a small delay to ensure DOM is ready + setTimeout(() => { + if (this.viewMode === 'month') { + this.renderMonthView(); + } else { + this.renderWeekView(); + } + }, 10); } updateHeader() { @@ -264,7 +293,14 @@ class CalendarViewManager { renderMonthView() { const daysContainer = $('#calendar-grid'); - if (!daysContainer) return; + if (!daysContainer) { + console.warn('[Calendar] calendar-grid not found for month view'); + return; + } + + // Ensure correct classes are set + daysContainer.classList.remove('calendar-week-view'); + daysContainer.classList.add('calendar-month-view'); clearElement(daysContainer); @@ -334,18 +370,20 @@ class CalendarViewManager { const dateString = this.getDateString(date); const isToday = dateString === todayString; - daysContainer.appendChild(this.createWeekDayElement(date, tasksByDate, isToday)); + daysContainer.appendChild(this.createWeekDayElement(date, tasksByDate, isToday, weekStart)); } } - createWeekDayElement(date, tasksByDate, isToday = false) { + createWeekDayElement(date, tasksByDate, isToday = false, weekStart = null) { const dateString = this.getDateString(date); const dayTasks = tasksByDate[dateString] || []; + const remindersByDate = this.getRemindersByDate(); + const dayReminders = remindersByDate[dateString] || []; const hasOverdue = dayTasks.some(t => this.isTaskOverdue(t)); const classes = ['calendar-week-day']; if (isToday) classes.push('today'); - if (dayTasks.length > 0) classes.push('has-tasks'); + if (dayTasks.length > 0 || dayReminders.length > 0) classes.push('has-tasks'); if (hasOverdue) classes.push('has-overdue'); const dayEl = createElement('div', { @@ -367,12 +405,58 @@ class CalendarViewManager { // Tasks container const tasksContainer = createElement('div', { className: 'calendar-week-day-tasks' }); - if (dayTasks.length === 0) { + // Combined array of reminders and tasks + const allItems = []; + + // Add tasks first (wichtig für kontinuierliche Balken) + dayTasks.forEach(task => { + allItems.push({ + type: 'task', + ...task + }); + }); + + // Add reminders after tasks + dayReminders.forEach(reminder => { + allItems.push({ + type: 'reminder', + id: reminder.id, + title: reminder.title, + color: reminder.color || '#F59E0B', + time: reminder.reminder_time + }); + }); + + if (allItems.length === 0) { tasksContainer.appendChild(createElement('div', { className: 'calendar-week-empty' }, ['Keine Aufgaben'])); } else { - dayTasks.forEach(task => { + allItems.forEach(item => { + if (item.type === 'reminder') { + // Create reminder element + const reminderEl = createElement('div', { + className: 'calendar-week-task calendar-reminder-item', + dataset: { reminderId: item.id }, + title: `Erinnerung: ${item.title}${item.time ? ' um ' + item.time : ''}`, + onclick: (e) => { + e.stopPropagation(); + this.editReminder(item.id); + } + }); + + // Add title and bell icon + reminderEl.appendChild(createElement('span', { className: 'calendar-week-task-title' }, [item.title])); + reminderEl.appendChild(createElement('span', { className: 'calendar-reminder-bell' }, ['🔔'])); + + // Apply color + reminderEl.style.backgroundColor = `${item.color}25`; + reminderEl.style.borderLeftColor = item.color; + + tasksContainer.appendChild(reminderEl); + } else { + // Existing task rendering code + const task = item; // Get column color and user badge info const columnColor = this.getColumnColor(task); const userBadge = this.getUserBadgeInfo(task); @@ -391,13 +475,20 @@ class CalendarViewManager { taskClasses.push('search-highlight'); } - // Build task element children - const children = [ - createElement('span', { className: 'calendar-week-task-title' }, [task.title]) - ]; + // Check if this is the first day of the week or the start of the task + const isFirstDayOfWeek = weekStart && this.getDateString(date) === this.getDateString(weekStart); + const showContent = task.isRangeStart || !task.hasRange || isFirstDayOfWeek; - // Add user badges if assigned (supports multiple) - if (userBadge && userBadge.length > 0) { + // Build task element children + const children = []; + + // Add title (only at start of task or first day of week) + if (showContent) { + children.push(createElement('span', { className: 'calendar-week-task-title' }, [task.title])); + } + + // Add user badges if assigned (only at start of task or first day of week, supports multiple) + if (userBadge && userBadge.length > 0 && showContent) { const badgeContainer = createElement('span', { className: 'calendar-task-badges' }); userBadge.forEach(badge => { const badgeEl = createElement('span', { className: 'calendar-task-user-badge' }, [badge.initials]); @@ -420,6 +511,7 @@ class CalendarViewManager { } tasksContainer.appendChild(taskEl); + } }); } @@ -452,12 +544,14 @@ class CalendarViewManager { createDayElement(date, dayNumber, isOtherMonth, tasksByDate, isToday = false) { const dateString = this.getDateString(date); const dayTasks = tasksByDate[dateString] || []; + const remindersByDate = this.getRemindersByDate(); + const dayReminders = remindersByDate[dateString] || []; const hasOverdue = dayTasks.some(t => this.isTaskOverdue(t)); const classes = ['calendar-day']; if (isOtherMonth) classes.push('other-month'); if (isToday) classes.push('today'); - if (dayTasks.length > 0) classes.push('has-tasks'); + if (dayTasks.length > 0 || dayReminders.length > 0) classes.push('has-tasks'); if (hasOverdue) classes.push('has-overdue'); const dayEl = createElement('div', { @@ -470,11 +564,57 @@ class CalendarViewManager { className: 'calendar-day-number' }, [dayNumber.toString()])); - // Tasks preview (show max 3) - if (dayTasks.length > 0) { + // Combined container for reminders and tasks + const allItems = []; + + // Add tasks first (wichtig für kontinuierliche Balken) + dayTasks.forEach(task => { + allItems.push({ + type: 'task', + ...task + }); + }); + + // Add reminders after tasks + dayReminders.forEach(reminder => { + allItems.push({ + type: 'reminder', + id: reminder.id, + title: reminder.title, + color: reminder.color || '#F59E0B', + time: reminder.reminder_time + }); + }); + + // Show max 3 items + if (allItems.length > 0) { const tasksContainer = createElement('div', { className: 'calendar-day-tasks' }); - dayTasks.slice(0, 3).forEach(task => { + allItems.slice(0, 3).forEach(item => { + if (item.type === 'reminder') { + // Create reminder element + const reminderEl = createElement('div', { + className: 'calendar-task calendar-reminder-item', + dataset: { reminderId: item.id }, + title: `Erinnerung: ${item.title}${item.time ? ' um ' + item.time : ''}`, + onclick: (e) => { + e.stopPropagation(); + this.editReminder(item.id); + } + }); + + // Add title and bell icon + reminderEl.appendChild(createElement('span', { className: 'calendar-task-title' }, [item.title])); + reminderEl.appendChild(createElement('span', { className: 'calendar-reminder-bell' }, ['🔔'])); + + // Apply color + reminderEl.style.backgroundColor = `${item.color}40`; + reminderEl.style.borderLeftColor = item.color; + + tasksContainer.appendChild(reminderEl); + } else { + // Existing task rendering code + const task = item; // Get column color and user badge info const columnColor = this.getColumnColor(task); const userBadge = this.getUserBadgeInfo(task); @@ -523,12 +663,13 @@ class CalendarViewManager { } tasksContainer.appendChild(taskEl); + } }); - if (dayTasks.length > 3) { + if (allItems.length > 3) { tasksContainer.appendChild(createElement('div', { className: 'calendar-more' - }, [`+${dayTasks.length - 3} weitere`])); + }, [`+${allItems.length - 3} weitere`])); } dayEl.appendChild(tasksContainer); @@ -570,18 +711,32 @@ class CalendarViewManager { }); } - // Sort tasks: earliest start date first (so they stay on top throughout their duration), - // then alphabetically by title for same start date + // Sort tasks: Range tasks first (to ensure continuous bars), then single-day tasks filteredTasks.sort((a, b) => { const startA = a.startDate || a.dueDate || ''; const startB = b.startDate || b.dueDate || ''; - - // Compare start dates (earliest first = ascending) + const endA = a.dueDate || ''; + const endB = b.dueDate || ''; + + // Check if task has range (both start and end date, and they're different) + const hasRangeA = a.startDate && a.dueDate && a.startDate !== a.dueDate; + const hasRangeB = b.startDate && b.dueDate && b.startDate !== b.dueDate; + + // Range tasks come first + if (hasRangeA && !hasRangeB) return -1; + if (!hasRangeA && hasRangeB) return 1; + + // If both have ranges or both are single-day, sort by start date if (startA !== startB) { return startA.localeCompare(startB); } + + // Same start date: sort by end date (longer ranges first) + if (endA !== endB) { + return endB.localeCompare(endA); // Descending to put longer ranges first + } - // Same start date: sort alphabetically by title + // Same dates: sort alphabetically by title return (a.title || '').localeCompare(b.title || '', 'de'); }); @@ -629,6 +784,32 @@ class CalendarViewManager { return tasksByDate; } + getRemindersByDate() { + const reminders = store.get('reminders') || []; + if (!Array.isArray(reminders)) { + console.warn('[Calendar] Reminders not available or not an array'); + return {}; + } + + const activeReminders = reminders.filter(r => r.is_active); + const remindersByDate = {}; + + activeReminders.forEach(reminder => { + const date = reminder.reminder_date; + if (!remindersByDate[date]) { + remindersByDate[date] = []; + } + remindersByDate[date].push(reminder); + }); + + // Sort reminders by time within each date + Object.keys(remindersByDate).forEach(date => { + remindersByDate[date].sort((a, b) => (a.reminder_time || '09:00').localeCompare(b.reminder_time || '09:00')); + }); + + return remindersByDate; + } + getDateString(date) { // Use local date components instead of toISOString() which converts to UTC // This fixes the issue where the date is off by one day due to timezone differences @@ -643,9 +824,12 @@ class CalendarViewManager { // ===================== handleDayClick(e) { + console.log('[Calendar] Day click event:', e.target, 'View mode:', this.viewMode); + // Check if clicked on a specific task const taskEl = e.target.closest('.calendar-task, .calendar-week-task'); if (taskEl) { + console.log('[Calendar] Task clicked:', taskEl.dataset.taskId); const taskId = parseInt(taskEl.dataset.taskId); this.openTaskModal(taskId); return; @@ -653,24 +837,36 @@ class CalendarViewManager { // Check if clicked on add button (week view) if (e.target.closest('.calendar-week-add-task')) { + console.log('[Calendar] Add task button clicked'); return; // Already handled by onclick } - // For month view, show day detail popup + // Show day detail popup for both month and week view if (this.viewMode === 'month') { const dayEl = e.target.closest('.calendar-day'); if (!dayEl) return; + console.log('[Calendar] Month day clicked:', dayEl.dataset.date); + const dateString = dayEl.dataset.date; + this.showDayDetail(dateString, dayEl); + } else if (this.viewMode === 'week') { + const dayEl = e.target.closest('.calendar-week-day'); + console.log('[Calendar] Week day element found:', !!dayEl); + if (!dayEl) return; + + console.log('[Calendar] Week day clicked:', dayEl.dataset.date); const dateString = dayEl.dataset.date; this.showDayDetail(dateString, dayEl); } } showDayDetail(dateString, anchorEl) { + console.log('[Calendar] showDayDetail called:', dateString, anchorEl); this.closeDayDetail(); const tasksByDate = this.getTasksByDate(); const dayTasks = tasksByDate[dateString] || []; + console.log('[Calendar] Tasks for date:', dayTasks.length); const date = new Date(dateString); const dateDisplay = date.toLocaleDateString('de-DE', { @@ -726,13 +922,35 @@ class CalendarViewManager { onclick: () => this.createTaskForDate(dateString) }, ['+ Aufgabe hinzufügen'])); - // Position popup + // Add reminder button + popup.appendChild(createElement('button', { + className: 'btn btn-secondary btn-block', + style: { marginTop: 'var(--spacing-sm)' }, + onclick: () => this.createReminderForDate(dateString) + }, ['🔔 Erinnerung hinzufügen'])); + + // Position popup - different logic for week vs month view const rect = anchorEl.getBoundingClientRect(); - popup.style.top = `${rect.bottom + 8}px`; - popup.style.left = `${Math.min(rect.left, window.innerWidth - 350)}px`; + + let popupTop, popupLeft; + + if (this.viewMode === 'week') { + // For week view, position at the top of the day element + popupTop = Math.max(150, rect.top + 50); // Ensure it's visible, minimum 150px from top + popupLeft = Math.min(rect.left, window.innerWidth - 350); + } else { + // For month view, position below the day element + popupTop = rect.bottom + 8; + popupLeft = Math.min(rect.left, window.innerWidth - 350); + } + + popup.style.top = `${popupTop}px`; + popup.style.left = `${popupLeft}px`; + console.log('[Calendar] Popup positioning for', this.viewMode, '- Top:', popup.style.top, 'Left:', popup.style.left); document.body.appendChild(popup); this.dayDetailPopup = popup; + console.log('[Calendar] Popup created and appended to body'); } closeDayDetail() { @@ -778,6 +996,155 @@ class CalendarViewManager { })); } + createReminderForDate(dateString) { + this.closeDayDetail(); + + window.dispatchEvent(new CustomEvent('modal:open', { + detail: { + modalId: 'reminder-modal', + mode: 'create', + data: { + prefill: { + date: dateString + } + } + } + })); + } + + showRemindersForDate(dateString, anchorEl) { + const reminders = this.getRemindersByDate(); + const dayReminders = reminders[dateString] || []; + + if (dayReminders.length === 0) return; + + // Close existing popup + this.closeDayDetail(); + + // Create popup + const popup = createElement('div', { + className: 'calendar-day-detail calendar-reminder-detail', + onclick: (e) => e.stopPropagation() + }); + + this.dayDetailPopup = popup; + + // Header + const header = createElement('h3', {}, [`Erinnerungen für ${formatDate(dateString)}`]); + popup.appendChild(header); + + // Reminders list + const remindersList = createElement('div', { className: 'calendar-detail-reminders' }); + + dayReminders.forEach(reminder => { + // Create reminder content (clickable for edit) + const reminderContent = createElement('div', { + className: 'reminder-content', + onclick: () => this.editReminder(reminder.id) + }, [ + createElement('div', { + className: 'reminder-time', + style: { color: reminder.color || '#F59E0B' } + }, [reminder.reminder_time || '09:00']), + createElement('div', { className: 'reminder-title' }, [reminder.title]), + reminder.description ? createElement('div', { className: 'reminder-description' }, [reminder.description]) : null + ].filter(Boolean)); + + // Create delete button + const deleteBtn = createElement('button', { + className: 'reminder-delete-btn', + title: 'Erinnerung löschen', + onclick: (e) => { + e.stopPropagation(); + this.deleteReminder(reminder.id, reminder.title); + } + }, [ + createElement('svg', { + viewBox: '0 0 24 24', + width: '16', + height: '16' + }, [ + createElement('path', { + d: 'M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16', + stroke: 'currentColor', + 'stroke-width': '2', + fill: 'none', + 'stroke-linecap': 'round', + 'stroke-linejoin': 'round' + }) + ]) + ]); + + // Container with content and delete button + const reminderItem = createElement('div', { + className: 'calendar-detail-reminder' + }, [reminderContent, deleteBtn]); + + remindersList.appendChild(reminderItem); + }); + + popup.appendChild(remindersList); + + // Add reminder button + popup.appendChild(createElement('button', { + className: 'btn btn-secondary btn-block', + style: { marginTop: 'var(--spacing-md)' }, + onclick: () => this.createReminderForDate(dateString) + }, ['+ Weitere Erinnerung'])); + + // Position popup + const rect = anchorEl.getBoundingClientRect(); + let popupTop = rect.bottom + 8; + let popupLeft = Math.min(rect.left, window.innerWidth - 350); + + popup.style.top = `${popupTop}px`; + popup.style.left = `${popupLeft}px`; + + document.body.appendChild(popup); + } + + editReminder(reminderId) { + this.closeDayDetail(); + + window.dispatchEvent(new CustomEvent('modal:open', { + detail: { + modalId: 'reminder-modal', + mode: 'edit', + data: { reminderId } + } + })); + } + + async deleteReminder(reminderId, reminderTitle) { + if (!confirm(`Erinnerung "${reminderTitle}" wirklich löschen?`)) { + return; + } + + try { + // Import reminder manager if needed + if (typeof reminderManager !== 'undefined') { + await reminderManager.deleteReminder(reminderId); + } else { + // Fallback direct API call + await api.request(`/reminders/${reminderId}`, { method: 'DELETE' }); + + // Update store + const reminders = store.get('reminders') || []; + const updatedReminders = reminders.filter(r => r.id !== reminderId); + store.setReminders(updatedReminders); + } + + // Close popup and refresh calendar + this.closeDayDetail(); + this.render(); + + console.log(`[Calendar] Reminder ${reminderId} deleted`); + } catch (error) { + console.error('[Calendar] Failed to delete reminder:', error); + alert('Fehler beim Löschen der Erinnerung. Bitte versuche es erneut.'); + } + } + // ===================== // HELPERS // ===================== diff --git a/frontend/js/contacts.js b/frontend/js/contacts.js new file mode 100644 index 0000000..41aec33 --- /dev/null +++ b/frontend/js/contacts.js @@ -0,0 +1,543 @@ +/** + * TASKMATE - Contacts Manager + * =========================== + * Kontaktverwaltung mit Kartenansicht + */ + +import api from './api.js'; +import { $, $$, formatDate, debounce } from './utils.js'; +import store from './store.js'; + +class ContactsManager { + constructor() { + this.contacts = []; + this.filteredContacts = []; + this.allTags = new Set(); + this.searchQuery = ''; + this.filterTag = ''; + this.sortBy = 'created_at'; + this.sortOrder = 'desc'; + this.initialized = false; + } + + async init() { + console.log('[Contacts] init() called, initialized:', this.initialized); + + if (this.initialized) { + await this.loadContacts(); + return; + } + + // DOM Elements + this.contactsView = $('#view-contacts'); + this.contactsGrid = $('#contacts-grid'); + this.contactsEmpty = $('#contacts-empty'); + this.tagFilter = $('#contacts-tag-filter'); + this.sortSelect = $('#contacts-sort'); + this.newContactBtn = $('#btn-new-contact'); + + console.log('[Contacts] DOM Elements check:'); + console.log(' contactsView:', this.contactsView); + console.log(' newContactBtn:', this.newContactBtn); + console.log(' contactsGrid:', this.contactsGrid); + + // Modal Elements + this.contactModal = $('#contact-modal'); + this.modalTitle = $('#contact-modal-title'); + this.contactForm = $('#contact-form'); + + console.log('[Contacts] Modal Elements check:'); + console.log(' contactModal:', this.contactModal); + console.log(' contactForm:', this.contactForm); + this.contactIdInput = $('#contact-id'); + this.firstNameInput = $('#contact-first-name'); + this.lastNameInput = $('#contact-last-name'); + this.companyInput = $('#contact-company'); + this.positionInput = $('#contact-position'); + this.emailInput = $('#contact-email'); + this.phoneInput = $('#contact-phone'); + this.mobileInput = $('#contact-mobile'); + this.addressInput = $('#contact-address'); + this.postalCodeInput = $('#contact-postal-code'); + this.cityInput = $('#contact-city'); + this.countryInput = $('#contact-country'); + this.websiteInput = $('#contact-website'); + this.notesInput = $('#contact-notes'); + this.tagsInput = $('#contact-tags'); + this.deleteContactBtn = $('#btn-delete-contact'); + + this.bindEvents(); + this.initialized = true; + console.log('[Contacts] Initialization complete'); + + await this.loadContacts(); + + // Store subscriptions + store.subscribe('contacts', this.handleContactsUpdate.bind(this)); + + // Window events + window.addEventListener('app:refresh', () => this.loadContacts()); + window.addEventListener('modal:close', () => this.loadContacts()); + } + + bindEvents() { + console.log('[Contacts] bindEvents() called'); + + // Tag Filter + if (this.tagFilter) { + this.tagFilter.addEventListener('change', (e) => { + this.filterTag = e.target.value; + this.filterContacts(); + }); + } + + // Sort + if (this.sortSelect) { + this.sortSelect.addEventListener('change', (e) => { + const [sortBy, sortOrder] = e.target.value.split('-'); + this.sortBy = sortBy; + this.sortOrder = sortOrder; + this.sortContacts(); + this.renderContacts(); + }); + } + + // New Contact Button + console.log('[Contacts] newContactBtn element:', this.newContactBtn); + if (this.newContactBtn) { + console.log('[Contacts] Binding click event to newContactBtn'); + this.newContactBtn.addEventListener('click', () => { + console.log('[Contacts] New contact button clicked!'); + this.showContactModal(); + }); + } else { + console.warn('[Contacts] newContactBtn not found!'); + } + + // Modal Form + if (this.contactForm) { + this.contactForm.addEventListener('submit', (e) => { + e.preventDefault(); + this.saveContact(); + }); + } + + // Delete Button + if (this.deleteContactBtn) { + this.deleteContactBtn.addEventListener('click', () => this.deleteContact()); + } + + // Modal Close + const modalCloseBtn = this.contactModal?.querySelector('.modal-close'); + if (modalCloseBtn) { + modalCloseBtn.addEventListener('click', () => this.hideContactModal()); + } + + const modalCancelBtn = this.contactModal?.querySelector('.modal-cancel'); + if (modalCancelBtn) { + modalCancelBtn.addEventListener('click', () => this.hideContactModal()); + } + + // Socket Events + const socket = window.socket; + if (socket) { + socket.on('contact:created', (data) => { + console.log('[Contacts] Socket: contact created', data); + this.contacts.unshift(data.contact); + this.updateTagsList(); + this.filterContacts(); + }); + + socket.on('contact:updated', (data) => { + console.log('[Contacts] Socket: contact updated', data); + const index = this.contacts.findIndex(c => c.id === data.contact.id); + if (index !== -1) { + this.contacts[index] = data.contact; + this.updateTagsList(); + this.filterContacts(); + } + }); + + socket.on('contact:deleted', (data) => { + console.log('[Contacts] Socket: contact deleted', data); + this.contacts = this.contacts.filter(c => c.id !== data.contactId); + this.updateTagsList(); + this.filterContacts(); + }); + } + } + + async loadContacts() { + try { + console.log('[Contacts] Loading contacts...'); + const response = await api.getContacts(); + this.contacts = response.data || response || []; + + this.updateTagsList(); + this.filterContacts(); + + console.log(`[Contacts] Loaded ${this.contacts.length} contacts`); + } catch (error) { + console.error('[Contacts] Error loading contacts:', error); + window.dispatchEvent(new CustomEvent('toast:show', { + detail: { message: 'Fehler beim Laden der Kontakte', type: 'error' } + })); + } + } + + filterContacts() { + this.filteredContacts = this.contacts.filter(contact => { + // Search filter + if (this.searchQuery) { + const query = this.searchQuery.toLowerCase(); + const searchFields = [ + contact.firstName, + contact.lastName, + contact.company, + contact.email, + contact.position, + contact.phone, + contact.mobile + ].filter(Boolean).join(' ').toLowerCase(); + + if (!searchFields.includes(query)) { + return false; + } + } + + // Tag filter + if (this.filterTag && contact.tags) { + if (!contact.tags.includes(this.filterTag)) { + return false; + } + } + + return true; + }); + + this.sortContacts(); + this.renderContacts(); + } + + sortContacts() { + this.filteredContacts.sort((a, b) => { + let aVal = a[this.sortBy] || ''; + let bVal = b[this.sortBy] || ''; + + // Handle name sorting + if (this.sortBy === 'name') { + aVal = `${a.lastName || ''} ${a.firstName || ''}`.trim(); + bVal = `${b.lastName || ''} ${b.firstName || ''}`.trim(); + } + + if (typeof aVal === 'string') { + aVal = aVal.toLowerCase(); + bVal = bVal.toLowerCase(); + } + + if (this.sortOrder === 'asc') { + return aVal < bVal ? -1 : aVal > bVal ? 1 : 0; + } else { + return aVal > bVal ? -1 : aVal < bVal ? 1 : 0; + } + }); + } + + renderContacts() { + if (!this.contactsGrid) return; + + if (this.filteredContacts.length === 0) { + this.contactsGrid.classList.add('hidden'); + this.contactsEmpty.classList.remove('hidden'); + return; + } + + this.contactsGrid.classList.remove('hidden'); + this.contactsEmpty.classList.add('hidden'); + + const html = this.filteredContacts.map(contact => this.createContactCard(contact)).join(''); + this.contactsGrid.innerHTML = html; + + // Bind card events + this.bindCardEvents(); + } + + createContactCard(contact) { + const displayName = this.getContactDisplayName(contact); + const initials = this.getContactInitials(contact); + const tags = contact.tags || []; + + return ` +
+
+
+ ${initials} +
+
+ +
+
+
+

${displayName}

+ ${contact.company ? `
${contact.company}
` : ''} + ${contact.position ? `
${contact.position}
` : ''} + ${contact.email ? `
${contact.email}
` : ''} + ${contact.phone ? `
${contact.phone}
` : ''} + ${contact.mobile ? `
${contact.mobile}
` : ''} +
+ ${tags.length > 0 ? ` +
+ ${tags.map(tag => `${tag}`).join('')} +
+ ` : ''} +
+ `; + } + + getContactDisplayName(contact) { + const parts = []; + if (contact.firstName) parts.push(contact.firstName); + if (contact.lastName) parts.push(contact.lastName); + + if (parts.length > 0) { + return parts.join(' '); + } + + return contact.company || 'Unbenannt'; + } + + getContactInitials(contact) { + let initials = ''; + + if (contact.firstName) { + initials += contact.firstName.charAt(0).toUpperCase(); + } + if (contact.lastName) { + initials += contact.lastName.charAt(0).toUpperCase(); + } + + if (!initials && contact.company) { + initials = contact.company.charAt(0).toUpperCase(); + } + + return initials || '?'; + } + + bindCardEvents() { + // Edit buttons + $$('.btn-edit-contact').forEach(btn => { + btn.addEventListener('click', (e) => { + e.stopPropagation(); + const card = btn.closest('.contact-card'); + const contactId = parseInt(card.dataset.contactId); + this.editContact(contactId); + }); + }); + + // Card click + $$('.contact-card').forEach(card => { + card.addEventListener('click', () => { + const contactId = parseInt(card.dataset.contactId); + this.editContact(contactId); + }); + }); + } + + updateTagsList() { + // Collect all unique tags + this.allTags.clear(); + this.contacts.forEach(contact => { + if (contact.tags) { + contact.tags.forEach(tag => this.allTags.add(tag)); + } + }); + + // Update tag filter dropdown + if (this.tagFilter) { + const currentValue = this.tagFilter.value; + this.tagFilter.innerHTML = ''; + + Array.from(this.allTags).sort().forEach(tag => { + const option = document.createElement('option'); + option.value = tag; + option.textContent = tag; + this.tagFilter.appendChild(option); + }); + + this.tagFilter.value = currentValue; + } + } + + showContactModal(contact = null) { + console.log('[Contacts] showContactModal called with:', contact); + console.log('[Contacts] contactModal element:', this.contactModal); + + if (!this.contactModal) { + console.error('[Contacts] Contact modal not found!'); + return; + } + + console.log('[Contacts] Resetting form and showing modal'); + + // Reset form + this.contactForm.reset(); + this.contactIdInput.value = ''; + + if (contact) { + // Edit mode + this.modalTitle.textContent = 'Kontakt bearbeiten'; + this.deleteContactBtn.classList.remove('hidden'); + + // Fill form + this.contactIdInput.value = contact.id; + this.firstNameInput.value = contact.firstName || ''; + this.lastNameInput.value = contact.lastName || ''; + this.companyInput.value = contact.company || ''; + this.positionInput.value = contact.position || ''; + this.emailInput.value = contact.email || ''; + this.phoneInput.value = contact.phone || ''; + this.mobileInput.value = contact.mobile || ''; + this.addressInput.value = contact.address || ''; + this.postalCodeInput.value = contact.postalCode || ''; + this.cityInput.value = contact.city || ''; + this.countryInput.value = contact.country || ''; + this.websiteInput.value = contact.website || ''; + this.notesInput.value = contact.notes || ''; + this.tagsInput.value = (contact.tags || []).join(', '); + } else { + // Create mode + this.modalTitle.textContent = 'Neuer Kontakt'; + this.deleteContactBtn.classList.add('hidden'); + } + + // Show modal overlay + const overlay = $('#modal-overlay'); + if (overlay) { + overlay.classList.remove('hidden'); + overlay.classList.add('visible'); + } + + this.contactModal.classList.remove('hidden'); + this.contactModal.classList.add('visible'); + } + + hideContactModal() { + if (this.contactModal) { + this.contactModal.classList.remove('visible'); + this.contactModal.classList.add('hidden'); + + // Hide modal overlay + const overlay = $('#modal-overlay'); + if (overlay) { + overlay.classList.remove('visible'); + overlay.classList.add('hidden'); + } + + window.dispatchEvent(new CustomEvent('modal:close')); + } + } + + async editContact(contactId) { + const contact = this.contacts.find(c => c.id === contactId); + if (contact) { + this.showContactModal(contact); + } + } + + async saveContact() { + const contactId = this.contactIdInput.value; + + const contactData = { + firstName: this.firstNameInput.value.trim(), + lastName: this.lastNameInput.value.trim(), + company: this.companyInput.value.trim(), + position: this.positionInput.value.trim(), + email: this.emailInput.value.trim(), + phone: this.phoneInput.value.trim(), + mobile: this.mobileInput.value.trim(), + address: this.addressInput.value.trim(), + postalCode: this.postalCodeInput.value.trim(), + city: this.cityInput.value.trim(), + country: this.countryInput.value.trim(), + website: this.websiteInput.value.trim(), + notes: this.notesInput.value.trim(), + tags: this.tagsInput.value.split(',').map(t => t.trim()).filter(Boolean) + }; + + try { + if (contactId) { + // Update + await api.updateContact(contactId, contactData); + window.dispatchEvent(new CustomEvent('toast:show', { + detail: { message: 'Kontakt aktualisiert', type: 'success' } + })); + } else { + // Create + await api.createContact(contactData); + window.dispatchEvent(new CustomEvent('toast:show', { + detail: { message: 'Kontakt erstellt', type: 'success' } + })); + } + + this.hideContactModal(); + await this.loadContacts(); + } catch (error) { + console.error('[Contacts] Error saving contact:', error); + const errorMsg = error.response?.data?.errors?.[0] || 'Fehler beim Speichern'; + window.dispatchEvent(new CustomEvent('toast:show', { + detail: { message: errorMsg, type: 'error' } + })); + } + } + + async deleteContact() { + const contactId = this.contactIdInput.value; + if (!contactId) return; + + const contact = this.contacts.find(c => c.id === parseInt(contactId)); + if (!contact) return; + + const displayName = this.getContactDisplayName(contact); + + if (!confirm(`Möchten Sie den Kontakt "${displayName}" wirklich löschen?`)) { + return; + } + + try { + await api.deleteContact(contactId); + window.dispatchEvent(new CustomEvent('toast:show', { + detail: { message: 'Kontakt gelöscht', type: 'success' } + })); + this.hideContactModal(); + await this.loadContacts(); + } catch (error) { + console.error('[Contacts] Error deleting contact:', error); + window.dispatchEvent(new CustomEvent('toast:show', { + detail: { message: 'Fehler beim Löschen', type: 'error' } + })); + } + } + + handleContactsUpdate(contacts) { + this.contacts = contacts; + this.updateTagsList(); + this.filterContacts(); + } +} + +// Singleton instance +const contactsManager = new ContactsManager(); + +// Export instance for external access +export { contactsManager }; + +// Export functions +export async function initContacts() { + await contactsManager.init(); +} + +export function refreshContacts() { + return contactsManager.loadContacts(); +} \ No newline at end of file diff --git a/frontend/js/knowledge.js b/frontend/js/knowledge.js index f5a06c8..edb1c7a 100644 --- a/frontend/js/knowledge.js +++ b/frontend/js/knowledge.js @@ -167,6 +167,9 @@ class KnowledgeManager { // Drag & Drop for entries this.bindEntryDragEvents(); + + // Sidebar resize functionality + this.bindResizeEvents(); } // ========================================== @@ -1143,6 +1146,79 @@ class KnowledgeManager { store.closeModal(modalId); } + // ========================================== + // SIDEBAR RESIZE + // ========================================== + + bindResizeEvents() { + // Use native DOM methods instead of $ utility + this.resizeHandle = document.getElementById('knowledge-resize-handle'); + this.knowledgeLayoutContainer = document.querySelector('.knowledge-layout'); + + if (!this.resizeHandle || !this.knowledgeLayoutContainer) return; + + // Load saved width from localStorage + const savedWidth = localStorage.getItem('knowledge-sidebar-width'); + if (savedWidth) { + this.setSidebarWidth(parseInt(savedWidth)); + } + + let isResizing = false; + let startX = 0; + let startWidth = 0; + + this.resizeHandle.addEventListener('mousedown', (e) => { + isResizing = true; + startX = e.clientX; + startWidth = this.getCurrentSidebarWidth(); + + this.resizeHandle.classList.add('dragging'); + this.knowledgeLayoutContainer.classList.add('resizing'); + + document.addEventListener('mousemove', this.handleResize); + document.addEventListener('mouseup', this.handleResizeEnd); + + e.preventDefault(); + }); + + this.handleResize = (e) => { + if (!isResizing) return; + + const deltaX = e.clientX - startX; + const newWidth = Math.max(220, Math.min(800, startWidth + deltaX)); + + this.setSidebarWidth(newWidth); + }; + + this.handleResizeEnd = () => { + if (!isResizing) return; + + isResizing = false; + this.resizeHandle.classList.remove('dragging'); + this.knowledgeLayoutContainer.classList.remove('resizing'); + + document.removeEventListener('mousemove', this.handleResize); + document.removeEventListener('mouseup', this.handleResizeEnd); + + // Save current width to localStorage + const currentWidth = this.getCurrentSidebarWidth(); + localStorage.setItem('knowledge-sidebar-width', currentWidth.toString()); + }; + } + + getCurrentSidebarWidth() { + const computedStyle = getComputedStyle(this.knowledgeLayoutContainer); + const gridColumns = computedStyle.gridTemplateColumns; + const match = gridColumns.match(/(\d+)px/); + return match ? parseInt(match[1]) : 450; + } + + setSidebarWidth(width) { + if (this.knowledgeLayoutContainer) { + this.knowledgeLayoutContainer.style.gridTemplateColumns = `${width}px 1fr`; + } + } + // ========================================== // UTILITIES // ========================================== diff --git a/frontend/js/mobile.js b/frontend/js/mobile.js index 0dbe68b..0f55295 100644 --- a/frontend/js/mobile.js +++ b/frontend/js/mobile.js @@ -318,16 +318,19 @@ class MobileManager { // Don't swipe if modal is open if ($('.modal-overlay:not(.hidden)')) return; - // Don't swipe on scrollable elements + // Don't swipe on specific interactive elements, but allow swipe in column-body const target = e.target; - if (target.closest('.column-body') || - target.closest('.modal') || + if (target.closest('.modal') || target.closest('.calendar-grid') || target.closest('.knowledge-entry-list') || target.closest('.list-table') || target.closest('input') || target.closest('textarea') || - target.closest('select')) { + target.closest('select') || + target.closest('button') || + target.closest('a[href]') || + target.closest('.task-card .priority-stars') || + target.closest('.task-card .task-counts')) { return; } @@ -372,18 +375,36 @@ class MobileManager { // Prevent scroll e.preventDefault(); - // Show indicators - const currentIndex = this.viewOrder.indexOf(this.currentView); - - if (deltaX > this.SWIPE_THRESHOLD && currentIndex > 0) { - this.swipeIndicatorLeft?.classList.add('visible'); - this.swipeIndicatorRight?.classList.remove('visible'); - } else if (deltaX < -this.SWIPE_THRESHOLD && currentIndex < this.viewOrder.length - 1) { - this.swipeIndicatorRight?.classList.add('visible'); - this.swipeIndicatorLeft?.classList.remove('visible'); + // Show indicators based on current view + if (this.currentView === 'board') { + // In board view: show column navigation indicators + const columns = $$('.column'); + const currentColumnIndex = this.getCurrentColumnIndex(); + + if (deltaX > this.SWIPE_THRESHOLD && currentColumnIndex > 0) { + this.swipeIndicatorLeft?.classList.add('visible'); + this.swipeIndicatorRight?.classList.remove('visible'); + } else if (deltaX < -this.SWIPE_THRESHOLD && currentColumnIndex < columns.length - 1) { + this.swipeIndicatorRight?.classList.add('visible'); + this.swipeIndicatorLeft?.classList.remove('visible'); + } else { + this.swipeIndicatorLeft?.classList.remove('visible'); + this.swipeIndicatorRight?.classList.remove('visible'); + } } else { - this.swipeIndicatorLeft?.classList.remove('visible'); - this.swipeIndicatorRight?.classList.remove('visible'); + // In other views: show view navigation indicators + const currentIndex = this.viewOrder.indexOf(this.currentView); + + if (deltaX > this.SWIPE_THRESHOLD && currentIndex > 0) { + this.swipeIndicatorLeft?.classList.add('visible'); + this.swipeIndicatorRight?.classList.remove('visible'); + } else if (deltaX < -this.SWIPE_THRESHOLD && currentIndex < this.viewOrder.length - 1) { + this.swipeIndicatorRight?.classList.add('visible'); + this.swipeIndicatorLeft?.classList.remove('visible'); + } else { + this.swipeIndicatorLeft?.classList.remove('visible'); + this.swipeIndicatorRight?.classList.remove('visible'); + } } } @@ -404,14 +425,29 @@ class MobileManager { const isValidSwipe = Math.abs(deltaX) > this.SWIPE_THRESHOLD || velocity > this.SWIPE_VELOCITY_THRESHOLD; if (isValidSwipe) { - const currentIndex = this.viewOrder.indexOf(this.currentView); + if (this.currentView === 'board') { + // In board view: navigate between columns + const columns = $$('.column'); + const currentColumnIndex = this.getCurrentColumnIndex(); - if (deltaX > 0 && currentIndex > 0) { - // Swipe right - previous view - this.switchView(this.viewOrder[currentIndex - 1]); - } else if (deltaX < 0 && currentIndex < this.viewOrder.length - 1) { - // Swipe left - next view - this.switchView(this.viewOrder[currentIndex + 1]); + if (deltaX > 0 && currentColumnIndex > 0) { + // Swipe right - previous column + this.scrollToColumn(currentColumnIndex - 1); + } else if (deltaX < 0 && currentColumnIndex < columns.length - 1) { + // Swipe left - next column + this.scrollToColumn(currentColumnIndex + 1); + } + } else { + // In other views: navigate between views + const currentIndex = this.viewOrder.indexOf(this.currentView); + + if (deltaX > 0 && currentIndex > 0) { + // Swipe right - previous view + this.switchView(this.viewOrder[currentIndex - 1]); + } else if (deltaX < 0 && currentIndex < this.viewOrder.length - 1) { + // Swipe left - next view + this.switchView(this.viewOrder[currentIndex + 1]); + } } } @@ -434,6 +470,36 @@ class MobileManager { this.swipeIndicatorRight?.classList.remove('visible'); } + /** + * Get current visible column index in mobile board view + */ + getCurrentColumnIndex() { + const boardContainer = $('.board-container'); + if (!boardContainer) return 0; + + const containerWidth = boardContainer.offsetWidth; + const scrollLeft = boardContainer.scrollLeft; + const columnWidth = 300; // Approximate column width in mobile + + return Math.round(scrollLeft / columnWidth); + } + + /** + * Scroll to specific column in mobile board view + */ + scrollToColumn(columnIndex) { + const boardContainer = $('.board-container'); + if (!boardContainer) return; + + const columnWidth = 300; // Approximate column width in mobile + const targetScrollLeft = columnIndex * columnWidth; + + boardContainer.scrollTo({ + left: targetScrollLeft, + behavior: 'smooth' + }); + } + // ===================== // TOUCH DRAG & DROP // ===================== diff --git a/frontend/js/reminders.js b/frontend/js/reminders.js new file mode 100644 index 0000000..e02caec --- /dev/null +++ b/frontend/js/reminders.js @@ -0,0 +1,556 @@ +/** + * TASKMATE - Reminders Module + * =========================== + * Erinnerungsmanagement + */ + +import store from './store.js'; +import api from './api.js'; +import { + $, $$, createElement, clearElement, formatDate +} from './utils.js'; + +class ReminderManager { + constructor() { + this.modal = null; + this.form = null; + this.mode = 'create'; + this.reminderId = null; + this.selectedColor = '#F59E0B'; + + this.init(); + } + + init() { + this.modal = $('#reminder-modal'); + this.form = $('#reminder-form'); + + // Wait for DOM to be ready, then bind events + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', () => this.bindEvents()); + } else { + this.bindEvents(); + } + + // Listen for modal events + window.addEventListener('modal:open', (e) => { + if (e.detail.modalId === 'reminder-modal') { + this.open(e.detail.mode, e.detail.data); + } + }); + + window.addEventListener('modal:close', (e) => { + if (e.detail.modalId === 'reminder-modal') { + this.close(); + } + }); + + // Also bind button when calendar view is loaded + window.addEventListener('app:view-changed', (e) => { + if (e.detail.view === 'calendar') { + setTimeout(() => this.bindCalendarButton(), 100); + } + }); + } + + bindEvents() { + // Form submission + this.form?.addEventListener('submit', (e) => this.handleSubmit(e)); + + // Close buttons + $$('.modal-close', this.modal)?.forEach(btn => { + btn.addEventListener('click', () => this.close()); + }); + + $('#btn-cancel-reminder')?.addEventListener('click', () => this.close()); + + // Delete button + $('#btn-delete-reminder')?.addEventListener('click', () => this.handleDelete()); + + // Color picker trigger + const colorTrigger = $('#color-picker-trigger'); + const colorDropdown = $('#color-picker-dropdown'); + + if (colorTrigger) { + colorTrigger.addEventListener('click', (e) => { + e.stopPropagation(); + colorDropdown.classList.toggle('hidden'); + }); + } + + // Color picker options + $$('.color-picker-dropdown .color-option').forEach(option => { + option.addEventListener('click', (e) => { + e.stopPropagation(); + const color = e.target.dataset.color; + + // Update selected state + $$('.color-picker-dropdown .color-option').forEach(opt => opt.classList.remove('selected')); + e.target.classList.add('selected'); + + // Update trigger color and form value + colorTrigger.style.backgroundColor = color; + this.selectedColor = color; + $('#reminder-color').value = color; + + // Close dropdown + colorDropdown.classList.add('hidden'); + }); + }); + + // Close dropdown when clicking outside + document.addEventListener('click', (e) => { + if (!e.target.closest('.color-picker-wrapper')) { + colorDropdown?.classList.add('hidden'); + } + }); + + // Setup custom select for user dropdown + this.setupCustomSelect(); + + // Calendar button will be bound separately + this.bindCalendarButton(); + } + + bindCalendarButton() { + const reminderBtn = $('#btn-new-reminder'); + if (reminderBtn) { + console.log('[Reminder] Button found, binding event'); + + // Remove existing event listeners + const newBtn = reminderBtn.cloneNode(true); + reminderBtn.parentNode.replaceChild(newBtn, reminderBtn); + + newBtn.addEventListener('click', (e) => { + console.log('[Reminder] Button clicked!'); + e.preventDefault(); + e.stopPropagation(); + + console.log('[Reminder] Opening modal...'); + console.log('[Reminder] Modal element:', this.modal); + + this.open('create', {}); + }); + } else { + console.warn('[Reminder] Button #btn-new-reminder not found!'); + } + } + + async open(mode = 'create', data = {}) { + console.log('[Reminder] open() called with mode:', mode, 'data:', data); + console.log('[Reminder] Modal exists:', !!this.modal); + + this.mode = mode; + this.reminderId = data.reminderId || null; + + // Find modal if not already set + if (!this.modal) { + this.modal = $('#reminder-modal'); + console.log('[Reminder] Modal found on second attempt:', !!this.modal); + } + + if (!this.modal) { + console.error('[Reminder] Modal element not found!'); + return; + } + + // Modal title + const titleEl = $('#reminder-modal-title'); + if (titleEl) { + titleEl.textContent = mode === 'edit' ? 'Erinnerung bearbeiten' : 'Neue Erinnerung'; + console.log('[Reminder] Title set to:', titleEl.textContent); + } + + // Button text + const saveBtn = $('#btn-save-reminder .btn-text'); + if (saveBtn) { + saveBtn.textContent = mode === 'edit' ? 'Aktualisieren' : 'Speichern'; + } + + // Show/hide delete button + const deleteBtn = $('#btn-delete-reminder'); + if (deleteBtn) { + if (mode === 'edit' && this.reminderId) { + deleteBtn.classList.remove('hidden'); + } else { + deleteBtn.classList.add('hidden'); + } + } + + this.resetForm(); + await this.loadUsers(); // Benutzer laden + + if (mode === 'edit' && this.reminderId) { + this.loadReminder(); + } else if (data.prefill) { + this.prefillForm(data.prefill); + } + + // Show modal + console.log('[Reminder] Showing modal...'); + + // Create overlay if it doesn't exist + let overlay = document.querySelector('.modal-overlay'); + if (!overlay) { + overlay = document.createElement('div'); + overlay.className = 'modal-overlay'; + document.body.appendChild(overlay); + } + + // Show overlay first + overlay.classList.add('visible'); + + // Show modal + this.modal.classList.remove('hidden'); + this.modal.classList.add('visible'); + + console.log('[Reminder] Modal and overlay should now be visible'); + } + + close() { + // Hide modal + this.modal.classList.remove('visible'); + setTimeout(() => this.modal.classList.add('hidden'), 200); + + // Hide overlay + const overlay = document.querySelector('.modal-overlay'); + if (overlay) { + overlay.classList.remove('visible'); + } + + this.resetForm(); + } + + resetForm() { + if (this.form) { + this.form.reset(); + $('#reminder-time').value = '09:00'; + + // Reset color selection + $$('.color-picker-dropdown .color-option').forEach(opt => opt.classList.remove('selected')); + $$('.color-picker-dropdown .color-option[data-color="#F59E0B"]').forEach(opt => opt.classList.add('selected')); + const colorTrigger = $('#color-picker-trigger'); + if (colorTrigger) { + colorTrigger.style.backgroundColor = '#F59E0B'; + } + this.selectedColor = '#F59E0B'; + $('#reminder-color').value = '#F59E0B'; + + // Reset advance days + $$('input[name="advance-days"]').forEach(cb => { + cb.checked = cb.value === '1'; + }); + } + } + + prefillForm(prefill) { + if (prefill.date) { + $('#reminder-date').value = prefill.date; + } + } + + async loadUsers() { + console.log('[Reminder] Loading users...'); + let users = store.get('users') || []; + console.log('[Reminder] Users from store:', users); + + // If no users in store, try to load them + if (users.length === 0) { + try { + console.log('[Reminder] No users in store, loading from API...'); + const response = await api.request('/auth/users'); + users = response.data || response; + console.log('[Reminder] Users from API:', users); + + // Update store + if (users.length > 0) { + store.setUsers(users); + } + } catch (error) { + console.error('[Reminder] Failed to load users:', error); + users = []; + } + } + + const optionsContainer = $('#reminder-assignee-options'); + + if (!optionsContainer) { + console.warn('[Reminder] Assignee options container not found!'); + return; + } + + // Clear existing options except first one + optionsContainer.innerHTML = ` +
+ Alle Benutzer +
+ `; + + // Add user options with avatars + users.forEach(user => { + console.log('[Reminder] Adding user:', user); + + // Get user info + const displayName = user.displayName || user.display_name || user.username || user.email; + const initials = user.initials || this.getInitials(displayName); + const color = user.color || '#6366F1'; + + // Create option element + const option = document.createElement('div'); + option.className = 'custom-select-option'; + option.dataset.value = user.id; + option.dataset.initials = initials; + option.dataset.color = color; + option.dataset.displayName = displayName; + + option.innerHTML = ` +
${initials}
+ ${displayName} + `; + + optionsContainer.appendChild(option); + }); + + // Setup custom select behavior + this.setupCustomSelect(); + + console.log('[Reminder] Users loaded, total options:', optionsContainer.children.length); + } + + setupCustomSelect() { + const wrapper = $('#reminder-assignee-wrapper'); + const trigger = $('#reminder-assignee-trigger'); + const options = $('#reminder-assignee-options'); + const hiddenInput = $('#reminder-assignee'); + + if (!wrapper || !trigger || !options || !hiddenInput) { + console.log('[Reminder] Custom select elements not found, skipping setup'); + return; + } + + const valueDisplay = trigger.querySelector('.custom-select-value'); + + // Remove existing listeners by cloning elements + const newTrigger = trigger.cloneNode(true); + trigger.parentNode.replaceChild(newTrigger, trigger); + + const newOptions = options.cloneNode(true); + options.parentNode.replaceChild(newOptions, options); + + // Re-get elements after cloning + const freshTrigger = $('#reminder-assignee-trigger'); + const freshOptions = $('#reminder-assignee-options'); + const freshValueDisplay = freshTrigger.querySelector('.custom-select-value'); + + // Toggle dropdown + freshTrigger.addEventListener('click', (e) => { + e.preventDefault(); + e.stopPropagation(); + wrapper.classList.toggle('open'); + console.log('[Reminder] Dropdown toggled, open:', wrapper.classList.contains('open')); + }); + + // Handle option selection + freshOptions.addEventListener('click', (e) => { + const option = e.target.closest('.custom-select-option'); + if (!option) return; + + const value = option.dataset.value; + const displayName = option.dataset.displayName; + const initials = option.dataset.initials; + const color = option.dataset.color; + + // Update hidden input + hiddenInput.value = value; + + // Update display + if (value === '') { + freshValueDisplay.innerHTML = 'Alle Benutzer'; + } else { + freshValueDisplay.innerHTML = ` +
${initials}
+ ${displayName} + `; + } + + // Update selected state + freshOptions.querySelectorAll('.custom-select-option').forEach(opt => { + opt.classList.remove('selected'); + }); + option.classList.add('selected'); + + // Close dropdown + wrapper.classList.remove('open'); + }); + + // Close on outside click + document.addEventListener('click', (e) => { + if (!wrapper.contains(e.target)) { + wrapper.classList.remove('open'); + } + }); + } + + async loadReminder() { + try { + const response = await api.request(`/reminders/${this.reminderId}`); + const reminder = response.data; + + $('#reminder-title').value = reminder.title || ''; + $('#reminder-description').value = reminder.description || ''; + $('#reminder-date').value = reminder.reminder_date || ''; + $('#reminder-time').value = reminder.reminder_time || '09:00'; + $('#reminder-assignee').value = reminder.assigned_to || ''; + + // Set color + this.selectedColor = reminder.color || '#F59E0B'; + $('#reminder-color').value = this.selectedColor; + $$('.color-option').forEach(opt => opt.classList.remove('selected')); + $$(`[data-color="${this.selectedColor}"]`).forEach(opt => opt.classList.add('selected')); + + // Set advance days + const advanceDays = reminder.advance_days || ['1']; + $$('input[name="advance-days"]').forEach(cb => { + cb.checked = advanceDays.includes(cb.value); + }); + + } catch (error) { + console.error('Error loading reminder:', error); + } + } + + async handleSubmit(e) { + e.preventDefault(); + + const saveBtn = $('#btn-save-reminder'); + const btnText = saveBtn.querySelector('.btn-text'); + const btnLoading = saveBtn.querySelector('.btn-loading'); + + // Show loading + btnText.classList.add('hidden'); + btnLoading.classList.remove('hidden'); + saveBtn.disabled = true; + + try { + const formData = new FormData(this.form); + + // Get advance days + const advanceDays = []; + $$('input[name="advance-days"]:checked').forEach(cb => { + advanceDays.push(cb.value); + }); + + if (advanceDays.length === 0) { + throw new Error('Bitte wählen Sie mindestens eine Erinnerungszeit aus'); + } + + const data = { + project_id: store.get('currentProjectId'), + title: formData.get('reminder-title') || $('#reminder-title').value, + description: $('#reminder-description').value || null, + reminder_date: $('#reminder-date').value, + reminder_time: $('#reminder-time').value, + assigned_to: $('#reminder-assignee').value || null, + color: this.selectedColor, + advance_days: advanceDays + }; + + if (this.mode === 'edit') { + await api.request(`/reminders/${this.reminderId}`, { + method: 'PUT', + body: data + }); + } else { + await api.request('/reminders', { + method: 'POST', + body: data + }); + } + + // Update store and refresh calendar + if (this.mode === 'edit') { + const updatedData = await api.request(`/reminders/${this.reminderId}`); + store.updateReminder(this.reminderId, updatedData.data); + } else { + // Load all reminders to get the new one + const projectId = store.get('currentProjectId'); + const allReminders = await api.getReminders(projectId); + store.setReminders(allReminders); + } + + window.dispatchEvent(new CustomEvent('app:refresh')); + + this.close(); + + } catch (error) { + console.error('Error saving reminder:', error); + alert(`Fehler beim Speichern: ${error.message || 'Unbekannter Fehler'}`); + } finally { + // Hide loading + btnText.classList.remove('hidden'); + btnLoading.classList.add('hidden'); + saveBtn.disabled = false; + } + } + + // Helper Methods + getInitials(name) { + if (!name) return '?'; + + return name + .split(' ') + .map(part => part.charAt(0).toUpperCase()) + .slice(0, 2) + .join(''); + } + + // API Methods + async getRemindersByProject(projectId) { + try { + const response = await api.request(`/reminders?project_id=${projectId}`); + return response.data || []; + } catch (error) { + console.error('Error fetching reminders:', error); + return []; + } + } + + async handleDelete() { + if (!this.reminderId) return; + + const reminderTitle = $('#reminder-title').value || 'diese Erinnerung'; + + if (!confirm(`Möchten Sie "${reminderTitle}" wirklich löschen?`)) { + return; + } + + try { + await this.deleteReminder(this.reminderId); + this.close(); + + // Reload reminders + const projectId = store.get('currentProjectId'); + const allReminders = await api.getReminders(projectId); + store.setReminders(allReminders); + + window.dispatchEvent(new CustomEvent('app:refresh')); + } catch (error) { + console.error('Error deleting reminder:', error); + alert('Fehler beim Löschen der Erinnerung. Bitte versuche es erneut.'); + } + } + + async deleteReminder(id) { + try { + await api.request(`/reminders/${id}`, { method: 'DELETE' }); + window.dispatchEvent(new CustomEvent('app:refresh')); + } catch (error) { + console.error('Error deleting reminder:', error); + throw error; + } + } +} + +// Export singleton instance +const reminderManager = new ReminderManager(); +export default reminderManager; \ No newline at end of file diff --git a/frontend/js/store.js b/frontend/js/store.js index b0be758..9cc2459 100644 --- a/frontend/js/store.js +++ b/frontend/js/store.js @@ -27,6 +27,7 @@ class Store { columns: [], tasks: [], labels: [], + reminders: [], // Filters filters: { @@ -363,6 +364,34 @@ class Store { }, 'REMOVE_LABEL'); } + // ===================== + // REMINDER ACTIONS + // ===================== + + setReminders(reminders) { + this.setState({ reminders }, 'SET_REMINDERS'); + } + + addReminder(reminder) { + this.setState({ + reminders: [...this.state.reminders, reminder] + }, 'ADD_REMINDER'); + } + + updateReminder(reminderId, updates) { + this.setState({ + reminders: this.state.reminders.map(r => + r.id === reminderId ? { ...r, ...updates } : r + ) + }, 'UPDATE_REMINDER'); + } + + removeReminder(reminderId) { + this.setState({ + reminders: this.state.reminders.filter(r => r.id !== reminderId) + }, 'REMOVE_REMINDER'); + } + // ===================== // FILTER ACTIONS // ===================== diff --git a/frontend/js/task-modal.js b/frontend/js/task-modal.js index 7f5eb35..9da3b20 100644 --- a/frontend/js/task-modal.js +++ b/frontend/js/task-modal.js @@ -252,6 +252,15 @@ class TaskModalManager { if (mode === 'edit' && this.taskId) { await this.loadTaskData(); } else { + // Create mode - clear all UI elements and set defaults + + // Clear UI elements (render empty arrays) + this.renderSubtasks(); + this.renderLinks(); + this.renderFiles(); + this.renderComments(); + this.renderHistory(); + // Set default column if (this.columnId) { const columnSelect = $('#task-status'); @@ -800,6 +809,8 @@ class TaskModalManager { optionsContainer.innerHTML = ''; users.forEach(user => { + // DEBUG: User-Objekt anschauen + console.log('[DEBUG] User in Dropdown:', user); const option = createElement('div', { class: 'multi-select-option' }); const checkbox = createElement('input', { @@ -818,9 +829,12 @@ class TaskModalManager { const avatar = createElement('div', { class: 'multi-select-option-avatar', style: `background-color: ${user.color || '#6366F1'}` - }, [user.initials || getInitials(user.display_name || user.username)]); + }, [user.initials || getInitials(user.display_name || user.email || 'XX')]); - const name = createElement('span', { class: 'multi-select-option-name' }, [user.display_name || user.username]); + // Probiere verschiedene Felder für den Namen + const displayName = user.displayName || user.display_name || user.name || user.username || 'Benutzer'; + console.log('[DEBUG] Display name für user', user.id, ':', displayName); + const name = createElement('span', { class: 'multi-select-option-name' }, [displayName]); option.appendChild(checkbox); option.appendChild(avatar); @@ -876,10 +890,9 @@ class TaskModalManager { } else { const tags = selectedUsers.map(user => ` - - ${getInitials(user.display_name || user.username)} + + ${user.initials || getInitials(user.display_name || user.email || 'XX')} - ${user.display_name || user.username} `).join(''); diff --git a/frontend/sw.js b/frontend/sw.js index a1e29bc..919569f 100644 --- a/frontend/sw.js +++ b/frontend/sw.js @@ -4,7 +4,7 @@ * Offline support and caching */ -const CACHE_VERSION = '197'; +const CACHE_VERSION = '265'; const CACHE_NAME = 'taskmate-v' + CACHE_VERSION; const STATIC_CACHE_NAME = 'taskmate-static-v' + CACHE_VERSION; const DYNAMIC_CACHE_NAME = 'taskmate-dynamic-v' + CACHE_VERSION; @@ -41,6 +41,8 @@ const STATIC_ASSETS = [ '/js/knowledge.js', '/js/coding.js', '/js/mobile.js', + '/js/reminders.js', + '/js/contacts.js', '/css/list.css', '/css/mobile.css', '/css/admin.css', @@ -48,7 +50,9 @@ const STATIC_ASSETS = [ '/css/notifications.css', '/css/gitea.css', '/css/knowledge.css', - '/css/coding.css' + '/css/coding.css', + '/css/reminders.css', + '/css/contacts.css' ]; // API routes to cache diff --git a/logs/app.log b/logs/app.log index cc26bff..6e51a28 100644 --- a/logs/app.log +++ b/logs/app.log @@ -81338,3 +81338,15911 @@ hint: See the 'Note about fast-forwards' in 'git push --help' for details. [2026-01-04T21:21:11.564Z] [INFO] Git directory exists: true [2026-01-04T21:21:11.564Z] [INFO] Git directory exists: true [2026-01-04T21:21:11.591Z] [INFO] GET /api/coding/directories/3/status 304 36ms +[2026-01-04T21:21:11.597Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-04T21:21:11.823Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-04T21:21:11.598Z] [INFO] Git directory exists: true +[2026-01-04T21:21:11.824Z] [INFO] Git directory exists: true +[2026-01-04T21:21:11.824Z] [INFO] Commit mit Autor: hendrik_gebhardt@gmx.de +[2026-01-04T21:21:12.036Z] [INFO] Git commit ausgeführt für: Gitea-Repo - "Gitea-Repo fix" +[2026-01-04T21:21:12.038Z] [INFO] POST /api/coding/directories/3/commit 200 445ms +[2026-01-04T21:21:12.072Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-04T21:21:12.073Z] [INFO] Git directory exists: true +[2026-01-04T21:21:12.073Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-04T21:21:12.073Z] [INFO] Git directory exists: true +[2026-01-04T21:21:12.100Z] [INFO] GET /api/coding/directories/3/status 200 33ms +[2026-01-04T21:21:12.566Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-04T21:21:13.834Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-04T21:21:13.835Z] [INFO] Git directory exists: true +[2026-01-04T21:21:13.852Z] [INFO] Lokaler Branch: main +[2026-01-04T21:21:13.852Z] [INFO] Push: lokaler Branch 'main' → Remote Branch 'main' +[2026-01-04T21:21:16.224Z] [INFO] Git push ausgeführt für: Gitea-Repo +[2026-01-04T21:21:16.226Z] [INFO] POST /api/coding/directories/3/push 200 2399ms +[2026-01-04T21:21:16.233Z] [INFO] POST /api/auth/refresh 200 4ms +[2026-01-04T21:21:16.256Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-04T21:21:16.257Z] [INFO] Git directory exists: true +[2026-01-04T21:21:16.257Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-04T21:21:16.258Z] [INFO] Git directory exists: true +[2026-01-04T21:21:16.284Z] [INFO] GET /api/coding/directories/3/status 200 30ms +[2026-01-04T21:21:36.175Z] [INFO] GET / 304 2ms +[2026-01-04T21:21:36.212Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (yK79Jj9Nkz2PLhkoAAAF) +[2026-01-04T21:21:36.223Z] [INFO] GET /css/variables.css 304 0ms +[2026-01-04T21:21:36.233Z] [INFO] GET /css/base.css 304 1ms +[2026-01-04T21:21:36.256Z] [INFO] GET /css/components.css 304 1ms +[2026-01-04T21:21:36.263Z] [INFO] GET /css/board.css 304 1ms +[2026-01-04T21:21:36.287Z] [INFO] GET /css/modal.css 304 2ms +[2026-01-04T21:21:36.297Z] [INFO] GET /css/calendar.css 304 2ms +[2026-01-04T21:21:36.302Z] [INFO] GET /css/proposals.css 304 3ms +[2026-01-04T21:21:36.301Z] [INFO] GET /css/admin.css 304 3ms +[2026-01-04T21:21:36.303Z] [INFO] GET /css/list.css 304 3ms +[2026-01-04T21:21:36.305Z] [INFO] GET /css/notifications.css 304 1ms +[2026-01-04T21:21:36.321Z] [INFO] GET /css/gitea.css 304 2ms +[2026-01-04T21:21:36.329Z] [INFO] GET /css/coding.css 304 1ms +[2026-01-04T21:21:36.334Z] [INFO] GET /css/knowledge.css 304 3ms +[2026-01-04T21:21:36.337Z] [INFO] GET /css/responsive.css 304 2ms +[2026-01-04T21:21:36.341Z] [INFO] GET /css/mobile.css 304 2ms +[2026-01-04T21:21:36.353Z] [INFO] GET /js/app.js 304 3ms +[2026-01-04T21:21:36.394Z] [INFO] GET /js/offline.js 304 3ms +[2026-01-04T21:21:36.395Z] [INFO] GET /js/store.js 304 2ms +[2026-01-04T21:21:36.401Z] [INFO] GET /js/board.js 304 2ms +[2026-01-04T21:21:36.404Z] [INFO] GET /js/api.js 304 2ms +[2026-01-04T21:21:36.409Z] [INFO] GET /js/auth.js 304 3ms +[2026-01-04T21:21:36.413Z] [INFO] GET /js/sync.js 304 2ms +[2026-01-04T21:21:36.426Z] [INFO] GET /js/task-modal.js 304 2ms +[2026-01-04T21:21:36.427Z] [INFO] GET /js/calendar.js 304 2ms +[2026-01-04T21:21:36.434Z] [INFO] GET /js/list.js 304 2ms +[2026-01-04T21:21:36.436Z] [INFO] GET /js/shortcuts.js 304 3ms +[2026-01-04T21:21:36.439Z] [INFO] GET /js/undo.js 304 1ms +[2026-01-04T21:21:36.443Z] [INFO] GET /js/admin.js 304 1ms +[2026-01-04T21:21:36.455Z] [INFO] GET /js/proposals.js 304 1ms +[2026-01-04T21:21:36.464Z] [INFO] GET /js/notifications.js 304 1ms +[2026-01-04T21:21:36.466Z] [INFO] GET /js/gitea.js 304 1ms +[2026-01-04T21:21:36.472Z] [INFO] GET /js/knowledge.js 304 1ms +[2026-01-04T21:21:36.484Z] [INFO] GET /js/coding.js 304 4ms +[2026-01-04T21:21:36.485Z] [INFO] GET /js/mobile.js 304 4ms +[2026-01-04T21:21:36.489Z] [INFO] GET /js/utils.js 304 2ms +[2026-01-04T21:21:36.528Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-04T21:21:36.535Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-04T21:21:36.538Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-04T21:21:36.585Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-04T21:21:36.621Z] [INFO] GET /api/projects 304 5ms +[2026-01-04T21:21:36.630Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (8vjQb1MV67nCOdD8AAAH) +[2026-01-04T21:21:36.660Z] [INFO] GET /api/columns/2 304 9ms +[2026-01-04T21:21:36.667Z] [INFO] GET /api/labels/2 304 14ms +[2026-01-04T21:21:36.672Z] [INFO] GET /api/stats/dashboard?projectId=2 304 9ms +[2026-01-04T21:21:36.696Z] [INFO] GET /api/tasks/project/2 304 29ms +[2026-01-04T21:21:36.699Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-04T21:21:36.736Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 4ms +[2026-01-04T21:21:36.781Z] [INFO] GET /api/notifications 304 11ms +[2026-01-04T21:21:36.821Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-04T21:21:38.296Z] [INFO] GET /sw.js 304 1ms +[2026-01-04T21:21:40.153Z] [INFO] Login erfolgreich: admin +[2026-01-04T21:21:40.155Z] [INFO] POST /api/auth/login 200 674ms +[2026-01-04T21:21:40.205Z] [INFO] GET /api/knowledge/categories 200 11ms +[2026-01-04T21:21:41.856Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-04T21:21:41.945Z] [INFO] GET /api/knowledge/entries?categoryId=15 304 8ms +[2026-01-04T21:21:43.953Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-04T21:23:23.730Z] [INFO] SIGTERM empfangen, fahre herunter... +[2026-01-04T21:23:38.172Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-04T21:23:38.289Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-04T21:23:38.872Z] [INFO] Admin-Passwort bereits korrekt +[2026-01-04T21:23:38.873Z] [INFO] Datenbank initialisiert +[2026-01-04T21:23:38.880Z] [INFO] Server läuft auf Port 3001 +[2026-01-04T21:23:38.882Z] [INFO] Umgebung: development +[2026-01-04T21:23:38.882Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-04T21:23:38.884Z] [INFO] Automatische Backups aktiviert +[2026-01-04T21:23:42.040Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (poV77Z5QWhAXlZq5AAAB) +[2026-01-04T21:23:42.086Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-04T21:23:44.142Z] [INFO] GET /api/health 200 11ms +[2026-01-04T21:23:54.441Z] [INFO] GET /api/knowledge/categories/15/entries 401 5ms +[2026-01-04T21:23:58.489Z] [INFO] GET /api/knowledge/categories/15/entries 401 3ms +[2026-01-04T21:24:38.905Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-04T21-24-38-890Z.db.enc +[2026-01-04T21:24:38.906Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-04T21-24-38-890Z.db.enc +[2026-01-04T21:24:38.927Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-03T21-48-35-133Z.db.enc +[2026-01-04T21:24:38.930Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-04T21:24:38.913Z] [INFO] Backup erstellt: backup_2026-01-04T21-24-38-890Z.db +[2026-01-04T21:24:38.927Z] [INFO] Datei sicher gelöscht: backup_2026-01-03T21-48-35-133Z.db.enc +[2026-01-04T21:28:57.333Z] [INFO] POST /api/knowledge/entries 401 6ms +[2026-01-04T21:29:03.220Z] [INFO] GET / 304 9ms +[2026-01-04T21:29:03.280Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (poV77Z5QWhAXlZq5AAAB) +[2026-01-04T21:29:03.284Z] [INFO] GET /css/variables.css 304 2ms +[2026-01-04T21:29:03.327Z] [INFO] GET /css/base.css 304 3ms +[2026-01-04T21:29:03.331Z] [INFO] GET /css/components.css 304 1ms +[2026-01-04T21:29:03.345Z] [INFO] GET /css/board.css 304 3ms +[2026-01-04T21:29:03.360Z] [INFO] GET /css/calendar.css 304 4ms +[2026-01-04T21:29:03.379Z] [INFO] GET /css/list.css 304 5ms +[2026-01-04T21:29:03.377Z] [INFO] GET /css/modal.css 304 6ms +[2026-01-04T21:29:03.383Z] [INFO] GET /css/admin.css 304 2ms +[2026-01-04T21:29:03.389Z] [INFO] GET /css/proposals.css 304 2ms +[2026-01-04T21:29:03.391Z] [INFO] GET /css/notifications.css 304 1ms +[2026-01-04T21:29:03.394Z] [INFO] GET /css/gitea.css 304 1ms +[2026-01-04T21:29:03.410Z] [INFO] GET /css/coding.css 304 2ms +[2026-01-04T21:29:03.415Z] [INFO] GET /css/knowledge.css 304 3ms +[2026-01-04T21:29:03.419Z] [INFO] GET /css/responsive.css 304 1ms +[2026-01-04T21:29:03.421Z] [INFO] GET /css/mobile.css 304 1ms +[2026-01-04T21:29:03.443Z] [INFO] GET /js/app.js 304 1ms +[2026-01-04T21:29:03.481Z] [INFO] GET /js/offline.js 304 1ms +[2026-01-04T21:29:03.482Z] [INFO] GET /js/store.js 304 0ms +[2026-01-04T21:29:03.484Z] [INFO] GET /js/auth.js 304 1ms +[2026-01-04T21:29:03.487Z] [INFO] GET /js/sync.js 304 1ms +[2026-01-04T21:29:03.489Z] [INFO] GET /js/api.js 304 1ms +[2026-01-04T21:29:03.490Z] [INFO] GET /js/board.js 304 1ms +[2026-01-04T21:29:03.511Z] [INFO] GET /js/task-modal.js 304 1ms +[2026-01-04T21:29:03.515Z] [INFO] GET /js/calendar.js 304 2ms +[2026-01-04T21:29:03.517Z] [INFO] GET /js/list.js 304 3ms +[2026-01-04T21:29:03.519Z] [INFO] GET /js/shortcuts.js 304 1ms +[2026-01-04T21:29:03.522Z] [INFO] GET /js/undo.js 304 1ms +[2026-01-04T21:29:03.523Z] [INFO] GET /js/admin.js 304 0ms +[2026-01-04T21:29:03.549Z] [INFO] GET /js/proposals.js 304 3ms +[2026-01-04T21:29:03.551Z] [INFO] GET /js/notifications.js 304 4ms +[2026-01-04T21:29:03.560Z] [INFO] GET /js/knowledge.js 304 2ms +[2026-01-04T21:29:03.561Z] [INFO] GET /js/gitea.js 304 2ms +[2026-01-04T21:29:03.564Z] [INFO] GET /js/coding.js 304 1ms +[2026-01-04T21:29:03.567Z] [INFO] GET /js/mobile.js 304 1ms +[2026-01-04T21:29:03.577Z] [INFO] GET /js/utils.js 304 1ms +[2026-01-04T21:29:03.636Z] [INFO] POST /api/auth/refresh 200 23ms +[2026-01-04T21:29:03.642Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-04T21:29:03.645Z] [INFO] GET /assets/icons/task.svg 304 6ms +[2026-01-04T21:29:03.678Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-04T21:29:03.728Z] [INFO] GET /api/projects 304 13ms +[2026-01-04T21:29:03.734Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (DiWYtvixd-QRfL89AAAD) +[2026-01-04T21:29:03.769Z] [INFO] GET /api/stats/dashboard?projectId=2 304 7ms +[2026-01-04T21:29:03.774Z] [INFO] GET /api/labels/2 304 11ms +[2026-01-04T21:29:03.779Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-04T21:29:03.795Z] [INFO] GET /api/tasks/project/2 304 15ms +[2026-01-04T21:29:03.797Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-04T21:29:03.846Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-04T21:29:03.883Z] [INFO] GET /api/notifications 304 7ms +[2026-01-04T21:29:03.933Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-04T21:29:05.390Z] [INFO] GET /sw.js 304 1ms +[2026-01-04T21:29:05.881Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-04T21:29:06.138Z] [INFO] GET /api/knowledge/entries?categoryId=15 304 10ms +[2026-01-04T21:29:07.959Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-04T21:29:58.889Z] [INFO] SIGTERM empfangen, fahre herunter... +[2026-01-04T21:30:13.241Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-04T21:30:13.397Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-04T21:30:13.950Z] [INFO] Admin-Passwort bereits korrekt +[2026-01-04T21:30:13.950Z] [INFO] Datenbank initialisiert +[2026-01-04T21:30:13.960Z] [INFO] Server läuft auf Port 3001 +[2026-01-04T21:30:13.960Z] [INFO] Umgebung: development +[2026-01-04T21:30:13.961Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-04T21:30:13.962Z] [INFO] Automatische Backups aktiviert +[2026-01-04T21:30:15.815Z] [INFO] GET /api/knowledge/categories 401 39ms +[2026-01-04T21:30:17.063Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (3UqT7yXmxl9sgx-DAAAB) +[2026-01-04T21:30:17.111Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-04T21:31:13.985Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-04T21-31-13-969Z.db.enc +[2026-01-04T21:31:13.986Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-04T21-31-13-969Z.db.enc +[2026-01-04T21:31:13.989Z] [INFO] Backup erstellt: backup_2026-01-04T21-31-13-969Z.db +[2026-01-04T21:31:14.004Z] [INFO] Datei sicher gelöscht: backup_2026-01-03T21-55-00-905Z.db.enc +[2026-01-04T21:31:14.004Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-03T21-55-00-905Z.db.enc +[2026-01-04T21:31:14.005Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-04T21:39:09.182Z] [INFO] POST /api/auth/refresh 200 17ms +[2026-01-04T21:49:10.124Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-04T21:59:11.156Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-04T22:01:27.636Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-04T22:05:15.878Z] [INFO] SIGTERM empfangen, fahre herunter... +[2026-01-04T22:05:30.475Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-04T22:05:30.647Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-04T22:05:31.216Z] [INFO] Admin-Passwort bereits korrekt +[2026-01-04T22:05:31.219Z] [INFO] Datenbank initialisiert +[2026-01-04T22:05:31.224Z] [INFO] Server läuft auf Port 3001 +[2026-01-04T22:05:31.225Z] [INFO] Umgebung: development +[2026-01-04T22:05:31.226Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-04T22:05:31.226Z] [INFO] Automatische Backups aktiviert +[2026-01-04T22:06:31.275Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-04T22-06-31-257Z.db.enc +[2026-01-04T22:06:31.276Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-04T22-06-31-257Z.db.enc +[2026-01-04T22:06:31.280Z] [INFO] Backup erstellt: backup_2026-01-04T22-06-31-257Z.db +[2026-01-04T22:06:31.296Z] [INFO] Datei sicher gelöscht: backup_2026-01-03T22-01-40-959Z.db.enc +[2026-01-04T22:06:31.297Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-03T22-01-40-959Z.db.enc +[2026-01-04T22:06:31.299Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-04T22:07:53.117Z] [INFO] GET / 200 116ms +[2026-01-04T22:07:54.160Z] [INFO] GET /assets/icons/task.svg 200 113ms +[2026-01-04T22:07:55.179Z] [INFO] GET /favicon.ico 200 104ms +[2026-01-04T22:08:04.709Z] [INFO] GET /.well-known/security.txt 200 105ms +[2026-01-04T22:11:28.154Z] [INFO] POST /api/auth/refresh 200 16ms +[2026-01-04T22:13:14.290Z] [INFO] POST /api/auth/logout 401 10ms +[2026-01-04T22:13:14.300Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-04T22:13:16.115Z] [INFO] Login erfolgreich: momohomma@googlemail.com +[2026-01-04T22:13:16.116Z] [INFO] POST /api/auth/login 200 456ms +[2026-01-04T22:13:16.199Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-04T22:13:16.274Z] [INFO] Socket connected: momohomma@googlemail.com (CWeDSFyvQ8jvi09KAAAD) +[2026-01-04T22:13:16.320Z] [INFO] GET /api/projects 304 6ms +[2026-01-04T22:13:16.394Z] [INFO] momohomma@googlemail.com joined project:[object Object] +[2026-01-04T22:13:16.401Z] [INFO] GET /api/stats/dashboard?projectId=2 304 10ms +[2026-01-04T22:13:16.451Z] [INFO] GET /api/columns/2 304 8ms +[2026-01-04T22:13:16.491Z] [INFO] GET /api/tasks/project/2 304 26ms +[2026-01-04T22:13:16.496Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-04T22:13:16.591Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-04T22:13:16.662Z] [INFO] GET /api/knowledge/categories 200 13ms +[2026-01-04T22:13:25.300Z] [INFO] Socket disconnected: momohomma@googlemail.com (CWeDSFyvQ8jvi09KAAAD) +[2026-01-04T22:14:15.456Z] [INFO] Socket connected: momohomma@googlemail.com (XaAhUHdgz-5ovXWrAAAH) +[2026-01-04T22:14:15.566Z] [INFO] momohomma@googlemail.com joined project:[object Object] +[2026-01-04T22:14:17.686Z] [INFO] Logout: momohomma@googlemail.com +[2026-01-04T22:14:17.688Z] [INFO] POST /api/auth/logout 200 10ms +[2026-01-04T22:14:17.694Z] [INFO] Logout: momohomma@googlemail.com +[2026-01-04T22:14:17.695Z] [INFO] POST /api/auth/logout 200 4ms +[2026-01-04T22:14:17.737Z] [INFO] Socket disconnected: momohomma@googlemail.com (XaAhUHdgz-5ovXWrAAAH) +[2026-01-04T22:15:52.204Z] [INFO] Login erfolgreich: momohomma@googlemail.com +[2026-01-04T22:15:52.205Z] [INFO] POST /api/auth/login 200 501ms +[2026-01-04T22:15:52.332Z] [INFO] GET /api/auth/users 304 10ms +[2026-01-04T22:15:52.355Z] [INFO] Socket connected: momohomma@googlemail.com (AsxgI6DQavDX9PhCAAAJ) +[2026-01-04T22:15:52.409Z] [INFO] GET /api/projects 304 9ms +[2026-01-04T22:15:52.465Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-04T22:15:52.468Z] [INFO] momohomma@googlemail.com joined project:[object Object] +[2026-01-04T22:15:52.478Z] [INFO] GET /api/stats/dashboard?projectId=2 304 7ms +[2026-01-04T22:15:52.508Z] [INFO] GET /api/tasks/project/2 304 24ms +[2026-01-04T22:15:52.527Z] [INFO] GET /api/labels/2 304 6ms +[2026-01-04T22:15:52.628Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 8ms +[2026-01-04T22:15:52.697Z] [INFO] GET /api/knowledge/categories 304 8ms +[2026-01-04T22:15:58.662Z] [INFO] Socket disconnected: momohomma@googlemail.com (AsxgI6DQavDX9PhCAAAJ) +[2026-01-04T22:16:08.149Z] [INFO] Socket connected: momohomma@googlemail.com (4ty4-Kf7GfTNH_Z8AAAL) +[2026-01-04T22:16:08.243Z] [INFO] momohomma@googlemail.com joined project:[object Object] +[2026-01-04T22:16:10.141Z] [INFO] GET / 200 7ms +[2026-01-04T22:16:10.264Z] [INFO] Socket disconnected: momohomma@googlemail.com (4ty4-Kf7GfTNH_Z8AAAL) +[2026-01-04T22:16:10.299Z] [INFO] GET /css/components.css 304 3ms +[2026-01-04T22:16:10.301Z] [INFO] GET /css/variables.css 304 4ms +[2026-01-04T22:16:10.303Z] [INFO] GET /css/base.css 304 3ms +[2026-01-04T22:16:10.352Z] [INFO] GET /css/modal.css 304 2ms +[2026-01-04T22:16:10.355Z] [INFO] GET /css/board.css 304 2ms +[2026-01-04T22:16:10.358Z] [INFO] GET /css/calendar.css 304 2ms +[2026-01-04T22:16:10.403Z] [INFO] GET /css/list.css 304 1ms +[2026-01-04T22:16:10.413Z] [INFO] GET /css/proposals.css 304 2ms +[2026-01-04T22:16:10.421Z] [INFO] GET /css/gitea.css 304 3ms +[2026-01-04T22:16:10.426Z] [INFO] GET /css/admin.css 200 11ms +[2026-01-04T22:16:10.428Z] [INFO] GET /css/notifications.css 304 3ms +[2026-01-04T22:16:10.431Z] [INFO] GET /css/coding.css 304 2ms +[2026-01-04T22:16:10.451Z] [INFO] GET /css/knowledge.css 304 1ms +[2026-01-04T22:16:10.460Z] [INFO] GET /css/responsive.css 304 2ms +[2026-01-04T22:16:10.467Z] [INFO] GET /css/mobile.css 304 1ms +[2026-01-04T22:16:10.486Z] [INFO] GET /js/app.js 304 3ms +[2026-01-04T22:16:10.571Z] [INFO] GET /js/api.js 304 2ms +[2026-01-04T22:16:10.578Z] [INFO] GET /js/sync.js 304 2ms +[2026-01-04T22:16:10.580Z] [INFO] GET /js/board.js 200 7ms +[2026-01-04T22:16:10.582Z] [INFO] GET /js/store.js 304 4ms +[2026-01-04T22:16:10.586Z] [INFO] GET /js/offline.js 304 1ms +[2026-01-04T22:16:10.591Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-04T22:16:10.629Z] [INFO] GET /js/task-modal.js 200 7ms +[2026-01-04T22:16:10.633Z] [INFO] GET /js/calendar.js 200 8ms +[2026-01-04T22:16:10.638Z] [INFO] GET /js/list.js 200 6ms +[2026-01-04T22:16:10.642Z] [INFO] GET /js/shortcuts.js 304 1ms +[2026-01-04T22:16:10.646Z] [INFO] GET /js/undo.js 304 1ms +[2026-01-04T22:16:10.691Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-04T22:16:10.697Z] [INFO] GET /js/proposals.js 304 1ms +[2026-01-04T22:16:10.705Z] [INFO] GET /js/notifications.js 304 2ms +[2026-01-04T22:16:10.718Z] [INFO] GET /js/gitea.js 304 2ms +[2026-01-04T22:16:10.730Z] [INFO] GET /js/knowledge.js 304 2ms +[2026-01-04T22:16:10.732Z] [INFO] GET /js/coding.js 304 3ms +[2026-01-04T22:16:10.749Z] [INFO] GET /js/mobile.js 304 2ms +[2026-01-04T22:16:10.752Z] [INFO] GET /js/utils.js 304 1ms +[2026-01-04T22:16:10.831Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-04T22:16:10.854Z] [INFO] GET /assets/icons/task.svg 200 4ms +[2026-01-04T22:16:10.861Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-04T22:16:10.938Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-04T22:16:10.988Z] [INFO] Socket connected: momohomma@googlemail.com (JOcIK4g0uqZvPPLHAAAN) +[2026-01-04T22:16:11.004Z] [INFO] GET /api/projects 304 7ms +[2026-01-04T22:16:11.074Z] [INFO] momohomma@googlemail.com joined project:[object Object] +[2026-01-04T22:16:11.091Z] [INFO] GET /api/labels/2 304 10ms +[2026-01-04T22:16:11.097Z] [INFO] GET /api/columns/2 304 15ms +[2026-01-04T22:16:11.103Z] [INFO] GET /api/stats/dashboard?projectId=2 304 4ms +[2026-01-04T22:16:11.117Z] [INFO] GET /api/tasks/project/2 304 13ms +[2026-01-04T22:16:11.207Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-04T22:16:11.271Z] [INFO] GET /api/notifications 304 12ms +[2026-01-04T22:16:11.343Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-04T22:16:12.870Z] [INFO] GET /sw.js 200 4ms +[2026-01-04T22:16:12.959Z] [INFO] GET / 304 2ms +[2026-01-04T22:16:12.965Z] [INFO] GET /css/variables.css 304 2ms +[2026-01-04T22:16:12.967Z] [INFO] GET /index.html 200 6ms +[2026-01-04T22:16:13.012Z] [INFO] GET /css/base.css 304 1ms +[2026-01-04T22:16:13.018Z] [INFO] GET /css/components.css 304 2ms +[2026-01-04T22:16:13.066Z] [INFO] GET /css/modal.css 304 2ms +[2026-01-04T22:16:13.068Z] [INFO] GET /css/board.css 304 3ms +[2026-01-04T22:16:13.075Z] [INFO] GET /css/calendar.css 304 3ms +[2026-01-04T22:16:13.119Z] [INFO] GET /css/responsive.css 304 1ms +[2026-01-04T22:16:13.124Z] [INFO] GET /js/utils.js 304 2ms +[2026-01-04T22:16:13.127Z] [INFO] GET /js/app.js 304 1ms +[2026-01-04T22:16:13.173Z] [INFO] GET /js/api.js 304 2ms +[2026-01-04T22:16:13.178Z] [INFO] GET /js/auth.js 304 1ms +[2026-01-04T22:16:13.187Z] [INFO] GET /js/store.js 304 1ms +[2026-01-04T22:16:13.219Z] [INFO] GET /js/sync.js 304 1ms +[2026-01-04T22:16:13.238Z] [INFO] GET /js/offline.js 304 2ms +[2026-01-04T22:16:13.241Z] [INFO] GET /js/board.js 304 1ms +[2026-01-04T22:16:13.270Z] [INFO] GET /js/task-modal.js 304 1ms +[2026-01-04T22:16:13.294Z] [INFO] GET /js/calendar.js 304 2ms +[2026-01-04T22:16:13.297Z] [INFO] GET /js/list.js 304 1ms +[2026-01-04T22:16:13.318Z] [INFO] GET /js/shortcuts.js 304 2ms +[2026-01-04T22:16:13.345Z] [INFO] GET /js/undo.js 304 1ms +[2026-01-04T22:16:13.350Z] [INFO] GET /js/tour.js 304 1ms +[2026-01-04T22:16:13.370Z] [INFO] GET /js/admin.js 304 1ms +[2026-01-04T22:16:13.398Z] [INFO] GET /js/proposals.js 304 1ms +[2026-01-04T22:16:13.405Z] [INFO] GET /js/notifications.js 304 1ms +[2026-01-04T22:16:13.418Z] [INFO] GET /js/gitea.js 304 1ms +[2026-01-04T22:16:13.450Z] [INFO] GET /js/knowledge.js 304 1ms +[2026-01-04T22:16:13.457Z] [INFO] GET /js/coding.js 304 2ms +[2026-01-04T22:16:13.470Z] [INFO] GET /js/mobile.js 304 2ms +[2026-01-04T22:16:13.503Z] [INFO] GET /css/list.css 304 2ms +[2026-01-04T22:16:13.512Z] [INFO] GET /css/mobile.css 304 1ms +[2026-01-04T22:16:13.523Z] [INFO] GET /css/admin.css 304 2ms +[2026-01-04T22:16:13.558Z] [INFO] GET /css/proposals.css 304 1ms +[2026-01-04T22:16:13.574Z] [INFO] GET /css/notifications.css 304 1ms +[2026-01-04T22:16:13.576Z] [INFO] GET /css/gitea.css 304 2ms +[2026-01-04T22:16:13.613Z] [INFO] GET /css/knowledge.css 304 2ms +[2026-01-04T22:16:13.625Z] [INFO] GET /css/coding.css 304 2ms +[2026-01-04T22:16:16.855Z] [INFO] Logout: momohomma@googlemail.com +[2026-01-04T22:16:16.856Z] [INFO] POST /api/auth/logout 200 7ms +[2026-01-04T22:16:16.862Z] [INFO] Logout: momohomma@googlemail.com +[2026-01-04T22:16:16.863Z] [INFO] POST /api/auth/logout 200 4ms +[2026-01-04T22:16:16.905Z] [INFO] Socket disconnected: momohomma@googlemail.com (JOcIK4g0uqZvPPLHAAAN) +[2026-01-04T22:17:29.846Z] [INFO] GET / 304 2ms +[2026-01-04T22:17:29.892Z] [INFO] GET /css/variables.css 304 2ms +[2026-01-04T22:17:29.923Z] [INFO] GET /css/base.css 304 2ms +[2026-01-04T22:17:29.951Z] [INFO] GET /css/components.css 304 1ms +[2026-01-04T22:17:29.964Z] [INFO] GET /css/board.css 304 2ms +[2026-01-04T22:17:29.965Z] [INFO] GET /css/modal.css 304 2ms +[2026-01-04T22:17:29.971Z] [INFO] GET /css/list.css 304 1ms +[2026-01-04T22:17:29.973Z] [INFO] GET /css/admin.css 304 1ms +[2026-01-04T22:17:29.974Z] [INFO] GET /css/calendar.css 304 1ms +[2026-01-04T22:17:29.980Z] [INFO] GET /css/proposals.css 304 1ms +[2026-01-04T22:17:29.995Z] [INFO] GET /css/gitea.css 304 1ms +[2026-01-04T22:17:29.997Z] [INFO] GET /css/notifications.css 304 2ms +[2026-01-04T22:17:30.003Z] [INFO] GET /css/knowledge.css 304 5ms +[2026-01-04T22:17:30.007Z] [INFO] GET /css/coding.css 304 7ms +[2026-01-04T22:17:30.017Z] [INFO] GET /css/responsive.css 304 2ms +[2026-01-04T22:17:30.019Z] [INFO] GET /css/mobile.css 304 1ms +[2026-01-04T22:17:30.027Z] [INFO] GET /js/app.js 304 0ms +[2026-01-04T22:17:30.067Z] [INFO] GET /js/auth.js 304 2ms +[2026-01-04T22:17:30.071Z] [INFO] GET /js/store.js 304 2ms +[2026-01-04T22:17:30.074Z] [INFO] GET /js/api.js 304 1ms +[2026-01-04T22:17:30.077Z] [INFO] GET /js/board.js 304 2ms +[2026-01-04T22:17:30.080Z] [INFO] GET /js/offline.js 304 1ms +[2026-01-04T22:17:30.084Z] [INFO] GET /js/sync.js 304 2ms +[2026-01-04T22:17:30.113Z] [INFO] GET /js/task-modal.js 304 2ms +[2026-01-04T22:17:30.124Z] [INFO] GET /js/calendar.js 304 2ms +[2026-01-04T22:17:30.129Z] [INFO] GET /js/undo.js 304 2ms +[2026-01-04T22:17:30.132Z] [INFO] GET /js/admin.js 304 2ms +[2026-01-04T22:17:30.134Z] [INFO] GET /js/list.js 304 1ms +[2026-01-04T22:17:30.136Z] [INFO] GET /js/shortcuts.js 304 1ms +[2026-01-04T22:17:30.143Z] [INFO] GET /js/proposals.js 304 1ms +[2026-01-04T22:17:30.154Z] [INFO] GET /js/notifications.js 304 2ms +[2026-01-04T22:17:30.159Z] [INFO] GET /js/gitea.js 304 1ms +[2026-01-04T22:17:30.163Z] [INFO] GET /js/knowledge.js 304 3ms +[2026-01-04T22:17:30.166Z] [INFO] GET /js/mobile.js 304 2ms +[2026-01-04T22:17:30.167Z] [INFO] GET /js/coding.js 304 1ms +[2026-01-04T22:17:30.173Z] [INFO] GET /js/utils.js 304 1ms +[2026-01-04T22:17:30.218Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-04T22:17:30.224Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-04T22:17:30.227Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-04T22:17:30.265Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-04T22:17:30.306Z] [INFO] GET /api/projects 304 9ms +[2026-01-04T22:17:30.312Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (szjE_5Gsfb5BMOiVAAAP) +[2026-01-04T22:17:30.338Z] [INFO] GET /api/stats/dashboard?projectId=2 304 6ms +[2026-01-04T22:17:30.358Z] [INFO] GET /api/tasks/project/2 304 18ms +[2026-01-04T22:17:30.360Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-04T22:17:30.363Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-04T22:17:30.372Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-04T22:17:30.416Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 8ms +[2026-01-04T22:17:30.461Z] [INFO] GET /api/notifications 304 6ms +[2026-01-04T22:17:30.496Z] [INFO] GET /api/knowledge/categories 304 4ms +[2026-01-04T22:17:31.943Z] [INFO] GET /sw.js 304 1ms +[2026-01-04T22:17:33.082Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-04T22:17:35.191Z] [INFO] GET / 200 5ms +[2026-01-04T22:17:35.246Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (szjE_5Gsfb5BMOiVAAAP) +[2026-01-04T22:17:35.267Z] [INFO] GET /css/components.css 200 7ms +[2026-01-04T22:17:35.268Z] [INFO] GET /css/variables.css 200 7ms +[2026-01-04T22:17:35.270Z] [INFO] GET /css/modal.css 200 10ms +[2026-01-04T22:17:35.275Z] [INFO] GET /css/calendar.css 200 10ms +[2026-01-04T22:17:35.277Z] [INFO] GET /css/board.css 200 6ms +[2026-01-04T22:17:35.279Z] [INFO] GET /css/base.css 200 6ms +[2026-01-04T22:17:35.300Z] [INFO] GET /css/list.css 200 3ms +[2026-01-04T22:17:35.321Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-04T22:17:35.328Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-04T22:17:35.334Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-04T22:17:35.336Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-04T22:17:35.343Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-04T22:17:35.351Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-04T22:17:35.386Z] [INFO] GET /js/app.js 200 20ms +[2026-01-04T22:17:35.388Z] [INFO] GET /css/responsive.css 200 24ms +[2026-01-04T22:17:35.390Z] [INFO] GET /css/mobile.css 200 7ms +[2026-01-04T22:17:35.452Z] [INFO] GET /js/store.js 200 3ms +[2026-01-04T22:17:35.462Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-04T22:17:35.464Z] [INFO] GET /js/sync.js 200 9ms +[2026-01-04T22:17:35.466Z] [INFO] GET /js/offline.js 200 9ms +[2026-01-04T22:17:35.467Z] [INFO] GET /js/api.js 200 8ms +[2026-01-04T22:17:35.474Z] [INFO] GET /js/board.js 200 13ms +[2026-01-04T22:17:35.495Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-04T22:17:35.499Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-04T22:17:35.502Z] [INFO] GET /js/list.js 200 5ms +[2026-01-04T22:17:35.504Z] [INFO] GET /js/shortcuts.js 200 10ms +[2026-01-04T22:17:35.506Z] [INFO] GET /js/undo.js 200 5ms +[2026-01-04T22:17:35.524Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-04T22:17:35.530Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-04T22:17:35.529Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-04T22:17:35.534Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-04T22:17:35.535Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-04T22:17:35.541Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-04T22:17:35.554Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-04T22:17:35.562Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-04T22:17:35.611Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-04T22:17:35.616Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-04T22:17:35.620Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-04T22:17:35.658Z] [INFO] GET /api/auth/users 304 8ms +[2026-01-04T22:17:35.694Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (OVt2Jl8B_ddlJcMmAAAR) +[2026-01-04T22:17:35.702Z] [INFO] GET /api/projects 304 6ms +[2026-01-04T22:17:35.735Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-04T22:17:35.758Z] [INFO] GET /api/tasks/project/2 304 20ms +[2026-01-04T22:17:35.762Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-04T22:17:35.768Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-04T22:17:35.773Z] [INFO] GET /api/stats/dashboard?projectId=2 304 9ms +[2026-01-04T22:17:35.806Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-04T22:17:35.843Z] [INFO] GET /api/notifications 304 8ms +[2026-01-04T22:17:35.884Z] [INFO] GET /api/knowledge/categories 304 11ms +[2026-01-04T22:17:38.548Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-04T22:17:40.968Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (OVt2Jl8B_ddlJcMmAAAR) +[2026-01-04T22:17:48.659Z] [INFO] GET / 200 5ms +[2026-01-04T22:17:48.727Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-04T22:17:48.757Z] [INFO] GET /css/base.css 200 2ms +[2026-01-04T22:17:48.801Z] [INFO] GET /css/components.css 200 14ms +[2026-01-04T22:17:48.803Z] [INFO] GET /css/board.css 200 15ms +[2026-01-04T22:17:48.805Z] [INFO] GET /css/modal.css 200 16ms +[2026-01-04T22:17:48.806Z] [INFO] GET /css/calendar.css 200 13ms +[2026-01-04T22:17:48.810Z] [INFO] GET /css/admin.css 200 8ms +[2026-01-04T22:17:48.810Z] [INFO] GET /css/list.css 200 3ms +[2026-01-04T22:17:48.834Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-04T22:17:48.837Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-04T22:17:48.848Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-04T22:17:48.866Z] [INFO] GET /css/coding.css 200 8ms +[2026-01-04T22:17:48.875Z] [INFO] GET /css/mobile.css 200 6ms +[2026-01-04T22:17:48.875Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-04T22:17:48.877Z] [INFO] GET /css/responsive.css 200 6ms +[2026-01-04T22:17:48.886Z] [INFO] GET /js/app.js 200 3ms +[2026-01-04T22:17:48.966Z] [INFO] GET /js/store.js 200 6ms +[2026-01-04T22:17:48.969Z] [INFO] GET /js/api.js 200 7ms +[2026-01-04T22:17:48.970Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-04T22:17:48.972Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-04T22:17:48.975Z] [INFO] GET /js/board.js 200 7ms +[2026-01-04T22:17:48.977Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-04T22:17:48.995Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-04T22:17:49.002Z] [INFO] GET /js/list.js 200 4ms +[2026-01-04T22:17:49.004Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-04T22:17:49.006Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-04T22:17:49.009Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-04T22:17:49.026Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-04T22:17:49.027Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-04T22:17:49.031Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-04T22:17:49.036Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-04T22:17:49.038Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-04T22:17:49.053Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-04T22:17:49.064Z] [INFO] GET /js/mobile.js 200 7ms +[2026-01-04T22:17:49.067Z] [INFO] GET /js/utils.js 200 7ms +[2026-01-04T22:17:49.116Z] [INFO] GET /sw.js 200 2ms +[2026-01-04T22:17:49.127Z] [INFO] GET /assets/icons/task.svg 200 4ms +[2026-01-04T22:17:49.155Z] [INFO] GET / 304 1ms +[2026-01-04T22:17:49.161Z] [INFO] GET /css/variables.css 304 2ms +[2026-01-04T22:17:49.167Z] [INFO] GET /index.html 200 5ms +[2026-01-04T22:17:49.186Z] [INFO] GET /css/base.css 304 1ms +[2026-01-04T22:17:49.190Z] [INFO] GET /css/components.css 304 1ms +[2026-01-04T22:17:49.204Z] [INFO] GET /css/board.css 304 1ms +[2026-01-04T22:17:49.218Z] [INFO] GET /css/modal.css 304 1ms +[2026-01-04T22:17:49.223Z] [INFO] GET /css/calendar.css 304 1ms +[2026-01-04T22:17:49.236Z] [INFO] GET /css/responsive.css 304 2ms +[2026-01-04T22:17:49.248Z] [INFO] GET /js/app.js 304 2ms +[2026-01-04T22:17:49.256Z] [INFO] GET /js/utils.js 304 2ms +[2026-01-04T22:17:49.265Z] [INFO] GET /js/api.js 304 1ms +[2026-01-04T22:17:49.280Z] [INFO] GET /js/auth.js 304 2ms +[2026-01-04T22:17:49.286Z] [INFO] GET /js/store.js 304 1ms +[2026-01-04T22:17:49.295Z] [INFO] GET /js/sync.js 304 2ms +[2026-01-04T22:17:49.312Z] [INFO] GET /js/offline.js 304 2ms +[2026-01-04T22:17:49.316Z] [INFO] GET /js/board.js 304 2ms +[2026-01-04T22:17:49.343Z] [INFO] GET /js/calendar.js 304 2ms +[2026-01-04T22:17:49.351Z] [INFO] GET /js/task-modal.js 304 1ms +[2026-01-04T22:17:49.355Z] [INFO] GET /js/list.js 304 2ms +[2026-01-04T22:17:49.384Z] [INFO] GET /js/shortcuts.js 304 2ms +[2026-01-04T22:17:49.393Z] [INFO] GET /js/tour.js 200 6ms +[2026-01-04T22:17:49.394Z] [INFO] GET /js/undo.js 304 3ms +[2026-01-04T22:17:49.419Z] [INFO] GET /js/admin.js 304 2ms +[2026-01-04T22:17:49.426Z] [INFO] GET /js/proposals.js 304 1ms +[2026-01-04T22:17:49.429Z] [INFO] GET /js/notifications.js 304 1ms +[2026-01-04T22:17:49.450Z] [INFO] GET /js/gitea.js 304 1ms +[2026-01-04T22:17:49.456Z] [INFO] GET /js/knowledge.js 304 2ms +[2026-01-04T22:17:49.460Z] [INFO] GET /js/coding.js 304 1ms +[2026-01-04T22:17:49.482Z] [INFO] GET /js/mobile.js 304 1ms +[2026-01-04T22:17:49.487Z] [INFO] GET /css/list.css 304 1ms +[2026-01-04T22:17:49.494Z] [INFO] GET /css/mobile.css 304 1ms +[2026-01-04T22:17:49.513Z] [INFO] GET /css/admin.css 304 2ms +[2026-01-04T22:17:49.518Z] [INFO] GET /css/proposals.css 304 1ms +[2026-01-04T22:17:49.528Z] [INFO] GET /css/notifications.css 304 1ms +[2026-01-04T22:17:49.544Z] [INFO] GET /css/gitea.css 304 2ms +[2026-01-04T22:17:49.552Z] [INFO] GET /css/knowledge.css 304 2ms +[2026-01-04T22:17:49.560Z] [INFO] GET /css/coding.css 304 1ms +[2026-01-04T22:17:53.285Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-04T22:17:53.286Z] [INFO] POST /api/auth/login 200 451ms +[2026-01-04T22:17:53.327Z] [INFO] GET /api/auth/users 200 7ms +[2026-01-04T22:17:53.362Z] [INFO] GET /api/projects 200 7ms +[2026-01-04T22:17:53.366Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (_8I7Ec5CR20SZeGzAAAT) +[2026-01-04T22:17:53.418Z] [INFO] GET /api/tasks/project/2 200 22ms +[2026-01-04T22:17:53.424Z] [INFO] GET /api/stats/dashboard?projectId=2 200 5ms +[2026-01-04T22:17:53.428Z] [INFO] GET /api/columns/2 200 3ms +[2026-01-04T22:17:53.436Z] [INFO] GET /api/labels/2 200 4ms +[2026-01-04T22:17:53.437Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-04T22:17:53.491Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 9ms +[2026-01-04T22:17:53.532Z] [INFO] GET /api/notifications 200 8ms +[2026-01-04T22:17:53.571Z] [INFO] GET /api/knowledge/categories 200 7ms +[2026-01-04T22:17:55.981Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-04T22:18:00.107Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-04T22:18:03.173Z] [INFO] GET /api/knowledge/entries?categoryId=16 200 9ms +[2026-01-04T22:18:04.179Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-04T22:18:16.336Z] [INFO] GET /api/knowledge/entries?categoryId=15 200 4ms +[2026-01-04T22:18:17.354Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-04T22:18:17.664Z] [INFO] GET / 304 1ms +[2026-01-04T22:18:17.697Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (_8I7Ec5CR20SZeGzAAAT) +[2026-01-04T22:18:17.710Z] [INFO] GET /css/variables.css 304 1ms +[2026-01-04T22:18:17.717Z] [INFO] GET /css/base.css 304 2ms +[2026-01-04T22:18:17.720Z] [INFO] GET /css/components.css 304 3ms +[2026-01-04T22:18:17.722Z] [INFO] GET /css/modal.css 304 3ms +[2026-01-04T22:18:17.724Z] [INFO] GET /css/board.css 304 2ms +[2026-01-04T22:18:17.729Z] [INFO] GET /css/calendar.css 304 1ms +[2026-01-04T22:18:17.736Z] [INFO] GET /css/list.css 304 1ms +[2026-01-04T22:18:17.745Z] [INFO] GET /css/admin.css 304 1ms +[2026-01-04T22:18:17.756Z] [INFO] GET /css/proposals.css 304 3ms +[2026-01-04T22:18:17.761Z] [INFO] GET /css/gitea.css 304 2ms +[2026-01-04T22:18:17.762Z] [INFO] GET /css/coding.css 304 2ms +[2026-01-04T22:18:17.763Z] [INFO] GET /css/notifications.css 304 2ms +[2026-01-04T22:18:17.768Z] [INFO] GET /css/knowledge.css 304 1ms +[2026-01-04T22:18:17.775Z] [INFO] GET /css/responsive.css 304 1ms +[2026-01-04T22:18:17.790Z] [INFO] GET /css/mobile.css 304 4ms +[2026-01-04T22:18:17.798Z] [INFO] GET /js/app.js 304 4ms +[2026-01-04T22:18:17.867Z] [INFO] GET /js/auth.js 304 6ms +[2026-01-04T22:18:17.869Z] [INFO] GET /js/store.js 304 4ms +[2026-01-04T22:18:17.874Z] [INFO] GET /js/api.js 304 3ms +[2026-01-04T22:18:17.879Z] [INFO] GET /js/sync.js 304 3ms +[2026-01-04T22:18:17.897Z] [INFO] GET /js/offline.js 304 16ms +[2026-01-04T22:18:17.906Z] [INFO] GET /js/board.js 304 2ms +[2026-01-04T22:18:17.911Z] [INFO] GET /js/task-modal.js 304 2ms +[2026-01-04T22:18:17.916Z] [INFO] GET /js/calendar.js 304 1ms +[2026-01-04T22:18:17.919Z] [INFO] GET /js/shortcuts.js 304 1ms +[2026-01-04T22:18:17.925Z] [INFO] GET /js/list.js 304 5ms +[2026-01-04T22:18:17.934Z] [INFO] GET /js/undo.js 304 1ms +[2026-01-04T22:18:17.937Z] [INFO] GET /js/admin.js 304 1ms +[2026-01-04T22:18:17.942Z] [INFO] GET /js/notifications.js 304 1ms +[2026-01-04T22:18:17.945Z] [INFO] GET /js/proposals.js 304 3ms +[2026-01-04T22:18:17.948Z] [INFO] GET /js/gitea.js 304 1ms +[2026-01-04T22:18:17.950Z] [INFO] GET /js/knowledge.js 304 1ms +[2026-01-04T22:18:17.964Z] [INFO] GET /js/coding.js 304 2ms +[2026-01-04T22:18:17.967Z] [INFO] GET /js/mobile.js 304 2ms +[2026-01-04T22:18:17.970Z] [INFO] GET /js/utils.js 304 1ms +[2026-01-04T22:18:18.005Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-04T22:18:18.012Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-04T22:18:18.019Z] [INFO] GET /assets/icons/task.svg 304 5ms +[2026-01-04T22:18:18.058Z] [INFO] GET /api/auth/users 304 12ms +[2026-01-04T22:18:18.103Z] [INFO] GET /api/projects 304 10ms +[2026-01-04T22:18:18.112Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (7hsbAXmZJlIaZmbEAAAV) +[2026-01-04T22:18:18.144Z] [INFO] GET /api/stats/dashboard?projectId=2 304 4ms +[2026-01-04T22:18:18.149Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-04T22:18:18.161Z] [INFO] GET /api/tasks/project/2 304 11ms +[2026-01-04T22:18:18.165Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-04T22:18:18.168Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-04T22:18:18.203Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-04T22:18:18.240Z] [INFO] GET /api/notifications 304 5ms +[2026-01-04T22:18:18.283Z] [INFO] GET /api/knowledge/categories 304 10ms +[2026-01-04T22:18:19.747Z] [INFO] GET /sw.js 304 1ms +[2026-01-04T22:18:20.749Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-04T22:18:20.846Z] [INFO] GET /api/knowledge/entries?categoryId=15 304 5ms +[2026-01-04T22:18:21.854Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-04T22:18:51.703Z] [INFO] SIGTERM empfangen, fahre herunter... +[2026-01-04T22:19:01.976Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-04T22:19:02.140Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-04T22:19:02.761Z] [INFO] Datenbank initialisiert +[2026-01-04T22:19:02.773Z] [INFO] Server läuft auf Port 3001 +[2026-01-04T22:19:02.776Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-04T22:19:02.777Z] [INFO] Automatische Backups aktiviert +[2026-01-04T22:19:02.776Z] [INFO] Umgebung: development +[2026-01-04T22:19:02.761Z] [INFO] Admin-Passwort bereits korrekt +[2026-01-04T22:20:02.822Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-04T22-20-02-796Z.db.enc +[2026-01-04T22:20:02.823Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-04T22-20-02-796Z.db.enc +[2026-01-04T22:20:02.837Z] [INFO] Datei sicher gelöscht: backup_2026-01-03T22-03-23-833Z.db.enc +[2026-01-04T22:20:02.824Z] [INFO] Backup erstellt: backup_2026-01-04T22-20-02-796Z.db +[2026-01-04T22:20:02.837Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-03T22-03-23-833Z.db.enc +[2026-01-04T22:20:02.839Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-04T23:06:11.080Z] [INFO] GET / 200 25ms +[2026-01-04T23:06:11.165Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-04T23:06:11.203Z] [INFO] GET /css/base.css 200 5ms +[2026-01-04T23:06:11.214Z] [INFO] GET /css/components.css 200 3ms +[2026-01-04T23:06:11.218Z] [INFO] GET /css/board.css 200 2ms +[2026-01-04T23:06:11.229Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-04T23:06:11.233Z] [INFO] GET /css/list.css 200 7ms +[2026-01-04T23:06:11.234Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-04T23:06:11.238Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-04T23:06:11.268Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-04T23:06:11.273Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-04T23:06:11.276Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-04T23:06:11.277Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-04T23:06:11.282Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-04T23:06:11.290Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-04T23:06:11.298Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-04T23:06:11.315Z] [INFO] GET /js/app.js 200 5ms +[2026-01-04T23:06:11.391Z] [INFO] GET /js/board.js 200 5ms +[2026-01-04T23:06:11.394Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-04T23:06:11.397Z] [INFO] GET /js/api.js 200 7ms +[2026-01-04T23:06:11.399Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-04T23:06:11.402Z] [INFO] GET /js/sync.js 200 7ms +[2026-01-04T23:06:11.403Z] [INFO] GET /js/store.js 200 5ms +[2026-01-04T23:06:11.422Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-04T23:06:11.426Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-04T23:06:11.433Z] [INFO] GET /js/list.js 200 5ms +[2026-01-04T23:06:11.436Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-04T23:06:11.436Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-04T23:06:11.441Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-04T23:06:11.461Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-04T23:06:11.469Z] [INFO] GET /js/notifications.js 200 6ms +[2026-01-04T23:06:11.474Z] [INFO] GET /js/gitea.js 200 9ms +[2026-01-04T23:06:11.476Z] [INFO] GET /js/coding.js 200 9ms +[2026-01-04T23:06:11.478Z] [INFO] GET /js/mobile.js 200 6ms +[2026-01-04T23:06:11.480Z] [INFO] GET /js/knowledge.js 200 7ms +[2026-01-04T23:06:11.494Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-04T23:06:11.558Z] [INFO] GET /assets/icons/task.svg 304 16ms +[2026-01-04T23:06:11.589Z] [INFO] GET /api/auth/users 401 35ms +[2026-01-04T23:06:11.676Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-04T23:06:11.717Z] [INFO] GET /api/auth/users 304 11ms +[2026-01-04T23:06:11.775Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-04T23:06:11.815Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (IVkKuTf5NTJEyV9EAAAB) +[2026-01-04T23:06:11.825Z] [INFO] GET /api/projects 304 5ms +[2026-01-04T23:06:11.874Z] [INFO] GET /api/stats/dashboard?projectId=2 304 10ms +[2026-01-04T23:06:11.877Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-04T23:06:11.898Z] [INFO] GET /api/tasks/project/2 304 20ms +[2026-01-04T23:06:11.913Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-04T23:06:11.919Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-04T23:06:11.990Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 11ms +[2026-01-04T23:06:12.039Z] [INFO] GET /api/notifications 304 15ms +[2026-01-04T23:06:12.085Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-04T23:06:14.839Z] [INFO] GET /api/knowledge/entries?categoryId=15 304 9ms +[2026-01-04T23:06:18.771Z] [INFO] GET / 304 2ms +[2026-01-04T23:06:18.816Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (IVkKuTf5NTJEyV9EAAAB) +[2026-01-04T23:06:18.821Z] [INFO] GET /css/variables.css 304 1ms +[2026-01-04T23:06:18.821Z] [INFO] GET /css/calendar.css 304 1ms +[2026-01-04T23:06:18.823Z] [INFO] GET /css/components.css 304 1ms +[2026-01-04T23:06:18.826Z] [INFO] GET /css/base.css 304 0ms +[2026-01-04T23:06:18.828Z] [INFO] GET /css/modal.css 304 1ms +[2026-01-04T23:06:18.830Z] [INFO] GET /css/board.css 304 1ms +[2026-01-04T23:06:18.853Z] [INFO] GET /css/admin.css 304 2ms +[2026-01-04T23:06:18.861Z] [INFO] GET /css/proposals.css 304 3ms +[2026-01-04T23:06:18.865Z] [INFO] GET /css/list.css 304 5ms +[2026-01-04T23:06:18.867Z] [INFO] GET /css/notifications.css 304 4ms +[2026-01-04T23:06:18.871Z] [INFO] GET /css/gitea.css 304 1ms +[2026-01-04T23:06:18.874Z] [INFO] GET /css/coding.css 304 2ms +[2026-01-04T23:06:18.884Z] [INFO] GET /css/knowledge.css 304 1ms +[2026-01-04T23:06:18.889Z] [INFO] GET /css/responsive.css 304 1ms +[2026-01-04T23:06:18.894Z] [INFO] GET /css/mobile.css 304 2ms +[2026-01-04T23:06:18.907Z] [INFO] GET /js/app.js 304 2ms +[2026-01-04T23:06:18.975Z] [INFO] GET /js/offline.js 304 2ms +[2026-01-04T23:06:18.979Z] [INFO] GET /js/sync.js 304 3ms +[2026-01-04T23:06:18.982Z] [INFO] GET /js/store.js 304 2ms +[2026-01-04T23:06:18.985Z] [INFO] GET /js/auth.js 304 2ms +[2026-01-04T23:06:18.987Z] [INFO] GET /js/board.js 304 2ms +[2026-01-04T23:06:18.990Z] [INFO] GET /js/api.js 304 1ms +[2026-01-04T23:06:19.008Z] [INFO] GET /js/calendar.js 304 1ms +[2026-01-04T23:06:19.013Z] [INFO] GET /js/task-modal.js 304 2ms +[2026-01-04T23:06:19.021Z] [INFO] GET /js/list.js 304 1ms +[2026-01-04T23:06:19.024Z] [INFO] GET /js/undo.js 304 1ms +[2026-01-04T23:06:19.028Z] [INFO] GET /js/shortcuts.js 304 2ms +[2026-01-04T23:06:19.031Z] [INFO] GET /js/admin.js 304 0ms +[2026-01-04T23:06:19.038Z] [INFO] GET /js/proposals.js 304 1ms +[2026-01-04T23:06:19.047Z] [INFO] GET /js/notifications.js 304 1ms +[2026-01-04T23:06:19.049Z] [INFO] GET /js/gitea.js 304 1ms +[2026-01-04T23:06:19.052Z] [INFO] GET /js/knowledge.js 304 1ms +[2026-01-04T23:06:19.060Z] [INFO] GET /js/coding.js 304 1ms +[2026-01-04T23:06:19.067Z] [INFO] GET /js/mobile.js 304 1ms +[2026-01-04T23:06:19.071Z] [INFO] GET /js/utils.js 304 2ms +[2026-01-04T23:06:19.112Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-04T23:06:19.115Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-04T23:06:19.119Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-04T23:06:19.160Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-04T23:06:19.192Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (GN5SfEhpRvpzwr1-AAAD) +[2026-01-04T23:06:19.202Z] [INFO] GET /api/projects 304 6ms +[2026-01-04T23:06:19.238Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-04T23:06:19.253Z] [INFO] GET /api/tasks/project/2 304 14ms +[2026-01-04T23:06:19.258Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-04T23:06:19.259Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-04T23:06:19.264Z] [INFO] GET /api/stats/dashboard?projectId=2 304 4ms +[2026-01-04T23:06:19.301Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-04T23:06:19.341Z] [INFO] GET /api/notifications 304 9ms +[2026-01-04T23:06:19.382Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-04T23:06:20.853Z] [INFO] GET /sw.js 200 4ms +[2026-01-04T23:06:21.139Z] [INFO] GET /api/knowledge/entries?categoryId=15 304 6ms +[2026-01-04T23:06:22.141Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-04T23:06:23.299Z] [INFO] readCLAUDEmd: Checking path /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-04T23:06:23.301Z] [INFO] readCLAUDEmd: File does not exist: /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-04T23:06:23.302Z] [INFO] Trying fallback path for TaskMate: /app/taskmate-source +[2026-01-04T23:06:23.302Z] [INFO] readCLAUDEmd: Checking path /app/taskmate-source/CLAUDE.md +[2026-01-04T23:06:23.303Z] [INFO] readCLAUDEmd: Successfully read 12158 characters from /app/taskmate-source/CLAUDE.md +[2026-01-04T23:06:23.305Z] [INFO] GET /api/coding/directories 200 11ms +[2026-01-04T23:06:23.365Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-04T23:06:23.365Z] [INFO] Git directory exists: true +[2026-01-04T23:06:23.366Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-04T23:06:23.366Z] [INFO] Git directory exists: true +[2026-01-04T23:06:23.496Z] [INFO] GET /api/coding/directories/3/status 200 136ms +[2026-01-04T23:06:24.316Z] [INFO] POST /api/auth/refresh 200 16ms +[2026-01-04T23:06:28.551Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-04T23:06:31.115Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-04T23:06:34.158Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (GN5SfEhpRvpzwr1-AAAD) +[2026-01-04T23:06:52.590Z] [INFO] GET / 200 8ms +[2026-01-04T23:06:52.646Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-04T23:06:52.669Z] [INFO] GET /css/base.css 200 1ms +[2026-01-04T23:06:52.697Z] [INFO] GET /css/components.css 200 3ms +[2026-01-04T23:06:52.708Z] [INFO] GET /css/board.css 200 4ms +[2026-01-04T23:06:52.712Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-04T23:06:52.716Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-04T23:06:52.718Z] [INFO] GET /css/list.css 200 3ms +[2026-01-04T23:06:52.733Z] [INFO] GET /css/admin.css 200 8ms +[2026-01-04T23:06:52.735Z] [INFO] GET /css/proposals.css 200 7ms +[2026-01-04T23:06:52.769Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-04T23:06:52.777Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-04T23:06:52.782Z] [INFO] GET /css/gitea.css 200 8ms +[2026-01-04T23:06:52.783Z] [INFO] GET /css/knowledge.css 200 8ms +[2026-01-04T23:06:52.785Z] [INFO] GET /css/responsive.css 200 6ms +[2026-01-04T23:06:52.786Z] [INFO] GET /css/mobile.css 200 6ms +[2026-01-04T23:06:52.808Z] [INFO] GET /js/app.js 200 2ms +[2026-01-04T23:06:52.882Z] [INFO] GET /js/api.js 200 9ms +[2026-01-04T23:06:52.889Z] [INFO] GET /js/sync.js 200 10ms +[2026-01-04T23:06:52.894Z] [INFO] GET /js/store.js 200 9ms +[2026-01-04T23:06:52.897Z] [INFO] GET /js/offline.js 200 9ms +[2026-01-04T23:06:52.898Z] [INFO] GET /js/auth.js 200 5ms +[2026-01-04T23:06:52.899Z] [INFO] GET /js/board.js 200 3ms +[2026-01-04T23:06:52.907Z] [INFO] GET /js/task-modal.js 200 1ms +[2026-01-04T23:06:52.921Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-04T23:06:52.925Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-04T23:06:52.932Z] [INFO] GET /js/list.js 200 3ms +[2026-01-04T23:06:52.934Z] [INFO] GET /js/undo.js 200 5ms +[2026-01-04T23:06:52.937Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-04T23:06:52.956Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-04T23:06:52.957Z] [INFO] GET /js/notifications.js 200 7ms +[2026-01-04T23:06:52.960Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-04T23:06:52.966Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-04T23:06:52.967Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-04T23:06:52.969Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-04T23:06:52.982Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-04T23:06:53.032Z] [INFO] GET /sw.js 200 3ms +[2026-01-04T23:06:53.035Z] [INFO] GET /assets/icons/task.svg 200 7ms +[2026-01-04T23:06:53.078Z] [INFO] GET /css/variables.css 304 2ms +[2026-01-04T23:06:53.082Z] [INFO] GET / 304 3ms +[2026-01-04T23:06:53.083Z] [INFO] GET /index.html 200 10ms +[2026-01-04T23:06:53.112Z] [INFO] GET /css/components.css 304 2ms +[2026-01-04T23:06:53.117Z] [INFO] GET /css/board.css 304 2ms +[2026-01-04T23:06:53.123Z] [INFO] GET /css/base.css 304 2ms +[2026-01-04T23:06:53.142Z] [INFO] GET /css/modal.css 304 1ms +[2026-01-04T23:06:53.146Z] [INFO] GET /css/calendar.css 304 2ms +[2026-01-04T23:06:53.161Z] [INFO] GET /css/responsive.css 304 1ms +[2026-01-04T23:06:53.172Z] [INFO] GET /js/app.js 304 0ms +[2026-01-04T23:06:53.174Z] [INFO] GET /js/utils.js 304 1ms +[2026-01-04T23:06:53.190Z] [INFO] GET /js/api.js 304 1ms +[2026-01-04T23:06:53.204Z] [INFO] GET /js/store.js 304 1ms +[2026-01-04T23:06:53.206Z] [INFO] GET /js/auth.js 304 3ms +[2026-01-04T23:06:53.224Z] [INFO] GET /js/sync.js 304 5ms +[2026-01-04T23:06:53.236Z] [INFO] GET /js/offline.js 304 1ms +[2026-01-04T23:06:53.238Z] [INFO] GET /js/board.js 304 1ms +[2026-01-04T23:06:53.252Z] [INFO] GET /js/task-modal.js 304 0ms +[2026-01-04T23:06:53.269Z] [INFO] GET /js/list.js 304 1ms +[2026-01-04T23:06:53.272Z] [INFO] GET /js/calendar.js 304 1ms +[2026-01-04T23:06:53.282Z] [INFO] GET /js/shortcuts.js 304 1ms +[2026-01-04T23:06:53.298Z] [INFO] GET /js/undo.js 304 1ms +[2026-01-04T23:06:53.304Z] [INFO] GET /js/tour.js 200 3ms +[2026-01-04T23:06:53.311Z] [INFO] GET /js/admin.js 304 1ms +[2026-01-04T23:06:53.328Z] [INFO] GET /js/proposals.js 304 1ms +[2026-01-04T23:06:53.333Z] [INFO] GET /js/notifications.js 304 1ms +[2026-01-04T23:06:53.342Z] [INFO] GET /js/gitea.js 304 1ms +[2026-01-04T23:06:53.363Z] [INFO] GET /js/knowledge.js 304 3ms +[2026-01-04T23:06:53.366Z] [INFO] GET /js/coding.js 304 2ms +[2026-01-04T23:06:53.374Z] [INFO] GET /js/mobile.js 304 2ms +[2026-01-04T23:06:53.406Z] [INFO] GET /css/list.css 304 4ms +[2026-01-04T23:06:53.412Z] [INFO] GET /css/mobile.css 304 3ms +[2026-01-04T23:06:53.415Z] [INFO] GET /css/admin.css 304 1ms +[2026-01-04T23:06:53.434Z] [INFO] GET /css/proposals.css 304 2ms +[2026-01-04T23:06:53.448Z] [INFO] GET /css/notifications.css 304 2ms +[2026-01-04T23:06:53.465Z] [INFO] GET /css/gitea.css 304 2ms +[2026-01-04T23:06:53.468Z] [INFO] GET /css/knowledge.css 304 1ms +[2026-01-04T23:06:53.477Z] [INFO] GET /css/coding.css 304 2ms +[2026-01-04T23:06:57.679Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-04T23:06:57.680Z] [INFO] POST /api/auth/login 200 441ms +[2026-01-04T23:06:57.722Z] [INFO] GET /api/auth/users 200 6ms +[2026-01-04T23:06:57.761Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (0ZMPOC-kf3nkLTEYAAAF) +[2026-01-04T23:06:57.771Z] [INFO] GET /api/projects 200 5ms +[2026-01-04T23:06:57.827Z] [INFO] GET /api/columns/2 200 7ms +[2026-01-04T23:06:57.832Z] [INFO] GET /api/stats/dashboard?projectId=2 200 11ms +[2026-01-04T23:06:57.850Z] [INFO] GET /api/tasks/project/2 200 18ms +[2026-01-04T23:06:57.853Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-04T23:06:57.856Z] [INFO] GET /api/labels/2 200 5ms +[2026-01-04T23:06:57.922Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 3ms +[2026-01-04T23:06:57.961Z] [INFO] GET /api/notifications 200 7ms +[2026-01-04T23:06:57.996Z] [INFO] GET /api/knowledge/categories 200 3ms +[2026-01-04T23:07:00.297Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-04T23:07:07.726Z] [INFO] GET / 200 6ms +[2026-01-04T23:07:07.796Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (0ZMPOC-kf3nkLTEYAAAF) +[2026-01-04T23:07:07.804Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-04T23:07:07.813Z] [INFO] GET /css/base.css 200 5ms +[2026-01-04T23:07:07.817Z] [INFO] GET /css/components.css 200 6ms +[2026-01-04T23:07:07.820Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-04T23:07:07.824Z] [INFO] GET /css/board.css 200 8ms +[2026-01-04T23:07:07.826Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-04T23:07:07.844Z] [INFO] GET /css/list.css 200 3ms +[2026-01-04T23:07:07.853Z] [INFO] GET /css/admin.css 200 6ms +[2026-01-04T23:07:07.873Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-04T23:07:07.880Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-04T23:07:07.901Z] [INFO] GET /css/responsive.css 200 7ms +[2026-01-04T23:07:07.902Z] [INFO] GET /css/gitea.css 200 8ms +[2026-01-04T23:07:07.905Z] [INFO] GET /css/coding.css 200 8ms +[2026-01-04T23:07:07.908Z] [INFO] GET /css/knowledge.css 200 9ms +[2026-01-04T23:07:07.909Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-04T23:07:07.931Z] [INFO] GET /js/app.js 200 3ms +[2026-01-04T23:07:07.996Z] [INFO] GET /js/auth.js 200 9ms +[2026-01-04T23:07:08.000Z] [INFO] GET /js/offline.js 200 8ms +[2026-01-04T23:07:08.002Z] [INFO] GET /js/sync.js 200 7ms +[2026-01-04T23:07:08.005Z] [INFO] GET /js/board.js 200 7ms +[2026-01-04T23:07:08.007Z] [INFO] GET /js/store.js 200 6ms +[2026-01-04T23:07:08.008Z] [INFO] GET /js/api.js 200 4ms +[2026-01-04T23:07:08.028Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-04T23:07:08.036Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-04T23:07:08.037Z] [INFO] GET /js/list.js 200 3ms +[2026-01-04T23:07:08.049Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-04T23:07:08.066Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-04T23:07:08.069Z] [INFO] GET /js/admin.js 200 5ms +[2026-01-04T23:07:08.074Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-04T23:07:08.076Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-04T23:07:08.080Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-04T23:07:08.087Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-04T23:07:08.099Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-04T23:07:08.121Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-04T23:07:08.129Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-04T23:07:08.182Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-04T23:07:08.187Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-04T23:07:08.191Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-04T23:07:08.220Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-04T23:07:08.260Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (RRJVR0iH_34c8DYQAAAH) +[2026-01-04T23:07:08.271Z] [INFO] GET /api/projects 304 9ms +[2026-01-04T23:07:08.311Z] [INFO] GET /api/columns/2 304 8ms +[2026-01-04T23:07:08.331Z] [INFO] GET /api/tasks/project/2 304 19ms +[2026-01-04T23:07:08.335Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-04T23:07:08.341Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-04T23:07:08.346Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-04T23:07:08.392Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 8ms +[2026-01-04T23:07:08.435Z] [INFO] GET /api/notifications 304 10ms +[2026-01-04T23:07:08.473Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-04T23:07:11.196Z] [INFO] GET / 200 6ms +[2026-01-04T23:07:11.260Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (RRJVR0iH_34c8DYQAAAH) +[2026-01-04T23:07:11.276Z] [INFO] GET /css/base.css 200 8ms +[2026-01-04T23:07:11.281Z] [INFO] GET /css/modal.css 200 10ms +[2026-01-04T23:07:11.284Z] [INFO] GET /css/variables.css 200 11ms +[2026-01-04T23:07:11.287Z] [INFO] GET /css/components.css 200 8ms +[2026-01-04T23:07:11.289Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-04T23:07:11.292Z] [INFO] GET /css/board.css 200 6ms +[2026-01-04T23:07:11.307Z] [INFO] GET /css/list.css 200 2ms +[2026-01-04T23:07:11.316Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-04T23:07:11.334Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-04T23:07:11.340Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-04T23:07:11.345Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-04T23:07:11.347Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-04T23:07:11.349Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-04T23:07:11.350Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-04T23:07:11.363Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-04T23:07:11.372Z] [INFO] GET /js/app.js 200 2ms +[2026-01-04T23:07:11.454Z] [INFO] GET /js/sync.js 200 8ms +[2026-01-04T23:07:11.456Z] [INFO] GET /js/store.js 200 7ms +[2026-01-04T23:07:11.458Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-04T23:07:11.461Z] [INFO] GET /js/board.js 200 8ms +[2026-01-04T23:07:11.463Z] [INFO] GET /js/api.js 200 6ms +[2026-01-04T23:07:11.466Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-04T23:07:11.486Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-04T23:07:11.487Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-04T23:07:11.494Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-04T23:07:11.495Z] [INFO] GET /js/list.js 200 3ms +[2026-01-04T23:07:11.513Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-04T23:07:11.528Z] [INFO] GET /js/admin.js 200 8ms +[2026-01-04T23:07:11.531Z] [INFO] GET /js/notifications.js 200 8ms +[2026-01-04T23:07:11.533Z] [INFO] GET /js/proposals.js 200 7ms +[2026-01-04T23:07:11.534Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-04T23:07:11.545Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-04T23:07:11.551Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-04T23:07:11.560Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-04T23:07:11.566Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-04T23:07:11.607Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-04T23:07:11.611Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-04T23:07:11.618Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-04T23:07:11.658Z] [INFO] GET /api/auth/users 304 12ms +[2026-01-04T23:07:11.694Z] [INFO] GET /api/projects 304 9ms +[2026-01-04T23:07:11.704Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (B9HjuuL1PcPTsoixAAAJ) +[2026-01-04T23:07:11.735Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-04T23:07:11.754Z] [INFO] GET /api/tasks/project/2 304 19ms +[2026-01-04T23:07:11.760Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-04T23:07:11.764Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-04T23:07:11.772Z] [INFO] GET /api/stats/dashboard?projectId=2 304 6ms +[2026-01-04T23:07:11.806Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-04T23:07:11.847Z] [INFO] GET /api/notifications 304 9ms +[2026-01-04T23:07:11.885Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-04T23:07:13.788Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-04T23:07:14.957Z] [INFO] GET /api/knowledge/entries?categoryId=15 200 11ms +[2026-01-04T23:07:15.957Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-04T23:07:24.309Z] [INFO] GET /css/components.css 304 2ms +[2026-01-04T23:07:24.310Z] [INFO] GET /css/calendar.css 304 2ms +[2026-01-04T23:07:24.315Z] [INFO] GET /css/base.css 304 1ms +[2026-01-04T23:07:24.316Z] [INFO] GET /css/board.css 304 1ms +[2026-01-04T23:07:24.319Z] [INFO] GET /css/variables.css 304 2ms +[2026-01-04T23:07:24.319Z] [INFO] GET /css/modal.css 304 1ms +[2026-01-04T23:07:24.336Z] [INFO] GET /css/list.css 304 0ms +[2026-01-04T23:07:24.342Z] [INFO] GET /css/admin.css 304 1ms +[2026-01-04T23:07:24.346Z] [INFO] GET /css/notifications.css 304 1ms +[2026-01-04T23:07:24.349Z] [INFO] GET /css/proposals.css 304 2ms +[2026-01-04T23:07:24.351Z] [INFO] GET /css/coding.css 304 1ms +[2026-01-04T23:07:24.354Z] [INFO] GET /css/gitea.css 304 1ms +[2026-01-04T23:07:24.364Z] [INFO] GET /css/knowledge.css 304 1ms +[2026-01-04T23:07:24.372Z] [INFO] GET /css/responsive.css 304 1ms +[2026-01-04T23:07:24.373Z] [INFO] GET /css/mobile.css 304 1ms +[2026-01-04T23:07:25.184Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-04T23:07:29.769Z] [INFO] GET / 200 5ms +[2026-01-04T23:07:29.831Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (B9HjuuL1PcPTsoixAAAJ) +[2026-01-04T23:07:29.853Z] [INFO] GET /css/modal.css 200 12ms +[2026-01-04T23:07:29.855Z] [INFO] GET /css/base.css 200 11ms +[2026-01-04T23:07:29.856Z] [INFO] GET /css/variables.css 200 11ms +[2026-01-04T23:07:29.857Z] [INFO] GET /css/components.css 200 11ms +[2026-01-04T23:07:29.858Z] [INFO] GET /css/board.css 200 9ms +[2026-01-04T23:07:29.860Z] [INFO] GET /css/calendar.css 200 9ms +[2026-01-04T23:07:29.886Z] [INFO] GET /css/list.css 200 2ms +[2026-01-04T23:07:29.887Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-04T23:07:29.921Z] [INFO] GET /css/gitea.css 200 8ms +[2026-01-04T23:07:29.926Z] [INFO] GET /css/proposals.css 200 9ms +[2026-01-04T23:07:29.927Z] [INFO] GET /css/notifications.css 200 8ms +[2026-01-04T23:07:29.929Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-04T23:07:29.930Z] [INFO] GET /css/responsive.css 200 5ms +[2026-01-04T23:07:29.933Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-04T23:07:29.950Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-04T23:07:29.959Z] [INFO] GET /js/app.js 200 1ms +[2026-01-04T23:07:30.042Z] [INFO] GET /js/store.js 200 6ms +[2026-01-04T23:07:30.052Z] [INFO] GET /js/api.js 200 13ms +[2026-01-04T23:07:30.053Z] [INFO] GET /js/sync.js 200 13ms +[2026-01-04T23:07:30.062Z] [INFO] GET /js/auth.js 200 16ms +[2026-01-04T23:07:30.066Z] [INFO] GET /js/offline.js 200 16ms +[2026-01-04T23:07:30.073Z] [INFO] GET /js/board.js 200 3ms +[2026-01-04T23:07:30.081Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-04T23:07:30.082Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-04T23:07:30.088Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-04T23:07:30.093Z] [INFO] GET /js/list.js 200 1ms +[2026-01-04T23:07:30.103Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-04T23:07:30.113Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-04T23:07:30.124Z] [INFO] GET /js/notifications.js 200 13ms +[2026-01-04T23:07:30.148Z] [INFO] GET /js/proposals.js 200 12ms +[2026-01-04T23:07:30.164Z] [INFO] GET /js/mobile.js 200 17ms +[2026-01-04T23:07:30.166Z] [INFO] GET /js/gitea.js 200 24ms +[2026-01-04T23:07:30.179Z] [INFO] GET /js/utils.js 200 23ms +[2026-01-04T23:07:30.180Z] [INFO] GET /js/knowledge.js 200 9ms +[2026-01-04T23:07:30.181Z] [INFO] GET /js/coding.js 200 9ms +[2026-01-04T23:07:30.241Z] [INFO] GET /assets/icons/task.svg 200 4ms +[2026-01-04T23:07:31.774Z] [INFO] GET /sw.js 304 2ms +[2026-01-04T23:07:33.389Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-04T23:07:33.390Z] [INFO] POST /api/auth/login 200 470ms +[2026-01-04T23:07:33.434Z] [INFO] GET /api/auth/users 200 4ms +[2026-01-04T23:07:33.468Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (jv4dGLLSvBT-9_nVAAAL) +[2026-01-04T23:07:33.476Z] [INFO] GET /api/projects 200 5ms +[2026-01-04T23:07:33.515Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-04T23:07:33.523Z] [INFO] GET /api/columns/2 200 13ms +[2026-01-04T23:07:33.529Z] [INFO] GET /api/stats/dashboard?projectId=2 200 12ms +[2026-01-04T23:07:33.532Z] [INFO] GET /api/labels/2 200 15ms +[2026-01-04T23:07:33.546Z] [INFO] GET /api/tasks/project/2 200 13ms +[2026-01-04T23:07:33.614Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 10ms +[2026-01-04T23:07:33.655Z] [INFO] GET /api/notifications 200 6ms +[2026-01-04T23:07:33.700Z] [INFO] GET /api/knowledge/categories 200 9ms +[2026-01-04T23:07:36.070Z] [INFO] POST /api/auth/refresh 200 16ms +[2026-01-04T23:07:38.679Z] [INFO] GET /api/knowledge/entries?categoryId=15 200 6ms +[2026-01-04T23:07:39.694Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-04T23:07:41.849Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-04T23:08:22.009Z] [INFO] POST /api/auth/refresh 200 26ms +[2026-01-04T23:09:31.097Z] [INFO] POST /api/auth/login 400 4ms +[2026-01-04T23:09:36.474Z] [WARN] Login fehlgeschlagen: Falsches Passwort - admin@taskmate.local (Versuch 1) +[2026-01-04T23:09:36.476Z] [INFO] POST /api/auth/login 401 632ms +[2026-01-04T23:10:08.370Z] [INFO] SIGTERM empfangen, fahre herunter... +[2026-01-04T23:10:23.514Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-04T23:10:23.664Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-04T23:10:24.223Z] [INFO] Admin-Passwort bereits korrekt +[2026-01-04T23:10:24.223Z] [INFO] Datenbank initialisiert +[2026-01-04T23:10:24.227Z] [INFO] Server läuft auf Port 3001 +[2026-01-04T23:10:24.228Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-04T23:10:24.229Z] [INFO] Automatische Backups aktiviert +[2026-01-04T23:10:24.228Z] [INFO] Umgebung: development +[2026-01-04T23:10:27.211Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (T6tsW77yzPP4sPTvAAAB) +[2026-01-04T23:10:27.261Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-04T23:11:24.255Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-04T23-11-24-237Z.db.enc +[2026-01-04T23:11:24.256Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-04T23-11-24-237Z.db.enc +[2026-01-04T23:11:24.256Z] [INFO] Backup erstellt: backup_2026-01-04T23-11-24-237Z.db +[2026-01-04T23:11:24.271Z] [INFO] Datei sicher gelöscht: backup_2026-01-03T22-06-27-396Z.db.enc +[2026-01-04T23:11:24.272Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-03T22-06-27-396Z.db.enc +[2026-01-04T23:11:24.273Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-04T23:11:48.455Z] [INFO] GET / 200 18ms +[2026-01-04T23:11:48.518Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (T6tsW77yzPP4sPTvAAAB) +[2026-01-04T23:11:48.532Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-04T23:11:48.567Z] [INFO] GET /css/base.css 200 6ms +[2026-01-04T23:11:48.603Z] [INFO] GET /css/components.css 200 10ms +[2026-01-04T23:11:48.608Z] [INFO] GET /css/board.css 200 9ms +[2026-01-04T23:11:48.615Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-04T23:11:48.617Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-04T23:11:48.651Z] [INFO] GET /css/list.css 200 6ms +[2026-01-04T23:11:48.662Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-04T23:11:48.669Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-04T23:11:48.672Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-04T23:11:48.677Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-04T23:11:48.679Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-04T23:11:48.686Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-04T23:11:48.706Z] [INFO] GET /css/responsive.css 200 8ms +[2026-01-04T23:11:48.711Z] [INFO] GET /css/mobile.css 200 9ms +[2026-01-04T23:11:48.728Z] [INFO] GET /js/app.js 200 3ms +[2026-01-04T23:11:48.803Z] [INFO] GET /js/store.js 200 10ms +[2026-01-04T23:11:48.805Z] [INFO] GET /js/sync.js 200 10ms +[2026-01-04T23:11:48.806Z] [INFO] GET /js/board.js 200 10ms +[2026-01-04T23:11:48.808Z] [INFO] GET /js/api.js 200 8ms +[2026-01-04T23:11:48.811Z] [INFO] GET /js/auth.js 200 9ms +[2026-01-04T23:11:48.813Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-04T23:11:48.836Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-04T23:11:48.842Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-04T23:11:48.846Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-04T23:11:48.849Z] [INFO] GET /js/list.js 200 5ms +[2026-01-04T23:11:48.856Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-04T23:11:48.866Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-04T23:11:48.867Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-04T23:11:48.878Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-04T23:11:48.887Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-04T23:11:48.901Z] [INFO] GET /js/knowledge.js 200 7ms +[2026-01-04T23:11:48.905Z] [INFO] GET /js/coding.js 200 8ms +[2026-01-04T23:11:48.906Z] [INFO] GET /js/mobile.js 200 6ms +[2026-01-04T23:11:48.912Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-04T23:11:49.016Z] [INFO] POST /api/auth/refresh 200 15ms +[2026-01-04T23:11:49.022Z] [INFO] GET /assets/icons/task.svg 304 5ms +[2026-01-04T23:11:49.025Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-04T23:11:49.059Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-04T23:11:49.099Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (LOBPp8O5_qrJ1Z5hAAAD) +[2026-01-04T23:11:49.109Z] [INFO] GET /api/projects 304 6ms +[2026-01-04T23:11:49.171Z] [INFO] GET /api/tasks/project/2 304 32ms +[2026-01-04T23:11:49.176Z] [INFO] GET /api/stats/dashboard?projectId=2 304 28ms +[2026-01-04T23:11:49.182Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-04T23:11:49.187Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-04T23:11:49.189Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-04T23:11:49.236Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 8ms +[2026-01-04T23:11:49.268Z] [INFO] GET /api/notifications 304 6ms +[2026-01-04T23:11:49.302Z] [INFO] GET /api/knowledge/categories 304 5ms +[2026-01-04T23:11:51.550Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-04T23:11:54.610Z] [INFO] GET / 200 6ms +[2026-01-04T23:11:54.674Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (LOBPp8O5_qrJ1Z5hAAAD) +[2026-01-04T23:11:54.691Z] [INFO] GET /css/variables.css 200 9ms +[2026-01-04T23:11:54.693Z] [INFO] GET /css/modal.css 200 10ms +[2026-01-04T23:11:54.694Z] [INFO] GET /css/base.css 200 9ms +[2026-01-04T23:11:54.696Z] [INFO] GET /css/board.css 200 10ms +[2026-01-04T23:11:54.700Z] [INFO] GET /css/components.css 200 11ms +[2026-01-04T23:11:54.709Z] [INFO] GET /css/calendar.css 200 19ms +[2026-01-04T23:11:54.722Z] [INFO] GET /css/list.css 200 3ms +[2026-01-04T23:11:54.727Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-04T23:11:54.748Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-04T23:11:54.752Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-04T23:11:54.768Z] [INFO] GET /css/gitea.css 200 17ms +[2026-01-04T23:11:54.772Z] [INFO] GET /css/coding.css 200 17ms +[2026-01-04T23:11:54.774Z] [INFO] GET /css/knowledge.css 200 9ms +[2026-01-04T23:11:54.777Z] [INFO] GET /css/responsive.css 200 7ms +[2026-01-04T23:11:54.783Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-04T23:11:54.803Z] [INFO] GET /js/app.js 200 4ms +[2026-01-04T23:11:54.864Z] [INFO] GET /js/api.js 200 6ms +[2026-01-04T23:11:54.867Z] [INFO] GET /js/auth.js 200 8ms +[2026-01-04T23:11:54.872Z] [INFO] GET /js/board.js 200 11ms +[2026-01-04T23:11:54.878Z] [INFO] GET /js/offline.js 200 16ms +[2026-01-04T23:11:54.881Z] [INFO] GET /js/store.js 200 10ms +[2026-01-04T23:11:54.882Z] [INFO] GET /js/sync.js 200 7ms +[2026-01-04T23:11:54.895Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-04T23:11:54.904Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-04T23:11:54.911Z] [INFO] GET /js/list.js 200 4ms +[2026-01-04T23:11:54.919Z] [INFO] GET /js/shortcuts.js 200 7ms +[2026-01-04T23:11:54.923Z] [INFO] GET /js/undo.js 200 9ms +[2026-01-04T23:11:54.937Z] [INFO] GET /js/admin.js 200 9ms +[2026-01-04T23:11:54.940Z] [INFO] GET /js/proposals.js 200 8ms +[2026-01-04T23:11:54.941Z] [INFO] GET /js/notifications.js 200 7ms +[2026-01-04T23:11:54.942Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-04T23:11:54.950Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-04T23:11:54.950Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-04T23:11:54.970Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-04T23:11:54.971Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-04T23:11:55.018Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-04T23:11:55.026Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-04T23:11:55.029Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-04T23:11:55.073Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-04T23:11:55.112Z] [INFO] GET /api/projects 304 10ms +[2026-01-04T23:11:55.120Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (4p3SXdep7kqi79i9AAAF) +[2026-01-04T23:11:55.145Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-04T23:11:55.165Z] [INFO] GET /api/tasks/project/2 304 19ms +[2026-01-04T23:11:55.168Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-04T23:11:55.175Z] [INFO] GET /api/stats/dashboard?projectId=2 304 4ms +[2026-01-04T23:11:55.176Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-04T23:11:55.210Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-04T23:11:55.250Z] [INFO] GET /api/notifications 304 8ms +[2026-01-04T23:11:55.283Z] [INFO] GET /api/knowledge/categories 304 4ms +[2026-01-04T23:11:57.590Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-04T23:11:59.273Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-04T23:11:59.409Z] [INFO] GET / 304 2ms +[2026-01-04T23:11:59.443Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (4p3SXdep7kqi79i9AAAF) +[2026-01-04T23:11:59.458Z] [INFO] GET /css/variables.css 304 3ms +[2026-01-04T23:11:59.462Z] [INFO] GET /css/calendar.css 304 6ms +[2026-01-04T23:11:59.466Z] [INFO] GET /css/base.css 304 6ms +[2026-01-04T23:11:59.468Z] [INFO] GET /css/board.css 304 4ms +[2026-01-04T23:11:59.472Z] [INFO] GET /css/components.css 304 2ms +[2026-01-04T23:11:59.475Z] [INFO] GET /css/modal.css 304 1ms +[2026-01-04T23:11:59.484Z] [INFO] GET /css/list.css 304 0ms +[2026-01-04T23:11:59.490Z] [INFO] GET /css/admin.css 304 1ms +[2026-01-04T23:11:59.493Z] [INFO] GET /css/proposals.css 304 1ms +[2026-01-04T23:11:59.494Z] [INFO] GET /css/notifications.css 304 1ms +[2026-01-04T23:11:59.503Z] [INFO] GET /css/gitea.css 304 2ms +[2026-01-04T23:11:59.512Z] [INFO] GET /css/coding.css 304 1ms +[2026-01-04T23:11:59.515Z] [INFO] GET /css/knowledge.css 304 1ms +[2026-01-04T23:11:59.521Z] [INFO] GET /css/mobile.css 304 2ms +[2026-01-04T23:11:59.522Z] [INFO] GET /css/responsive.css 304 2ms +[2026-01-04T23:11:59.528Z] [INFO] GET /js/app.js 304 1ms +[2026-01-04T23:11:59.562Z] [INFO] GET /js/api.js 304 2ms +[2026-01-04T23:11:59.566Z] [INFO] GET /js/auth.js 304 1ms +[2026-01-04T23:11:59.570Z] [INFO] GET /js/sync.js 304 1ms +[2026-01-04T23:11:59.573Z] [INFO] GET /js/board.js 304 1ms +[2026-01-04T23:11:59.576Z] [INFO] GET /js/store.js 304 1ms +[2026-01-04T23:11:59.578Z] [INFO] GET /js/offline.js 304 1ms +[2026-01-04T23:11:59.590Z] [INFO] GET /js/task-modal.js 304 1ms +[2026-01-04T23:11:59.593Z] [INFO] GET /js/calendar.js 304 0ms +[2026-01-04T23:11:59.598Z] [INFO] GET /js/list.js 304 1ms +[2026-01-04T23:11:59.604Z] [INFO] GET /js/shortcuts.js 304 1ms +[2026-01-04T23:11:59.606Z] [INFO] GET /js/admin.js 304 1ms +[2026-01-04T23:11:59.609Z] [INFO] GET /js/undo.js 304 1ms +[2026-01-04T23:11:59.616Z] [INFO] GET /js/proposals.js 304 1ms +[2026-01-04T23:11:59.621Z] [INFO] GET /js/notifications.js 304 1ms +[2026-01-04T23:11:59.626Z] [INFO] GET /js/gitea.js 304 1ms +[2026-01-04T23:11:59.632Z] [INFO] GET /js/coding.js 304 0ms +[2026-01-04T23:11:59.636Z] [INFO] GET /js/knowledge.js 304 2ms +[2026-01-04T23:11:59.638Z] [INFO] GET /js/mobile.js 304 1ms +[2026-01-04T23:11:59.646Z] [INFO] GET /js/utils.js 304 1ms +[2026-01-04T23:11:59.686Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-04T23:11:59.691Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-04T23:11:59.696Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-04T23:11:59.743Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-04T23:11:59.772Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (n0N3doa_Mg6LGbmiAAAH) +[2026-01-04T23:11:59.779Z] [INFO] GET /api/projects 304 5ms +[2026-01-04T23:11:59.837Z] [INFO] GET /api/tasks/project/2 304 26ms +[2026-01-04T23:11:59.841Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-04T23:11:59.845Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-04T23:11:59.846Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-04T23:11:59.852Z] [INFO] GET /api/stats/dashboard?projectId=2 304 4ms +[2026-01-04T23:11:59.883Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 3ms +[2026-01-04T23:11:59.924Z] [INFO] GET /api/notifications 304 9ms +[2026-01-04T23:11:59.962Z] [INFO] GET /api/knowledge/categories 304 4ms +[2026-01-04T23:12:01.436Z] [INFO] GET /sw.js 304 2ms +[2026-01-04T23:12:02.215Z] [INFO] GET /css/variables.css 304 2ms +[2026-01-04T23:12:02.218Z] [INFO] GET / 304 2ms +[2026-01-04T23:12:02.222Z] [INFO] GET /css/board.css 304 3ms +[2026-01-04T23:12:02.224Z] [INFO] GET /css/base.css 304 3ms +[2026-01-04T23:12:02.225Z] [INFO] GET /css/components.css 304 0ms +[2026-01-04T23:12:02.228Z] [INFO] GET /css/modal.css 304 2ms +[2026-01-04T23:12:02.242Z] [INFO] GET /css/list.css 304 1ms +[2026-01-04T23:12:02.246Z] [INFO] GET /css/calendar.css 304 1ms +[2026-01-04T23:12:02.250Z] [INFO] GET /css/admin.css 304 1ms +[2026-01-04T23:12:02.252Z] [INFO] GET /css/notifications.css 304 1ms +[2026-01-04T23:12:02.255Z] [INFO] GET /css/gitea.css 304 1ms +[2026-01-04T23:12:02.257Z] [INFO] GET /css/proposals.css 304 1ms +[2026-01-04T23:12:02.274Z] [INFO] GET /css/coding.css 304 1ms +[2026-01-04T23:12:02.278Z] [INFO] GET /css/mobile.css 304 1ms +[2026-01-04T23:12:02.281Z] [INFO] GET /css/knowledge.css 304 1ms +[2026-01-04T23:12:02.283Z] [INFO] GET /css/responsive.css 304 1ms +[2026-01-04T23:12:03.088Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-04T23:12:06.536Z] [INFO] GET / 304 4ms +[2026-01-04T23:12:06.573Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (n0N3doa_Mg6LGbmiAAAH) +[2026-01-04T23:12:06.590Z] [INFO] GET /css/board.css 304 6ms +[2026-01-04T23:12:06.591Z] [INFO] GET /css/calendar.css 304 5ms +[2026-01-04T23:12:06.597Z] [INFO] GET /css/components.css 304 5ms +[2026-01-04T23:12:06.599Z] [INFO] GET /css/variables.css 304 6ms +[2026-01-04T23:12:06.602Z] [INFO] GET /css/modal.css 304 2ms +[2026-01-04T23:12:06.603Z] [INFO] GET /css/base.css 304 2ms +[2026-01-04T23:12:06.625Z] [INFO] GET /css/list.css 304 5ms +[2026-01-04T23:12:06.627Z] [INFO] GET /css/admin.css 304 0ms +[2026-01-04T23:12:06.631Z] [INFO] GET /css/notifications.css 304 1ms +[2026-01-04T23:12:06.635Z] [INFO] GET /css/proposals.css 304 2ms +[2026-01-04T23:12:06.639Z] [INFO] GET /css/coding.css 304 2ms +[2026-01-04T23:12:06.642Z] [INFO] GET /css/gitea.css 304 2ms +[2026-01-04T23:12:06.654Z] [INFO] GET /css/responsive.css 304 1ms +[2026-01-04T23:12:06.657Z] [INFO] GET /css/knowledge.css 304 1ms +[2026-01-04T23:12:06.659Z] [INFO] GET /css/mobile.css 304 1ms +[2026-01-04T23:12:06.667Z] [INFO] GET /js/app.js 304 1ms +[2026-01-04T23:12:06.719Z] [INFO] GET /js/auth.js 304 1ms +[2026-01-04T23:12:06.721Z] [INFO] GET /js/store.js 304 1ms +[2026-01-04T23:12:06.724Z] [INFO] GET /js/api.js 304 1ms +[2026-01-04T23:12:06.726Z] [INFO] GET /js/offline.js 304 1ms +[2026-01-04T23:12:06.728Z] [INFO] GET /js/board.js 304 1ms +[2026-01-04T23:12:06.729Z] [INFO] GET /js/sync.js 304 1ms +[2026-01-04T23:12:06.750Z] [INFO] GET /js/calendar.js 304 1ms +[2026-01-04T23:12:06.751Z] [INFO] GET /js/task-modal.js 304 2ms +[2026-01-04T23:12:06.756Z] [INFO] GET /js/list.js 304 2ms +[2026-01-04T23:12:06.759Z] [INFO] GET /js/shortcuts.js 304 1ms +[2026-01-04T23:12:06.761Z] [INFO] GET /js/undo.js 304 1ms +[2026-01-04T23:12:06.763Z] [INFO] GET /js/admin.js 304 1ms +[2026-01-04T23:12:06.779Z] [INFO] GET /js/proposals.js 304 2ms +[2026-01-04T23:12:06.783Z] [INFO] GET /js/notifications.js 304 1ms +[2026-01-04T23:12:06.791Z] [INFO] GET /js/gitea.js 304 2ms +[2026-01-04T23:12:06.794Z] [INFO] GET /js/knowledge.js 304 1ms +[2026-01-04T23:12:06.796Z] [INFO] GET /js/mobile.js 304 1ms +[2026-01-04T23:12:06.799Z] [INFO] GET /js/coding.js 304 1ms +[2026-01-04T23:12:06.808Z] [INFO] GET /js/utils.js 304 2ms +[2026-01-04T23:12:06.848Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-04T23:12:08.365Z] [INFO] GET /sw.js 304 2ms +[2026-01-04T23:12:12.314Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-04T23:12:12.315Z] [INFO] POST /api/auth/login 200 467ms +[2026-01-04T23:12:12.365Z] [INFO] GET /api/auth/users 304 10ms +[2026-01-04T23:12:12.380Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (TOd0YtIktxg0ObyaAAAJ) +[2026-01-04T23:12:12.399Z] [INFO] GET /api/projects 304 5ms +[2026-01-04T23:12:12.443Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-04T23:12:12.441Z] [INFO] GET /api/labels/2 304 11ms +[2026-01-04T23:12:12.449Z] [INFO] GET /api/columns/2 304 17ms +[2026-01-04T23:12:12.467Z] [INFO] GET /api/tasks/project/2 304 17ms +[2026-01-04T23:12:12.472Z] [INFO] GET /api/stats/dashboard?projectId=2 304 4ms +[2026-01-04T23:12:12.515Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 8ms +[2026-01-04T23:12:12.549Z] [INFO] GET /api/notifications 304 4ms +[2026-01-04T23:12:12.588Z] [INFO] GET /api/knowledge/categories 304 7ms +[2026-01-04T23:12:14.797Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-04T23:12:26.111Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-04T23:12:33.265Z] [INFO] GET /api/knowledge/entries?categoryId=15 304 14ms +[2026-01-04T23:12:34.269Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-04T23:12:34.716Z] [INFO] readCLAUDEmd: Checking path /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-04T23:12:34.719Z] [INFO] readCLAUDEmd: Checking path /app/taskmate-source/CLAUDE.md +[2026-01-04T23:12:34.718Z] [INFO] Trying fallback path for TaskMate: /app/taskmate-source +[2026-01-04T23:12:34.720Z] [INFO] readCLAUDEmd: Successfully read 12158 characters from /app/taskmate-source/CLAUDE.md +[2026-01-04T23:12:34.718Z] [INFO] readCLAUDEmd: File does not exist: /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-04T23:12:34.722Z] [INFO] GET /api/coding/directories 200 14ms +[2026-01-04T23:12:34.786Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-04T23:12:34.788Z] [INFO] Git directory exists: true +[2026-01-04T23:12:34.789Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-04T23:12:34.789Z] [INFO] Git directory exists: true +[2026-01-04T23:12:34.901Z] [INFO] GET /api/coding/directories/3/status 200 124ms +[2026-01-04T23:12:35.724Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-04T23:12:38.608Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-04T23:12:47.332Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-04T23:12:50.157Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-04T23:12:53.196Z] [INFO] GET /api/knowledge/entries?categoryId=16 200 6ms +[2026-01-04T23:12:54.208Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-04T23:12:54.985Z] [INFO] GET /api/knowledge/entries?categoryId=14 200 8ms +[2026-01-04T23:12:55.982Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-04T23:12:56.521Z] [INFO] GET /api/knowledge/entries?categoryId=13 200 8ms +[2026-01-04T23:12:57.073Z] [INFO] GET /api/knowledge/entries?categoryId=15 304 9ms +[2026-01-04T23:12:58.076Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-04T23:13:04.103Z] [INFO] GET / 304 3ms +[2026-01-04T23:13:04.133Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (TOd0YtIktxg0ObyaAAAJ) +[2026-01-04T23:13:04.146Z] [INFO] GET /css/base.css 304 4ms +[2026-01-04T23:13:04.149Z] [INFO] GET /css/components.css 304 6ms +[2026-01-04T23:13:04.158Z] [INFO] GET /css/calendar.css 304 2ms +[2026-01-04T23:13:04.161Z] [INFO] GET /css/board.css 304 1ms +[2026-01-04T23:13:04.163Z] [INFO] GET /css/modal.css 304 1ms +[2026-01-04T23:13:04.165Z] [INFO] GET /css/variables.css 304 1ms +[2026-01-04T23:13:04.172Z] [INFO] GET /css/list.css 304 1ms +[2026-01-04T23:13:04.176Z] [INFO] GET /css/admin.css 304 1ms +[2026-01-04T23:13:04.186Z] [INFO] GET /css/proposals.css 304 2ms +[2026-01-04T23:13:04.191Z] [INFO] GET /css/notifications.css 304 2ms +[2026-01-04T23:13:04.194Z] [INFO] GET /css/gitea.css 304 1ms +[2026-01-04T23:13:04.196Z] [INFO] GET /css/coding.css 304 1ms +[2026-01-04T23:13:04.201Z] [INFO] GET /css/knowledge.css 304 1ms +[2026-01-04T23:13:04.206Z] [INFO] GET /css/responsive.css 304 0ms +[2026-01-04T23:13:04.211Z] [INFO] GET /css/mobile.css 304 1ms +[2026-01-04T23:13:04.222Z] [INFO] GET /js/app.js 304 1ms +[2026-01-04T23:13:04.265Z] [INFO] GET /js/store.js 304 6ms +[2026-01-04T23:13:04.266Z] [INFO] GET /js/auth.js 304 3ms +[2026-01-04T23:13:04.269Z] [INFO] GET /js/api.js 304 2ms +[2026-01-04T23:13:04.272Z] [INFO] GET /js/board.js 304 2ms +[2026-01-04T23:13:04.274Z] [INFO] GET /js/offline.js 304 1ms +[2026-01-04T23:13:04.275Z] [INFO] GET /js/sync.js 304 0ms +[2026-01-04T23:13:04.294Z] [INFO] GET /js/task-modal.js 304 1ms +[2026-01-04T23:13:04.296Z] [INFO] GET /js/calendar.js 304 1ms +[2026-01-04T23:13:04.299Z] [INFO] GET /js/list.js 304 1ms +[2026-01-04T23:13:04.303Z] [INFO] GET /js/undo.js 304 2ms +[2026-01-04T23:13:04.305Z] [INFO] GET /js/admin.js 304 0ms +[2026-01-04T23:13:04.316Z] [INFO] GET /js/shortcuts.js 304 2ms +[2026-01-04T23:13:04.324Z] [INFO] GET /js/proposals.js 304 3ms +[2026-01-04T23:13:04.331Z] [INFO] GET /js/notifications.js 304 3ms +[2026-01-04T23:13:04.333Z] [INFO] GET /js/gitea.js 304 3ms +[2026-01-04T23:13:04.338Z] [INFO] GET /js/knowledge.js 304 2ms +[2026-01-04T23:13:04.340Z] [INFO] GET /js/coding.js 304 1ms +[2026-01-04T23:13:04.345Z] [INFO] GET /js/utils.js 304 1ms +[2026-01-04T23:13:04.350Z] [INFO] GET /js/mobile.js 304 2ms +[2026-01-04T23:13:04.384Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-04T23:13:04.394Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-04T23:13:04.402Z] [INFO] GET /api/auth/users 304 9ms +[2026-01-04T23:13:04.443Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-04T23:13:04.476Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (K0-au4BJAkIav604AAAL) +[2026-01-04T23:13:04.485Z] [INFO] GET /api/projects 304 5ms +[2026-01-04T23:13:04.518Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-04T23:13:04.522Z] [INFO] GET /api/labels/2 304 2ms +[2026-01-04T23:13:04.524Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-04T23:13:04.536Z] [INFO] GET /api/tasks/project/2 304 11ms +[2026-01-04T23:13:04.542Z] [INFO] GET /api/stats/dashboard?projectId=2 304 4ms +[2026-01-04T23:13:04.576Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-04T23:13:04.621Z] [INFO] GET /api/notifications 304 10ms +[2026-01-04T23:13:04.655Z] [INFO] GET /api/knowledge/categories 304 5ms +[2026-01-04T23:13:06.115Z] [INFO] GET /sw.js 304 2ms +[2026-01-04T23:13:08.075Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-04T23:13:08.705Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (K0-au4BJAkIav604AAAL) +[2026-01-05T02:50:19.383Z] [INFO] GET / 200 8ms +[2026-01-05T02:50:19.564Z] [INFO] GET /.env 200 11ms +[2026-01-05T02:50:19.588Z] [INFO] GET /%22/socket.io/socket.io.js%22 200 3ms +[2026-01-05T02:50:19.606Z] [INFO] GET /%22js/app.js%22 200 3ms +[2026-01-05T02:50:19.640Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T02:50:19.643Z] [INFO] GET /.env 200 5ms +[2026-01-05T02:50:19.739Z] [INFO] GET /.env.bak 200 7ms +[2026-01-05T02:50:19.808Z] [INFO] GET /.env.save 200 8ms +[2026-01-05T02:50:19.871Z] [INFO] GET /backend/.env 200 7ms +[2026-01-05T02:50:19.937Z] [INFO] GET /admin/.env 200 7ms +[2026-01-05T02:50:19.971Z] [INFO] GET /.git/config 200 4ms +[2026-01-05T02:50:20.015Z] [INFO] GET /wp-config.php 200 8ms +[2026-01-05T02:50:20.080Z] [INFO] GET /wp-config.php.old 200 3ms +[2026-01-05T02:50:20.243Z] [INFO] GET /config.php 200 2ms +[2026-01-05T02:50:20.279Z] [INFO] GET /config.php.bak 200 4ms +[2026-01-05T02:50:20.355Z] [INFO] GET /config.js 200 3ms +[2026-01-05T02:50:21.093Z] [INFO] GET /aws-config.js 200 4ms +[2026-01-05T02:50:21.213Z] [INFO] GET /aws.config.js 200 4ms +[2026-01-05T02:50:21.400Z] [INFO] GET /.git/HEAD 200 4ms +[2026-01-05T02:50:21.447Z] [INFO] GET /.git/config 200 3ms +[2026-01-05T03:25:59.378Z] [INFO] POST / 200 89ms +[2026-01-05T03:26:04.478Z] [INFO] POST / 200 6ms +[2026-01-05T05:02:19.938Z] [INFO] GET / 200 67ms +[2026-01-05T05:26:00.123Z] [INFO] POST / 200 7ms +[2026-01-05T07:05:38.225Z] [INFO] POST / 200 6ms +[2026-01-05T07:05:38.320Z] [INFO] POST /_next 200 3ms +[2026-01-05T07:05:38.368Z] [INFO] POST /api 200 5ms +[2026-01-05T07:05:38.414Z] [INFO] POST /_next/server 200 3ms +[2026-01-05T07:05:38.465Z] [INFO] POST /app 200 3ms +[2026-01-05T07:05:38.543Z] [INFO] POST /api/route 404 37ms +[2026-01-05T07:56:40.628Z] [INFO] POST / 200 8ms +[2026-01-05T08:17:18.622Z] [INFO] GET / 200 15ms +[2026-01-05T08:17:18.794Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-05T08:17:18.833Z] [INFO] GET /css/base.css 200 8ms +[2026-01-05T08:17:18.863Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T08:17:18.872Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T08:17:18.873Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-05T08:17:18.877Z] [INFO] GET /css/list.css 200 6ms +[2026-01-05T08:17:18.879Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T08:17:18.881Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-05T08:17:18.922Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T08:17:18.930Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-05T08:17:18.933Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T08:17:18.939Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-05T08:17:18.940Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T08:17:18.950Z] [INFO] GET /css/responsive.css 200 6ms +[2026-01-05T08:17:18.991Z] [INFO] GET /css/mobile.css 200 32ms +[2026-01-05T08:17:18.999Z] [INFO] GET /js/app.js 200 10ms +[2026-01-05T08:17:19.085Z] [INFO] GET /js/offline.js 200 5ms +[2026-01-05T08:17:19.086Z] [INFO] GET /js/store.js 200 7ms +[2026-01-05T08:17:19.087Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-05T08:17:19.090Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T08:17:19.091Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-05T08:17:19.092Z] [INFO] GET /js/api.js 200 6ms +[2026-01-05T08:17:19.119Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-05T08:17:19.135Z] [INFO] GET /js/calendar.js 200 10ms +[2026-01-05T08:17:19.137Z] [INFO] GET /js/list.js 200 9ms +[2026-01-05T08:17:19.139Z] [INFO] GET /js/undo.js 200 10ms +[2026-01-05T08:17:19.141Z] [INFO] GET /js/shortcuts.js 200 11ms +[2026-01-05T08:17:19.145Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T08:17:19.178Z] [INFO] GET /js/notifications.js 200 9ms +[2026-01-05T08:17:19.182Z] [INFO] GET /js/proposals.js 200 9ms +[2026-01-05T08:17:19.186Z] [INFO] GET /js/knowledge.js 200 10ms +[2026-01-05T08:17:19.196Z] [INFO] GET /js/gitea.js 200 14ms +[2026-01-05T08:17:19.199Z] [INFO] GET /js/coding.js 200 15ms +[2026-01-05T08:17:19.204Z] [INFO] GET /js/mobile.js 200 12ms +[2026-01-05T08:17:19.208Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T08:17:19.262Z] [INFO] GET /sw.js 200 5ms +[2026-01-05T08:17:19.270Z] [INFO] GET /assets/icons/task.svg 200 9ms +[2026-01-05T08:17:19.315Z] [INFO] GET /css/variables.css 304 7ms +[2026-01-05T08:17:19.318Z] [INFO] GET / 304 2ms +[2026-01-05T08:17:19.319Z] [INFO] GET /index.html 200 15ms +[2026-01-05T08:17:19.346Z] [INFO] GET /css/base.css 304 1ms +[2026-01-05T08:17:19.350Z] [INFO] GET /css/components.css 304 1ms +[2026-01-05T08:17:19.355Z] [INFO] GET /css/board.css 304 2ms +[2026-01-05T08:17:19.377Z] [INFO] GET /css/modal.css 304 1ms +[2026-01-05T08:17:19.379Z] [INFO] GET /css/calendar.css 304 0ms +[2026-01-05T08:17:19.384Z] [INFO] GET /css/responsive.css 304 1ms +[2026-01-05T08:17:19.406Z] [INFO] GET /js/app.js 304 1ms +[2026-01-05T08:17:19.411Z] [INFO] GET /js/api.js 304 1ms +[2026-01-05T08:17:19.442Z] [INFO] GET /js/store.js 304 4ms +[2026-01-05T08:17:19.444Z] [INFO] GET /js/auth.js 304 4ms +[2026-01-05T08:17:19.448Z] [INFO] GET /js/utils.js 304 2ms +[2026-01-05T08:17:19.476Z] [INFO] GET /js/sync.js 304 3ms +[2026-01-05T08:17:19.481Z] [INFO] GET /js/offline.js 304 3ms +[2026-01-05T08:17:19.487Z] [INFO] GET /js/board.js 304 2ms +[2026-01-05T08:17:19.510Z] [INFO] GET /js/task-modal.js 304 3ms +[2026-01-05T08:17:19.520Z] [INFO] GET /js/calendar.js 304 2ms +[2026-01-05T08:17:19.520Z] [INFO] GET /js/list.js 304 1ms +[2026-01-05T08:17:19.540Z] [INFO] GET /js/shortcuts.js 304 3ms +[2026-01-05T08:17:19.558Z] [INFO] GET /js/tour.js 200 10ms +[2026-01-05T08:17:19.560Z] [INFO] GET /js/undo.js 304 4ms +[2026-01-05T08:17:19.573Z] [INFO] GET /js/admin.js 304 1ms +[2026-01-05T08:17:19.599Z] [INFO] GET /js/proposals.js 304 1ms +[2026-01-05T08:17:19.601Z] [INFO] GET /js/gitea.js 304 3ms +[2026-01-05T08:17:19.604Z] [INFO] GET /js/notifications.js 304 1ms +[2026-01-05T08:17:19.634Z] [INFO] GET /js/coding.js 304 1ms +[2026-01-05T08:17:19.639Z] [INFO] GET /js/mobile.js 304 1ms +[2026-01-05T08:17:19.640Z] [INFO] GET /js/knowledge.js 304 2ms +[2026-01-05T08:17:19.665Z] [INFO] GET /css/list.css 304 2ms +[2026-01-05T08:17:19.673Z] [INFO] GET /css/admin.css 304 2ms +[2026-01-05T08:17:19.674Z] [INFO] GET /css/mobile.css 304 2ms +[2026-01-05T08:17:19.697Z] [INFO] GET /css/proposals.css 304 1ms +[2026-01-05T08:17:19.702Z] [INFO] GET /css/gitea.css 304 1ms +[2026-01-05T08:17:19.706Z] [INFO] GET /css/notifications.css 304 1ms +[2026-01-05T08:17:19.730Z] [INFO] GET /css/knowledge.css 304 2ms +[2026-01-05T08:17:19.735Z] [INFO] GET /css/coding.css 304 2ms +[2026-01-05T08:17:24.430Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T08:17:24.432Z] [INFO] POST /api/auth/login 200 544ms +[2026-01-05T08:17:24.504Z] [INFO] GET /api/auth/users 200 16ms +[2026-01-05T08:17:24.530Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (QFOIwqbpU_oTNVu-AAAN) +[2026-01-05T08:17:24.562Z] [INFO] GET /api/projects 200 18ms +[2026-01-05T08:17:24.609Z] [INFO] GET /api/labels/2 200 9ms +[2026-01-05T08:17:24.615Z] [INFO] GET /api/stats/dashboard?projectId=2 200 12ms +[2026-01-05T08:17:24.623Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:17:24.638Z] [INFO] GET /api/columns/2 200 11ms +[2026-01-05T08:17:24.675Z] [INFO] GET /api/tasks/project/2 200 36ms +[2026-01-05T08:17:24.764Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 12ms +[2026-01-05T08:17:24.809Z] [INFO] GET /api/notifications 200 11ms +[2026-01-05T08:17:24.846Z] [INFO] GET /api/knowledge/categories 200 6ms +[2026-01-05T08:17:27.069Z] [INFO] readCLAUDEmd: Checking path /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-05T08:17:27.071Z] [INFO] readCLAUDEmd: File does not exist: /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-05T08:17:27.071Z] [INFO] Trying fallback path for TaskMate: /app/taskmate-source +[2026-01-05T08:17:27.071Z] [INFO] readCLAUDEmd: Checking path /app/taskmate-source/CLAUDE.md +[2026-01-05T08:17:27.073Z] [INFO] readCLAUDEmd: Successfully read 12158 characters from /app/taskmate-source/CLAUDE.md +[2026-01-05T08:17:27.075Z] [INFO] GET /api/coding/directories 200 13ms +[2026-01-05T08:17:27.145Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:17:27.146Z] [INFO] Git directory exists: true +[2026-01-05T08:17:27.146Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:17:27.146Z] [INFO] Git directory exists: true +[2026-01-05T08:17:27.256Z] [INFO] GET /api/coding/directories/3/status 200 125ms +[2026-01-05T08:17:28.091Z] [INFO] POST /api/auth/refresh 200 18ms +[2026-01-05T08:17:29.882Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T08:17:33.008Z] [INFO] GET /api/knowledge/entries?categoryId=16 200 10ms +[2026-01-05T08:17:34.005Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T08:17:34.187Z] [INFO] GET /api/knowledge/entries?categoryId=15 200 8ms +[2026-01-05T08:17:35.195Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T08:17:57.349Z] [INFO] readCLAUDEmd: Checking path /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-05T08:17:57.350Z] [INFO] readCLAUDEmd: File does not exist: /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-05T08:17:57.350Z] [INFO] Trying fallback path for TaskMate: /app/taskmate-source +[2026-01-05T08:17:57.350Z] [INFO] readCLAUDEmd: Checking path /app/taskmate-source/CLAUDE.md +[2026-01-05T08:17:57.351Z] [INFO] readCLAUDEmd: Successfully read 12158 characters from /app/taskmate-source/CLAUDE.md +[2026-01-05T08:17:57.355Z] [INFO] GET /api/coding/directories 304 13ms +[2026-01-05T08:17:57.399Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:17:57.400Z] [INFO] Git directory exists: true +[2026-01-05T08:17:57.400Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:17:57.400Z] [INFO] Git directory exists: true +[2026-01-05T08:17:57.437Z] [INFO] GET /api/coding/directories/3/status 304 42ms +[2026-01-05T08:17:58.355Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T08:17:59.871Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T08:18:27.424Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:18:27.425Z] [INFO] Git directory exists: true +[2026-01-05T08:18:27.425Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:18:27.426Z] [INFO] Git directory exists: true +[2026-01-05T08:18:27.466Z] [INFO] GET /api/coding/directories/3/status 304 52ms +[2026-01-05T08:18:57.417Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:18:57.418Z] [INFO] Git directory exists: true +[2026-01-05T08:18:57.418Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:18:57.419Z] [INFO] Git directory exists: true +[2026-01-05T08:18:57.464Z] [INFO] GET /api/coding/directories/3/status 304 57ms +[2026-01-05T08:19:27.403Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:19:27.404Z] [INFO] Git directory exists: true +[2026-01-05T08:19:27.404Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:19:27.404Z] [INFO] Git directory exists: true +[2026-01-05T08:19:27.439Z] [INFO] GET /api/coding/directories/3/status 304 40ms +[2026-01-05T08:19:57.408Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:19:57.408Z] [INFO] Git directory exists: true +[2026-01-05T08:19:57.408Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:19:57.409Z] [INFO] Git directory exists: true +[2026-01-05T08:19:57.454Z] [INFO] GET /api/coding/directories/3/status 304 51ms +[2026-01-05T08:20:27.412Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:20:27.413Z] [INFO] Git directory exists: true +[2026-01-05T08:20:27.414Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:20:27.415Z] [INFO] Git directory exists: true +[2026-01-05T08:20:27.451Z] [INFO] GET /api/coding/directories/3/status 304 48ms +[2026-01-05T08:20:57.405Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:20:57.405Z] [INFO] Git directory exists: true +[2026-01-05T08:20:57.406Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:20:57.406Z] [INFO] Git directory exists: true +[2026-01-05T08:20:57.434Z] [INFO] GET /api/coding/directories/3/status 304 39ms +[2026-01-05T08:21:27.402Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:21:27.403Z] [INFO] Git directory exists: true +[2026-01-05T08:21:27.403Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:21:27.403Z] [INFO] Git directory exists: true +[2026-01-05T08:21:27.434Z] [INFO] GET /api/coding/directories/3/status 304 39ms +[2026-01-05T08:21:57.405Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:21:57.406Z] [INFO] Git directory exists: true +[2026-01-05T08:21:57.406Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:21:57.406Z] [INFO] Git directory exists: true +[2026-01-05T08:21:57.446Z] [INFO] GET /api/coding/directories/3/status 304 49ms +[2026-01-05T08:22:27.405Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:22:27.406Z] [INFO] Git directory exists: true +[2026-01-05T08:22:27.428Z] [INFO] GET /api/coding/directories/3/status 304 29ms +[2026-01-05T08:22:27.406Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:22:27.406Z] [INFO] Git directory exists: true +[2026-01-05T08:22:57.400Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:22:57.401Z] [INFO] Git directory exists: true +[2026-01-05T08:22:57.401Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:22:57.401Z] [INFO] Git directory exists: true +[2026-01-05T08:22:57.421Z] [INFO] GET /api/coding/directories/3/status 304 24ms +[2026-01-05T08:23:27.401Z] [INFO] Git directory exists: true +[2026-01-05T08:23:27.401Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:23:27.401Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:23:27.402Z] [INFO] Git directory exists: true +[2026-01-05T08:23:27.438Z] [INFO] GET /api/coding/directories/3/status 304 46ms +[2026-01-05T08:23:57.401Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:23:57.402Z] [INFO] Git directory exists: true +[2026-01-05T08:23:57.401Z] [INFO] Git directory exists: true +[2026-01-05T08:23:57.402Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:23:57.444Z] [INFO] GET /api/coding/directories/3/status 304 49ms +[2026-01-05T08:24:27.402Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:24:27.402Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:24:27.402Z] [INFO] Git directory exists: true +[2026-01-05T08:24:27.402Z] [INFO] Git directory exists: true +[2026-01-05T08:24:27.441Z] [INFO] GET /api/coding/directories/3/status 304 45ms +[2026-01-05T08:24:46.317Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T08:25:39.631Z] [INFO] GET /api/knowledge/entries?categoryId=16 304 13ms +[2026-01-05T08:25:40.568Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T08:26:19.574Z] [INFO] GET / 200 6ms +[2026-01-05T08:26:19.635Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (QFOIwqbpU_oTNVu-AAAN) +[2026-01-05T08:26:19.646Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T08:26:19.673Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T08:26:19.704Z] [INFO] GET /css/components.css 200 2ms +[2026-01-05T08:26:19.719Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-05T08:26:19.723Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T08:26:19.734Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T08:26:19.737Z] [INFO] GET /css/list.css 200 8ms +[2026-01-05T08:26:19.747Z] [INFO] GET /css/admin.css 200 14ms +[2026-01-05T08:26:19.750Z] [INFO] GET /css/proposals.css 200 8ms +[2026-01-05T08:26:19.785Z] [INFO] GET /css/gitea.css 200 11ms +[2026-01-05T08:26:19.791Z] [INFO] GET /css/notifications.css 200 16ms +[2026-01-05T08:26:19.797Z] [INFO] GET /css/coding.css 200 15ms +[2026-01-05T08:26:19.804Z] [INFO] GET /css/knowledge.css 200 17ms +[2026-01-05T08:26:19.807Z] [INFO] GET /css/responsive.css 200 14ms +[2026-01-05T08:26:19.809Z] [INFO] GET /css/mobile.css 200 10ms +[2026-01-05T08:26:19.821Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T08:26:19.892Z] [INFO] GET /js/api.js 200 11ms +[2026-01-05T08:26:19.893Z] [INFO] GET /js/store.js 200 10ms +[2026-01-05T08:26:19.896Z] [INFO] GET /js/board.js 200 11ms +[2026-01-05T08:26:19.898Z] [INFO] GET /js/auth.js 200 11ms +[2026-01-05T08:26:19.901Z] [INFO] GET /js/offline.js 200 11ms +[2026-01-05T08:26:19.903Z] [INFO] GET /js/sync.js 200 8ms +[2026-01-05T08:26:19.924Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-05T08:26:19.937Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-05T08:26:19.942Z] [INFO] GET /js/list.js 200 7ms +[2026-01-05T08:26:19.941Z] [INFO] GET /js/shortcuts.js 200 7ms +[2026-01-05T08:26:19.943Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-05T08:26:19.959Z] [INFO] GET /js/admin.js 200 6ms +[2026-01-05T08:26:19.960Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-05T08:26:19.973Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T08:26:19.976Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T08:26:19.991Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T08:26:19.994Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-05T08:26:20.000Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T08:26:20.021Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T08:26:20.075Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T08:26:20.079Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-05T08:26:20.082Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T08:26:20.120Z] [INFO] GET /api/auth/users 304 9ms +[2026-01-05T08:26:20.166Z] [INFO] GET /api/projects 304 11ms +[2026-01-05T08:26:20.173Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (AOR6rDvp_p_0xlMTAAAP) +[2026-01-05T08:26:20.206Z] [INFO] GET /api/stats/dashboard?projectId=2 304 11ms +[2026-01-05T08:26:20.211Z] [INFO] GET /api/columns/2 304 15ms +[2026-01-05T08:26:20.230Z] [INFO] GET /api/tasks/project/2 304 17ms +[2026-01-05T08:26:20.237Z] [INFO] GET /api/labels/2 304 6ms +[2026-01-05T08:26:20.239Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:26:20.278Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-05T08:26:20.318Z] [INFO] GET /api/notifications 304 11ms +[2026-01-05T08:26:20.359Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-05T08:26:22.666Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T08:26:47.715Z] [INFO] GET /api/knowledge/entries?categoryId=15 304 11ms +[2026-01-05T08:26:48.709Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T08:26:59.149Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T08:29:23.475Z] [INFO] POST /api/auth/login 400 1ms +[2026-01-05T08:29:23.510Z] [INFO] GET /api/knowledge/categories 401 3ms +[2026-01-05T08:29:34.889Z] [INFO] POST /api/auth/login 400 1ms +[2026-01-05T08:29:34.919Z] [INFO] GET /api/knowledge/categories 401 3ms +[2026-01-05T08:29:34.956Z] [INFO] POST /api/knowledge/categories 401 5ms +[2026-01-05T08:29:34.964Z] [INFO] GET /api/knowledge/entries?categoryId=undefined 401 3ms +[2026-01-05T08:29:34.971Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:34.979Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:34.985Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:34.993Z] [INFO] POST /api/knowledge/entries 401 3ms +[2026-01-05T08:29:35.011Z] [INFO] POST /api/knowledge/entries 401 3ms +[2026-01-05T08:29:35.027Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.037Z] [INFO] POST /api/knowledge/entries 401 5ms +[2026-01-05T08:29:35.047Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.057Z] [INFO] POST /api/knowledge/entries 401 0ms +[2026-01-05T08:29:35.065Z] [INFO] POST /api/knowledge/entries 401 3ms +[2026-01-05T08:29:35.069Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.085Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.094Z] [INFO] POST /api/knowledge/entries 401 3ms +[2026-01-05T08:29:35.102Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.108Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.114Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.117Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.124Z] [INFO] POST /api/knowledge/entries 401 3ms +[2026-01-05T08:29:35.127Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.132Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.135Z] [INFO] POST /api/knowledge/entries 401 0ms +[2026-01-05T08:29:35.143Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.147Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.150Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.158Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.163Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.167Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.171Z] [INFO] POST /api/knowledge/entries 401 0ms +[2026-01-05T08:29:35.176Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.181Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.187Z] [INFO] POST /api/knowledge/entries 401 3ms +[2026-01-05T08:29:35.191Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.197Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.204Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.211Z] [INFO] POST /api/knowledge/entries 401 3ms +[2026-01-05T08:29:35.217Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.223Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.227Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.232Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.236Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.239Z] [INFO] POST /api/knowledge/entries 401 0ms +[2026-01-05T08:29:35.242Z] [INFO] POST /api/knowledge/entries 401 0ms +[2026-01-05T08:29:35.245Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.248Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.252Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.259Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.265Z] [INFO] POST /api/knowledge/entries 401 3ms +[2026-01-05T08:29:35.267Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.275Z] [INFO] POST /api/knowledge/entries 401 5ms +[2026-01-05T08:29:35.279Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.283Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.288Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.292Z] [INFO] POST /api/knowledge/entries 401 0ms +[2026-01-05T08:29:35.300Z] [INFO] POST /api/knowledge/entries 401 4ms +[2026-01-05T08:29:35.305Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.311Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.315Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.320Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.325Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.333Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.341Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.347Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.353Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.358Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.363Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.368Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.374Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.377Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.381Z] [INFO] POST /api/knowledge/entries 401 0ms +[2026-01-05T08:29:35.393Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.397Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.400Z] [INFO] POST /api/knowledge/entries 401 0ms +[2026-01-05T08:29:35.406Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.413Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.425Z] [INFO] POST /api/knowledge/entries 401 3ms +[2026-01-05T08:29:35.433Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.441Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.447Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.453Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.466Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.473Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.480Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.485Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.490Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.495Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.500Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.506Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.516Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.523Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.529Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.534Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.540Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.549Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.561Z] [INFO] POST /api/knowledge/entries 401 3ms +[2026-01-05T08:29:35.570Z] [INFO] POST /api/knowledge/entries 401 4ms +[2026-01-05T08:29:35.576Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.582Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.588Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.592Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.597Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.602Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.606Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.611Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.616Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.622Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.627Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.632Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.637Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.641Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.646Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.650Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.653Z] [INFO] POST /api/knowledge/entries 401 0ms +[2026-01-05T08:29:35.657Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.660Z] [INFO] POST /api/knowledge/entries 401 0ms +[2026-01-05T08:29:35.666Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.673Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.676Z] [INFO] POST /api/knowledge/entries 401 0ms +[2026-01-05T08:29:35.682Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.688Z] [INFO] POST /api/knowledge/entries 401 0ms +[2026-01-05T08:29:35.692Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.701Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.706Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.711Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.717Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.723Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.728Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.734Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.739Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.744Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.752Z] [INFO] POST /api/knowledge/entries 401 3ms +[2026-01-05T08:29:35.763Z] [INFO] POST /api/knowledge/entries 401 3ms +[2026-01-05T08:29:35.768Z] [INFO] POST /api/knowledge/entries 401 2ms +[2026-01-05T08:29:35.771Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.778Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.783Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.790Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.796Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.800Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.806Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.810Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.812Z] [INFO] POST /api/knowledge/entries 401 0ms +[2026-01-05T08:29:35.817Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.820Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:35.825Z] [INFO] POST /api/knowledge/entries 401 1ms +[2026-01-05T08:29:58.526Z] [INFO] SIGTERM empfangen, fahre herunter... +[2026-01-05T08:30:12.879Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-05T08:30:12.984Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-05T08:30:13.540Z] [INFO] Admin-Passwort bereits korrekt +[2026-01-05T08:30:13.541Z] [INFO] Datenbank initialisiert +[2026-01-05T08:30:13.545Z] [INFO] Server läuft auf Port 3001 +[2026-01-05T08:30:13.545Z] [INFO] Umgebung: development +[2026-01-05T08:30:13.546Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-05T08:30:13.547Z] [INFO] Automatische Backups aktiviert +[2026-01-05T08:30:18.852Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (XsGLm2Vs0eJJ0vLtAAAB) +[2026-01-05T08:30:18.906Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:30:40.547Z] [INFO] GET / 200 15ms +[2026-01-05T08:30:40.625Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (XsGLm2Vs0eJJ0vLtAAAB) +[2026-01-05T08:30:40.632Z] [INFO] GET /css/variables.css 200 11ms +[2026-01-05T08:30:40.635Z] [INFO] GET /css/base.css 200 6ms +[2026-01-05T08:30:40.664Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T08:30:40.670Z] [INFO] GET /css/board.css 200 2ms +[2026-01-05T08:30:40.685Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-05T08:30:40.693Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T08:30:40.700Z] [INFO] GET /css/proposals.css 200 10ms +[2026-01-05T08:30:40.701Z] [INFO] GET /css/calendar.css 200 10ms +[2026-01-05T08:30:40.703Z] [INFO] GET /css/list.css 200 7ms +[2026-01-05T08:30:40.728Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T08:30:40.733Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T08:30:40.738Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-05T08:30:40.744Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T08:30:40.746Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T08:30:40.774Z] [INFO] GET /css/mobile.css 200 19ms +[2026-01-05T08:30:40.782Z] [INFO] GET /js/app.js 200 6ms +[2026-01-05T08:30:40.846Z] [INFO] GET /js/sync.js 200 3ms +[2026-01-05T08:30:40.847Z] [INFO] GET /js/store.js 200 7ms +[2026-01-05T08:30:40.849Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-05T08:30:40.850Z] [INFO] GET /js/api.js 200 8ms +[2026-01-05T08:30:40.851Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-05T08:30:40.854Z] [INFO] GET /js/board.js 200 8ms +[2026-01-05T08:30:40.884Z] [INFO] GET /js/task-modal.js 200 7ms +[2026-01-05T08:30:40.888Z] [INFO] GET /js/list.js 200 8ms +[2026-01-05T08:30:40.892Z] [INFO] GET /js/calendar.js 200 9ms +[2026-01-05T08:30:40.895Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-05T08:30:40.896Z] [INFO] GET /js/undo.js 200 9ms +[2026-01-05T08:30:40.909Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T08:30:40.934Z] [INFO] GET /js/notifications.js 200 9ms +[2026-01-05T08:30:40.938Z] [INFO] GET /js/gitea.js 200 10ms +[2026-01-05T08:30:40.943Z] [INFO] GET /js/proposals.js 200 11ms +[2026-01-05T08:30:40.945Z] [INFO] GET /js/knowledge.js 200 8ms +[2026-01-05T08:30:40.948Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T08:30:40.956Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T08:30:40.973Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T08:30:41.041Z] [INFO] POST /api/auth/refresh 200 18ms +[2026-01-05T08:30:41.051Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-05T08:30:41.058Z] [INFO] GET /assets/icons/task.svg 304 5ms +[2026-01-05T08:30:41.112Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-05T08:30:41.156Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (jQTINC0nR23H1XnHAAAD) +[2026-01-05T08:30:41.174Z] [INFO] GET /api/projects 304 14ms +[2026-01-05T08:30:41.227Z] [INFO] GET /api/columns/2 304 8ms +[2026-01-05T08:30:41.231Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:30:41.253Z] [INFO] GET /api/tasks/project/2 304 21ms +[2026-01-05T08:30:41.258Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T08:30:41.270Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-05T08:30:41.307Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 10ms +[2026-01-05T08:30:41.348Z] [INFO] GET /api/notifications 304 11ms +[2026-01-05T08:30:41.396Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-05T08:30:43.683Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T08:30:44.480Z] [INFO] GET /api/knowledge/entries?categoryId=15 304 8ms +[2026-01-05T08:30:45.483Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T08:30:58.857Z] [INFO] GET / 200 5ms +[2026-01-05T08:30:58.919Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (jQTINC0nR23H1XnHAAAD) +[2026-01-05T08:30:58.942Z] [INFO] GET /css/base.css 200 14ms +[2026-01-05T08:30:58.943Z] [INFO] GET /css/components.css 200 12ms +[2026-01-05T08:30:58.947Z] [INFO] GET /css/variables.css 200 13ms +[2026-01-05T08:30:58.951Z] [INFO] GET /css/board.css 200 12ms +[2026-01-05T08:30:58.954Z] [INFO] GET /css/modal.css 200 9ms +[2026-01-05T08:30:58.954Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T08:30:58.969Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T08:30:58.977Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T08:30:58.999Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T08:30:59.009Z] [INFO] GET /css/proposals.css 200 12ms +[2026-01-05T08:30:59.017Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T08:30:59.021Z] [INFO] GET /css/gitea.css 200 7ms +[2026-01-05T08:30:59.024Z] [INFO] GET /css/knowledge.css 200 8ms +[2026-01-05T08:30:59.030Z] [INFO] GET /css/responsive.css 200 5ms +[2026-01-05T08:30:59.031Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T08:30:59.046Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T08:30:59.108Z] [INFO] GET /js/store.js 200 7ms +[2026-01-05T08:30:59.112Z] [INFO] GET /js/auth.js 200 9ms +[2026-01-05T08:30:59.114Z] [INFO] GET /js/api.js 200 9ms +[2026-01-05T08:30:59.117Z] [INFO] GET /js/board.js 200 10ms +[2026-01-05T08:30:59.121Z] [INFO] GET /js/offline.js 200 10ms +[2026-01-05T08:30:59.122Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-05T08:30:59.140Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-05T08:30:59.144Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-05T08:30:59.145Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T08:30:59.148Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T08:30:59.150Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-05T08:30:59.170Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T08:30:59.172Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T08:30:59.176Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T08:30:59.177Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T08:30:59.180Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T08:30:59.183Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T08:30:59.197Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T08:30:59.205Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-05T08:30:59.250Z] [INFO] POST /api/auth/refresh 200 15ms +[2026-01-05T08:30:59.258Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T08:30:59.261Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T08:30:59.294Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T08:30:59.325Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (qW1oN1VLtIhHm8q9AAAF) +[2026-01-05T08:30:59.335Z] [INFO] GET /api/projects 304 7ms +[2026-01-05T08:30:59.389Z] [INFO] GET /api/tasks/project/2 304 24ms +[2026-01-05T08:30:59.394Z] [INFO] GET /api/columns/2 304 27ms +[2026-01-05T08:30:59.401Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T08:30:59.407Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-05T08:30:59.408Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:30:59.442Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-05T08:30:59.479Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T08:30:59.516Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-05T08:31:01.998Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T08:31:02.460Z] [INFO] GET /api/knowledge/entries?categoryId=15 304 9ms +[2026-01-05T08:31:03.469Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T08:31:13.576Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-05T08-31-13-555Z.db.enc +[2026-01-05T08:31:13.577Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-05T08-31-13-555Z.db.enc +[2026-01-05T08:31:13.579Z] [INFO] Backup erstellt: backup_2026-01-05T08-31-13-555Z.db +[2026-01-05T08:31:13.595Z] [INFO] Datei sicher gelöscht: backup_2026-01-03T22-23-19-898Z.db.enc +[2026-01-05T08:31:13.595Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-03T22-23-19-898Z.db.enc +[2026-01-05T08:31:13.597Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-05T08:31:29.807Z] [INFO] GET /css/variables.css 304 4ms +[2026-01-05T08:31:29.816Z] [INFO] GET /css/base.css 304 3ms +[2026-01-05T08:31:29.820Z] [INFO] GET /css/board.css 304 2ms +[2026-01-05T08:31:29.822Z] [INFO] GET /css/components.css 304 1ms +[2026-01-05T08:31:29.825Z] [INFO] GET /css/calendar.css 304 1ms +[2026-01-05T08:31:29.827Z] [INFO] GET /css/modal.css 304 1ms +[2026-01-05T08:31:29.836Z] [INFO] GET /css/list.css 304 0ms +[2026-01-05T08:31:29.846Z] [INFO] GET /css/proposals.css 304 1ms +[2026-01-05T08:31:29.848Z] [INFO] GET /css/notifications.css 304 1ms +[2026-01-05T08:31:29.851Z] [INFO] GET /css/admin.css 304 2ms +[2026-01-05T08:31:29.853Z] [INFO] GET /css/gitea.css 304 1ms +[2026-01-05T08:31:29.862Z] [INFO] GET /css/coding.css 304 2ms +[2026-01-05T08:31:29.869Z] [INFO] GET /css/knowledge.css 304 1ms +[2026-01-05T08:31:29.880Z] [INFO] GET /css/responsive.css 304 4ms +[2026-01-05T08:31:29.883Z] [INFO] GET /css/mobile.css 304 2ms +[2026-01-05T08:31:30.656Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T08:31:38.818Z] [INFO] GET / 200 4ms +[2026-01-05T08:31:38.880Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (qW1oN1VLtIhHm8q9AAAF) +[2026-01-05T08:31:38.887Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T08:31:38.897Z] [INFO] GET /css/components.css 200 12ms +[2026-01-05T08:31:38.903Z] [INFO] GET /css/board.css 200 17ms +[2026-01-05T08:31:38.904Z] [INFO] GET /css/base.css 200 16ms +[2026-01-05T08:31:38.906Z] [INFO] GET /css/calendar.css 200 12ms +[2026-01-05T08:31:38.907Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-05T08:31:38.929Z] [INFO] GET /css/list.css 200 5ms +[2026-01-05T08:31:38.961Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T08:31:38.962Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T08:31:38.977Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-05T08:31:38.980Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-05T08:31:38.985Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T08:31:38.990Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T08:31:38.992Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T08:31:38.995Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T08:31:39.008Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T08:31:39.070Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-05T08:31:39.068Z] [INFO] GET /js/store.js 200 2ms +[2026-01-05T08:31:39.078Z] [INFO] GET /js/api.js 200 6ms +[2026-01-05T08:31:39.080Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-05T08:31:39.081Z] [INFO] GET /js/sync.js 200 7ms +[2026-01-05T08:31:39.097Z] [INFO] GET /js/board.js 200 1ms +[2026-01-05T08:31:39.101Z] [INFO] GET /js/task-modal.js 200 1ms +[2026-01-05T08:31:39.111Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T08:31:39.112Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T08:31:39.130Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-05T08:31:39.132Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-05T08:31:39.141Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T08:31:39.142Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T08:31:39.145Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-05T08:31:39.149Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T08:31:39.160Z] [INFO] GET /js/knowledge.js 200 1ms +[2026-01-05T08:31:39.165Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T08:31:39.172Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T08:31:39.175Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T08:31:39.254Z] [INFO] GET /assets/icons/task.svg 200 6ms +[2026-01-05T08:31:40.762Z] [INFO] GET /sw.js 304 2ms +[2026-01-05T08:31:50.577Z] [INFO] GET / 200 7ms +[2026-01-05T08:31:50.647Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T08:31:50.678Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T08:31:50.721Z] [INFO] GET /css/components.css 200 7ms +[2026-01-05T08:31:50.719Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-05T08:31:50.722Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T08:31:50.724Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T08:31:50.733Z] [INFO] GET /css/list.css 200 5ms +[2026-01-05T08:31:50.735Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T08:31:50.783Z] [INFO] GET /css/proposals.css 200 9ms +[2026-01-05T08:31:50.786Z] [INFO] GET /css/gitea.css 200 9ms +[2026-01-05T08:31:50.788Z] [INFO] GET /css/notifications.css 200 7ms +[2026-01-05T08:31:50.790Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-05T08:31:50.799Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T08:31:50.800Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T08:31:50.811Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-05T08:31:50.822Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T08:31:50.888Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-05T08:31:50.893Z] [INFO] GET /js/store.js 200 9ms +[2026-01-05T08:31:50.898Z] [INFO] GET /js/board.js 200 11ms +[2026-01-05T08:31:50.904Z] [INFO] GET /js/auth.js 200 13ms +[2026-01-05T08:31:50.907Z] [INFO] GET /js/api.js 200 12ms +[2026-01-05T08:31:50.908Z] [INFO] GET /js/sync.js 200 8ms +[2026-01-05T08:31:50.923Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-05T08:31:50.927Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T08:31:50.937Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T08:31:50.948Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-05T08:31:50.953Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-05T08:31:50.963Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T08:31:50.964Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-05T08:31:50.965Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T08:31:50.976Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T08:31:50.980Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T08:31:50.984Z] [INFO] GET /js/coding.js 200 1ms +[2026-01-05T08:31:50.995Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-05T08:31:50.997Z] [INFO] GET /js/mobile.js 200 6ms +[2026-01-05T08:31:51.063Z] [INFO] GET /assets/icons/task.svg 200 5ms +[2026-01-05T08:31:51.071Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T08:31:51.115Z] [INFO] GET / 304 3ms +[2026-01-05T08:31:51.117Z] [INFO] GET /css/variables.css 304 4ms +[2026-01-05T08:31:51.119Z] [INFO] GET /index.html 200 9ms +[2026-01-05T08:31:51.151Z] [INFO] GET /css/base.css 304 1ms +[2026-01-05T08:31:51.152Z] [INFO] GET /css/components.css 304 1ms +[2026-01-05T08:31:51.159Z] [INFO] GET /css/board.css 304 1ms +[2026-01-05T08:31:51.179Z] [INFO] GET /css/calendar.css 304 2ms +[2026-01-05T08:31:51.182Z] [INFO] GET /css/modal.css 304 1ms +[2026-01-05T08:31:51.190Z] [INFO] GET /css/responsive.css 304 1ms +[2026-01-05T08:31:51.209Z] [INFO] GET /js/app.js 304 1ms +[2026-01-05T08:31:51.212Z] [INFO] GET /js/utils.js 304 2ms +[2026-01-05T08:31:51.222Z] [INFO] GET /js/api.js 304 1ms +[2026-01-05T08:31:51.235Z] [INFO] GET /js/auth.js 304 1ms +[2026-01-05T08:31:51.243Z] [INFO] GET /js/store.js 304 2ms +[2026-01-05T08:31:51.252Z] [INFO] GET /js/sync.js 304 1ms +[2026-01-05T08:31:51.260Z] [INFO] GET /js/offline.js 304 1ms +[2026-01-05T08:31:51.283Z] [INFO] GET /js/board.js 304 2ms +[2026-01-05T08:31:51.285Z] [INFO] GET /js/task-modal.js 304 1ms +[2026-01-05T08:31:51.290Z] [INFO] GET /js/calendar.js 304 1ms +[2026-01-05T08:31:51.315Z] [INFO] GET /js/shortcuts.js 304 3ms +[2026-01-05T08:31:51.320Z] [INFO] GET /js/list.js 304 4ms +[2026-01-05T08:31:51.324Z] [INFO] GET /js/undo.js 304 1ms +[2026-01-05T08:31:51.345Z] [INFO] GET /js/tour.js 200 3ms +[2026-01-05T08:31:51.351Z] [INFO] GET /js/proposals.js 304 1ms +[2026-01-05T08:31:51.354Z] [INFO] GET /js/admin.js 304 2ms +[2026-01-05T08:31:51.379Z] [INFO] GET /js/notifications.js 304 2ms +[2026-01-05T08:31:51.387Z] [INFO] GET /js/gitea.js 304 2ms +[2026-01-05T08:31:51.388Z] [INFO] GET /js/knowledge.js 304 2ms +[2026-01-05T08:31:51.407Z] [INFO] GET /js/coding.js 304 0ms +[2026-01-05T08:31:51.415Z] [INFO] GET /js/mobile.js 304 1ms +[2026-01-05T08:31:51.418Z] [INFO] GET /css/list.css 304 1ms +[2026-01-05T08:31:51.437Z] [INFO] GET /css/mobile.css 304 1ms +[2026-01-05T08:31:51.448Z] [INFO] GET /css/admin.css 304 3ms +[2026-01-05T08:31:51.449Z] [INFO] GET /css/proposals.css 304 3ms +[2026-01-05T08:31:51.469Z] [INFO] GET /css/notifications.css 304 2ms +[2026-01-05T08:31:51.477Z] [INFO] GET /css/gitea.css 304 1ms +[2026-01-05T08:31:51.482Z] [INFO] GET /css/knowledge.css 304 2ms +[2026-01-05T08:31:51.502Z] [INFO] GET /css/coding.css 304 1ms +[2026-01-05T08:31:56.106Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T08:31:56.107Z] [INFO] POST /api/auth/login 200 483ms +[2026-01-05T08:31:56.144Z] [INFO] GET /api/auth/users 200 3ms +[2026-01-05T08:31:56.181Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (GH6SKZ2IkeWBJd2XAAAH) +[2026-01-05T08:31:56.192Z] [INFO] GET /api/projects 200 6ms +[2026-01-05T08:31:56.234Z] [INFO] GET /api/columns/2 200 8ms +[2026-01-05T08:31:56.255Z] [INFO] GET /api/tasks/project/2 200 28ms +[2026-01-05T08:31:56.261Z] [INFO] GET /api/stats/dashboard?projectId=2 200 5ms +[2026-01-05T08:31:56.264Z] [INFO] GET /api/labels/2 200 7ms +[2026-01-05T08:31:56.266Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:31:56.333Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 6ms +[2026-01-05T08:31:56.377Z] [INFO] GET /api/notifications 200 9ms +[2026-01-05T08:31:56.418Z] [INFO] GET /api/knowledge/categories 200 7ms +[2026-01-05T08:31:58.476Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T08:32:13.544Z] [INFO] GET / 304 3ms +[2026-01-05T08:32:13.548Z] [INFO] GET /css/variables.css 304 2ms +[2026-01-05T08:32:13.550Z] [INFO] GET /css/base.css 304 1ms +[2026-01-05T08:32:13.560Z] [INFO] GET /css/board.css 304 1ms +[2026-01-05T08:32:13.561Z] [INFO] GET /css/modal.css 304 2ms +[2026-01-05T08:32:13.562Z] [INFO] GET /css/components.css 304 2ms +[2026-01-05T08:32:13.568Z] [INFO] GET /css/calendar.css 304 1ms +[2026-01-05T08:32:13.578Z] [INFO] GET /css/list.css 304 2ms +[2026-01-05T08:32:13.582Z] [INFO] GET /css/admin.css 304 2ms +[2026-01-05T08:32:13.596Z] [INFO] GET /css/proposals.css 304 1ms +[2026-01-05T08:32:13.599Z] [INFO] GET /css/notifications.css 304 2ms +[2026-01-05T08:32:13.601Z] [INFO] GET /css/gitea.css 304 4ms +[2026-01-05T08:32:13.602Z] [INFO] GET /css/coding.css 304 2ms +[2026-01-05T08:32:13.610Z] [INFO] GET /css/knowledge.css 304 2ms +[2026-01-05T08:32:13.613Z] [INFO] GET /css/responsive.css 304 1ms +[2026-01-05T08:32:13.625Z] [INFO] GET /css/mobile.css 304 1ms +[2026-01-05T08:32:14.347Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T08:35:55.509Z] [INFO] SIGTERM empfangen, fahre herunter... +[2026-01-05T08:36:08.066Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-05T08:36:08.149Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-05T08:36:08.787Z] [INFO] Admin-Passwort bereits korrekt +[2026-01-05T08:36:08.787Z] [INFO] Datenbank initialisiert +[2026-01-05T08:36:08.792Z] [INFO] Server läuft auf Port 3001 +[2026-01-05T08:36:08.794Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-05T08:36:08.794Z] [INFO] Automatische Backups aktiviert +[2026-01-05T08:36:08.793Z] [INFO] Umgebung: development +[2026-01-05T08:36:09.321Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (r2D05yIaxXk1884hAAAB) +[2026-01-05T08:36:09.375Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:36:22.442Z] [INFO] GET / 200 17ms +[2026-01-05T08:36:22.505Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (r2D05yIaxXk1884hAAAB) +[2026-01-05T08:36:22.514Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-05T08:36:22.523Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T08:36:22.553Z] [INFO] GET /css/components.css 200 7ms +[2026-01-05T08:36:22.557Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T08:36:22.580Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T08:36:22.586Z] [INFO] GET /css/list.css 200 10ms +[2026-01-05T08:36:22.588Z] [INFO] GET /css/calendar.css 200 10ms +[2026-01-05T08:36:22.594Z] [INFO] GET /css/admin.css 200 10ms +[2026-01-05T08:36:22.598Z] [INFO] GET /css/proposals.css 200 6ms +[2026-01-05T08:36:22.604Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T08:36:22.618Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T08:36:22.635Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-05T08:36:22.642Z] [INFO] GET /css/responsive.css 200 9ms +[2026-01-05T08:36:22.645Z] [INFO] GET /css/mobile.css 200 8ms +[2026-01-05T08:36:22.656Z] [INFO] GET /css/knowledge.css 200 16ms +[2026-01-05T08:36:22.663Z] [INFO] GET /js/app.js 200 5ms +[2026-01-05T08:36:22.752Z] [INFO] GET /js/store.js 200 8ms +[2026-01-05T08:36:22.754Z] [INFO] GET /js/sync.js 200 8ms +[2026-01-05T08:36:22.759Z] [INFO] GET /js/auth.js 200 10ms +[2026-01-05T08:36:22.764Z] [INFO] GET /js/offline.js 200 11ms +[2026-01-05T08:36:22.770Z] [INFO] GET /js/api.js 200 13ms +[2026-01-05T08:36:22.787Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-05T08:36:22.804Z] [INFO] GET /js/list.js 200 10ms +[2026-01-05T08:36:22.806Z] [INFO] GET /js/calendar.js 200 9ms +[2026-01-05T08:36:22.813Z] [INFO] GET /js/board.js 200 11ms +[2026-01-05T08:36:22.820Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T08:36:22.835Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T08:36:22.840Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T08:36:22.842Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T08:36:22.848Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T08:36:22.850Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T08:36:22.861Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T08:36:22.868Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T08:36:22.880Z] [INFO] GET /js/mobile.js 200 6ms +[2026-01-05T08:36:22.883Z] [INFO] GET /js/utils.js 200 7ms +[2026-01-05T08:36:22.968Z] [INFO] POST /api/auth/refresh 200 15ms +[2026-01-05T08:36:22.986Z] [INFO] GET /api/auth/users 200 7ms +[2026-01-05T08:36:22.989Z] [INFO] GET /assets/icons/task.svg 200 18ms +[2026-01-05T08:36:23.033Z] [INFO] GET /api/auth/users 200 8ms +[2026-01-05T08:36:23.072Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (oEP8sQyG2BDgicsHAAAD) +[2026-01-05T08:36:23.085Z] [INFO] GET /api/projects 200 10ms +[2026-01-05T08:36:23.121Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:36:23.129Z] [INFO] GET /api/columns/2 200 6ms +[2026-01-05T08:36:23.142Z] [INFO] GET /api/stats/dashboard?projectId=2 200 8ms +[2026-01-05T08:36:23.150Z] [INFO] GET /api/labels/2 200 7ms +[2026-01-05T08:36:23.175Z] [INFO] GET /api/tasks/project/2 200 24ms +[2026-01-05T08:36:23.224Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 10ms +[2026-01-05T08:36:23.262Z] [INFO] GET /api/notifications 200 7ms +[2026-01-05T08:36:23.305Z] [INFO] GET /api/knowledge/categories 200 8ms +[2026-01-05T08:36:27.049Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T08:36:28.780Z] [INFO] GET /api/knowledge/entries?categoryId=15 200 8ms +[2026-01-05T08:36:29.789Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T08:36:30.485Z] [INFO] GET / 200 5ms +[2026-01-05T08:36:30.537Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (oEP8sQyG2BDgicsHAAAD) +[2026-01-05T08:36:30.558Z] [INFO] GET /css/base.css 200 8ms +[2026-01-05T08:36:30.562Z] [INFO] GET /css/variables.css 200 9ms +[2026-01-05T08:36:30.567Z] [INFO] GET /css/board.css 200 11ms +[2026-01-05T08:36:30.570Z] [INFO] GET /css/components.css 200 9ms +[2026-01-05T08:36:30.573Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-05T08:36:30.575Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-05T08:36:30.587Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T08:36:30.589Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T08:36:30.618Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T08:36:30.619Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-05T08:36:30.620Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T08:36:30.624Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T08:36:30.627Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T08:36:30.630Z] [INFO] GET /css/knowledge.css 200 1ms +[2026-01-05T08:36:30.646Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T08:36:30.654Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T08:36:30.723Z] [INFO] GET /js/store.js 200 8ms +[2026-01-05T08:36:30.727Z] [INFO] GET /js/api.js 200 11ms +[2026-01-05T08:36:30.729Z] [INFO] GET /js/auth.js 200 10ms +[2026-01-05T08:36:30.731Z] [INFO] GET /js/offline.js 200 9ms +[2026-01-05T08:36:30.732Z] [INFO] GET /js/board.js 200 10ms +[2026-01-05T08:36:30.733Z] [INFO] GET /js/sync.js 200 7ms +[2026-01-05T08:36:30.756Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T08:36:30.762Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T08:36:30.763Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T08:36:30.765Z] [INFO] GET /js/list.js 200 4ms +[2026-01-05T08:36:30.767Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T08:36:30.796Z] [INFO] GET /js/admin.js 200 5ms +[2026-01-05T08:36:30.803Z] [INFO] GET /js/gitea.js 200 8ms +[2026-01-05T08:36:30.805Z] [INFO] GET /js/notifications.js 200 6ms +[2026-01-05T08:36:30.809Z] [INFO] GET /js/proposals.js 200 8ms +[2026-01-05T08:36:30.813Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T08:36:30.819Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T08:36:30.837Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T08:36:30.842Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T08:36:30.877Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T08:36:30.884Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T08:36:30.891Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-05T08:36:30.939Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-05T08:36:30.954Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (kUtrK34JjwV6BjtMAAAF) +[2026-01-05T08:36:30.977Z] [INFO] GET /api/projects 304 10ms +[2026-01-05T08:36:31.016Z] [INFO] GET /api/columns/2 304 7ms +[2026-01-05T08:36:31.025Z] [INFO] GET /api/stats/dashboard?projectId=2 304 15ms +[2026-01-05T08:36:31.040Z] [INFO] GET /api/tasks/project/2 304 23ms +[2026-01-05T08:36:31.028Z] [INFO] GET /api/labels/2 304 16ms +[2026-01-05T08:36:31.043Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:36:31.087Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-05T08:36:31.124Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T08:36:31.164Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-05T08:36:33.594Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-05T08:36:33.595Z] [INFO] POST /api/auth/logout 200 11ms +[2026-01-05T08:36:33.601Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-05T08:36:33.603Z] [INFO] POST /api/auth/logout 200 5ms +[2026-01-05T08:36:33.619Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (kUtrK34JjwV6BjtMAAAF) +[2026-01-05T08:36:38.089Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T08:36:38.090Z] [INFO] POST /api/auth/login 200 486ms +[2026-01-05T08:36:38.126Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T08:36:38.157Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (0lXqeyjFGok12ll9AAAH) +[2026-01-05T08:36:38.181Z] [INFO] GET /api/projects 304 5ms +[2026-01-05T08:36:38.220Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-05T08:36:38.222Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:36:38.227Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-05T08:36:38.232Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T08:36:38.245Z] [INFO] GET /api/tasks/project/2 304 16ms +[2026-01-05T08:36:38.288Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-05T08:36:38.320Z] [INFO] GET /api/knowledge/categories 304 5ms +[2026-01-05T08:36:40.408Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T08:36:57.821Z] [INFO] GET /css/variables.css 304 3ms +[2026-01-05T08:36:57.824Z] [INFO] GET /css/base.css 304 2ms +[2026-01-05T08:36:57.828Z] [INFO] GET /css/board.css 304 3ms +[2026-01-05T08:36:57.832Z] [INFO] GET /css/components.css 304 3ms +[2026-01-05T08:36:57.835Z] [INFO] GET /css/modal.css 304 2ms +[2026-01-05T08:36:57.838Z] [INFO] GET /css/calendar.css 304 1ms +[2026-01-05T08:36:57.850Z] [INFO] GET /css/admin.css 304 0ms +[2026-01-05T08:36:57.852Z] [INFO] GET /css/list.css 304 1ms +[2026-01-05T08:36:57.855Z] [INFO] GET /css/proposals.css 304 1ms +[2026-01-05T08:36:57.858Z] [INFO] GET /css/notifications.css 304 1ms +[2026-01-05T08:36:57.863Z] [INFO] GET /css/gitea.css 304 1ms +[2026-01-05T08:36:57.865Z] [INFO] GET /css/coding.css 304 3ms +[2026-01-05T08:36:57.886Z] [INFO] GET /css/knowledge.css 304 6ms +[2026-01-05T08:36:57.893Z] [INFO] GET /css/responsive.css 304 3ms +[2026-01-05T08:36:57.896Z] [INFO] GET /css/mobile.css 304 2ms +[2026-01-05T08:36:58.663Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T08:37:05.388Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (0lXqeyjFGok12ll9AAAH) +[2026-01-05T08:37:08.814Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-05T08-37-08-797Z.db.enc +[2026-01-05T08:37:08.814Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-05T08-37-08-797Z.db.enc +[2026-01-05T08:37:08.816Z] [INFO] Backup erstellt: backup_2026-01-05T08-37-08-797Z.db +[2026-01-05T08:37:08.832Z] [INFO] Datei sicher gelöscht: backup_2026-01-03T22-36-50-108Z.db.enc +[2026-01-05T08:37:08.833Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-03T22-36-50-108Z.db.enc +[2026-01-05T08:37:08.834Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-05T08:37:12.220Z] [INFO] GET / 200 5ms +[2026-01-05T08:37:12.287Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T08:37:12.315Z] [INFO] GET /css/base.css 200 1ms +[2026-01-05T08:37:12.350Z] [INFO] GET /css/components.css 200 4ms +[2026-01-05T08:37:12.358Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T08:37:12.363Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T08:37:12.372Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T08:37:12.375Z] [INFO] GET /css/list.css 200 7ms +[2026-01-05T08:37:12.377Z] [INFO] GET /css/admin.css 200 6ms +[2026-01-05T08:37:12.398Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-05T08:37:12.408Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-05T08:37:12.410Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T08:37:12.419Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T08:37:12.423Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-05T08:37:12.429Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T08:37:12.431Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T08:37:12.450Z] [INFO] GET /js/app.js 200 9ms +[2026-01-05T08:37:12.516Z] [INFO] GET /js/api.js 200 9ms +[2026-01-05T08:37:12.519Z] [INFO] GET /js/store.js 200 6ms +[2026-01-05T08:37:12.527Z] [INFO] GET /js/board.js 200 9ms +[2026-01-05T08:37:12.528Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-05T08:37:12.530Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-05T08:37:12.531Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-05T08:37:12.546Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T08:37:12.550Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T08:37:12.566Z] [INFO] GET /js/shortcuts.js 200 7ms +[2026-01-05T08:37:12.570Z] [INFO] GET /js/undo.js 200 8ms +[2026-01-05T08:37:12.572Z] [INFO] GET /js/list.js 200 8ms +[2026-01-05T08:37:12.581Z] [INFO] GET /js/admin.js 200 5ms +[2026-01-05T08:37:12.584Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-05T08:37:12.585Z] [INFO] GET /js/notifications.js 200 6ms +[2026-01-05T08:37:12.594Z] [INFO] GET /js/gitea.js 200 1ms +[2026-01-05T08:37:12.599Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T08:37:12.602Z] [INFO] GET /js/coding.js 200 1ms +[2026-01-05T08:37:12.607Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T08:37:12.610Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-05T08:37:12.671Z] [INFO] GET /assets/icons/task.svg 200 4ms +[2026-01-05T08:37:12.678Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T08:37:12.717Z] [INFO] GET / 304 2ms +[2026-01-05T08:37:12.723Z] [INFO] GET /css/variables.css 304 2ms +[2026-01-05T08:37:12.726Z] [INFO] GET /index.html 200 7ms +[2026-01-05T08:37:12.752Z] [INFO] GET /css/base.css 304 3ms +[2026-01-05T08:37:12.754Z] [INFO] GET /css/components.css 304 4ms +[2026-01-05T08:37:12.761Z] [INFO] GET /css/board.css 304 2ms +[2026-01-05T08:37:12.790Z] [INFO] GET /css/calendar.css 304 2ms +[2026-01-05T08:37:12.791Z] [INFO] GET /css/modal.css 304 2ms +[2026-01-05T08:37:12.791Z] [INFO] GET /css/responsive.css 304 1ms +[2026-01-05T08:37:12.821Z] [INFO] GET /js/app.js 304 1ms +[2026-01-05T08:37:12.830Z] [INFO] GET /js/api.js 304 1ms +[2026-01-05T08:37:12.834Z] [INFO] GET /js/utils.js 304 2ms +[2026-01-05T08:37:12.863Z] [INFO] GET /js/auth.js 304 2ms +[2026-01-05T08:37:12.867Z] [INFO] GET /js/store.js 304 2ms +[2026-01-05T08:37:12.876Z] [INFO] GET /js/sync.js 304 1ms +[2026-01-05T08:37:12.893Z] [INFO] GET /js/offline.js 304 1ms +[2026-01-05T08:37:12.896Z] [INFO] GET /js/board.js 304 0ms +[2026-01-05T08:37:12.906Z] [INFO] GET /js/task-modal.js 304 1ms +[2026-01-05T08:37:12.924Z] [INFO] GET /js/calendar.js 304 2ms +[2026-01-05T08:37:12.928Z] [INFO] GET /js/list.js 304 1ms +[2026-01-05T08:37:12.947Z] [INFO] GET /js/shortcuts.js 304 2ms +[2026-01-05T08:37:12.953Z] [INFO] GET /js/undo.js 304 0ms +[2026-01-05T08:37:12.960Z] [INFO] GET /js/tour.js 200 2ms +[2026-01-05T08:37:12.977Z] [INFO] GET /js/admin.js 304 1ms +[2026-01-05T08:37:12.981Z] [INFO] GET /js/proposals.js 304 1ms +[2026-01-05T08:37:12.991Z] [INFO] GET /js/notifications.js 304 2ms +[2026-01-05T08:37:13.011Z] [INFO] GET /js/gitea.js 304 1ms +[2026-01-05T08:37:13.019Z] [INFO] GET /js/knowledge.js 304 3ms +[2026-01-05T08:37:13.024Z] [INFO] GET /js/coding.js 304 1ms +[2026-01-05T08:37:13.044Z] [INFO] GET /css/list.css 304 1ms +[2026-01-05T08:37:13.057Z] [INFO] GET /css/mobile.css 304 5ms +[2026-01-05T08:37:13.055Z] [INFO] GET /js/mobile.js 304 5ms +[2026-01-05T08:37:13.075Z] [INFO] GET /css/admin.css 304 2ms +[2026-01-05T08:37:13.086Z] [INFO] GET /css/proposals.css 304 1ms +[2026-01-05T08:37:13.087Z] [INFO] GET /css/notifications.css 304 3ms +[2026-01-05T08:37:13.107Z] [INFO] GET /css/gitea.css 304 1ms +[2026-01-05T08:37:13.115Z] [INFO] GET /css/knowledge.css 304 1ms +[2026-01-05T08:37:13.119Z] [INFO] GET /css/coding.css 304 1ms +[2026-01-05T08:37:17.058Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T08:37:17.059Z] [INFO] POST /api/auth/login 200 441ms +[2026-01-05T08:37:17.104Z] [INFO] GET /api/auth/users 200 9ms +[2026-01-05T08:37:17.146Z] [INFO] GET /api/projects 200 8ms +[2026-01-05T08:37:17.154Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (2ykE-zg7R3mzcBq6AAAJ) +[2026-01-05T08:37:17.183Z] [INFO] GET /api/labels/2 200 7ms +[2026-01-05T08:37:17.190Z] [INFO] GET /api/columns/2 200 4ms +[2026-01-05T08:37:17.198Z] [INFO] GET /api/stats/dashboard?projectId=2 200 5ms +[2026-01-05T08:37:17.200Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:37:17.219Z] [INFO] GET /api/tasks/project/2 200 20ms +[2026-01-05T08:37:17.292Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 6ms +[2026-01-05T08:37:17.331Z] [INFO] GET /api/notifications 200 7ms +[2026-01-05T08:37:17.372Z] [INFO] GET /api/knowledge/categories 200 7ms +[2026-01-05T08:37:19.253Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T08:37:19.302Z] [INFO] GET /api/knowledge/entries?categoryId=15 200 5ms +[2026-01-05T08:37:20.325Z] [INFO] POST /api/auth/refresh 200 21ms +[2026-01-05T08:40:54.376Z] [INFO] SIGTERM empfangen, fahre herunter... +[2026-01-05T08:41:07.813Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-05T08:41:07.924Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-05T08:41:08.472Z] [INFO] Admin-Passwort bereits korrekt +[2026-01-05T08:41:08.472Z] [INFO] Datenbank initialisiert +[2026-01-05T08:41:08.476Z] [INFO] Server läuft auf Port 3001 +[2026-01-05T08:41:08.477Z] [INFO] Umgebung: development +[2026-01-05T08:41:08.477Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-05T08:41:08.478Z] [INFO] Automatische Backups aktiviert +[2026-01-05T08:41:10.509Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (7cJHoQfeufIWMbD4AAAB) +[2026-01-05T08:41:10.562Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:41:48.521Z] [INFO] GET / 200 12ms +[2026-01-05T08:41:48.587Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (7cJHoQfeufIWMbD4AAAB) +[2026-01-05T08:41:48.595Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-05T08:41:48.596Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T08:41:48.629Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T08:41:48.631Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T08:41:48.644Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-05T08:41:48.659Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-05T08:41:48.668Z] [INFO] GET /css/list.css 200 12ms +[2026-01-05T08:41:48.671Z] [INFO] GET /css/admin.css 200 9ms +[2026-01-05T08:41:48.672Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-05T08:41:48.678Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T08:41:48.691Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T08:41:48.709Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-05T08:41:48.720Z] [INFO] GET /css/knowledge.css 200 16ms +[2026-01-05T08:41:48.721Z] [INFO] GET /css/responsive.css 200 14ms +[2026-01-05T08:41:48.724Z] [INFO] GET /css/mobile.css 200 14ms +[2026-01-05T08:41:48.729Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T08:41:48.799Z] [INFO] GET /js/store.js 200 8ms +[2026-01-05T08:41:48.803Z] [INFO] GET /js/api.js 200 9ms +[2026-01-05T08:41:48.807Z] [INFO] GET /js/offline.js 200 10ms +[2026-01-05T08:41:48.810Z] [INFO] GET /js/board.js 200 9ms +[2026-01-05T08:41:48.813Z] [INFO] GET /js/auth.js 200 8ms +[2026-01-05T08:41:48.815Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-05T08:41:48.825Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T08:41:48.829Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T08:41:48.837Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T08:41:48.843Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T08:41:48.847Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T08:41:48.861Z] [INFO] GET /js/admin.js 200 6ms +[2026-01-05T08:41:48.864Z] [INFO] GET /js/proposals.js 200 7ms +[2026-01-05T08:41:48.871Z] [INFO] GET /js/notifications.js 200 8ms +[2026-01-05T08:41:48.875Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T08:41:48.877Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T08:41:48.886Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T08:41:48.894Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T08:41:48.902Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T08:41:48.992Z] [INFO] POST /api/auth/refresh 200 20ms +[2026-01-05T08:41:48.999Z] [INFO] GET /assets/icons/task.svg 304 5ms +[2026-01-05T08:41:49.002Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T08:41:49.048Z] [INFO] GET /api/auth/users 304 11ms +[2026-01-05T08:41:49.075Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (6e5vVj-0fXN5jhMVAAAD) +[2026-01-05T08:41:49.087Z] [INFO] GET /api/projects 304 7ms +[2026-01-05T08:41:49.121Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:41:49.156Z] [INFO] GET /api/tasks/project/2 304 34ms +[2026-01-05T08:41:49.161Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T08:41:49.172Z] [INFO] GET /api/columns/2 304 10ms +[2026-01-05T08:41:49.177Z] [INFO] GET /api/stats/dashboard?projectId=2 304 9ms +[2026-01-05T08:41:49.224Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 10ms +[2026-01-05T08:41:49.264Z] [INFO] GET /api/notifications 304 10ms +[2026-01-05T08:41:49.307Z] [INFO] GET /api/knowledge/categories 304 12ms +[2026-01-05T08:41:51.686Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T08:41:56.700Z] [INFO] GET / 200 4ms +[2026-01-05T08:41:56.755Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (6e5vVj-0fXN5jhMVAAAD) +[2026-01-05T08:41:56.770Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T08:41:56.768Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-05T08:41:56.772Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T08:41:56.776Z] [INFO] GET /css/base.css 200 9ms +[2026-01-05T08:41:56.784Z] [INFO] GET /css/components.css 200 13ms +[2026-01-05T08:41:56.787Z] [INFO] GET /css/calendar.css 200 13ms +[2026-01-05T08:41:56.801Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T08:41:56.805Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T08:41:56.824Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T08:41:56.831Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T08:41:56.834Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-05T08:41:56.841Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-05T08:41:56.842Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T08:41:56.846Z] [INFO] GET /css/responsive.css 200 6ms +[2026-01-05T08:41:56.857Z] [INFO] GET /css/mobile.css 200 5ms +[2026-01-05T08:41:56.864Z] [INFO] GET /js/app.js 200 1ms +[2026-01-05T08:41:56.931Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T08:41:56.936Z] [INFO] GET /js/api.js 200 8ms +[2026-01-05T08:41:56.946Z] [INFO] GET /js/sync.js 200 8ms +[2026-01-05T08:41:56.948Z] [INFO] GET /js/auth.js 200 9ms +[2026-01-05T08:41:56.950Z] [INFO] GET /js/offline.js 200 9ms +[2026-01-05T08:41:56.953Z] [INFO] GET /js/board.js 200 9ms +[2026-01-05T08:41:56.966Z] [INFO] GET /js/task-modal.js 200 6ms +[2026-01-05T08:41:56.972Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T08:41:56.979Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T08:41:56.981Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T08:41:56.984Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T08:41:56.996Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-05T08:41:57.009Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T08:41:57.013Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-05T08:41:57.014Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T08:41:57.014Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T08:41:57.016Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T08:41:57.025Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T08:41:57.038Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T08:41:57.071Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T08:41:57.079Z] [INFO] GET /api/auth/users 304 3ms +[2026-01-05T08:41:57.081Z] [INFO] GET /assets/icons/task.svg 304 5ms +[2026-01-05T08:41:57.119Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-05T08:41:57.154Z] [INFO] GET /api/projects 304 9ms +[2026-01-05T08:41:57.162Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (qt1agKXUHhIIiiC1AAAF) +[2026-01-05T08:41:57.195Z] [INFO] GET /api/stats/dashboard?projectId=2 304 8ms +[2026-01-05T08:41:57.215Z] [INFO] GET /api/tasks/project/2 304 27ms +[2026-01-05T08:41:57.220Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-05T08:41:57.223Z] [INFO] GET /api/labels/2 304 7ms +[2026-01-05T08:41:57.227Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:41:57.263Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 4ms +[2026-01-05T08:41:57.303Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T08:41:57.355Z] [INFO] GET /api/knowledge/categories 304 10ms +[2026-01-05T08:41:59.841Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-05T08:42:00.621Z] [INFO] readCLAUDEmd: Checking path /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-05T08:42:00.621Z] [INFO] readCLAUDEmd: File does not exist: /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-05T08:42:00.621Z] [INFO] Trying fallback path for TaskMate: /app/taskmate-source +[2026-01-05T08:42:00.622Z] [INFO] readCLAUDEmd: Checking path /app/taskmate-source/CLAUDE.md +[2026-01-05T08:42:00.623Z] [INFO] readCLAUDEmd: Successfully read 12158 characters from /app/taskmate-source/CLAUDE.md +[2026-01-05T08:42:00.626Z] [INFO] GET /api/coding/directories 200 12ms +[2026-01-05T08:42:00.684Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:42:00.684Z] [INFO] Git directory exists: true +[2026-01-05T08:42:00.685Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T08:42:00.685Z] [INFO] Git directory exists: true +[2026-01-05T08:42:00.767Z] [INFO] GET /api/coding/directories/3/status 200 87ms +[2026-01-05T08:42:02.096Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T08:42:07.924Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T08:42:08.400Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-05T08:42:08.407Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-05T08:42:08.401Z] [INFO] POST /api/auth/logout 200 8ms +[2026-01-05T08:42:08.408Z] [INFO] POST /api/auth/logout 200 5ms +[2026-01-05T08:42:08.427Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (qt1agKXUHhIIiiC1AAAF) +[2026-01-05T08:42:08.498Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-05T08-42-08-478Z.db.enc +[2026-01-05T08:42:08.498Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-05T08-42-08-478Z.db.enc +[2026-01-05T08:42:08.499Z] [INFO] Backup erstellt: backup_2026-01-05T08-42-08-478Z.db +[2026-01-05T08:42:08.512Z] [INFO] Datei sicher gelöscht: backup_2026-01-03T22-56-25-511Z.db.enc +[2026-01-05T08:42:08.513Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-03T22-56-25-511Z.db.enc +[2026-01-05T08:42:08.515Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-05T08:42:12.838Z] [INFO] Login erfolgreich: admin +[2026-01-05T08:42:12.839Z] [INFO] POST /api/auth/login 200 474ms +[2026-01-05T08:42:12.877Z] [INFO] GET /api/admin/users 200 4ms +[2026-01-05T08:42:12.913Z] [INFO] GET /api/admin/upload-settings 200 7ms +[2026-01-05T08:42:15.759Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T08:42:15.919Z] [INFO] Logout: admin +[2026-01-05T08:42:15.922Z] [INFO] POST /api/auth/logout 200 11ms +[2026-01-05T08:42:15.965Z] [INFO] GET / 304 2ms +[2026-01-05T08:42:16.022Z] [INFO] GET /css/base.css 304 3ms +[2026-01-05T08:42:16.023Z] [INFO] GET /css/variables.css 304 2ms +[2026-01-05T08:42:16.024Z] [INFO] GET /css/components.css 304 3ms +[2026-01-05T08:42:16.027Z] [INFO] GET /css/board.css 304 1ms +[2026-01-05T08:42:16.039Z] [INFO] GET /css/modal.css 304 1ms +[2026-01-05T08:42:16.042Z] [INFO] GET /css/calendar.css 304 2ms +[2026-01-05T08:42:16.057Z] [INFO] GET /css/admin.css 304 2ms +[2026-01-05T08:42:16.060Z] [INFO] GET /css/proposals.css 304 1ms +[2026-01-05T08:42:16.064Z] [INFO] GET /css/notifications.css 304 2ms +[2026-01-05T08:42:16.067Z] [INFO] GET /css/list.css 304 2ms +[2026-01-05T08:42:16.070Z] [INFO] GET /css/gitea.css 304 2ms +[2026-01-05T08:42:16.072Z] [INFO] GET /css/coding.css 304 1ms +[2026-01-05T08:42:16.086Z] [INFO] GET /css/knowledge.css 304 2ms +[2026-01-05T08:42:16.089Z] [INFO] GET /css/responsive.css 304 2ms +[2026-01-05T08:42:16.092Z] [INFO] GET /css/mobile.css 304 2ms +[2026-01-05T08:42:16.097Z] [INFO] GET /js/app.js 304 0ms +[2026-01-05T08:42:16.135Z] [INFO] GET /js/store.js 304 2ms +[2026-01-05T08:42:16.139Z] [INFO] GET /js/board.js 304 1ms +[2026-01-05T08:42:16.143Z] [INFO] GET /js/auth.js 304 2ms +[2026-01-05T08:42:16.147Z] [INFO] GET /js/api.js 304 3ms +[2026-01-05T08:42:16.147Z] [INFO] GET /js/sync.js 304 2ms +[2026-01-05T08:42:16.149Z] [INFO] GET /js/offline.js 304 1ms +[2026-01-05T08:42:16.163Z] [INFO] GET /js/task-modal.js 304 1ms +[2026-01-05T08:42:16.167Z] [INFO] GET /js/calendar.js 304 1ms +[2026-01-05T08:42:16.172Z] [INFO] GET /js/list.js 304 1ms +[2026-01-05T08:42:16.177Z] [INFO] GET /js/undo.js 304 2ms +[2026-01-05T08:42:16.178Z] [INFO] GET /js/admin.js 304 2ms +[2026-01-05T08:42:16.192Z] [INFO] GET /js/notifications.js 304 2ms +[2026-01-05T08:42:16.193Z] [INFO] GET /js/proposals.js 304 3ms +[2026-01-05T08:42:16.197Z] [INFO] GET /js/shortcuts.js 304 1ms +[2026-01-05T08:42:16.202Z] [INFO] GET /js/gitea.js 304 1ms +[2026-01-05T08:42:16.211Z] [INFO] GET /js/knowledge.js 304 3ms +[2026-01-05T08:42:16.212Z] [INFO] GET /js/coding.js 304 3ms +[2026-01-05T08:42:16.221Z] [INFO] GET /js/utils.js 304 1ms +[2026-01-05T08:42:16.223Z] [INFO] GET /js/mobile.js 304 1ms +[2026-01-05T08:42:16.260Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T08:42:17.800Z] [INFO] GET /sw.js 304 2ms +[2026-01-05T08:42:19.690Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T08:42:19.691Z] [INFO] POST /api/auth/login 200 539ms +[2026-01-05T08:42:19.733Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T08:42:19.761Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (viykOgCrIazWHgVtAAAH) +[2026-01-05T08:42:19.767Z] [INFO] GET /api/projects 304 3ms +[2026-01-05T08:42:19.801Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:42:19.825Z] [INFO] GET /api/tasks/project/2 304 22ms +[2026-01-05T08:42:19.832Z] [INFO] GET /api/stats/dashboard?projectId=2 304 6ms +[2026-01-05T08:42:19.837Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-05T08:42:19.842Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T08:42:19.888Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-05T08:42:19.928Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T08:42:19.968Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-05T08:42:22.170Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T08:42:22.356Z] [INFO] GET /api/knowledge/entries?categoryId=15 304 13ms +[2026-01-05T08:42:23.355Z] [INFO] POST /api/auth/refresh 200 16ms +[2026-01-05T08:44:03.441Z] [INFO] GET / 200 7ms +[2026-01-05T08:44:03.494Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (viykOgCrIazWHgVtAAAH) +[2026-01-05T08:44:03.508Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T08:44:03.541Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T08:44:03.577Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T08:44:03.580Z] [INFO] GET /css/board.css 200 8ms +[2026-01-05T08:44:03.583Z] [INFO] GET /css/components.css 200 8ms +[2026-01-05T08:44:03.588Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-05T08:44:03.589Z] [INFO] GET /css/admin.css 200 7ms +[2026-01-05T08:44:03.590Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T08:44:03.615Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-05T08:44:03.630Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-05T08:44:03.635Z] [INFO] GET /css/notifications.css 200 9ms +[2026-01-05T08:44:03.638Z] [INFO] GET /css/coding.css 200 11ms +[2026-01-05T08:44:03.644Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T08:44:03.647Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T08:44:03.651Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T08:44:03.664Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T08:44:03.723Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T08:44:03.726Z] [INFO] GET /js/api.js 200 6ms +[2026-01-05T08:44:03.731Z] [INFO] GET /js/board.js 200 10ms +[2026-01-05T08:44:03.734Z] [INFO] GET /js/offline.js 200 10ms +[2026-01-05T08:44:03.737Z] [INFO] GET /js/auth.js 200 9ms +[2026-01-05T08:44:03.738Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-05T08:44:03.747Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T08:44:03.755Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T08:44:03.765Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T08:44:03.771Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T08:44:03.779Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T08:44:03.782Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T08:44:03.788Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T08:44:03.789Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T08:44:03.797Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T08:44:03.803Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T08:44:03.808Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T08:44:03.818Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T08:44:03.819Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T08:44:03.865Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T08:44:03.873Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T08:44:03.876Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T08:44:03.910Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T08:44:03.947Z] [INFO] GET /api/projects 304 6ms +[2026-01-05T08:44:03.952Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (0UBxiqROcoMvQoYvAAAJ) +[2026-01-05T08:44:03.981Z] [INFO] GET /api/stats/dashboard?projectId=2 304 8ms +[2026-01-05T08:44:03.988Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-05T08:44:04.012Z] [INFO] GET /api/tasks/project/2 304 22ms +[2026-01-05T08:44:04.020Z] [INFO] GET /api/labels/2 304 6ms +[2026-01-05T08:44:04.026Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:44:04.061Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-05T08:44:04.104Z] [INFO] GET /api/notifications 304 10ms +[2026-01-05T08:44:04.139Z] [INFO] GET /api/knowledge/categories 304 5ms +[2026-01-05T08:44:06.133Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T08:44:08.131Z] [INFO] GET /api/knowledge/entries?categoryId=15 304 10ms +[2026-01-05T08:44:09.140Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T08:44:24.832Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T08:44:53.272Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T08:46:38.344Z] [INFO] POST /api/auth/login 400 5ms +[2026-01-05T08:46:38.366Z] [INFO] GET /api/knowledge/categories 401 3ms +[2026-01-05T08:47:32.401Z] [INFO] GET / 200 2ms +[2026-01-05T08:47:32.454Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (0UBxiqROcoMvQoYvAAAJ) +[2026-01-05T08:47:32.468Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T08:47:32.496Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T08:47:32.522Z] [INFO] GET /css/components.css 200 3ms +[2026-01-05T08:47:32.534Z] [INFO] GET /css/board.css 200 9ms +[2026-01-05T08:47:32.538Z] [INFO] GET /css/modal.css 200 11ms +[2026-01-05T08:47:32.542Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T08:47:32.545Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T08:47:32.547Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T08:47:32.548Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T08:47:32.577Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T08:47:32.580Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T08:47:32.582Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-05T08:47:32.590Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T08:47:32.597Z] [INFO] GET /css/knowledge.css 200 9ms +[2026-01-05T08:47:32.601Z] [INFO] GET /css/mobile.css 200 6ms +[2026-01-05T08:47:32.614Z] [INFO] GET /js/app.js 200 5ms +[2026-01-05T08:47:32.690Z] [INFO] GET /js/api.js 200 8ms +[2026-01-05T08:47:32.693Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-05T08:47:32.696Z] [INFO] GET /js/store.js 200 7ms +[2026-01-05T08:47:32.699Z] [INFO] GET /js/sync.js 200 8ms +[2026-01-05T08:47:32.701Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-05T08:47:32.703Z] [INFO] GET /js/board.js 200 5ms +[2026-01-05T08:47:32.722Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-05T08:47:32.723Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-05T08:47:32.725Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-05T08:47:32.728Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-05T08:47:32.731Z] [INFO] GET /js/list.js 200 1ms +[2026-01-05T08:47:32.749Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-05T08:47:32.759Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T08:47:32.760Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T08:47:32.762Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-05T08:47:32.765Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T08:47:32.767Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T08:47:32.782Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-05T08:47:32.788Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T08:47:32.820Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T08:47:32.831Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T08:47:32.833Z] [INFO] GET /assets/icons/task.svg 304 5ms +[2026-01-05T08:47:32.870Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T08:47:32.911Z] [INFO] GET /api/projects 304 8ms +[2026-01-05T08:47:32.918Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (qnvPJDlGV0R61KUWAAAL) +[2026-01-05T08:47:32.949Z] [INFO] GET /api/stats/dashboard?projectId=2 304 9ms +[2026-01-05T08:47:32.970Z] [INFO] GET /api/tasks/project/2 304 20ms +[2026-01-05T08:47:32.972Z] [INFO] GET /api/columns/2 304 21ms +[2026-01-05T08:47:32.975Z] [INFO] GET /api/labels/2 304 2ms +[2026-01-05T08:47:32.976Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:47:33.008Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-05T08:47:33.048Z] [INFO] GET /api/notifications 304 7ms +[2026-01-05T08:47:33.090Z] [INFO] GET /api/knowledge/categories 304 10ms +[2026-01-05T08:47:35.146Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T08:47:36.987Z] [INFO] GET / 200 3ms +[2026-01-05T08:47:37.037Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (qnvPJDlGV0R61KUWAAAL) +[2026-01-05T08:47:37.063Z] [INFO] GET /css/components.css 200 12ms +[2026-01-05T08:47:37.065Z] [INFO] GET /css/variables.css 200 12ms +[2026-01-05T08:47:37.066Z] [INFO] GET /css/board.css 200 12ms +[2026-01-05T08:47:37.070Z] [INFO] GET /css/base.css 200 12ms +[2026-01-05T08:47:37.072Z] [INFO] GET /css/calendar.css 200 11ms +[2026-01-05T08:47:37.073Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T08:47:37.089Z] [INFO] GET /css/list.css 200 1ms +[2026-01-05T08:47:37.099Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T08:47:37.120Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T08:47:37.121Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T08:47:37.125Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T08:47:37.126Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T08:47:37.129Z] [INFO] GET /css/coding.css 200 1ms +[2026-01-05T08:47:37.135Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T08:47:37.157Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T08:47:37.161Z] [INFO] GET /js/app.js 200 6ms +[2026-01-05T08:47:37.230Z] [INFO] GET /js/api.js 200 5ms +[2026-01-05T08:47:37.232Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-05T08:47:37.235Z] [INFO] GET /js/store.js 200 8ms +[2026-01-05T08:47:37.237Z] [INFO] GET /js/offline.js 200 8ms +[2026-01-05T08:47:37.238Z] [INFO] GET /js/board.js 200 5ms +[2026-01-05T08:47:37.239Z] [INFO] GET /js/auth.js 200 5ms +[2026-01-05T08:47:37.263Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-05T08:47:37.282Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T08:47:37.291Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T08:47:37.298Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T08:47:37.300Z] [INFO] GET /js/list.js 200 4ms +[2026-01-05T08:47:37.304Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T08:47:37.314Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T08:47:37.324Z] [INFO] GET /js/notifications.js 200 7ms +[2026-01-05T08:47:37.325Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-05T08:47:37.327Z] [INFO] GET /js/knowledge.js 200 6ms +[2026-01-05T08:47:37.333Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T08:47:37.335Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T08:47:37.342Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-05T08:47:37.389Z] [INFO] POST /api/auth/refresh 200 16ms +[2026-01-05T08:47:37.397Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T08:47:37.399Z] [INFO] GET /assets/icons/task.svg 304 7ms +[2026-01-05T08:47:37.435Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-05T08:47:37.472Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (cFBcz_cYwJvS9PMaAAAN) +[2026-01-05T08:47:37.478Z] [INFO] GET /api/projects 304 4ms +[2026-01-05T08:47:37.525Z] [INFO] GET /api/tasks/project/2 304 19ms +[2026-01-05T08:47:37.534Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T08:47:37.541Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-05T08:47:37.543Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:47:37.548Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-05T08:47:37.585Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-05T08:47:37.632Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T08:47:37.677Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-05T08:47:39.632Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T08:47:45.339Z] [INFO] GET / 304 2ms +[2026-01-05T08:47:45.372Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (cFBcz_cYwJvS9PMaAAAN) +[2026-01-05T08:47:45.381Z] [INFO] GET /css/variables.css 304 1ms +[2026-01-05T08:47:45.382Z] [INFO] GET /css/base.css 304 0ms +[2026-01-05T08:47:45.384Z] [INFO] GET /css/components.css 304 1ms +[2026-01-05T08:47:45.385Z] [INFO] GET /css/modal.css 304 0ms +[2026-01-05T08:47:45.386Z] [INFO] GET /css/calendar.css 304 0ms +[2026-01-05T08:47:45.388Z] [INFO] GET /css/board.css 304 1ms +[2026-01-05T08:47:45.407Z] [INFO] GET /css/list.css 304 1ms +[2026-01-05T08:47:45.411Z] [INFO] GET /css/proposals.css 304 1ms +[2026-01-05T08:47:45.415Z] [INFO] GET /css/notifications.css 304 1ms +[2026-01-05T08:47:45.417Z] [INFO] GET /css/gitea.css 304 1ms +[2026-01-05T08:47:45.418Z] [INFO] GET /css/coding.css 304 1ms +[2026-01-05T08:47:45.420Z] [INFO] GET /css/admin.css 304 1ms +[2026-01-05T08:47:45.428Z] [INFO] GET /css/knowledge.css 304 1ms +[2026-01-05T08:47:45.447Z] [INFO] GET /css/responsive.css 304 2ms +[2026-01-05T08:47:45.449Z] [INFO] GET /css/mobile.css 304 1ms +[2026-01-05T08:47:45.453Z] [INFO] GET /js/app.js 304 2ms +[2026-01-05T08:47:45.508Z] [INFO] GET /js/auth.js 304 2ms +[2026-01-05T08:47:45.509Z] [INFO] GET /js/store.js 304 2ms +[2026-01-05T08:47:45.512Z] [INFO] GET /js/sync.js 304 2ms +[2026-01-05T08:47:45.513Z] [INFO] GET /js/api.js 304 2ms +[2026-01-05T08:47:45.514Z] [INFO] GET /js/offline.js 304 0ms +[2026-01-05T08:47:45.517Z] [INFO] GET /js/board.js 304 1ms +[2026-01-05T08:47:45.538Z] [INFO] GET /js/task-modal.js 304 1ms +[2026-01-05T08:47:45.539Z] [INFO] GET /js/calendar.js 304 2ms +[2026-01-05T08:47:45.543Z] [INFO] GET /js/list.js 304 2ms +[2026-01-05T08:47:45.546Z] [INFO] GET /js/undo.js 304 1ms +[2026-01-05T08:47:45.548Z] [INFO] GET /js/shortcuts.js 304 1ms +[2026-01-05T08:47:45.560Z] [INFO] GET /js/admin.js 304 1ms +[2026-01-05T08:47:45.569Z] [INFO] GET /js/proposals.js 304 1ms +[2026-01-05T08:47:45.574Z] [INFO] GET /js/gitea.js 304 2ms +[2026-01-05T08:47:45.575Z] [INFO] GET /js/notifications.js 304 3ms +[2026-01-05T08:47:45.578Z] [INFO] GET /js/knowledge.js 304 1ms +[2026-01-05T08:47:45.586Z] [INFO] GET /js/coding.js 304 1ms +[2026-01-05T08:47:45.589Z] [INFO] GET /js/mobile.js 304 1ms +[2026-01-05T08:47:45.611Z] [INFO] GET /js/utils.js 304 1ms +[2026-01-05T08:47:45.650Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T08:47:45.654Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T08:47:45.657Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T08:47:45.702Z] [INFO] GET /api/auth/users 304 2ms +[2026-01-05T08:47:45.736Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (3MybuW546mef-KKQAAAP) +[2026-01-05T08:47:45.743Z] [INFO] GET /api/projects 304 5ms +[2026-01-05T08:47:45.785Z] [INFO] GET /api/stats/dashboard?projectId=2 304 7ms +[2026-01-05T08:47:45.792Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-05T08:47:45.798Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-05T08:47:45.811Z] [INFO] GET /api/tasks/project/2 304 12ms +[2026-01-05T08:47:45.813Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:47:45.854Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 8ms +[2026-01-05T08:47:45.897Z] [INFO] GET /api/notifications 304 10ms +[2026-01-05T08:47:45.942Z] [INFO] GET /api/knowledge/categories 304 10ms +[2026-01-05T08:47:47.401Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T08:47:47.434Z] [INFO] GET / 304 1ms +[2026-01-05T08:47:47.440Z] [INFO] GET /css/variables.css 304 1ms +[2026-01-05T08:47:47.442Z] [INFO] GET /index.html 304 1ms +[2026-01-05T08:47:47.475Z] [INFO] GET /css/board.css 304 2ms +[2026-01-05T08:47:47.479Z] [INFO] GET /css/base.css 304 2ms +[2026-01-05T08:47:47.482Z] [INFO] GET /css/components.css 304 1ms +[2026-01-05T08:47:47.508Z] [INFO] GET /css/modal.css 304 2ms +[2026-01-05T08:47:47.511Z] [INFO] GET /css/calendar.css 304 2ms +[2026-01-05T08:47:47.515Z] [INFO] GET /css/responsive.css 304 2ms +[2026-01-05T08:47:47.543Z] [INFO] GET /js/utils.js 304 3ms +[2026-01-05T08:47:47.547Z] [INFO] GET /js/app.js 304 3ms +[2026-01-05T08:47:47.549Z] [INFO] GET /js/api.js 304 1ms +[2026-01-05T08:47:47.573Z] [INFO] GET /js/auth.js 304 1ms +[2026-01-05T08:47:47.577Z] [INFO] GET /js/sync.js 304 1ms +[2026-01-05T08:47:47.579Z] [INFO] GET /js/store.js 304 1ms +[2026-01-05T08:47:47.605Z] [INFO] GET /js/board.js 304 2ms +[2026-01-05T08:47:47.606Z] [INFO] GET /js/offline.js 304 2ms +[2026-01-05T08:47:47.609Z] [INFO] GET /js/task-modal.js 304 1ms +[2026-01-05T08:47:47.640Z] [INFO] GET /js/calendar.js 304 5ms +[2026-01-05T08:47:47.645Z] [INFO] GET /js/list.js 304 2ms +[2026-01-05T08:47:47.648Z] [INFO] GET /js/shortcuts.js 304 2ms +[2026-01-05T08:47:47.668Z] [INFO] GET /js/undo.js 304 1ms +[2026-01-05T08:47:47.676Z] [INFO] GET /js/tour.js 304 2ms +[2026-01-05T08:47:47.684Z] [INFO] GET /js/admin.js 304 1ms +[2026-01-05T08:47:47.706Z] [INFO] GET /js/proposals.js 304 1ms +[2026-01-05T08:47:47.715Z] [INFO] GET /js/notifications.js 304 2ms +[2026-01-05T08:47:47.718Z] [INFO] GET /js/gitea.js 304 2ms +[2026-01-05T08:47:47.736Z] [INFO] GET /js/knowledge.js 304 2ms +[2026-01-05T08:47:47.746Z] [INFO] GET /js/coding.js 304 1ms +[2026-01-05T08:47:47.752Z] [INFO] GET /js/mobile.js 304 3ms +[2026-01-05T08:47:47.780Z] [INFO] GET /css/list.css 304 16ms +[2026-01-05T08:47:47.789Z] [INFO] GET /css/mobile.css 304 7ms +[2026-01-05T08:47:47.792Z] [INFO] GET /css/admin.css 304 1ms +[2026-01-05T08:47:47.803Z] [INFO] GET /css/proposals.css 304 1ms +[2026-01-05T08:47:47.820Z] [INFO] GET /css/notifications.css 304 4ms +[2026-01-05T08:47:47.823Z] [INFO] GET /css/gitea.css 304 1ms +[2026-01-05T08:47:47.843Z] [INFO] GET /css/knowledge.css 304 4ms +[2026-01-05T08:47:47.849Z] [INFO] GET /css/coding.css 304 1ms +[2026-01-05T08:47:47.883Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T08:48:05.657Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T08:48:05.838Z] [INFO] GET /api/knowledge/entries?categoryId=15 304 9ms +[2026-01-05T08:48:06.845Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T08:52:59.015Z] [INFO] GET / 200 5ms +[2026-01-05T08:52:59.082Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (3MybuW546mef-KKQAAAP) +[2026-01-05T08:52:59.096Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-05T08:52:59.128Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T08:52:59.162Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T08:52:59.171Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T08:52:59.174Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-05T08:52:59.177Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-05T08:52:59.178Z] [INFO] GET /css/list.css 200 9ms +[2026-01-05T08:52:59.210Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T08:52:59.230Z] [INFO] GET /css/proposals.css 200 6ms +[2026-01-05T08:52:59.232Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-05T08:52:59.236Z] [INFO] GET /css/gitea.css 200 8ms +[2026-01-05T08:52:59.256Z] [INFO] GET /css/responsive.css 200 6ms +[2026-01-05T08:52:59.258Z] [INFO] GET /css/knowledge.css 200 7ms +[2026-01-05T08:52:59.259Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-05T08:52:59.268Z] [INFO] GET /css/mobile.css 200 6ms +[2026-01-05T08:52:59.269Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T08:52:59.336Z] [INFO] GET /js/store.js 200 4ms +[2026-01-05T08:52:59.337Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-05T08:52:59.339Z] [INFO] GET /js/api.js 200 7ms +[2026-01-05T08:52:59.340Z] [INFO] GET /js/auth.js 200 9ms +[2026-01-05T08:52:59.341Z] [INFO] GET /js/sync.js 200 8ms +[2026-01-05T08:52:59.343Z] [INFO] GET /js/board.js 200 9ms +[2026-01-05T08:52:59.370Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T08:52:59.377Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T08:52:59.378Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T08:52:59.381Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T08:52:59.382Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T08:52:59.401Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T08:52:59.412Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T08:52:59.415Z] [INFO] GET /js/notifications.js 200 7ms +[2026-01-05T08:52:59.422Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T08:52:59.421Z] [INFO] GET /js/gitea.js 200 8ms +[2026-01-05T08:52:59.425Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-05T08:52:59.427Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T08:52:59.444Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T08:52:59.488Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T08:52:59.495Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T08:52:59.498Z] [INFO] GET /assets/icons/task.svg 200 8ms +[2026-01-05T08:52:59.540Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T08:52:59.569Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (HmINav8xCFxqZPLfAAAR) +[2026-01-05T08:52:59.579Z] [INFO] GET /api/projects 304 6ms +[2026-01-05T08:52:59.613Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:52:59.620Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-05T08:52:59.629Z] [INFO] GET /api/stats/dashboard?projectId=2 304 8ms +[2026-01-05T08:52:59.631Z] [INFO] GET /api/labels/2 304 9ms +[2026-01-05T08:52:59.647Z] [INFO] GET /api/tasks/project/2 304 15ms +[2026-01-05T08:52:59.698Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 8ms +[2026-01-05T08:52:59.753Z] [INFO] GET /api/notifications 304 5ms +[2026-01-05T08:52:59.801Z] [INFO] GET /api/knowledge/categories 304 5ms +[2026-01-05T08:53:01.876Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T08:53:06.053Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T08:53:19.583Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T08:53:21.396Z] [INFO] GET /css/variables.css 304 1ms +[2026-01-05T08:53:21.399Z] [INFO] GET /css/base.css 304 1ms +[2026-01-05T08:53:21.402Z] [INFO] GET /css/components.css 304 1ms +[2026-01-05T08:53:21.403Z] [INFO] GET /css/calendar.css 304 1ms +[2026-01-05T08:53:21.406Z] [INFO] GET /css/board.css 304 1ms +[2026-01-05T08:53:21.407Z] [INFO] GET /css/modal.css 304 2ms +[2026-01-05T08:53:21.427Z] [INFO] GET /css/list.css 304 2ms +[2026-01-05T08:53:21.431Z] [INFO] GET /css/admin.css 304 1ms +[2026-01-05T08:53:21.434Z] [INFO] GET /css/proposals.css 304 2ms +[2026-01-05T08:53:21.438Z] [INFO] GET /css/notifications.css 304 3ms +[2026-01-05T08:53:21.440Z] [INFO] GET /css/gitea.css 304 1ms +[2026-01-05T08:53:21.441Z] [INFO] GET /css/coding.css 304 0ms +[2026-01-05T08:53:21.460Z] [INFO] GET /css/knowledge.css 304 1ms +[2026-01-05T08:53:21.464Z] [INFO] GET /css/responsive.css 304 2ms +[2026-01-05T08:53:21.467Z] [INFO] GET /css/mobile.css 304 1ms +[2026-01-05T08:53:22.278Z] [INFO] POST /api/auth/refresh 200 15ms +[2026-01-05T08:53:25.458Z] [INFO] GET / 304 2ms +[2026-01-05T08:53:25.503Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (HmINav8xCFxqZPLfAAAR) +[2026-01-05T08:53:25.506Z] [INFO] GET /css/variables.css 304 7ms +[2026-01-05T08:53:25.507Z] [INFO] GET /css/base.css 304 5ms +[2026-01-05T08:53:25.513Z] [INFO] GET /css/calendar.css 304 2ms +[2026-01-05T08:53:25.516Z] [INFO] GET /css/components.css 304 1ms +[2026-01-05T08:53:25.518Z] [INFO] GET /css/board.css 304 2ms +[2026-01-05T08:53:25.519Z] [INFO] GET /css/modal.css 304 2ms +[2026-01-05T08:53:25.536Z] [INFO] GET /css/admin.css 304 1ms +[2026-01-05T08:53:25.537Z] [INFO] GET /css/list.css 304 1ms +[2026-01-05T08:53:25.543Z] [INFO] GET /css/gitea.css 304 1ms +[2026-01-05T08:53:25.545Z] [INFO] GET /css/proposals.css 304 1ms +[2026-01-05T08:53:25.547Z] [INFO] GET /css/notifications.css 304 2ms +[2026-01-05T08:53:25.552Z] [INFO] GET /css/coding.css 304 2ms +[2026-01-05T08:53:25.566Z] [INFO] GET /css/responsive.css 304 1ms +[2026-01-05T08:53:25.566Z] [INFO] GET /css/knowledge.css 304 1ms +[2026-01-05T08:53:25.570Z] [INFO] GET /css/mobile.css 304 0ms +[2026-01-05T08:53:25.578Z] [INFO] GET /js/app.js 304 1ms +[2026-01-05T08:53:25.624Z] [INFO] GET /js/api.js 304 2ms +[2026-01-05T08:53:25.626Z] [INFO] GET /js/store.js 304 3ms +[2026-01-05T08:53:25.628Z] [INFO] GET /js/sync.js 304 1ms +[2026-01-05T08:53:25.631Z] [INFO] GET /js/offline.js 304 2ms +[2026-01-05T08:53:25.632Z] [INFO] GET /js/board.js 304 3ms +[2026-01-05T08:53:25.632Z] [INFO] GET /js/auth.js 304 2ms +[2026-01-05T08:53:25.649Z] [INFO] GET /js/task-modal.js 304 1ms +[2026-01-05T08:53:25.652Z] [INFO] GET /js/calendar.js 304 1ms +[2026-01-05T08:53:25.659Z] [INFO] GET /js/list.js 304 2ms +[2026-01-05T08:53:25.660Z] [INFO] GET /js/shortcuts.js 304 2ms +[2026-01-05T08:53:25.662Z] [INFO] GET /js/admin.js 304 1ms +[2026-01-05T08:53:25.664Z] [INFO] GET /js/undo.js 304 0ms +[2026-01-05T08:53:25.686Z] [INFO] GET /js/notifications.js 304 3ms +[2026-01-05T08:53:25.688Z] [INFO] GET /js/proposals.js 304 3ms +[2026-01-05T08:53:25.692Z] [INFO] GET /js/gitea.js 304 1ms +[2026-01-05T08:53:25.695Z] [INFO] GET /js/knowledge.js 304 1ms +[2026-01-05T08:53:25.697Z] [INFO] GET /js/coding.js 304 1ms +[2026-01-05T08:53:25.701Z] [INFO] GET /js/mobile.js 304 1ms +[2026-01-05T08:53:25.730Z] [INFO] GET /js/utils.js 304 1ms +[2026-01-05T08:53:25.777Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-05T08:53:27.295Z] [INFO] GET /sw.js 304 1ms +[2026-01-05T08:53:29.804Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T08:53:29.806Z] [INFO] POST /api/auth/login 200 497ms +[2026-01-05T08:53:29.843Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T08:53:29.874Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (Dv0aytcgtap51O7DAAAT) +[2026-01-05T08:53:29.881Z] [INFO] GET /api/projects 304 4ms +[2026-01-05T08:53:29.910Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:53:29.923Z] [INFO] GET /api/stats/dashboard?projectId=2 304 8ms +[2026-01-05T08:53:29.942Z] [INFO] GET /api/tasks/project/2 304 17ms +[2026-01-05T08:53:29.947Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T08:53:29.951Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-05T08:53:29.994Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-05T08:53:30.028Z] [INFO] GET /api/notifications 304 4ms +[2026-01-05T08:53:30.065Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-05T08:53:31.753Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T08:53:37.409Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T08:53:41.676Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T08:53:41.772Z] [INFO] GET /api/knowledge/entries?categoryId=15 304 8ms +[2026-01-05T08:53:42.785Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T08:56:44.698Z] [INFO] SIGTERM empfangen, fahre herunter... +[2026-01-05T08:56:57.955Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-05T08:56:58.044Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-05T08:56:58.858Z] [INFO] Admin-Passwort bereits korrekt +[2026-01-05T08:56:58.859Z] [INFO] Datenbank initialisiert +[2026-01-05T08:56:58.866Z] [INFO] Server läuft auf Port 3001 +[2026-01-05T08:56:58.867Z] [INFO] Umgebung: development +[2026-01-05T08:56:58.867Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-05T08:56:58.868Z] [INFO] Automatische Backups aktiviert +[2026-01-05T08:57:01.018Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (nhLKe28yVAk5TheKAAAB) +[2026-01-05T08:57:01.080Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:57:58.901Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-05T08-57-58-876Z.db.enc +[2026-01-05T08:57:58.902Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-05T08-57-58-876Z.db.enc +[2026-01-05T08:57:58.905Z] [INFO] Backup erstellt: backup_2026-01-05T08-57-58-876Z.db +[2026-01-05T08:57:58.919Z] [INFO] Datei sicher gelöscht: backup_2026-01-03T23-02-47-279Z.db.enc +[2026-01-05T08:57:58.919Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-03T23-02-47-279Z.db.enc +[2026-01-05T08:57:58.921Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-05T08:58:04.847Z] [INFO] GET / 200 20ms +[2026-01-05T08:58:04.912Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (nhLKe28yVAk5TheKAAAB) +[2026-01-05T08:58:04.920Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-05T08:58:04.921Z] [INFO] GET /css/base.css 200 4ms +[2026-01-05T08:58:04.955Z] [INFO] GET /css/components.css 200 7ms +[2026-01-05T08:58:04.957Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T08:58:04.979Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T08:58:04.981Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-05T08:58:04.988Z] [INFO] GET /css/list.css 200 8ms +[2026-01-05T08:58:04.992Z] [INFO] GET /css/proposals.css 200 6ms +[2026-01-05T08:58:04.993Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T08:58:05.007Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T08:58:05.025Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-05T08:58:05.032Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-05T08:58:05.036Z] [INFO] GET /css/responsive.css 200 5ms +[2026-01-05T08:58:05.037Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T08:58:05.063Z] [INFO] GET /css/mobile.css 200 5ms +[2026-01-05T08:58:05.064Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T08:58:05.133Z] [INFO] GET /js/store.js 200 4ms +[2026-01-05T08:58:05.136Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-05T08:58:05.140Z] [INFO] GET /js/auth.js 200 8ms +[2026-01-05T08:58:05.144Z] [INFO] GET /js/api.js 200 9ms +[2026-01-05T08:58:05.147Z] [INFO] GET /js/sync.js 200 9ms +[2026-01-05T08:58:05.151Z] [INFO] GET /js/board.js 200 9ms +[2026-01-05T08:58:05.168Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-05T08:58:05.171Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-05T08:58:05.175Z] [INFO] GET /js/list.js 200 6ms +[2026-01-05T08:58:05.180Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-05T08:58:05.182Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T08:58:05.210Z] [INFO] GET /js/admin.js 200 10ms +[2026-01-05T08:58:05.212Z] [INFO] GET /js/proposals.js 200 9ms +[2026-01-05T08:58:05.215Z] [INFO] GET /js/notifications.js 200 10ms +[2026-01-05T08:58:05.219Z] [INFO] GET /js/gitea.js 200 11ms +[2026-01-05T08:58:05.220Z] [INFO] GET /js/knowledge.js 200 5ms +[2026-01-05T08:58:05.222Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-05T08:58:05.245Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T08:58:05.248Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-05T08:58:05.333Z] [INFO] POST /api/auth/refresh 200 18ms +[2026-01-05T08:58:05.344Z] [INFO] GET /api/auth/users 304 8ms +[2026-01-05T08:58:05.346Z] [INFO] GET /assets/icons/task.svg 304 11ms +[2026-01-05T08:58:05.382Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T08:58:05.420Z] [INFO] GET /api/projects 304 9ms +[2026-01-05T08:58:05.430Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (bze3xm33sie8taN9AAAD) +[2026-01-05T08:58:05.459Z] [INFO] GET /api/columns/2 304 8ms +[2026-01-05T08:58:05.490Z] [INFO] GET /api/tasks/project/2 304 38ms +[2026-01-05T08:58:05.499Z] [INFO] GET /api/labels/2 304 7ms +[2026-01-05T08:58:05.518Z] [INFO] GET /api/stats/dashboard?projectId=2 304 8ms +[2026-01-05T08:58:05.523Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:58:05.546Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 11ms +[2026-01-05T08:58:05.592Z] [INFO] GET /api/notifications 304 14ms +[2026-01-05T08:58:05.630Z] [INFO] GET /api/knowledge/categories 304 7ms +[2026-01-05T08:58:07.070Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T08:58:08.694Z] [INFO] GET / 200 4ms +[2026-01-05T08:58:08.748Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (bze3xm33sie8taN9AAAD) +[2026-01-05T08:58:08.756Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T08:58:08.764Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T08:58:08.771Z] [INFO] GET /css/base.css 200 9ms +[2026-01-05T08:58:08.773Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T08:58:08.777Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-05T08:58:08.785Z] [INFO] GET /css/calendar.css 200 13ms +[2026-01-05T08:58:08.790Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T08:58:08.798Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-05T08:58:08.822Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-05T08:58:08.827Z] [INFO] GET /css/notifications.css 200 7ms +[2026-01-05T08:58:08.830Z] [INFO] GET /css/gitea.css 200 7ms +[2026-01-05T08:58:08.832Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-05T08:58:08.840Z] [INFO] GET /css/coding.css 200 9ms +[2026-01-05T08:58:08.843Z] [INFO] GET /css/responsive.css 200 8ms +[2026-01-05T08:58:08.857Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T08:58:08.861Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T08:58:08.933Z] [INFO] GET /js/store.js 200 2ms +[2026-01-05T08:58:08.938Z] [INFO] GET /js/api.js 200 2ms +[2026-01-05T08:58:08.941Z] [INFO] GET /js/auth.js 200 5ms +[2026-01-05T08:58:08.948Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-05T08:58:08.950Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-05T08:58:08.952Z] [INFO] GET /js/board.js 200 5ms +[2026-01-05T08:58:08.961Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T08:58:08.970Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T08:58:08.971Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T08:58:08.986Z] [INFO] GET /js/undo.js 200 5ms +[2026-01-05T08:58:08.987Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-05T08:58:08.997Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-05T08:58:08.999Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T08:58:09.004Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T08:58:09.005Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T08:58:09.032Z] [INFO] GET /js/knowledge.js 200 7ms +[2026-01-05T08:58:09.036Z] [INFO] GET /js/utils.js 200 8ms +[2026-01-05T08:58:09.039Z] [INFO] GET /js/mobile.js 200 8ms +[2026-01-05T08:58:09.041Z] [INFO] GET /js/coding.js 200 6ms +[2026-01-05T08:58:09.105Z] [INFO] POST /api/auth/refresh 200 4ms +[2026-01-05T08:58:09.108Z] [INFO] GET /api/auth/users 304 2ms +[2026-01-05T08:58:09.111Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-05T08:58:09.144Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T08:58:09.176Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (Juc9rlmU6tfpqpkOAAAF) +[2026-01-05T08:58:09.183Z] [INFO] GET /api/projects 304 5ms +[2026-01-05T08:58:09.219Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:58:09.226Z] [INFO] GET /api/columns/2 304 10ms +[2026-01-05T08:58:09.244Z] [INFO] GET /api/tasks/project/2 304 17ms +[2026-01-05T08:58:09.251Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T08:58:09.255Z] [INFO] GET /api/stats/dashboard?projectId=2 304 3ms +[2026-01-05T08:58:09.291Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-05T08:58:09.333Z] [INFO] GET /api/notifications 304 9ms +[2026-01-05T08:58:09.394Z] [INFO] GET /api/knowledge/categories 304 12ms +[2026-01-05T08:58:11.576Z] [INFO] POST /api/auth/refresh 200 15ms +[2026-01-05T08:58:13.717Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T08:58:16.031Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T08:58:45.413Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T08:58:46.573Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (Juc9rlmU6tfpqpkOAAAF) +[2026-01-05T08:58:56.325Z] [INFO] GET / 200 3ms +[2026-01-05T08:58:56.396Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-05T08:58:56.424Z] [INFO] GET /css/base.css 200 4ms +[2026-01-05T08:58:56.458Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T08:58:56.460Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T08:58:56.463Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T08:58:56.480Z] [INFO] GET /css/list.css 200 6ms +[2026-01-05T08:58:56.481Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-05T08:58:56.483Z] [INFO] GET /css/admin.css 200 6ms +[2026-01-05T08:58:56.494Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T08:58:56.515Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T08:58:56.520Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T08:58:56.527Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T08:58:56.528Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T08:58:56.530Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T08:58:56.537Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-05T08:58:56.554Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T08:58:56.614Z] [INFO] GET /js/board.js 200 3ms +[2026-01-05T08:58:56.618Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-05T08:58:56.622Z] [INFO] GET /js/sync.js 200 9ms +[2026-01-05T08:58:56.628Z] [INFO] GET /js/store.js 200 13ms +[2026-01-05T08:58:56.630Z] [INFO] GET /js/api.js 200 10ms +[2026-01-05T08:58:56.632Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-05T08:58:56.643Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T08:58:56.649Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T08:58:56.653Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T08:58:56.662Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T08:58:56.669Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-05T08:58:56.671Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-05T08:58:56.680Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T08:58:56.683Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T08:58:56.696Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T08:58:56.698Z] [INFO] GET /js/knowledge.js 200 5ms +[2026-01-05T08:58:56.705Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-05T08:58:56.706Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T08:58:56.712Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-05T08:58:56.775Z] [INFO] GET /assets/icons/task.svg 200 6ms +[2026-01-05T08:58:56.781Z] [INFO] GET /sw.js 200 2ms +[2026-01-05T08:58:56.825Z] [INFO] GET /css/variables.css 200 8ms +[2026-01-05T08:58:56.829Z] [INFO] GET /index.html 200 8ms +[2026-01-05T08:58:56.830Z] [INFO] GET / 200 7ms +[2026-01-05T08:58:56.857Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T08:58:56.867Z] [INFO] GET /css/components.css 200 3ms +[2026-01-05T08:58:56.874Z] [INFO] GET /css/board.css 200 3ms +[2026-01-05T08:58:56.908Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-05T08:58:56.909Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-05T08:58:56.911Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T08:58:56.948Z] [INFO] GET /js/api.js 200 6ms +[2026-01-05T08:58:56.950Z] [INFO] GET /js/utils.js 200 6ms +[2026-01-05T08:58:56.953Z] [INFO] GET /js/app.js 200 7ms +[2026-01-05T08:58:56.979Z] [INFO] GET /js/store.js 200 2ms +[2026-01-05T08:58:56.985Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-05T08:58:56.989Z] [INFO] GET /js/sync.js 200 2ms +[2026-01-05T08:58:57.011Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-05T08:58:57.023Z] [INFO] GET /js/board.js 200 4ms +[2026-01-05T08:58:57.026Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-05T08:58:57.046Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T08:58:57.058Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T08:58:57.064Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T08:58:57.080Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-05T08:58:57.090Z] [INFO] GET /js/tour.js 200 2ms +[2026-01-05T08:58:57.094Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T08:58:57.114Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T08:58:57.121Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T08:58:57.127Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T08:58:57.152Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T08:58:57.162Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T08:58:57.169Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T08:58:57.185Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T08:58:57.195Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T08:58:57.199Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-05T08:58:57.216Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T08:58:57.225Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T08:58:57.229Z] [INFO] GET /css/gitea.css 200 1ms +[2026-01-05T08:58:57.247Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T08:58:57.268Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T08:59:01.664Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T08:59:01.665Z] [INFO] POST /api/auth/login 200 470ms +[2026-01-05T08:59:01.703Z] [INFO] GET /api/auth/users 200 6ms +[2026-01-05T08:59:01.747Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (nSFlJ1dT7kwS2syfAAAH) +[2026-01-05T08:59:01.755Z] [INFO] GET /api/projects 200 21ms +[2026-01-05T08:59:01.792Z] [INFO] GET /api/columns/2 200 3ms +[2026-01-05T08:59:01.807Z] [INFO] GET /api/tasks/project/2 200 17ms +[2026-01-05T08:59:01.809Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:59:01.815Z] [INFO] GET /api/labels/2 200 4ms +[2026-01-05T08:59:01.821Z] [INFO] GET /api/stats/dashboard?projectId=2 200 5ms +[2026-01-05T08:59:01.876Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 4ms +[2026-01-05T08:59:01.920Z] [INFO] GET /api/notifications 200 9ms +[2026-01-05T08:59:01.972Z] [INFO] GET /api/knowledge/categories 200 6ms +[2026-01-05T08:59:03.975Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T08:59:08.209Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T08:59:11.632Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T08:59:12.035Z] [INFO] GET / 200 2ms +[2026-01-05T08:59:12.093Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (nSFlJ1dT7kwS2syfAAAH) +[2026-01-05T08:59:12.109Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T08:59:12.112Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-05T08:59:12.115Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-05T08:59:12.118Z] [INFO] GET /css/components.css 200 7ms +[2026-01-05T08:59:12.121Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T08:59:12.122Z] [INFO] GET /css/base.css 200 5ms +[2026-01-05T08:59:12.141Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T08:59:12.149Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-05T08:59:12.161Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T08:59:12.173Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T08:59:12.176Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-05T08:59:12.178Z] [INFO] GET /css/notifications.css 200 7ms +[2026-01-05T08:59:12.180Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T08:59:12.182Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T08:59:12.195Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-05T08:59:12.205Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T08:59:12.269Z] [INFO] GET /js/auth.js 200 10ms +[2026-01-05T08:59:12.273Z] [INFO] GET /js/store.js 200 10ms +[2026-01-05T08:59:12.276Z] [INFO] GET /js/sync.js 200 10ms +[2026-01-05T08:59:12.279Z] [INFO] GET /js/board.js 200 8ms +[2026-01-05T08:59:12.281Z] [INFO] GET /js/api.js 200 6ms +[2026-01-05T08:59:12.282Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-05T08:59:12.298Z] [INFO] GET /js/calendar.js 200 1ms +[2026-01-05T08:59:12.302Z] [INFO] GET /js/task-modal.js 200 1ms +[2026-01-05T08:59:12.313Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T08:59:12.315Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-05T08:59:12.334Z] [INFO] GET /js/undo.js 200 6ms +[2026-01-05T08:59:12.341Z] [INFO] GET /js/admin.js 200 8ms +[2026-01-05T08:59:12.343Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T08:59:12.354Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T08:59:12.356Z] [INFO] GET /js/gitea.js 200 5ms +[2026-01-05T08:59:12.366Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T08:59:12.367Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T08:59:12.373Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T08:59:12.376Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-05T08:59:12.434Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T08:59:12.439Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T08:59:12.443Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T08:59:12.485Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-05T08:59:12.520Z] [INFO] GET /api/projects 304 5ms +[2026-01-05T08:59:12.526Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (MqUPD-0dllElO3OBAAAJ) +[2026-01-05T08:59:12.557Z] [INFO] GET /api/stats/dashboard?projectId=2 304 8ms +[2026-01-05T08:59:12.568Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-05T08:59:12.584Z] [INFO] GET /api/tasks/project/2 304 22ms +[2026-01-05T08:59:12.585Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T08:59:12.590Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T08:59:12.633Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-05T08:59:12.676Z] [INFO] GET /api/notifications 304 12ms +[2026-01-05T08:59:12.724Z] [INFO] GET /api/knowledge/categories 304 5ms +[2026-01-05T08:59:14.193Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T08:59:14.791Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T08:59:15.906Z] [INFO] GET /api/knowledge/entries?categoryId=15 200 8ms +[2026-01-05T08:59:16.898Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T09:01:50.820Z] [INFO] GET / 200 4ms +[2026-01-05T09:01:50.881Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (MqUPD-0dllElO3OBAAAJ) +[2026-01-05T09:01:50.893Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T09:01:50.920Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T09:01:50.955Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T09:01:50.968Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T09:01:50.971Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-05T09:01:50.974Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-05T09:01:50.987Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T09:01:50.991Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T09:01:51.021Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-05T09:01:51.026Z] [INFO] GET /css/notifications.css 200 8ms +[2026-01-05T09:01:51.036Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-05T09:01:51.037Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-05T09:01:51.039Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-05T09:01:51.042Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T09:01:51.051Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T09:01:51.066Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T09:01:51.138Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-05T09:01:51.144Z] [INFO] GET /js/auth.js 200 10ms +[2026-01-05T09:01:51.148Z] [INFO] GET /js/api.js 200 12ms +[2026-01-05T09:01:51.152Z] [INFO] GET /js/offline.js 200 11ms +[2026-01-05T09:01:51.156Z] [INFO] GET /js/board.js 200 10ms +[2026-01-05T09:01:51.159Z] [INFO] GET /js/store.js 200 8ms +[2026-01-05T09:01:51.169Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T09:01:51.181Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-05T09:01:51.183Z] [INFO] GET /js/list.js 200 6ms +[2026-01-05T09:01:51.188Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T09:01:51.192Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T09:01:51.214Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T09:01:51.216Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T09:01:51.218Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-05T09:01:51.221Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T09:01:51.223Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T09:01:51.225Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T09:01:51.243Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T09:01:51.249Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T09:01:51.284Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-05T09:01:51.299Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T09:01:51.306Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T09:01:51.343Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T09:01:51.377Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (RoGILLioludRonKIAAAL) +[2026-01-05T09:01:51.388Z] [INFO] GET /api/projects 304 7ms +[2026-01-05T09:01:51.424Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:01:51.431Z] [INFO] GET /api/stats/dashboard?projectId=2 304 9ms +[2026-01-05T09:01:51.453Z] [INFO] GET /api/tasks/project/2 304 21ms +[2026-01-05T09:01:51.460Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T09:01:51.465Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-05T09:01:51.502Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 4ms +[2026-01-05T09:01:51.545Z] [INFO] GET /api/notifications 304 11ms +[2026-01-05T09:01:51.583Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-05T09:01:53.595Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T09:02:00.675Z] [INFO] GET /test-resize.html 200 3ms +[2026-01-05T09:02:00.766Z] [INFO] GET /favicon.ico 200 3ms +[2026-01-05T09:02:02.289Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T09:02:15.652Z] [INFO] GET /test-resize.html 200 2ms +[2026-01-05T09:04:42.312Z] [INFO] GET / 200 5ms +[2026-01-05T09:04:42.374Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (RoGILLioludRonKIAAAL) +[2026-01-05T09:04:42.387Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T09:04:42.419Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T09:04:42.448Z] [INFO] GET /css/components.css 200 4ms +[2026-01-05T09:04:42.459Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T09:04:42.460Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T09:04:42.462Z] [INFO] GET /css/list.css 200 6ms +[2026-01-05T09:04:42.468Z] [INFO] GET /css/calendar.css 200 10ms +[2026-01-05T09:04:42.469Z] [INFO] GET /css/admin.css 200 8ms +[2026-01-05T09:04:42.497Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T09:04:42.498Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T09:04:42.504Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T09:04:42.519Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T09:04:42.521Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-05T09:04:42.523Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-05T09:04:42.531Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T09:04:42.535Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T09:04:42.610Z] [INFO] GET /js/store.js 200 6ms +[2026-01-05T09:04:42.612Z] [INFO] GET /js/sync.js 200 7ms +[2026-01-05T09:04:42.614Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-05T09:04:42.617Z] [INFO] GET /js/api.js 200 8ms +[2026-01-05T09:04:42.619Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-05T09:04:42.621Z] [INFO] GET /js/board.js 200 5ms +[2026-01-05T09:04:42.638Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-05T09:04:42.645Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-05T09:04:42.650Z] [INFO] GET /js/list.js 200 7ms +[2026-01-05T09:04:42.653Z] [INFO] GET /js/shortcuts.js 200 9ms +[2026-01-05T09:04:42.655Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T09:04:42.668Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-05T09:04:42.669Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T09:04:42.676Z] [INFO] GET /js/notifications.js 200 1ms +[2026-01-05T09:04:42.682Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T09:04:42.683Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T09:04:42.686Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T09:04:42.697Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-05T09:04:42.703Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T09:04:42.761Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T09:04:42.765Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T09:04:42.769Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T09:04:42.806Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T09:04:42.837Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (lrd1THfrzenjdKG4AAAN) +[2026-01-05T09:04:42.848Z] [INFO] GET /api/projects 304 6ms +[2026-01-05T09:04:42.892Z] [INFO] GET /api/labels/2 304 6ms +[2026-01-05T09:04:42.902Z] [INFO] GET /api/stats/dashboard?projectId=2 304 9ms +[2026-01-05T09:04:42.907Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-05T09:04:42.921Z] [INFO] GET /api/tasks/project/2 304 12ms +[2026-01-05T09:04:42.923Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:04:42.966Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-05T09:04:43.006Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T09:04:43.054Z] [INFO] GET /api/knowledge/categories 304 8ms +[2026-01-05T09:04:44.210Z] [INFO] GET / 200 3ms +[2026-01-05T09:04:44.268Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (lrd1THfrzenjdKG4AAAN) +[2026-01-05T09:04:44.280Z] [INFO] GET /css/components.css 200 3ms +[2026-01-05T09:04:44.284Z] [INFO] GET /css/board.css 200 2ms +[2026-01-05T09:04:44.294Z] [INFO] GET /css/modal.css 200 2ms +[2026-01-05T09:04:44.308Z] [INFO] GET /css/calendar.css 200 2ms +[2026-01-05T09:04:44.322Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T09:04:44.337Z] [INFO] GET /css/base.css 200 5ms +[2026-01-05T09:04:44.339Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-05T09:04:44.345Z] [INFO] GET /css/list.css 200 9ms +[2026-01-05T09:04:44.361Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T09:04:44.365Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T09:04:44.371Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T09:04:44.381Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T09:04:44.392Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T09:04:44.401Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T09:04:44.418Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T09:04:44.429Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-05T09:04:44.522Z] [INFO] GET /js/api.js 200 6ms +[2026-01-05T09:04:44.524Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-05T09:04:44.526Z] [INFO] GET /js/store.js 200 7ms +[2026-01-05T09:04:44.530Z] [INFO] GET /js/sync.js 200 10ms +[2026-01-05T09:04:44.532Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-05T09:04:44.536Z] [INFO] GET /js/board.js 200 3ms +[2026-01-05T09:04:44.560Z] [INFO] GET /js/task-modal.js 200 9ms +[2026-01-05T09:04:44.562Z] [INFO] GET /js/shortcuts.js 200 8ms +[2026-01-05T09:04:44.564Z] [INFO] GET /js/calendar.js 200 9ms +[2026-01-05T09:04:44.568Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T09:04:44.569Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T09:04:44.597Z] [INFO] GET /js/admin.js 200 6ms +[2026-01-05T09:04:44.603Z] [INFO] GET /js/gitea.js 200 8ms +[2026-01-05T09:04:44.607Z] [INFO] GET /js/notifications.js 200 8ms +[2026-01-05T09:04:44.610Z] [INFO] GET /js/proposals.js 200 8ms +[2026-01-05T09:04:44.613Z] [INFO] GET /js/coding.js 200 7ms +[2026-01-05T09:04:44.614Z] [INFO] GET /js/knowledge.js 200 5ms +[2026-01-05T09:04:44.631Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T09:04:44.635Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-05T09:04:44.673Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T09:04:44.683Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T09:04:44.688Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-05T09:04:44.708Z] [INFO] GET /api/auth/users 304 3ms +[2026-01-05T09:04:44.742Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (4tSu0FdsJVAK-gDvAAAP) +[2026-01-05T09:04:44.751Z] [INFO] GET /api/projects 304 5ms +[2026-01-05T09:04:44.791Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:04:44.801Z] [INFO] GET /api/stats/dashboard?projectId=2 304 13ms +[2026-01-05T09:04:44.823Z] [INFO] GET /api/tasks/project/2 304 21ms +[2026-01-05T09:04:44.828Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-05T09:04:44.832Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-05T09:04:44.878Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 10ms +[2026-01-05T09:04:44.915Z] [INFO] GET /api/notifications 304 5ms +[2026-01-05T09:04:44.951Z] [INFO] GET /api/knowledge/categories 304 5ms +[2026-01-05T09:04:47.210Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T09:05:33.177Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-05T09:05:33.183Z] [INFO] GET /css/base.css 200 11ms +[2026-01-05T09:05:33.191Z] [INFO] GET /css/variables.css 200 17ms +[2026-01-05T09:05:33.201Z] [INFO] GET /css/components.css 200 22ms +[2026-01-05T09:05:33.207Z] [INFO] GET /css/board.css 200 10ms +[2026-01-05T09:05:33.206Z] [INFO] GET /css/modal.css 200 16ms +[2026-01-05T09:05:33.218Z] [INFO] GET /css/list.css 200 8ms +[2026-01-05T09:05:33.242Z] [INFO] GET /css/proposals.css 200 10ms +[2026-01-05T09:05:33.247Z] [INFO] GET /css/admin.css 200 6ms +[2026-01-05T09:05:33.252Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T09:05:33.260Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T09:05:33.262Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T09:05:33.263Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T09:05:33.272Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T09:05:33.279Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T09:05:34.042Z] [INFO] POST /api/auth/refresh 200 16ms +[2026-01-05T09:06:06.014Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T09:06:45.685Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T09:06:47.222Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T09:06:51.831Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T09:06:53.375Z] [INFO] GET / 200 6ms +[2026-01-05T09:06:53.433Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (4tSu0FdsJVAK-gDvAAAP) +[2026-01-05T09:06:53.448Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T09:06:53.480Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T09:06:53.506Z] [INFO] GET /css/components.css 200 3ms +[2026-01-05T09:06:53.518Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T09:06:53.520Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T09:06:53.523Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T09:06:53.527Z] [INFO] GET /css/list.css 200 8ms +[2026-01-05T09:06:53.528Z] [INFO] GET /css/admin.css 200 6ms +[2026-01-05T09:06:53.553Z] [INFO] GET /css/proposals.css 200 7ms +[2026-01-05T09:06:53.556Z] [INFO] GET /css/notifications.css 200 7ms +[2026-01-05T09:06:53.578Z] [INFO] GET /css/coding.css 200 8ms +[2026-01-05T09:06:53.579Z] [INFO] GET /css/gitea.css 200 7ms +[2026-01-05T09:06:53.581Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-05T09:06:53.583Z] [INFO] GET /css/responsive.css 200 6ms +[2026-01-05T09:06:53.587Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T09:06:53.613Z] [INFO] GET /js/app.js 200 5ms +[2026-01-05T09:06:53.679Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-05T09:06:53.682Z] [INFO] GET /js/store.js 200 7ms +[2026-01-05T09:06:53.687Z] [INFO] GET /js/api.js 200 10ms +[2026-01-05T09:06:53.690Z] [INFO] GET /js/auth.js 200 9ms +[2026-01-05T09:06:53.692Z] [INFO] GET /js/board.js 200 6ms +[2026-01-05T09:06:53.694Z] [INFO] GET /js/offline.js 200 5ms +[2026-01-05T09:06:53.724Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-05T09:06:53.726Z] [INFO] GET /js/task-modal.js 200 8ms +[2026-01-05T09:06:53.728Z] [INFO] GET /js/shortcuts.js 200 8ms +[2026-01-05T09:06:53.733Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T09:06:53.738Z] [INFO] GET /js/list.js 200 1ms +[2026-01-05T09:06:53.748Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T09:06:53.758Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T09:06:53.760Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T09:06:53.769Z] [INFO] GET /js/gitea.js 200 5ms +[2026-01-05T09:06:53.773Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T09:06:53.778Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T09:06:53.782Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-05T09:06:53.783Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T09:06:53.833Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T09:06:53.838Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T09:06:53.839Z] [INFO] GET /assets/icons/task.svg 304 5ms +[2026-01-05T09:06:53.881Z] [INFO] GET /api/auth/users 304 9ms +[2026-01-05T09:06:53.930Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (bO0JDxIjbeQnmslkAAAR) +[2026-01-05T09:06:53.939Z] [INFO] GET /api/projects 304 7ms +[2026-01-05T09:06:53.974Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:06:53.990Z] [INFO] GET /api/stats/dashboard?projectId=2 304 12ms +[2026-01-05T09:06:53.997Z] [INFO] GET /api/labels/2 304 6ms +[2026-01-05T09:06:54.004Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-05T09:06:54.017Z] [INFO] GET /api/tasks/project/2 304 13ms +[2026-01-05T09:06:54.061Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-05T09:06:54.097Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T09:06:54.132Z] [INFO] GET /api/knowledge/categories 304 5ms +[2026-01-05T09:06:54.691Z] [INFO] GET / 200 5ms +[2026-01-05T09:06:54.761Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (bO0JDxIjbeQnmslkAAAR) +[2026-01-05T09:06:54.778Z] [INFO] GET /css/modal.css 200 2ms +[2026-01-05T09:06:54.779Z] [INFO] GET /css/board.css 200 3ms +[2026-01-05T09:06:54.780Z] [INFO] GET /css/components.css 200 3ms +[2026-01-05T09:06:54.782Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-05T09:06:54.783Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T09:06:54.784Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T09:06:54.813Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T09:06:54.816Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T09:06:54.844Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-05T09:06:54.846Z] [INFO] GET /css/proposals.css 200 8ms +[2026-01-05T09:06:54.848Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-05T09:06:54.853Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T09:06:54.868Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-05T09:06:54.871Z] [INFO] GET /css/responsive.css 200 5ms +[2026-01-05T09:06:54.879Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T09:06:54.888Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T09:06:54.957Z] [INFO] GET /js/store.js 200 3ms +[2026-01-05T09:06:54.969Z] [INFO] GET /js/auth.js 200 8ms +[2026-01-05T09:06:54.970Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T09:06:54.972Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-05T09:06:54.974Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-05T09:06:54.976Z] [INFO] GET /js/api.js 200 5ms +[2026-01-05T09:06:54.987Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T09:06:54.999Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T09:06:55.000Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T09:06:55.002Z] [INFO] GET /js/undo.js 200 0ms +[2026-01-05T09:06:55.017Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T09:06:55.031Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T09:06:55.033Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T09:06:55.035Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T09:06:55.038Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-05T09:06:55.042Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T09:06:55.043Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T09:06:55.065Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-05T09:06:55.066Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T09:06:55.108Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T09:06:55.113Z] [INFO] GET /api/auth/users 304 3ms +[2026-01-05T09:06:55.115Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-05T09:06:55.154Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T09:06:55.187Z] [INFO] GET /api/projects 304 9ms +[2026-01-05T09:06:55.195Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (is2-Cq8CrOFPZ8tcAAAT) +[2026-01-05T09:06:55.224Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T09:06:55.225Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:06:55.228Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-05T09:06:55.242Z] [INFO] GET /api/tasks/project/2 304 13ms +[2026-01-05T09:06:55.246Z] [INFO] GET /api/stats/dashboard?projectId=2 304 16ms +[2026-01-05T09:06:55.285Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-05T09:06:55.339Z] [INFO] GET /api/notifications 304 10ms +[2026-01-05T09:06:55.381Z] [INFO] GET /api/knowledge/categories 304 12ms +[2026-01-05T09:06:55.589Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T09:06:56.779Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T09:07:03.377Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T09:07:04.390Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T09:07:09.095Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T09:11:19.314Z] [INFO] GET / 200 7ms +[2026-01-05T09:11:19.369Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (is2-Cq8CrOFPZ8tcAAAT) +[2026-01-05T09:11:19.383Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T09:11:19.428Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T09:11:19.458Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T09:11:19.459Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T09:11:19.461Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T09:11:19.466Z] [INFO] GET /css/admin.css 200 9ms +[2026-01-05T09:11:19.468Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-05T09:11:19.469Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T09:11:19.498Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T09:11:19.512Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T09:11:19.518Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T09:11:19.521Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T09:11:19.523Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-05T09:11:19.524Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T09:11:19.533Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-05T09:11:19.549Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T09:11:19.614Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-05T09:11:19.616Z] [INFO] GET /js/api.js 200 7ms +[2026-01-05T09:11:19.617Z] [INFO] GET /js/store.js 200 7ms +[2026-01-05T09:11:19.621Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-05T09:11:19.622Z] [INFO] GET /js/board.js 200 3ms +[2026-01-05T09:11:19.623Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-05T09:11:19.646Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-05T09:11:19.654Z] [INFO] GET /js/shortcuts.js 200 6ms +[2026-01-05T09:11:19.655Z] [INFO] GET /js/undo.js 200 5ms +[2026-01-05T09:11:19.657Z] [INFO] GET /js/list.js 200 6ms +[2026-01-05T09:11:19.664Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T09:11:19.673Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T09:11:19.691Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T09:11:19.696Z] [INFO] GET /js/gitea.js 200 8ms +[2026-01-05T09:11:19.699Z] [INFO] GET /js/notifications.js 200 10ms +[2026-01-05T09:11:19.703Z] [INFO] GET /js/knowledge.js 200 5ms +[2026-01-05T09:11:19.713Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T09:11:19.722Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T09:11:19.726Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T09:11:19.773Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T09:11:19.783Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T09:11:19.784Z] [INFO] GET /assets/icons/task.svg 304 9ms +[2026-01-05T09:11:19.825Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-05T09:11:19.857Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (1jaTE7iVlSSNCr4iAAAV) +[2026-01-05T09:11:19.867Z] [INFO] GET /api/projects 304 7ms +[2026-01-05T09:11:19.907Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:11:19.915Z] [INFO] GET /api/labels/2 304 11ms +[2026-01-05T09:11:19.920Z] [INFO] GET /api/stats/dashboard?projectId=2 304 14ms +[2026-01-05T09:11:19.933Z] [INFO] GET /api/columns/2 304 12ms +[2026-01-05T09:11:19.956Z] [INFO] GET /api/tasks/project/2 304 21ms +[2026-01-05T09:11:19.994Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-05T09:11:20.042Z] [INFO] GET /api/notifications 304 9ms +[2026-01-05T09:11:20.106Z] [INFO] GET /api/knowledge/categories 304 7ms +[2026-01-05T09:11:21.276Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T09:11:26.487Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T09:12:07.452Z] [INFO] GET /api/knowledge/entries?categoryId=15 304 11ms +[2026-01-05T09:12:09.440Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T09:12:24.170Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T09:12:25.770Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T09:12:29.153Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T09:12:30.445Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T09:12:33.664Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T09:12:36.200Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T09:13:03.631Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T09:13:10.050Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T09:13:30.415Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T09:13:41.958Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T09:13:47.084Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T09:13:49.445Z] [INFO] POST /api/auth/refresh 200 3ms +[2026-01-05T09:13:51.429Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T09:13:54.131Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T09:13:55.628Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T09:14:01.037Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T09:14:02.600Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T09:14:05.893Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T09:14:07.896Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T09:14:13.573Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T09:14:14.565Z] [INFO] Knowledge-Eintrag erstellt: 05.01.2026 - Wissen-Sidebar Resize-Funktionalität +[2026-01-05T09:14:14.567Z] [INFO] POST /api/knowledge/entries 201 11ms +[2026-01-05T09:14:14.605Z] [INFO] GET /api/knowledge/entries?categoryId=15 200 6ms +[2026-01-05T09:14:14.667Z] [INFO] GET /api/knowledge/categories 200 7ms +[2026-01-05T09:14:15.567Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T09:14:17.388Z] [INFO] GET / 200 3ms +[2026-01-05T09:14:17.443Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (1jaTE7iVlSSNCr4iAAAV) +[2026-01-05T09:14:17.458Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T09:14:17.492Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T09:14:17.526Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T09:14:17.527Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-05T09:14:17.529Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-05T09:14:17.531Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T09:14:17.533Z] [INFO] GET /css/components.css 200 3ms +[2026-01-05T09:14:17.540Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T09:14:17.565Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T09:14:17.576Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T09:14:17.578Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-05T09:14:17.583Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T09:14:17.584Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T09:14:17.586Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T09:14:17.595Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T09:14:17.608Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T09:14:17.656Z] [INFO] GET /js/store.js 200 2ms +[2026-01-05T09:14:17.661Z] [INFO] GET /js/sync.js 200 3ms +[2026-01-05T09:14:17.663Z] [INFO] GET /js/api.js 200 4ms +[2026-01-05T09:14:17.665Z] [INFO] GET /js/board.js 200 5ms +[2026-01-05T09:14:17.666Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-05T09:14:17.668Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-05T09:14:17.687Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T09:14:17.694Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T09:14:17.698Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T09:14:17.702Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-05T09:14:17.722Z] [INFO] GET /js/undo.js 200 10ms +[2026-01-05T09:14:17.730Z] [INFO] GET /js/admin.js 200 15ms +[2026-01-05T09:14:17.738Z] [INFO] GET /js/proposals.js 200 15ms +[2026-01-05T09:14:17.743Z] [INFO] GET /js/notifications.js 200 9ms +[2026-01-05T09:14:17.747Z] [INFO] GET /js/gitea.js 200 7ms +[2026-01-05T09:14:17.752Z] [INFO] GET /js/knowledge.js 200 6ms +[2026-01-05T09:14:17.754Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T09:14:17.763Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T09:14:17.769Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T09:14:17.823Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T09:14:17.830Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T09:14:17.833Z] [INFO] GET /assets/icons/task.svg 304 8ms +[2026-01-05T09:14:17.876Z] [INFO] GET /api/auth/users 304 9ms +[2026-01-05T09:14:17.904Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (Jk5Xr12LCh-enNWpAAAX) +[2026-01-05T09:14:17.911Z] [INFO] GET /api/projects 304 4ms +[2026-01-05T09:14:17.945Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:14:17.958Z] [INFO] GET /api/columns/2 304 9ms +[2026-01-05T09:14:17.964Z] [INFO] GET /api/stats/dashboard?projectId=2 304 13ms +[2026-01-05T09:14:17.970Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-05T09:14:17.995Z] [INFO] GET /api/tasks/project/2 304 24ms +[2026-01-05T09:14:18.034Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-05T09:14:18.071Z] [INFO] GET /api/notifications 304 6ms +[2026-01-05T09:14:18.113Z] [INFO] GET /api/knowledge/categories 304 8ms +[2026-01-05T09:14:19.576Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T09:14:20.192Z] [INFO] GET /api/knowledge/entries?categoryId=15 304 7ms +[2026-01-05T09:14:21.201Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T09:14:24.474Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T09:14:30.058Z] [INFO] PUT /api/knowledge/entries/24/position 200 7ms +[2026-01-05T09:14:31.969Z] [INFO] PUT /api/knowledge/entries/9/position 200 4ms +[2026-01-05T09:16:11.140Z] [INFO] SIGTERM empfangen, fahre herunter... +[2026-01-05T09:16:24.995Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-05T09:16:25.101Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-05T09:16:25.712Z] [INFO] Admin-Passwort bereits korrekt +[2026-01-05T09:16:25.712Z] [INFO] Datenbank initialisiert +[2026-01-05T09:16:25.724Z] [INFO] Server läuft auf Port 3001 +[2026-01-05T09:16:25.725Z] [INFO] Umgebung: development +[2026-01-05T09:16:25.727Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-05T09:16:25.728Z] [INFO] Automatische Backups aktiviert +[2026-01-05T09:16:30.350Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (Y10ppWVLsiCYnzeLAAAB) +[2026-01-05T09:16:30.417Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:17:25.747Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-05T09-17-25-731Z.db.enc +[2026-01-05T09:17:25.748Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-05T09-17-25-731Z.db.enc +[2026-01-05T09:17:25.749Z] [INFO] Backup erstellt: backup_2026-01-05T09-17-25-731Z.db +[2026-01-05T09:17:25.762Z] [INFO] Datei sicher gelöscht: backup_2026-01-03T23-15-58-951Z.db.enc +[2026-01-05T09:17:25.763Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-03T23-15-58-951Z.db.enc +[2026-01-05T09:17:25.764Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-05T09:19:48.145Z] [INFO] GET / 200 29ms +[2026-01-05T09:19:48.232Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (Y10ppWVLsiCYnzeLAAAB) +[2026-01-05T09:19:48.241Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-05T09:19:48.280Z] [INFO] GET /css/base.css 200 6ms +[2026-01-05T09:19:48.287Z] [INFO] GET /css/components.css 200 10ms +[2026-01-05T09:19:48.296Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-05T09:19:48.302Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-05T09:19:48.303Z] [INFO] GET /css/board.css 200 10ms +[2026-01-05T09:19:48.305Z] [INFO] GET /css/list.css 200 6ms +[2026-01-05T09:19:48.313Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T09:19:48.353Z] [INFO] GET /css/proposals.css 200 12ms +[2026-01-05T09:19:48.360Z] [INFO] GET /css/notifications.css 200 13ms +[2026-01-05T09:19:48.362Z] [INFO] GET /css/gitea.css 200 13ms +[2026-01-05T09:19:48.370Z] [INFO] GET /css/knowledge.css 200 12ms +[2026-01-05T09:19:48.376Z] [INFO] GET /css/coding.css 200 11ms +[2026-01-05T09:19:48.378Z] [INFO] GET /css/responsive.css 200 10ms +[2026-01-05T09:19:48.383Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T09:19:48.403Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T09:19:48.473Z] [INFO] GET /js/api.js 200 8ms +[2026-01-05T09:19:48.477Z] [INFO] GET /js/offline.js 200 9ms +[2026-01-05T09:19:48.482Z] [INFO] GET /js/sync.js 200 12ms +[2026-01-05T09:19:48.485Z] [INFO] GET /js/auth.js 200 10ms +[2026-01-05T09:19:48.489Z] [INFO] GET /js/store.js 200 9ms +[2026-01-05T09:19:48.490Z] [INFO] GET /js/board.js 200 6ms +[2026-01-05T09:19:48.509Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T09:19:48.532Z] [INFO] GET /js/calendar.js 200 7ms +[2026-01-05T09:19:48.554Z] [INFO] GET /js/list.js 200 4ms +[2026-01-05T09:19:48.564Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-05T09:19:48.566Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-05T09:19:48.578Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T09:19:48.581Z] [INFO] GET /js/admin.js 200 6ms +[2026-01-05T09:19:48.586Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T09:19:48.600Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-05T09:19:48.603Z] [INFO] GET /js/knowledge.js 200 6ms +[2026-01-05T09:19:48.606Z] [INFO] GET /js/coding.js 200 7ms +[2026-01-05T09:19:48.611Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T09:19:48.615Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T09:19:48.695Z] [INFO] POST /api/auth/refresh 200 21ms +[2026-01-05T09:19:48.704Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T09:19:48.710Z] [INFO] GET /assets/icons/task.svg 304 5ms +[2026-01-05T09:19:48.769Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T09:19:48.805Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (1C_M1y74U-VN_xndAAAD) +[2026-01-05T09:19:48.818Z] [INFO] GET /api/projects 304 9ms +[2026-01-05T09:19:48.856Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-05T09:19:48.878Z] [INFO] GET /api/tasks/project/2 304 21ms +[2026-01-05T09:19:48.880Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:19:48.891Z] [INFO] GET /api/labels/2 304 10ms +[2026-01-05T09:19:48.895Z] [INFO] GET /api/stats/dashboard?projectId=2 304 8ms +[2026-01-05T09:19:48.941Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-05T09:19:48.985Z] [INFO] GET /api/notifications 304 11ms +[2026-01-05T09:19:49.028Z] [INFO] GET /api/knowledge/categories 304 11ms +[2026-01-05T09:19:50.464Z] [INFO] GET /sw.js 200 4ms +[2026-01-05T09:19:53.482Z] [INFO] GET /api/knowledge/entries?categoryId=15 200 12ms +[2026-01-05T09:19:54.486Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T09:19:57.260Z] [INFO] Knowledge-Eintrag erstellt: Testeintrag +[2026-01-05T09:19:57.262Z] [INFO] POST /api/knowledge/entries 201 9ms +[2026-01-05T09:19:57.314Z] [INFO] GET /api/knowledge/entries?categoryId=15 200 10ms +[2026-01-05T09:19:57.381Z] [INFO] GET /api/knowledge/categories 200 8ms +[2026-01-05T09:19:58.262Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T09:20:00.825Z] [INFO] Knowledge-Eintrag gelöscht: Testeintrag +[2026-01-05T09:20:00.827Z] [INFO] DELETE /api/knowledge/entries/25 200 7ms +[2026-01-05T09:20:00.869Z] [INFO] GET /api/knowledge/entries?categoryId=15 200 9ms +[2026-01-05T09:20:00.929Z] [INFO] GET /api/knowledge/categories 200 9ms +[2026-01-05T09:20:04.951Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T09:20:16.959Z] [INFO] GET /api/knowledge/entries/24 200 5ms +[2026-01-05T09:20:20.388Z] [INFO] Knowledge-Eintrag aktualisiert: 05.01.2026 - Wissen-Sidebar Resize-Funktionalität implementiert +[2026-01-05T09:20:20.390Z] [INFO] PUT /api/knowledge/entries/24 200 7ms +[2026-01-05T09:20:20.434Z] [INFO] GET /api/knowledge/entries?categoryId=15 200 12ms +[2026-01-05T09:20:20.505Z] [INFO] GET /api/knowledge/categories 304 7ms +[2026-01-05T09:20:21.393Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T09:20:35.253Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T09:27:51.114Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T09:27:52.472Z] [INFO] GET / 200 8ms +[2026-01-05T09:27:52.534Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (1C_M1y74U-VN_xndAAAD) +[2026-01-05T09:27:52.547Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-05T09:27:52.576Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T09:27:52.619Z] [INFO] GET /css/components.css 200 8ms +[2026-01-05T09:27:52.621Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T09:27:52.624Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T09:27:52.626Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T09:27:52.628Z] [INFO] GET /css/list.css 200 5ms +[2026-01-05T09:27:52.629Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T09:27:52.657Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T09:27:52.663Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T09:27:52.664Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T09:27:52.669Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T09:27:52.679Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-05T09:27:52.680Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T09:27:52.687Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T09:27:52.706Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T09:27:52.777Z] [INFO] GET /js/api.js 200 8ms +[2026-01-05T09:27:52.781Z] [INFO] GET /js/store.js 200 10ms +[2026-01-05T09:27:52.789Z] [INFO] GET /js/auth.js 200 10ms +[2026-01-05T09:27:52.790Z] [INFO] GET /js/sync.js 200 10ms +[2026-01-05T09:27:52.791Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T09:27:52.793Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-05T09:27:52.819Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T09:27:52.823Z] [INFO] GET /js/task-modal.js 200 6ms +[2026-01-05T09:27:52.829Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-05T09:27:52.831Z] [INFO] GET /js/list.js 200 4ms +[2026-01-05T09:27:52.842Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T09:27:52.848Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T09:27:52.862Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T09:27:52.876Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T09:27:52.889Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T09:27:52.891Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T09:27:52.910Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T09:27:52.923Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T09:27:52.926Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-05T09:27:52.973Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T09:27:52.980Z] [INFO] GET /assets/icons/task.svg 304 5ms +[2026-01-05T09:27:52.985Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T09:27:53.021Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T09:27:53.049Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (ygey_s26FEIw9ImyAAAF) +[2026-01-05T09:27:53.098Z] [INFO] GET /api/projects 304 5ms +[2026-01-05T09:27:53.130Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-05T09:27:53.133Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-05T09:27:53.134Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:27:53.141Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-05T09:27:53.158Z] [INFO] GET /api/tasks/project/2 304 16ms +[2026-01-05T09:27:53.203Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 8ms +[2026-01-05T09:27:53.245Z] [INFO] GET /api/notifications 304 11ms +[2026-01-05T09:27:53.287Z] [INFO] GET /api/knowledge/categories 304 10ms +[2026-01-05T09:28:07.855Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T09:28:21.330Z] [INFO] GET /api/tasks/6 200 17ms +[2026-01-05T09:28:21.373Z] [INFO] GET /api/subtasks/6 200 9ms +[2026-01-05T09:28:21.382Z] [INFO] GET /api/links/6 200 7ms +[2026-01-05T09:28:21.389Z] [INFO] GET /api/comments/6 200 6ms +[2026-01-05T09:28:21.397Z] [INFO] GET /api/files/6 200 13ms +[2026-01-05T09:28:21.402Z] [INFO] GET /api/tasks/6/history 404 4ms +[2026-01-05T09:28:21.448Z] [INFO] GET /api/files/preview/2?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwNTI4NywiZXhwIjoxNzY3NjA2MTg3fQ.TZMymlLo8nptdBZwabi9NeeEWhxT6YpflHzkYhHpZ10 200 8ms +[2026-01-05T09:28:21.449Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwNTI4NywiZXhwIjoxNzY3NjA2MTg3fQ.TZMymlLo8nptdBZwabi9NeeEWhxT6YpflHzkYhHpZ10 200 19ms +[2026-01-05T09:28:22.321Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T09:28:33.916Z] [INFO] GET / 200 7ms +[2026-01-05T09:28:34.145Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T09:28:34.183Z] [INFO] GET /css/board.css 200 2ms +[2026-01-05T09:28:34.232Z] [INFO] GET /css/coding.css 200 10ms +[2026-01-05T09:28:34.235Z] [INFO] GET /css/modal.css 200 9ms +[2026-01-05T09:28:34.242Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-05T09:28:34.245Z] [INFO] GET /css/components.css 200 8ms +[2026-01-05T09:28:34.248Z] [INFO] GET /css/variables.css 200 7ms +[2026-01-05T09:28:34.249Z] [INFO] GET /css/list.css 200 6ms +[2026-01-05T09:28:34.273Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T09:28:34.291Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-05T09:28:34.294Z] [INFO] GET /css/proposals.css 200 6ms +[2026-01-05T09:28:34.297Z] [INFO] GET /css/gitea.css 200 7ms +[2026-01-05T09:28:34.304Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T09:28:34.313Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T09:28:34.314Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T09:28:34.344Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T09:28:34.421Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T09:28:34.425Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-05T09:28:34.428Z] [INFO] GET /js/api.js 200 5ms +[2026-01-05T09:28:34.437Z] [INFO] GET /js/board.js 200 6ms +[2026-01-05T09:28:34.438Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-05T09:28:34.439Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-05T09:28:34.469Z] [INFO] GET /js/task-modal.js 200 7ms +[2026-01-05T09:28:34.473Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-05T09:28:34.477Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T09:28:34.485Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-05T09:28:34.486Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T09:28:34.510Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T09:28:34.511Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T09:28:34.517Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T09:28:34.521Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T09:28:34.525Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T09:28:34.526Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T09:28:34.551Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-05T09:28:34.556Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T09:28:34.635Z] [INFO] GET /assets/icons/task.svg 200 4ms +[2026-01-05T09:28:34.767Z] [INFO] GET /api/auth/users 401 3ms +[2026-01-05T09:28:36.190Z] [INFO] GET /sw.js 200 4ms +[2026-01-05T09:28:36.415Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-05T09:28:36.416Z] [INFO] GET / 200 4ms +[2026-01-05T09:28:36.417Z] [INFO] GET /index.html 200 3ms +[2026-01-05T09:28:36.474Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T09:28:36.494Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T09:28:36.496Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T09:28:36.537Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-05T09:28:36.540Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T09:28:36.544Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T09:28:36.575Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T09:28:36.582Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T09:28:36.618Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-05T09:28:36.621Z] [INFO] GET /js/api.js 200 8ms +[2026-01-05T09:28:36.625Z] [INFO] GET /js/store.js 200 2ms +[2026-01-05T09:28:36.658Z] [INFO] GET /js/sync.js 200 3ms +[2026-01-05T09:28:36.666Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-05T09:28:36.672Z] [INFO] GET /js/board.js 200 3ms +[2026-01-05T09:28:37.143Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T09:28:37.144Z] [INFO] POST /api/auth/login 200 454ms +[2026-01-05T09:28:37.145Z] [INFO] GET /js/task-modal.js 200 144ms +[2026-01-05T09:28:37.146Z] [INFO] GET /js/calendar.js 200 42ms +[2026-01-05T09:28:37.147Z] [INFO] GET /js/list.js 200 6ms +[2026-01-05T09:28:37.148Z] [INFO] GET / 200 3ms +[2026-01-05T09:28:37.198Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T09:28:37.222Z] [INFO] GET /api/auth/users 200 6ms +[2026-01-05T09:28:37.232Z] [INFO] GET /js/undo.js 200 9ms +[2026-01-05T09:28:37.243Z] [INFO] GET /js/tour.js 200 4ms +[2026-01-05T09:28:37.245Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-05T09:28:37.281Z] [INFO] GET /api/projects 200 4ms +[2026-01-05T09:28:37.287Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (WhqwzY3WSVSXOBR7AAAH) +[2026-01-05T09:28:37.291Z] [INFO] GET /js/proposals.js 200 8ms +[2026-01-05T09:28:37.292Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T09:28:37.293Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T09:28:37.341Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:28:37.343Z] [INFO] GET /js/coding.js 200 9ms +[2026-01-05T09:28:37.352Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-05T09:28:37.355Z] [INFO] GET /js/knowledge.js 200 11ms +[2026-01-05T09:28:37.384Z] [INFO] GET /api/stats/dashboard?projectId=2 200 6ms +[2026-01-05T09:28:37.388Z] [INFO] GET /api/labels/2 304 2ms +[2026-01-05T09:28:37.400Z] [INFO] GET /api/tasks/project/2 200 11ms +[2026-01-05T09:28:37.404Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T09:28:37.405Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T09:28:37.425Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T09:28:37.448Z] [INFO] GET /css/admin.css 200 9ms +[2026-01-05T09:28:37.450Z] [INFO] GET /css/proposals.css 200 11ms +[2026-01-05T09:28:37.466Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T09:28:37.491Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-05T09:28:37.493Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-05T09:28:37.509Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-05T09:28:37.525Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 8ms +[2026-01-05T09:28:37.525Z] [INFO] GET / 200 12ms +[2026-01-05T09:28:37.578Z] [INFO] GET /api/notifications 200 5ms +[2026-01-05T09:28:37.640Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T09:28:37.649Z] [INFO] GET /api/knowledge/categories 200 6ms +[2026-01-05T09:28:37.682Z] [INFO] GET /css/modal.css 200 2ms +[2026-01-05T09:28:37.691Z] [INFO] GET / 200 4ms +[2026-01-05T09:28:37.754Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T09:28:37.759Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-05T09:28:37.762Z] [INFO] GET /css/gitea.css 200 7ms +[2026-01-05T09:28:37.764Z] [INFO] GET /css/base.css 200 8ms +[2026-01-05T09:28:37.771Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-05T09:28:37.772Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-05T09:28:37.782Z] [INFO] GET /css/knowledge.css 200 9ms +[2026-01-05T09:28:37.786Z] [INFO] GET /css/responsive.css 200 9ms +[2026-01-05T09:28:37.788Z] [INFO] GET /css/mobile.css 200 10ms +[2026-01-05T09:28:37.792Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-05T09:28:37.796Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T09:28:37.799Z] [INFO] GET /css/notifications.css 200 8ms +[2026-01-05T09:28:37.801Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T09:28:37.803Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T09:28:37.904Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T09:28:37.907Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-05T09:28:37.910Z] [INFO] GET /js/api.js 200 7ms +[2026-01-05T09:28:37.913Z] [INFO] GET /js/coding.js 200 8ms +[2026-01-05T09:28:37.916Z] [INFO] GET /js/task-modal.js 200 8ms +[2026-01-05T09:28:37.919Z] [INFO] GET /js/shortcuts.js 200 8ms +[2026-01-05T09:28:37.923Z] [INFO] GET /js/board.js 200 8ms +[2026-01-05T09:28:37.925Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-05T09:28:37.928Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-05T09:28:37.931Z] [INFO] GET /js/auth.js 200 1ms +[2026-01-05T09:28:37.932Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T09:28:37.937Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T09:28:37.943Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T09:28:37.945Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T09:28:37.946Z] [INFO] GET /js/list.js 200 4ms +[2026-01-05T09:28:37.949Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-05T09:28:37.965Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T09:28:37.974Z] [INFO] GET /js/knowledge.js 200 6ms +[2026-01-05T09:28:37.976Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-05T09:28:38.019Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T09:28:38.163Z] [INFO] GET /css/components.css 200 9ms +[2026-01-05T09:28:38.167Z] [INFO] GET /css/variables.css 200 8ms +[2026-01-05T09:28:38.195Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T09:28:38.199Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-05T09:28:38.201Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-05T09:28:38.203Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-05T09:28:38.204Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-05T09:28:38.207Z] [INFO] GET /css/board.css 200 2ms +[2026-01-05T09:28:38.213Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-05T09:28:38.216Z] [INFO] GET /css/proposals.css 200 7ms +[2026-01-05T09:28:38.218Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T09:28:38.218Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T09:28:38.274Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T09:28:38.281Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T09:28:41.165Z] [INFO] GET / 200 4ms +[2026-01-05T09:28:41.270Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (WhqwzY3WSVSXOBR7AAAH) +[2026-01-05T09:28:41.292Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T09:28:41.308Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T09:28:41.310Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T09:28:41.312Z] [INFO] GET /css/board.css 200 8ms +[2026-01-05T09:28:41.315Z] [INFO] GET /css/base.css 200 8ms +[2026-01-05T09:28:41.317Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T09:28:41.338Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T09:28:41.346Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-05T09:28:41.370Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T09:28:41.374Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T09:28:41.392Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T09:28:41.394Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T09:28:41.397Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T09:28:41.399Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T09:28:41.412Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T09:28:41.421Z] [INFO] GET /js/app.js 200 1ms +[2026-01-05T09:28:41.519Z] [INFO] GET /js/store.js 200 3ms +[2026-01-05T09:28:41.530Z] [INFO] GET /js/api.js 200 6ms +[2026-01-05T09:28:41.532Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-05T09:28:41.535Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T09:28:41.537Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-05T09:28:41.538Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-05T09:28:41.563Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-05T09:28:41.574Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-05T09:28:41.579Z] [INFO] GET /js/list.js 200 7ms +[2026-01-05T09:28:41.584Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T09:28:41.587Z] [INFO] GET /js/undo.js 200 5ms +[2026-01-05T09:28:41.600Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T09:28:41.612Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-05T09:28:41.616Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T09:28:41.620Z] [INFO] GET /js/gitea.js 200 1ms +[2026-01-05T09:28:41.629Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T09:28:41.631Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T09:28:41.650Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T09:28:41.656Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T09:28:41.720Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T09:28:41.724Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T09:28:41.743Z] [INFO] GET /api/auth/users 304 8ms +[2026-01-05T09:28:41.800Z] [INFO] GET /api/auth/users 304 8ms +[2026-01-05T09:28:41.860Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (pu5x4RdUDGoatlFhAAAJ) +[2026-01-05T09:28:41.871Z] [INFO] GET /api/projects 304 6ms +[2026-01-05T09:28:41.921Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:28:41.933Z] [INFO] GET /api/stats/dashboard?projectId=2 304 9ms +[2026-01-05T09:28:41.958Z] [INFO] GET /api/tasks/project/2 304 23ms +[2026-01-05T09:28:41.964Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-05T09:28:41.968Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-05T09:28:42.046Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-05T09:28:42.103Z] [INFO] GET /api/notifications 304 9ms +[2026-01-05T09:28:42.193Z] [INFO] GET /api/knowledge/categories 304 11ms +[2026-01-05T09:28:43.631Z] [INFO] GET /sw.js 200 2ms +[2026-01-05T09:28:49.817Z] [INFO] GET /api/tasks/6 200 14ms +[2026-01-05T09:28:49.873Z] [INFO] GET /api/subtasks/6 200 6ms +[2026-01-05T09:28:49.878Z] [INFO] GET /api/links/6 200 4ms +[2026-01-05T09:28:49.881Z] [INFO] GET /api/comments/6 200 3ms +[2026-01-05T09:28:49.885Z] [INFO] GET /api/tasks/6/history 404 3ms +[2026-01-05T09:28:49.888Z] [INFO] GET /api/files/6 200 3ms +[2026-01-05T09:28:49.953Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwNTMyMSwiZXhwIjoxNzY3NjA2MjIxfQ.PNpek4jXOsxM-wjBjHG8K3r9M5jpT-Qd-L3j-NWwIT4 200 19ms +[2026-01-05T09:28:49.954Z] [INFO] GET /api/files/preview/2?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwNTMyMSwiZXhwIjoxNzY3NjA2MjIxfQ.PNpek4jXOsxM-wjBjHG8K3r9M5jpT-Qd-L3j-NWwIT4 200 10ms +[2026-01-05T09:28:50.810Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T09:28:53.154Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (pu5x4RdUDGoatlFhAAAJ) +[2026-01-05T09:28:58.033Z] [INFO] GET / 200 4ms +[2026-01-05T09:28:58.204Z] [INFO] GET /css/variables.css 200 1ms +[2026-01-05T09:28:58.216Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T09:28:58.226Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T09:28:58.230Z] [INFO] GET /css/components.css 200 8ms +[2026-01-05T09:28:58.232Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-05T09:28:58.236Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-05T09:28:58.242Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T09:28:58.251Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T09:28:58.281Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T09:28:58.289Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-05T09:28:58.290Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-05T09:28:58.294Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T09:28:58.295Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T09:28:58.302Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T09:28:58.323Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T09:28:58.329Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T09:28:58.413Z] [INFO] GET /js/store.js 200 9ms +[2026-01-05T09:28:58.416Z] [INFO] GET /js/api.js 200 7ms +[2026-01-05T09:28:58.419Z] [INFO] GET /js/auth.js 200 8ms +[2026-01-05T09:28:58.422Z] [INFO] GET /js/sync.js 200 8ms +[2026-01-05T09:28:58.425Z] [INFO] GET /js/offline.js 200 8ms +[2026-01-05T09:28:58.426Z] [INFO] GET /js/board.js 200 5ms +[2026-01-05T09:28:58.449Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T09:28:58.453Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T09:28:58.459Z] [INFO] GET /js/list.js 200 1ms +[2026-01-05T09:28:58.464Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T09:28:58.465Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T09:28:58.489Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T09:28:58.491Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T09:28:58.493Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-05T09:28:58.502Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T09:28:58.510Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T09:28:58.511Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T09:28:58.534Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-05T09:28:58.537Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-05T09:28:58.593Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T09:28:58.608Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-05T09:28:58.620Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T09:28:58.694Z] [INFO] GET /api/auth/users 304 9ms +[2026-01-05T09:28:58.721Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (efFghnN-KMEgDNePAAAL) +[2026-01-05T09:28:58.755Z] [INFO] GET /api/projects 304 10ms +[2026-01-05T09:28:58.811Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:28:58.819Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-05T09:28:58.828Z] [INFO] GET /api/stats/dashboard?projectId=2 304 6ms +[2026-01-05T09:28:58.841Z] [INFO] GET /api/tasks/project/2 304 12ms +[2026-01-05T09:28:58.843Z] [INFO] GET /api/labels/2 304 14ms +[2026-01-05T09:28:58.924Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-05T09:28:58.984Z] [INFO] GET /api/notifications 304 7ms +[2026-01-05T09:28:59.040Z] [INFO] GET /api/knowledge/categories 304 7ms +[2026-01-05T09:29:00.490Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T09:29:03.281Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T09:29:05.524Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T09:29:11.825Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T09:29:13.142Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T09:29:17.056Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T09:29:18.034Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T09:29:18.036Z] [INFO] PUT /api/tasks/6 200 9ms +[2026-01-05T09:29:19.024Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T09:29:20.187Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T09:29:23.149Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T09:29:24.232Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T09:29:26.595Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T09:29:31.845Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T09:29:37.884Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T09:29:39.142Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T09:29:47.878Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T09:29:49.444Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T09:30:47.825Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T09:30:49.994Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T09:31:01.201Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T09:31:02.340Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T09:31:16.416Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T09:31:17.687Z] [INFO] POST /api/auth/refresh 200 3ms +[2026-01-05T09:31:20.793Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 10ms +[2026-01-05T09:31:21.679Z] [INFO] readCLAUDEmd: File does not exist: /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-05T09:31:21.679Z] [INFO] Trying fallback path for TaskMate: /app/taskmate-source +[2026-01-05T09:31:21.679Z] [INFO] readCLAUDEmd: Checking path /app/taskmate-source/CLAUDE.md +[2026-01-05T09:31:21.678Z] [INFO] readCLAUDEmd: Checking path /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-05T09:31:21.679Z] [INFO] readCLAUDEmd: Successfully read 14396 characters from /app/taskmate-source/CLAUDE.md +[2026-01-05T09:31:21.681Z] [INFO] GET /api/coding/directories 200 12ms +[2026-01-05T09:31:21.751Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T09:31:21.751Z] [INFO] Git directory exists: true +[2026-01-05T09:31:21.752Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T09:31:21.752Z] [INFO] Git directory exists: true +[2026-01-05T09:31:21.830Z] [INFO] GET /api/coding/directories/3/status 200 89ms +[2026-01-05T09:31:22.690Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T09:31:24.953Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T09:31:27.484Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T09:31:31.579Z] [INFO] GET /api/knowledge/entries?categoryId=15 200 6ms +[2026-01-05T09:31:32.529Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T09:31:34.230Z] [INFO] GET /api/knowledge/entries?categoryId=11 304 9ms +[2026-01-05T09:31:36.764Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T09:31:46.770Z] [INFO] readCLAUDEmd: Checking path /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-05T09:31:46.770Z] [INFO] readCLAUDEmd: File does not exist: /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-05T09:31:46.770Z] [INFO] Trying fallback path for TaskMate: /app/taskmate-source +[2026-01-05T09:31:46.770Z] [INFO] readCLAUDEmd: Checking path /app/taskmate-source/CLAUDE.md +[2026-01-05T09:31:46.771Z] [INFO] readCLAUDEmd: Successfully read 14396 characters from /app/taskmate-source/CLAUDE.md +[2026-01-05T09:31:46.772Z] [INFO] GET /api/coding/directories 304 9ms +[2026-01-05T09:31:46.823Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T09:31:46.824Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T09:31:46.824Z] [INFO] Git directory exists: true +[2026-01-05T09:31:46.823Z] [INFO] Git directory exists: true +[2026-01-05T09:31:46.847Z] [INFO] GET /api/coding/directories/3/status 304 29ms +[2026-01-05T09:31:47.833Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T09:31:52.716Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T09:31:54.637Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T09:31:56.329Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T09:32:12.723Z] [INFO] GET / 200 5ms +[2026-01-05T09:32:12.825Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (efFghnN-KMEgDNePAAAL) +[2026-01-05T09:32:12.847Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-05T09:32:12.913Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T09:32:12.914Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T09:32:12.925Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T09:32:12.931Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-05T09:32:12.933Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T09:32:12.938Z] [INFO] GET /css/proposals.css 200 9ms +[2026-01-05T09:32:12.957Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T09:32:12.995Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T09:32:13.015Z] [INFO] GET /css/gitea.css 200 7ms +[2026-01-05T09:32:13.018Z] [INFO] GET /css/notifications.css 200 9ms +[2026-01-05T09:32:13.021Z] [INFO] GET /css/coding.css 200 11ms +[2026-01-05T09:32:13.028Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T09:32:13.029Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T09:32:13.038Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T09:32:13.068Z] [INFO] GET /js/app.js 200 5ms +[2026-01-05T09:32:13.165Z] [INFO] GET /js/api.js 200 18ms +[2026-01-05T09:32:13.170Z] [INFO] GET /js/store.js 200 14ms +[2026-01-05T09:32:13.172Z] [INFO] GET /js/auth.js 200 15ms +[2026-01-05T09:32:13.173Z] [INFO] GET /js/sync.js 200 13ms +[2026-01-05T09:32:13.175Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T09:32:13.177Z] [INFO] GET /js/offline.js 200 8ms +[2026-01-05T09:32:13.216Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-05T09:32:13.219Z] [INFO] GET /js/list.js 200 5ms +[2026-01-05T09:32:13.226Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T09:32:13.228Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-05T09:32:13.246Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T09:32:13.261Z] [INFO] GET /js/admin.js 200 9ms +[2026-01-05T09:32:13.265Z] [INFO] GET /js/proposals.js 200 8ms +[2026-01-05T09:32:13.271Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T09:32:13.278Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T09:32:13.287Z] [INFO] GET /js/knowledge.js 200 6ms +[2026-01-05T09:32:13.290Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-05T09:32:13.311Z] [INFO] GET /js/mobile.js 200 11ms +[2026-01-05T09:32:13.314Z] [INFO] GET /js/utils.js 200 13ms +[2026-01-05T09:32:13.377Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T09:32:13.395Z] [INFO] GET /assets/icons/task.svg 304 5ms +[2026-01-05T09:32:13.419Z] [INFO] GET /api/auth/users 304 9ms +[2026-01-05T09:32:13.485Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-05T09:32:13.537Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (Y5YdpN11aB2BupLYAAAN) +[2026-01-05T09:32:13.545Z] [INFO] GET /api/projects 304 5ms +[2026-01-05T09:32:13.619Z] [INFO] GET /api/tasks/project/2 200 20ms +[2026-01-05T09:32:13.624Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:32:13.631Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-05T09:32:13.637Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-05T09:32:13.641Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-05T09:32:13.730Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-05T09:32:13.791Z] [INFO] GET /api/notifications 304 4ms +[2026-01-05T09:32:13.849Z] [INFO] GET /api/knowledge/categories 304 3ms +[2026-01-05T09:32:15.300Z] [INFO] GET /sw.js 200 8ms +[2026-01-05T09:32:30.900Z] [INFO] GET /api/tasks/27 200 13ms +[2026-01-05T09:32:30.944Z] [INFO] GET /api/subtasks/27 200 7ms +[2026-01-05T09:32:30.972Z] [INFO] GET /api/links/27 200 5ms +[2026-01-05T09:32:31.012Z] [INFO] GET /api/files/27 200 17ms +[2026-01-05T09:32:31.027Z] [INFO] GET /api/comments/27 200 14ms +[2026-01-05T09:32:31.033Z] [INFO] GET /api/tasks/27/history 404 16ms +[2026-01-05T09:32:31.790Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T09:32:41.132Z] [INFO] Aufgabe aktualisiert: WSL abklären, welche Integrationsform (ID: 27) +[2026-01-05T09:32:41.135Z] [INFO] PUT /api/tasks/27 200 11ms +[2026-01-05T09:32:41.587Z] [INFO] Aufgabe aktualisiert: WSL abklären, welche Integrationsform (ID: 27) +[2026-01-05T09:32:41.589Z] [INFO] PUT /api/tasks/27 200 8ms +[2026-01-05T09:32:42.074Z] [INFO] Aufgabe aktualisiert: WSL abklären, welche Integrationsform (ID: 27) +[2026-01-05T09:32:42.076Z] [INFO] PUT /api/tasks/27 200 8ms +[2026-01-05T09:32:42.500Z] [INFO] Aufgabe aktualisiert: WSL abklären, welche Integrationsform (ID: 27) +[2026-01-05T09:32:42.501Z] [INFO] PUT /api/tasks/27 200 5ms +[2026-01-05T09:32:43.451Z] [INFO] Aufgabe aktualisiert: WSL abklären, welche Integrationsform (ID: 27) +[2026-01-05T09:32:43.454Z] [INFO] PUT /api/tasks/27 200 10ms +[2026-01-05T09:32:44.446Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T09:32:46.636Z] [INFO] GET /api/tasks/27 200 8ms +[2026-01-05T09:32:46.678Z] [INFO] GET /api/subtasks/27 304 10ms +[2026-01-05T09:32:46.686Z] [INFO] GET /api/links/27 304 5ms +[2026-01-05T09:32:46.695Z] [INFO] GET /api/tasks/27/history 404 8ms +[2026-01-05T09:32:46.699Z] [INFO] GET /api/files/27 304 3ms +[2026-01-05T09:32:46.706Z] [INFO] GET /api/comments/27 304 5ms +[2026-01-05T09:32:47.647Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T09:32:51.391Z] [INFO] Aufgabe aktualisiert: WSL abklären, welche Integrationsform (ID: 27) +[2026-01-05T09:32:51.393Z] [INFO] PUT /api/tasks/27 200 9ms +[2026-01-05T09:32:52.388Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T09:32:52.606Z] [INFO] GET /api/tasks/27 200 12ms +[2026-01-05T09:32:52.648Z] [INFO] GET /api/subtasks/27 304 7ms +[2026-01-05T09:32:52.657Z] [INFO] GET /api/comments/27 304 6ms +[2026-01-05T09:32:52.662Z] [INFO] GET /api/links/27 304 10ms +[2026-01-05T09:32:52.667Z] [INFO] GET /api/files/27 304 4ms +[2026-01-05T09:32:52.672Z] [INFO] GET /api/tasks/27/history 404 4ms +[2026-01-05T09:32:53.609Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T09:33:39.142Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (Y5YdpN11aB2BupLYAAAN) +[2026-01-05T09:38:35.069Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (BpTOMhsxWG310bxXAAAP) +[2026-01-05T09:38:35.110Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:38:36.172Z] [INFO] GET / 200 11ms +[2026-01-05T09:38:36.273Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (BpTOMhsxWG310bxXAAAP) +[2026-01-05T09:38:36.285Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T09:38:36.287Z] [INFO] GET /css/base.css 200 4ms +[2026-01-05T09:38:36.329Z] [INFO] GET /css/board.css 200 8ms +[2026-01-05T09:38:36.327Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T09:38:36.366Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-05T09:38:36.374Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-05T09:38:36.383Z] [INFO] GET /css/list.css 200 12ms +[2026-01-05T09:38:36.385Z] [INFO] GET /css/admin.css 200 12ms +[2026-01-05T09:38:36.386Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-05T09:38:36.401Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T09:38:36.419Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T09:38:36.435Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-05T09:38:36.438Z] [INFO] GET /css/responsive.css 200 6ms +[2026-01-05T09:38:36.441Z] [INFO] GET /css/knowledge.css 200 7ms +[2026-01-05T09:38:36.443Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T09:38:36.447Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T09:38:36.525Z] [INFO] GET /js/store.js 200 9ms +[2026-01-05T09:38:36.529Z] [INFO] GET /js/sync.js 200 10ms +[2026-01-05T09:38:36.532Z] [INFO] GET /js/api.js 200 9ms +[2026-01-05T09:38:36.535Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-05T09:38:36.538Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T09:38:36.539Z] [INFO] GET /js/auth.js 200 5ms +[2026-01-05T09:38:36.571Z] [INFO] GET /js/task-modal.js 200 7ms +[2026-01-05T09:38:36.572Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-05T09:38:36.576Z] [INFO] GET /js/shortcuts.js 200 7ms +[2026-01-05T09:38:36.580Z] [INFO] GET /js/list.js 200 5ms +[2026-01-05T09:38:36.581Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T09:38:36.604Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T09:38:36.605Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T09:38:36.612Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-05T09:38:36.613Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-05T09:38:36.624Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T09:38:36.627Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-05T09:38:36.645Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T09:38:36.648Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-05T09:38:36.721Z] [INFO] POST /api/auth/refresh 200 30ms +[2026-01-05T09:38:36.731Z] [INFO] GET /api/auth/users 304 8ms +[2026-01-05T09:38:36.734Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T09:38:36.783Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T09:38:36.838Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (0bxlP0U8OqEGTsdqAAAR) +[2026-01-05T09:38:36.846Z] [INFO] GET /api/projects 304 5ms +[2026-01-05T09:38:36.901Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:38:36.909Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-05T09:38:36.914Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-05T09:38:36.918Z] [INFO] GET /api/labels/2 304 7ms +[2026-01-05T09:38:36.937Z] [INFO] GET /api/tasks/project/2 200 14ms +[2026-01-05T09:38:37.012Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-05T09:38:37.061Z] [INFO] GET /api/notifications 304 6ms +[2026-01-05T09:38:37.111Z] [INFO] GET /api/knowledge/categories 304 5ms +[2026-01-05T09:38:38.619Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T09:38:38.685Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T09:38:38.689Z] [INFO] GET / 200 6ms +[2026-01-05T09:38:38.691Z] [INFO] GET /index.html 200 6ms +[2026-01-05T09:38:38.722Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T09:38:38.756Z] [INFO] GET /css/components.css 200 3ms +[2026-01-05T09:38:38.778Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T09:38:38.781Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-05T09:38:38.801Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-05T09:38:38.816Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T09:38:38.828Z] [INFO] GET /js/app.js 200 1ms +[2026-01-05T09:38:38.839Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T09:38:38.865Z] [INFO] GET /js/api.js 200 3ms +[2026-01-05T09:38:38.873Z] [INFO] GET /js/auth.js 200 2ms +[2026-01-05T09:38:38.900Z] [INFO] GET /js/store.js 200 3ms +[2026-01-05T09:38:38.907Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-05T09:38:38.910Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-05T09:38:38.962Z] [INFO] GET /js/board.js 200 4ms +[2026-01-05T09:38:38.971Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T09:38:38.979Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T09:38:39.020Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T09:38:39.027Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-05T09:38:39.028Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T09:38:39.069Z] [INFO] GET /js/tour.js 200 8ms +[2026-01-05T09:38:39.074Z] [INFO] GET /js/admin.js 200 7ms +[2026-01-05T09:38:39.077Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-05T09:38:39.110Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T09:38:39.115Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T09:38:39.119Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T09:38:39.145Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T09:38:39.157Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T09:38:39.185Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T09:38:39.188Z] [INFO] GET /css/list.css 200 1ms +[2026-01-05T09:38:39.195Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-05T09:38:39.219Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T09:38:39.228Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T09:38:39.237Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T09:38:39.258Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T09:38:39.268Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T09:39:01.342Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T09:39:06.482Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T09:39:07.527Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T09:39:18.921Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T09:39:42.797Z] [INFO] GET /api/tasks/3 200 11ms +[2026-01-05T09:39:42.867Z] [INFO] GET /api/subtasks/3 200 9ms +[2026-01-05T09:39:42.883Z] [INFO] GET /api/links/3 200 13ms +[2026-01-05T09:39:42.893Z] [INFO] GET /api/comments/3 200 8ms +[2026-01-05T09:39:42.900Z] [INFO] GET /api/files/3 200 6ms +[2026-01-05T09:39:42.905Z] [INFO] GET /api/tasks/3/history 404 4ms +[2026-01-05T09:39:43.802Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T09:39:45.033Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (0bxlP0U8OqEGTsdqAAAR) +[2026-01-05T09:40:39.106Z] [INFO] GET / 200 3ms +[2026-01-05T09:40:39.379Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T09:40:39.425Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T09:40:39.455Z] [INFO] GET /css/components.css 200 8ms +[2026-01-05T09:40:39.465Z] [INFO] GET /css/board.css 200 13ms +[2026-01-05T09:40:39.472Z] [INFO] GET /css/modal.css 200 12ms +[2026-01-05T09:40:39.483Z] [INFO] GET /css/list.css 200 14ms +[2026-01-05T09:40:39.484Z] [INFO] GET /css/proposals.css 200 8ms +[2026-01-05T09:40:39.486Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T09:40:39.522Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T09:40:39.525Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-05T09:40:39.527Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-05T09:40:39.533Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T09:40:39.538Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T09:40:39.551Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T09:40:39.562Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T09:40:39.568Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T09:40:39.647Z] [INFO] GET /js/api.js 200 6ms +[2026-01-05T09:40:39.652Z] [INFO] GET /js/auth.js 200 9ms +[2026-01-05T09:40:39.655Z] [INFO] GET /js/sync.js 200 10ms +[2026-01-05T09:40:39.656Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T09:40:39.658Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-05T09:40:39.659Z] [INFO] GET /js/store.js 200 3ms +[2026-01-05T09:40:39.703Z] [INFO] GET /js/task-modal.js 200 12ms +[2026-01-05T09:40:39.706Z] [INFO] GET /js/calendar.js 200 14ms +[2026-01-05T09:40:39.712Z] [INFO] GET /js/list.js 200 11ms +[2026-01-05T09:40:39.713Z] [INFO] GET /js/undo.js 200 8ms +[2026-01-05T09:40:39.714Z] [INFO] GET /js/shortcuts.js 200 6ms +[2026-01-05T09:40:39.720Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T09:40:39.738Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T09:40:39.747Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T09:40:39.760Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-05T09:40:39.762Z] [INFO] GET /js/coding.js 200 7ms +[2026-01-05T09:40:39.764Z] [INFO] GET /js/mobile.js 200 7ms +[2026-01-05T09:40:39.766Z] [INFO] GET /js/knowledge.js 200 7ms +[2026-01-05T09:40:39.776Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-05T09:40:39.847Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T09:40:39.855Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T09:40:39.879Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T09:40:39.934Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T09:40:39.974Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (bxqBpwh3snL2ykdHAAAT) +[2026-01-05T09:40:39.984Z] [INFO] GET /api/projects 304 4ms +[2026-01-05T09:40:40.032Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:40:40.048Z] [INFO] GET /api/stats/dashboard?projectId=2 304 10ms +[2026-01-05T09:40:40.054Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-05T09:40:40.077Z] [INFO] GET /api/tasks/project/2 304 21ms +[2026-01-05T09:40:40.082Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-05T09:40:40.185Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-05T09:40:40.241Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T09:40:40.305Z] [INFO] GET /api/knowledge/categories 304 7ms +[2026-01-05T09:40:41.781Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T09:40:43.642Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T09:40:47.483Z] [INFO] GET / 200 4ms +[2026-01-05T09:40:47.586Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (bxqBpwh3snL2ykdHAAAT) +[2026-01-05T09:40:47.605Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T09:40:47.616Z] [INFO] GET /css/base.css 200 4ms +[2026-01-05T09:40:47.618Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-05T09:40:47.626Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-05T09:40:47.627Z] [INFO] GET /css/board.css 200 4ms +[2026-01-05T09:40:47.630Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T09:40:47.646Z] [INFO] GET /css/list.css 200 1ms +[2026-01-05T09:40:47.662Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-05T09:40:47.692Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T09:40:47.709Z] [INFO] GET /css/proposals.css 200 8ms +[2026-01-05T09:40:47.710Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-05T09:40:47.713Z] [INFO] GET /css/responsive.css 200 7ms +[2026-01-05T09:40:47.716Z] [INFO] GET /css/gitea.css 200 8ms +[2026-01-05T09:40:47.718Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-05T09:40:47.737Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T09:40:47.764Z] [INFO] GET /js/app.js 200 1ms +[2026-01-05T09:40:47.834Z] [INFO] GET /js/auth.js 200 2ms +[2026-01-05T09:40:47.835Z] [INFO] GET /js/store.js 200 2ms +[2026-01-05T09:40:47.836Z] [INFO] GET /js/api.js 200 3ms +[2026-01-05T09:40:47.842Z] [INFO] GET /js/board.js 200 3ms +[2026-01-05T09:40:47.843Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-05T09:40:47.844Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-05T09:40:47.877Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T09:40:47.878Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T09:40:47.884Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-05T09:40:47.885Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T09:40:47.909Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T09:40:47.919Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-05T09:40:47.925Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T09:40:47.928Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T09:40:47.930Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T09:40:47.937Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T09:40:47.947Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T09:40:47.962Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T09:40:47.963Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T09:40:48.018Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T09:40:48.024Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-05T09:40:48.033Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T09:40:48.082Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T09:40:48.124Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (wNS5gznYXWtXvEF_AAAV) +[2026-01-05T09:40:48.134Z] [INFO] GET /api/projects 304 6ms +[2026-01-05T09:40:48.188Z] [INFO] GET /api/stats/dashboard?projectId=2 304 8ms +[2026-01-05T09:40:48.210Z] [INFO] GET /api/tasks/project/2 304 18ms +[2026-01-05T09:40:48.214Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-05T09:40:48.215Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:40:48.220Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T09:40:48.294Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-05T09:40:48.346Z] [INFO] GET /api/notifications 304 6ms +[2026-01-05T09:40:48.405Z] [INFO] GET /api/knowledge/categories 304 8ms +[2026-01-05T09:40:49.872Z] [INFO] GET /sw.js 200 4ms +[2026-01-05T09:41:01.307Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (wNS5gznYXWtXvEF_AAAV) +[2026-01-05T09:41:46.785Z] [INFO] Aufgabe aktualisiert: WSL abklären, welche Integrationsform (ID: 27) +[2026-01-05T09:41:46.787Z] [INFO] PUT /api/tasks/27 200 10ms +[2026-01-05T09:41:47.630Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T09:41:50.463Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T09:41:53.032Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T09:42:27.050Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T09:42:28.826Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T09:42:31.239Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (8JhgSPROg0CyCf4_AAAa) +[2026-01-05T09:42:31.303Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:42:31.726Z] [INFO] GET / 200 8ms +[2026-01-05T09:42:31.798Z] [INFO] GET /assets/icons/task.svg 200 5ms +[2026-01-05T09:43:09.565Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (8JhgSPROg0CyCf4_AAAa) +[2026-01-05T09:43:23.269Z] [INFO] GET / 200 2ms +[2026-01-05T09:43:23.478Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T09:43:23.512Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T09:43:23.554Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T09:43:23.555Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T09:43:23.561Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-05T09:43:23.563Z] [INFO] GET /css/list.css 200 5ms +[2026-01-05T09:43:23.566Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T09:43:23.568Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-05T09:43:23.603Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T09:43:23.638Z] [INFO] GET /css/gitea.css 200 9ms +[2026-01-05T09:43:23.640Z] [INFO] GET /css/coding.css 200 9ms +[2026-01-05T09:43:23.644Z] [INFO] GET /css/notifications.css 200 10ms +[2026-01-05T09:43:23.646Z] [INFO] GET /css/knowledge.css 200 9ms +[2026-01-05T09:43:23.648Z] [INFO] GET /css/responsive.css 200 6ms +[2026-01-05T09:43:23.652Z] [INFO] GET /css/mobile.css 200 5ms +[2026-01-05T09:43:23.690Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T09:43:23.762Z] [INFO] GET /js/store.js 200 2ms +[2026-01-05T09:43:23.765Z] [INFO] GET /js/api.js 200 1ms +[2026-01-05T09:43:23.771Z] [INFO] GET /js/sync.js 200 3ms +[2026-01-05T09:43:23.772Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-05T09:43:23.773Z] [INFO] GET /js/board.js 200 6ms +[2026-01-05T09:43:23.774Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-05T09:43:23.799Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T09:43:23.812Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T09:43:23.817Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-05T09:43:23.818Z] [INFO] GET /js/list.js 200 4ms +[2026-01-05T09:43:23.821Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T09:43:23.839Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T09:43:23.846Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T09:43:23.854Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T09:43:23.857Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-05T09:43:23.862Z] [INFO] GET /js/knowledge.js 200 7ms +[2026-01-05T09:43:23.864Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T09:43:23.877Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T09:43:23.888Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T09:43:23.953Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T09:43:23.984Z] [INFO] GET /assets/icons/task.svg 304 7ms +[2026-01-05T09:43:24.005Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T09:43:24.065Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-05T09:43:24.120Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (EUur6fJig2Gf-XhbAAAc) +[2026-01-05T09:43:24.132Z] [INFO] GET /api/projects 304 7ms +[2026-01-05T09:43:24.198Z] [INFO] GET /api/stats/dashboard?projectId=2 304 8ms +[2026-01-05T09:43:24.199Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:43:24.218Z] [INFO] GET /api/tasks/project/2 200 17ms +[2026-01-05T09:43:24.223Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-05T09:43:24.226Z] [INFO] GET /api/labels/2 304 6ms +[2026-01-05T09:43:24.384Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-05T09:43:24.447Z] [INFO] GET /api/notifications 304 10ms +[2026-01-05T09:43:24.516Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-05T09:43:25.170Z] [INFO] GET / 200 2ms +[2026-01-05T09:43:25.272Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (EUur6fJig2Gf-XhbAAAc) +[2026-01-05T09:43:25.286Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T09:43:25.290Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T09:43:25.295Z] [INFO] GET /css/board.css 200 3ms +[2026-01-05T09:43:25.296Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T09:43:25.297Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-05T09:43:25.301Z] [INFO] GET /css/components.css 200 1ms +[2026-01-05T09:43:25.327Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T09:43:25.329Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T09:43:25.336Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T09:43:25.359Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T09:43:25.375Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-05T09:43:25.380Z] [INFO] GET /css/coding.css 200 9ms +[2026-01-05T09:43:25.384Z] [INFO] GET /css/gitea.css 200 11ms +[2026-01-05T09:43:25.387Z] [INFO] GET /css/knowledge.css 200 10ms +[2026-01-05T09:43:25.392Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T09:43:25.398Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T09:43:25.474Z] [INFO] GET /js/store.js 200 3ms +[2026-01-05T09:43:25.475Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-05T09:43:25.479Z] [INFO] GET /js/board.js 200 2ms +[2026-01-05T09:43:25.482Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-05T09:43:25.483Z] [INFO] GET /js/api.js 200 5ms +[2026-01-05T09:43:25.484Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-05T09:43:25.517Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T09:43:25.520Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-05T09:43:25.523Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-05T09:43:25.526Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T09:43:25.547Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T09:43:25.564Z] [INFO] GET /js/proposals.js 200 11ms +[2026-01-05T09:43:25.570Z] [INFO] GET /js/admin.js 200 5ms +[2026-01-05T09:43:25.573Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-05T09:43:25.575Z] [INFO] GET /js/notifications.js 200 6ms +[2026-01-05T09:43:25.589Z] [INFO] GET /js/knowledge.js 200 8ms +[2026-01-05T09:43:25.593Z] [INFO] GET /js/coding.js 200 7ms +[2026-01-05T09:43:25.598Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T09:43:25.609Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T09:43:25.664Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T09:43:25.668Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-05T09:43:25.683Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-05T09:43:25.744Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T09:43:25.793Z] [INFO] GET /api/projects 304 4ms +[2026-01-05T09:43:25.797Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (MH6aLi3ggOjUfx8QAAAe) +[2026-01-05T09:43:25.854Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:43:25.863Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-05T09:43:25.869Z] [INFO] GET /api/stats/dashboard?projectId=2 304 10ms +[2026-01-05T09:43:25.882Z] [INFO] GET /api/tasks/project/2 304 18ms +[2026-01-05T09:43:25.888Z] [INFO] GET /api/labels/2 304 2ms +[2026-01-05T09:43:25.952Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-05T09:43:25.957Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T09:43:26.007Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T09:43:26.067Z] [INFO] GET /api/knowledge/categories 304 8ms +[2026-01-05T09:43:26.147Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-05T09:43:26.153Z] [INFO] GET / 200 10ms +[2026-01-05T09:43:26.154Z] [INFO] GET /index.html 200 10ms +[2026-01-05T09:43:26.194Z] [INFO] GET /css/base.css 200 1ms +[2026-01-05T09:43:26.210Z] [INFO] GET /css/board.css 200 4ms +[2026-01-05T09:43:26.212Z] [INFO] GET /css/components.css 200 4ms +[2026-01-05T09:43:26.239Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-05T09:43:26.256Z] [INFO] GET /css/calendar.css 200 2ms +[2026-01-05T09:43:26.260Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T09:43:26.291Z] [INFO] GET /js/app.js 200 6ms +[2026-01-05T09:43:26.304Z] [INFO] GET /js/api.js 200 3ms +[2026-01-05T09:43:26.321Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T09:43:26.351Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-05T09:43:26.370Z] [INFO] GET /js/store.js 200 3ms +[2026-01-05T09:43:26.372Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-05T09:43:26.396Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-05T09:43:26.418Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T09:43:26.422Z] [INFO] GET /js/board.js 200 2ms +[2026-01-05T09:43:26.444Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T09:43:26.473Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T09:43:26.498Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T09:43:26.519Z] [INFO] GET /js/tour.js 200 1ms +[2026-01-05T09:43:26.531Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T09:43:26.540Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-05T09:43:26.567Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T09:43:26.581Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T09:43:26.586Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T09:43:26.619Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T09:43:26.635Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T09:43:26.661Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T09:43:26.668Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T09:43:26.711Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T09:43:26.713Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T09:43:26.716Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T09:43:26.771Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T09:43:26.778Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T09:43:26.790Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T09:43:26.822Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-05T09:43:28.501Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T09:43:29.851Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T09:43:33.468Z] [INFO] GET / 200 4ms +[2026-01-05T09:43:33.731Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (MH6aLi3ggOjUfx8QAAAe) +[2026-01-05T09:43:33.960Z] [INFO] GET /css/board.css 200 3ms +[2026-01-05T09:43:33.967Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-05T09:43:33.970Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T09:43:33.971Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-05T09:43:33.972Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-05T09:43:34.007Z] [INFO] GET /css/base.css 200 4ms +[2026-01-05T09:43:34.013Z] [INFO] GET /css/list.css 200 5ms +[2026-01-05T09:43:34.026Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T09:43:34.037Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-05T09:43:34.038Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-05T09:43:34.045Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T09:43:34.046Z] [INFO] GET /css/coding.css 200 0ms +[2026-01-05T09:43:34.052Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T09:43:34.065Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T09:43:34.080Z] [INFO] GET /css/mobile.css 200 5ms +[2026-01-05T09:43:34.082Z] [INFO] GET /js/app.js 200 7ms +[2026-01-05T09:43:34.181Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T09:43:34.185Z] [INFO] GET /js/auth.js 200 5ms +[2026-01-05T09:43:34.186Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-05T09:43:34.189Z] [INFO] GET /js/offline.js 200 5ms +[2026-01-05T09:43:34.191Z] [INFO] GET /js/api.js 200 2ms +[2026-01-05T09:43:34.194Z] [INFO] GET /js/board.js 200 4ms +[2026-01-05T09:43:34.222Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T09:43:34.227Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T09:43:34.228Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T09:43:34.229Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T09:43:34.238Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T09:43:34.279Z] [INFO] GET /js/admin.js 200 15ms +[2026-01-05T09:43:34.280Z] [INFO] GET /js/notifications.js 200 16ms +[2026-01-05T09:43:34.286Z] [INFO] GET /js/gitea.js 200 17ms +[2026-01-05T09:43:34.289Z] [INFO] GET /js/knowledge.js 200 14ms +[2026-01-05T09:43:34.313Z] [INFO] GET /js/proposals.js 200 25ms +[2026-01-05T09:43:34.320Z] [INFO] GET /js/coding.js 200 12ms +[2026-01-05T09:43:34.327Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T09:43:34.330Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-05T09:43:34.382Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T09:43:34.412Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T09:43:34.414Z] [INFO] GET /assets/icons/task.svg 304 5ms +[2026-01-05T09:43:34.485Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T09:43:34.545Z] [INFO] GET /api/projects 304 4ms +[2026-01-05T09:43:34.578Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (BZK0Ye7v9VNyHdvkAAAg) +[2026-01-05T09:43:34.626Z] [INFO] GET /api/stats/dashboard?projectId=2 304 10ms +[2026-01-05T09:43:34.647Z] [INFO] GET /api/tasks/project/2 304 19ms +[2026-01-05T09:43:34.653Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T09:43:34.657Z] [INFO] GET /api/columns/2 304 7ms +[2026-01-05T09:43:34.658Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:43:34.737Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-05T09:43:34.793Z] [INFO] GET /api/notifications 304 12ms +[2026-01-05T09:43:34.848Z] [INFO] GET /api/knowledge/categories 304 4ms +[2026-01-05T09:43:35.171Z] [INFO] GET / 200 3ms +[2026-01-05T09:43:35.271Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (BZK0Ye7v9VNyHdvkAAAg) +[2026-01-05T09:43:35.300Z] [INFO] GET /css/base.css 200 6ms +[2026-01-05T09:43:35.307Z] [INFO] GET /css/variables.css 200 11ms +[2026-01-05T09:43:35.318Z] [INFO] GET /css/board.css 200 20ms +[2026-01-05T09:43:35.325Z] [INFO] GET /css/modal.css 200 22ms +[2026-01-05T09:43:35.329Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-05T09:43:35.330Z] [INFO] GET /css/components.css 200 4ms +[2026-01-05T09:43:35.340Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T09:43:35.345Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-05T09:43:35.384Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-05T09:43:35.385Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T09:43:35.389Z] [INFO] GET /css/proposals.css 200 7ms +[2026-01-05T09:43:35.399Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T09:43:35.403Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T09:43:35.404Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T09:43:35.436Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T09:43:35.438Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T09:43:35.525Z] [INFO] GET /js/auth.js 200 9ms +[2026-01-05T09:43:35.526Z] [INFO] GET /js/store.js 200 8ms +[2026-01-05T09:43:35.529Z] [INFO] GET /js/api.js 200 8ms +[2026-01-05T09:43:35.534Z] [INFO] GET /js/sync.js 200 11ms +[2026-01-05T09:43:35.536Z] [INFO] GET /js/board.js 200 9ms +[2026-01-05T09:43:35.537Z] [INFO] GET /js/offline.js 200 5ms +[2026-01-05T09:43:35.579Z] [INFO] GET /js/calendar.js 200 1ms +[2026-01-05T09:43:35.580Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T09:43:35.588Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T09:43:35.597Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T09:43:35.614Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T09:43:35.614Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-05T09:43:35.619Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-05T09:43:35.629Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T09:43:35.635Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T09:43:35.643Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T09:43:35.667Z] [INFO] GET /js/coding.js 200 6ms +[2026-01-05T09:43:35.670Z] [INFO] GET /js/utils.js 200 6ms +[2026-01-05T09:43:35.675Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T09:43:35.747Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T09:43:35.749Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-05T09:43:35.758Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T09:43:35.807Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T09:43:35.856Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (m5QAWG0PnBmbm_BWAAAi) +[2026-01-05T09:43:35.889Z] [INFO] GET /api/projects 304 9ms +[2026-01-05T09:43:35.941Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:43:35.949Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-05T09:43:35.958Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-05T09:43:35.965Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-05T09:43:35.991Z] [INFO] GET /api/tasks/project/2 304 16ms +[2026-01-05T09:43:36.072Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 8ms +[2026-01-05T09:43:36.122Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T09:43:36.175Z] [INFO] GET /api/knowledge/categories 304 4ms +[2026-01-05T09:43:37.633Z] [INFO] GET /sw.js 200 1ms +[2026-01-05T09:43:51.451Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T09:43:53.267Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T09:43:55.460Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T09:43:56.524Z] [INFO] GET / 200 5ms +[2026-01-05T09:43:56.638Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (m5QAWG0PnBmbm_BWAAAi) +[2026-01-05T09:43:56.670Z] [INFO] GET /css/base.css 200 6ms +[2026-01-05T09:43:56.673Z] [INFO] GET /css/variables.css 200 7ms +[2026-01-05T09:43:56.679Z] [INFO] GET /css/components.css 200 10ms +[2026-01-05T09:43:56.684Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T09:43:56.686Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-05T09:43:56.687Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-05T09:43:56.718Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T09:43:56.722Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T09:43:56.751Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T09:43:56.769Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T09:43:56.771Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T09:43:56.773Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T09:43:56.773Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-05T09:43:56.774Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T09:43:56.786Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T09:43:56.823Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T09:43:56.894Z] [INFO] GET /js/auth.js 200 5ms +[2026-01-05T09:43:56.896Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T09:43:56.898Z] [INFO] GET /js/api.js 200 6ms +[2026-01-05T09:43:56.906Z] [INFO] GET /js/sync.js 200 9ms +[2026-01-05T09:43:56.911Z] [INFO] GET /js/board.js 200 10ms +[2026-01-05T09:43:56.914Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-05T09:43:56.936Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T09:43:56.941Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T09:43:56.944Z] [INFO] GET /js/list.js 200 4ms +[2026-01-05T09:43:56.956Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T09:43:56.971Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T09:43:56.978Z] [INFO] GET /js/admin.js 200 5ms +[2026-01-05T09:43:56.982Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T09:43:56.984Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T09:43:57.008Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-05T09:43:57.010Z] [INFO] GET /js/knowledge.js 200 6ms +[2026-01-05T09:43:57.011Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-05T09:43:57.020Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-05T09:43:57.022Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-05T09:43:57.111Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T09:43:57.118Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-05T09:43:57.131Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T09:43:57.187Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-05T09:43:57.262Z] [INFO] GET /api/projects 304 12ms +[2026-01-05T09:43:57.269Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (likK9rZca6s6d-lmAAAk) +[2026-01-05T09:43:57.327Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:43:57.335Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-05T09:43:57.342Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-05T09:43:57.362Z] [INFO] GET /api/tasks/project/2 304 24ms +[2026-01-05T09:43:57.365Z] [INFO] GET /api/labels/2 304 22ms +[2026-01-05T09:43:57.448Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-05T09:43:57.494Z] [INFO] GET /api/notifications 304 6ms +[2026-01-05T09:43:57.552Z] [INFO] GET /api/knowledge/categories 304 10ms +[2026-01-05T09:43:59.019Z] [INFO] GET /sw.js 200 4ms +[2026-01-05T09:44:00.436Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T09:44:02.064Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T09:44:09.428Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (likK9rZca6s6d-lmAAAk) +[2026-01-05T09:49:51.299Z] [INFO] GET / 200 3ms +[2026-01-05T09:49:51.395Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T09:49:51.435Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T09:49:51.471Z] [INFO] GET /css/components.css 200 4ms +[2026-01-05T09:49:51.475Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T09:49:51.477Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T09:49:51.481Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-05T09:49:51.483Z] [INFO] GET /css/list.css 200 5ms +[2026-01-05T09:49:51.484Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T09:49:51.516Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T09:49:51.532Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-05T09:49:51.553Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-05T09:49:51.555Z] [INFO] GET /css/gitea.css 200 8ms +[2026-01-05T09:49:51.558Z] [INFO] GET /css/knowledge.css 200 9ms +[2026-01-05T09:49:51.562Z] [INFO] GET /css/responsive.css 200 12ms +[2026-01-05T09:49:51.565Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T09:49:51.569Z] [INFO] GET /js/app.js 200 5ms +[2026-01-05T09:49:51.653Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-05T09:49:51.654Z] [INFO] GET /js/api.js 200 4ms +[2026-01-05T09:49:51.656Z] [INFO] GET /js/offline.js 200 5ms +[2026-01-05T09:49:51.657Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T09:49:51.659Z] [INFO] GET /js/board.js 200 4ms +[2026-01-05T09:49:51.664Z] [INFO] GET /js/auth.js 200 2ms +[2026-01-05T09:49:51.710Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T09:49:51.722Z] [INFO] GET /js/calendar.js 200 7ms +[2026-01-05T09:49:51.723Z] [INFO] GET /js/list.js 200 7ms +[2026-01-05T09:49:51.726Z] [INFO] GET /js/shortcuts.js 200 7ms +[2026-01-05T09:49:51.729Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T09:49:51.732Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-05T09:49:51.756Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T09:49:51.760Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-05T09:49:51.764Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T09:49:51.766Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T09:49:51.771Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T09:49:51.775Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T09:49:51.801Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T09:49:51.857Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T09:49:51.883Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-05T09:49:51.893Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T09:49:51.945Z] [INFO] GET /api/auth/users 304 8ms +[2026-01-05T09:49:51.993Z] [INFO] GET /api/projects 304 8ms +[2026-01-05T09:49:51.998Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (DFYPMAIVJUi0p5FXAAAm) +[2026-01-05T09:49:52.059Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-05T09:49:52.065Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-05T09:49:52.084Z] [INFO] GET /api/tasks/project/2 304 19ms +[2026-01-05T09:49:52.086Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:49:52.090Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-05T09:49:52.149Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 4ms +[2026-01-05T09:49:52.204Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T09:49:52.210Z] [INFO] GET / 200 2ms +[2026-01-05T09:49:52.285Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (DFYPMAIVJUi0p5FXAAAm) +[2026-01-05T09:49:52.293Z] [INFO] GET /css/components.css 200 8ms +[2026-01-05T09:49:52.297Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-05T09:49:52.298Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T09:49:52.302Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-05T09:49:52.303Z] [INFO] GET /css/variables.css 200 8ms +[2026-01-05T09:49:52.306Z] [INFO] GET /css/base.css 200 4ms +[2026-01-05T09:49:52.334Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T09:49:52.336Z] [INFO] GET /css/list.css 200 5ms +[2026-01-05T09:49:52.345Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-05T09:49:52.348Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-05T09:49:52.351Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T09:49:52.353Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-05T09:49:52.373Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T09:49:52.377Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T09:49:52.390Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T09:49:52.391Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T09:49:52.399Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T09:49:52.473Z] [INFO] GET /js/api.js 200 5ms +[2026-01-05T09:49:52.477Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-05T09:49:52.479Z] [INFO] GET /js/sync.js 200 7ms +[2026-01-05T09:49:52.480Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-05T09:49:52.482Z] [INFO] GET /js/store.js 200 4ms +[2026-01-05T09:49:52.525Z] [INFO] GET /js/board.js 200 2ms +[2026-01-05T09:49:52.536Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T09:49:52.541Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T09:49:52.543Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-05T09:49:52.545Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-05T09:49:52.548Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-05T09:49:52.575Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T09:49:52.587Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-05T09:49:52.595Z] [INFO] GET /js/notifications.js 200 1ms +[2026-01-05T09:49:52.605Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T09:49:52.606Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T09:49:52.612Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T09:49:52.618Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T09:49:52.775Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T09:49:52.840Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T09:49:52.976Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T09:49:52.978Z] [INFO] GET /assets/icons/task.svg 304 7ms +[2026-01-05T09:49:53.044Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T09:49:53.142Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (E5IlY2AWd54wvRW6AAAo) +[2026-01-05T09:49:53.197Z] [INFO] GET /api/projects 304 10ms +[2026-01-05T09:49:53.365Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:49:53.389Z] [INFO] GET /api/tasks/project/2 304 22ms +[2026-01-05T09:49:53.397Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-05T09:49:53.402Z] [INFO] GET /api/stats/dashboard?projectId=2 304 8ms +[2026-01-05T09:49:53.406Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-05T09:49:53.491Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 3ms +[2026-01-05T09:49:53.544Z] [INFO] GET /api/notifications 304 4ms +[2026-01-05T09:49:53.605Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-05T09:49:55.058Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T09:50:03.162Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (E5IlY2AWd54wvRW6AAAo) +[2026-01-05T09:51:53.244Z] [INFO] POST /api/auth/refresh 200 23ms +[2026-01-05T09:52:40.496Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T09:52:45.553Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T09:52:46.837Z] [INFO] GET /api/tasks/1 200 13ms +[2026-01-05T09:52:46.877Z] [INFO] GET /api/subtasks/1 200 6ms +[2026-01-05T09:52:46.911Z] [INFO] GET /api/links/1 200 8ms +[2026-01-05T09:52:46.951Z] [INFO] GET /api/files/1 200 13ms +[2026-01-05T09:52:46.960Z] [INFO] GET /api/comments/1 200 5ms +[2026-01-05T09:52:46.966Z] [INFO] GET /api/tasks/1/history 404 5ms +[2026-01-05T09:52:47.838Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T09:52:52.108Z] [INFO] Aufgabe aktualisiert: Router (ID: 1) +[2026-01-05T09:52:52.110Z] [INFO] PUT /api/tasks/1 200 8ms +[2026-01-05T09:52:53.093Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T09:52:53.425Z] [INFO] GET /api/tasks/1 200 13ms +[2026-01-05T09:52:53.464Z] [INFO] GET /api/comments/1 304 4ms +[2026-01-05T09:52:53.471Z] [INFO] GET /api/files/1 304 6ms +[2026-01-05T09:52:53.476Z] [INFO] GET /api/links/1 304 10ms +[2026-01-05T09:52:53.482Z] [INFO] GET /api/subtasks/1 304 5ms +[2026-01-05T09:52:53.488Z] [INFO] GET /api/tasks/1/history 404 4ms +[2026-01-05T09:52:54.417Z] [INFO] Aufgabe aktualisiert: Router (ID: 1) +[2026-01-05T09:52:54.419Z] [INFO] PUT /api/tasks/1 200 7ms +[2026-01-05T09:52:55.781Z] [INFO] GET /api/tasks/1 200 12ms +[2026-01-05T09:52:55.832Z] [INFO] GET /api/subtasks/1 304 9ms +[2026-01-05T09:52:55.837Z] [INFO] GET /api/links/1 304 4ms +[2026-01-05T09:52:55.843Z] [INFO] GET /api/files/1 304 5ms +[2026-01-05T09:52:55.849Z] [INFO] GET /api/tasks/1/history 404 4ms +[2026-01-05T09:52:55.861Z] [INFO] GET /api/comments/1 304 6ms +[2026-01-05T09:52:56.779Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T09:52:59.515Z] [INFO] Aufgabe aktualisiert: Router (ID: 1) +[2026-01-05T09:52:59.517Z] [INFO] PUT /api/tasks/1 200 8ms +[2026-01-05T09:53:00.521Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T09:53:25.540Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T09:53:27.891Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T09:53:29.338Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T09:53:39.842Z] [INFO] GET /api/tasks/3 200 6ms +[2026-01-05T09:53:39.878Z] [INFO] GET /api/links/3 200 4ms +[2026-01-05T09:53:39.882Z] [INFO] GET /api/subtasks/3 200 7ms +[2026-01-05T09:53:39.888Z] [INFO] GET /api/tasks/3/history 404 4ms +[2026-01-05T09:53:39.895Z] [INFO] GET /api/comments/3 200 5ms +[2026-01-05T09:53:39.893Z] [INFO] GET /api/files/3 200 5ms +[2026-01-05T09:53:40.850Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T09:53:41.234Z] [INFO] Aufgabe aktualisiert: Bilanzbuchhaltung - Bundesanzeiger (ID: 3) +[2026-01-05T09:53:41.236Z] [INFO] PUT /api/tasks/3 200 8ms +[2026-01-05T09:53:42.238Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T09:53:42.329Z] [INFO] GET /api/tasks/1 200 10ms +[2026-01-05T09:53:42.367Z] [INFO] GET /api/comments/1 304 7ms +[2026-01-05T09:53:42.372Z] [INFO] GET /api/subtasks/1 304 4ms +[2026-01-05T09:53:42.377Z] [INFO] GET /api/tasks/1/history 404 4ms +[2026-01-05T09:53:42.385Z] [INFO] GET /api/links/1 304 5ms +[2026-01-05T09:53:42.388Z] [INFO] GET /api/files/1 304 2ms +[2026-01-05T09:53:42.932Z] [INFO] Aufgabe aktualisiert: Router (ID: 1) +[2026-01-05T09:53:42.934Z] [INFO] PUT /api/tasks/1 200 9ms +[2026-01-05T09:53:43.923Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T09:53:49.382Z] [INFO] GET / 200 6ms +[2026-01-05T09:53:49.445Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (ygey_s26FEIw9ImyAAAF) +[2026-01-05T09:53:49.458Z] [INFO] GET /css/variables.css 200 8ms +[2026-01-05T09:53:49.463Z] [INFO] GET /css/components.css 200 9ms +[2026-01-05T09:53:49.467Z] [INFO] GET /css/base.css 200 11ms +[2026-01-05T09:53:49.468Z] [INFO] GET /css/board.css 200 9ms +[2026-01-05T09:53:49.469Z] [INFO] GET /css/modal.css 200 9ms +[2026-01-05T09:53:49.484Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T09:53:49.498Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T09:53:49.512Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T09:53:49.514Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T09:53:49.524Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T09:53:49.527Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-05T09:53:49.529Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-05T09:53:49.532Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T09:53:49.544Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T09:53:49.553Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T09:53:49.565Z] [INFO] GET /js/app.js 200 8ms +[2026-01-05T09:53:49.772Z] [INFO] GET /js/store.js 200 7ms +[2026-01-05T09:53:49.773Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-05T09:53:49.776Z] [INFO] GET /js/api.js 200 7ms +[2026-01-05T09:53:49.779Z] [INFO] GET /js/board.js 200 9ms +[2026-01-05T09:53:49.781Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-05T09:53:49.782Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-05T09:53:49.810Z] [INFO] GET /js/task-modal.js 200 7ms +[2026-01-05T09:53:49.816Z] [INFO] GET /js/shortcuts.js 200 8ms +[2026-01-05T09:53:49.817Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-05T09:53:49.819Z] [INFO] GET /js/undo.js 200 6ms +[2026-01-05T09:53:49.821Z] [INFO] GET /js/list.js 200 6ms +[2026-01-05T09:53:49.828Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-05T09:53:49.845Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T09:53:49.853Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-05T09:53:49.854Z] [INFO] GET /js/knowledge.js 200 5ms +[2026-01-05T09:53:49.855Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-05T09:53:49.863Z] [INFO] GET /js/coding.js 200 6ms +[2026-01-05T09:53:49.865Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T09:53:49.886Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-05T09:53:49.929Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T09:53:49.938Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T09:53:49.943Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T09:53:49.980Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T09:53:50.012Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (mB-ZFmDoRX3-KvxOAAAq) +[2026-01-05T09:53:50.020Z] [INFO] GET /api/projects 304 6ms +[2026-01-05T09:53:50.081Z] [INFO] GET /api/tasks/project/2 200 27ms +[2026-01-05T09:53:50.085Z] [INFO] GET /api/columns/2 304 30ms +[2026-01-05T09:53:50.086Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T09:53:50.093Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-05T09:53:50.103Z] [INFO] GET /api/labels/2 304 8ms +[2026-01-05T09:53:50.149Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-05T09:53:50.186Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T09:53:50.226Z] [INFO] GET /api/knowledge/categories 304 5ms +[2026-01-05T09:53:53.658Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T09:54:24.755Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T09:56:57.745Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T09:57:02.692Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T09:57:03.832Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T09:57:05.326Z] [INFO] GET /api/tasks/1 200 6ms +[2026-01-05T09:57:05.366Z] [INFO] GET /api/subtasks/1 304 3ms +[2026-01-05T09:57:05.397Z] [INFO] GET /api/links/1 304 3ms +[2026-01-05T09:57:05.435Z] [INFO] GET /api/files/1 304 15ms +[2026-01-05T09:57:05.450Z] [INFO] GET /api/comments/1 304 6ms +[2026-01-05T09:57:05.457Z] [INFO] GET /api/tasks/1/history 404 3ms +[2026-01-05T09:57:06.153Z] [INFO] Aufgabe aktualisiert: Router (ID: 1) +[2026-01-05T09:57:06.155Z] [INFO] PUT /api/tasks/1 200 11ms +[2026-01-05T09:57:07.577Z] [INFO] POST /api/auth/refresh 200 4ms +[2026-01-05T09:57:10.776Z] [INFO] POST /api/auth/refresh 200 4ms +[2026-01-05T09:57:11.827Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T09:57:13.880Z] [INFO] GET /api/tasks/1 200 6ms +[2026-01-05T09:57:13.921Z] [INFO] GET /api/links/1 304 5ms +[2026-01-05T09:57:13.926Z] [INFO] GET /api/files/1 304 10ms +[2026-01-05T09:57:13.930Z] [INFO] GET /api/comments/1 304 3ms +[2026-01-05T09:57:13.934Z] [INFO] GET /api/tasks/1/history 404 3ms +[2026-01-05T09:57:13.939Z] [INFO] GET /api/subtasks/1 304 5ms +[2026-01-05T09:57:14.650Z] [INFO] Aufgabe aktualisiert: Router (ID: 1) +[2026-01-05T09:57:14.651Z] [INFO] PUT /api/tasks/1 200 5ms +[2026-01-05T09:57:15.664Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T09:57:19.193Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T09:57:20.935Z] [INFO] POST /api/auth/refresh 200 17ms +[2026-01-05T09:57:24.223Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T09:57:26.129Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T09:57:27.947Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:00:24.930Z] [INFO] GET / 200 7ms +[2026-01-05T10:00:24.988Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (mB-ZFmDoRX3-KvxOAAAq) +[2026-01-05T10:00:24.992Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T10:00:25.023Z] [INFO] GET /css/base.css 200 4ms +[2026-01-05T10:00:25.051Z] [INFO] GET /css/components.css 200 2ms +[2026-01-05T10:00:25.064Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T10:00:25.066Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T10:00:25.072Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-05T10:00:25.074Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T10:00:25.075Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T10:00:25.078Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T10:00:25.102Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-05T10:00:25.106Z] [INFO] GET /css/gitea.css 200 1ms +[2026-01-05T10:00:25.119Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T10:00:25.120Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-05T10:00:25.121Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T10:00:25.133Z] [INFO] GET /css/mobile.css 200 5ms +[2026-01-05T10:00:25.141Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T10:00:25.210Z] [INFO] GET /js/auth.js 200 8ms +[2026-01-05T10:00:25.214Z] [INFO] GET /js/api.js 200 7ms +[2026-01-05T10:00:25.220Z] [INFO] GET /js/offline.js 200 12ms +[2026-01-05T10:00:25.225Z] [INFO] GET /js/sync.js 200 13ms +[2026-01-05T10:00:25.226Z] [INFO] GET /js/board.js 200 9ms +[2026-01-05T10:00:25.227Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T10:00:25.234Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T10:00:25.241Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T10:00:25.245Z] [INFO] GET /js/list.js 200 1ms +[2026-01-05T10:00:25.259Z] [INFO] GET /js/undo.js 200 5ms +[2026-01-05T10:00:25.261Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-05T10:00:25.273Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T10:00:25.275Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T10:00:25.277Z] [INFO] GET /js/notifications.js 200 1ms +[2026-01-05T10:00:25.289Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T10:00:25.292Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T10:00:25.298Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T10:00:25.304Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T10:00:25.307Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-05T10:00:25.348Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:00:25.352Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T10:00:25.355Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T10:00:25.390Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T10:00:25.421Z] [INFO] GET /api/projects 304 6ms +[2026-01-05T10:00:25.427Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (_vmaWJg5cZ52a3QeAAAs) +[2026-01-05T10:00:25.451Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-05T10:00:25.479Z] [INFO] GET /api/tasks/project/2 200 25ms +[2026-01-05T10:00:25.484Z] [INFO] GET /api/labels/2 304 29ms +[2026-01-05T10:00:25.489Z] [INFO] GET /api/stats/dashboard?projectId=2 304 9ms +[2026-01-05T10:00:25.492Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:00:25.524Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 4ms +[2026-01-05T10:00:25.557Z] [INFO] GET /api/notifications 304 4ms +[2026-01-05T10:00:25.593Z] [INFO] GET /api/knowledge/categories 304 4ms +[2026-01-05T10:00:27.228Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T10:00:31.323Z] [INFO] POST /api/auth/refresh 200 25ms +[2026-01-05T10:00:39.059Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T10:01:18.229Z] [INFO] GET /api/tasks/6 200 8ms +[2026-01-05T10:01:18.279Z] [INFO] GET /api/links/6 304 16ms +[2026-01-05T10:01:18.288Z] [INFO] GET /api/files/6 304 21ms +[2026-01-05T10:01:18.293Z] [INFO] GET /api/subtasks/6 304 4ms +[2026-01-05T10:01:18.298Z] [INFO] GET /api/comments/6 304 4ms +[2026-01-05T10:01:18.311Z] [INFO] GET /api/tasks/6/history 404 10ms +[2026-01-05T10:01:18.328Z] [INFO] GET /api/files/preview/2?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwNzIzOSwiZXhwIjoxNzY3NjA4MTM5fQ.BwKQe96_8X1WrdZdlar4IcegLx-B7sfmqaL85iyy7hc 200 12ms +[2026-01-05T10:01:18.331Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwNzIzOSwiZXhwIjoxNzY3NjA4MTM5fQ.BwKQe96_8X1WrdZdlar4IcegLx-B7sfmqaL85iyy7hc 200 9ms +[2026-01-05T10:01:19.238Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T10:01:33.916Z] [INFO] PUT /api/subtasks/12 200 13ms +[2026-01-05T10:01:33.958Z] [INFO] PUT /api/subtasks/12/position 200 16ms +[2026-01-05T10:01:34.916Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:01:52.101Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:01:52.103Z] [INFO] PUT /api/tasks/6 200 8ms +[2026-01-05T10:01:53.029Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:01:57.492Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T10:01:58.513Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:02:00.333Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T10:02:02.740Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:02:05.487Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T10:02:11.702Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T10:02:13.409Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T10:03:10.255Z] [INFO] POST / 200 6ms +[2026-01-05T10:03:10.797Z] [INFO] Aufgabe erstellt: Testaufgabe (ID: 29) von hendrik_gebhardt@gmx.de +[2026-01-05T10:03:10.798Z] [INFO] POST /api/tasks 201 9ms +[2026-01-05T10:03:11.796Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T10:03:14.687Z] [INFO] GET /api/tasks/29 200 10ms +[2026-01-05T10:03:14.734Z] [INFO] GET /api/subtasks/29 200 14ms +[2026-01-05T10:03:14.783Z] [INFO] GET /api/links/29 200 7ms +[2026-01-05T10:03:14.789Z] [INFO] GET /api/files/29 200 5ms +[2026-01-05T10:03:14.796Z] [INFO] GET /api/comments/29 200 6ms +[2026-01-05T10:03:14.804Z] [INFO] GET /api/tasks/29/history 404 7ms +[2026-01-05T10:03:15.685Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T10:03:46.246Z] [INFO] Aufgabe aktualisiert: Testaufgabe (ID: 29) +[2026-01-05T10:03:46.248Z] [INFO] PUT /api/tasks/29 200 11ms +[2026-01-05T10:03:47.239Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:03:49.525Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T10:03:53.095Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T10:03:55.048Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:03:56.602Z] [INFO] GET / 200 4ms +[2026-01-05T10:03:56.659Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (_vmaWJg5cZ52a3QeAAAs) +[2026-01-05T10:03:56.674Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T10:03:56.681Z] [INFO] GET /css/board.css 200 4ms +[2026-01-05T10:03:56.684Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T10:03:56.688Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T10:03:56.690Z] [INFO] GET /css/base.css 200 4ms +[2026-01-05T10:03:56.703Z] [INFO] GET /css/calendar.css 200 2ms +[2026-01-05T10:03:56.727Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T10:03:56.733Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T10:03:56.734Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T10:03:56.738Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T10:03:56.738Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T10:03:56.739Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T10:03:56.756Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T10:03:56.760Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T10:03:56.775Z] [INFO] GET /js/app.js 200 7ms +[2026-01-05T10:03:56.777Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T10:03:56.860Z] [INFO] GET /js/store.js 200 9ms +[2026-01-05T10:03:56.861Z] [INFO] GET /js/api.js 200 9ms +[2026-01-05T10:03:56.862Z] [INFO] GET /js/sync.js 200 9ms +[2026-01-05T10:03:56.863Z] [INFO] GET /js/board.js 200 9ms +[2026-01-05T10:03:56.865Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-05T10:03:56.866Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-05T10:03:56.889Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-05T10:03:56.894Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T10:03:56.895Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T10:03:56.896Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T10:03:56.899Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T10:03:56.922Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T10:03:56.924Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T10:03:56.932Z] [INFO] GET /js/notifications.js 200 7ms +[2026-01-05T10:03:56.936Z] [INFO] GET /js/gitea.js 200 9ms +[2026-01-05T10:03:56.938Z] [INFO] GET /js/knowledge.js 200 8ms +[2026-01-05T10:03:56.942Z] [INFO] GET /js/coding.js 200 8ms +[2026-01-05T10:03:56.956Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T10:03:56.961Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T10:03:57.004Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:03:57.009Z] [INFO] GET /api/auth/users 304 3ms +[2026-01-05T10:03:57.011Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-05T10:03:57.050Z] [INFO] GET /api/auth/users 304 9ms +[2026-01-05T10:03:57.088Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (ldj68WYdeYFoRECbAAAu) +[2026-01-05T10:03:57.098Z] [INFO] GET /api/projects 200 7ms +[2026-01-05T10:03:57.128Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:03:57.150Z] [INFO] GET /api/tasks/project/2 200 17ms +[2026-01-05T10:03:57.154Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-05T10:03:57.158Z] [INFO] GET /api/stats/dashboard?projectId=2 200 4ms +[2026-01-05T10:03:57.163Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-05T10:03:57.205Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-05T10:03:57.244Z] [INFO] GET /api/notifications 304 10ms +[2026-01-05T10:03:57.282Z] [INFO] GET /api/knowledge/categories 304 8ms +[2026-01-05T10:04:00.607Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T10:04:04.458Z] [INFO] GET /api/tasks/29 200 16ms +[2026-01-05T10:04:04.490Z] [INFO] GET /api/subtasks/29 304 5ms +[2026-01-05T10:04:04.496Z] [INFO] GET /api/files/29 304 4ms +[2026-01-05T10:04:04.500Z] [INFO] GET /api/links/29 304 3ms +[2026-01-05T10:04:04.504Z] [INFO] GET /api/tasks/29/history 404 3ms +[2026-01-05T10:04:04.508Z] [INFO] GET /api/comments/29 304 6ms +[2026-01-05T10:04:05.459Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T10:04:07.016Z] [INFO] DELETE /api/tasks/29 200 9ms +[2026-01-05T10:04:07.013Z] [INFO] Aufgabe gelöscht: Testaufgabe (ID: 29) +[2026-01-05T10:04:07.062Z] [INFO] PUT /api/tasks/29 404 6ms +[2026-01-05T10:04:08.028Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T10:04:10.356Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T10:04:21.160Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T10:04:22.565Z] [INFO] GET /api/tasks/3 200 16ms +[2026-01-05T10:04:22.610Z] [INFO] GET /api/subtasks/3 304 11ms +[2026-01-05T10:04:22.621Z] [INFO] GET /api/links/3 304 8ms +[2026-01-05T10:04:22.626Z] [INFO] GET /api/files/3 304 12ms +[2026-01-05T10:04:22.658Z] [INFO] GET /api/comments/3 304 21ms +[2026-01-05T10:04:22.675Z] [INFO] GET /api/tasks/3/history 404 38ms +[2026-01-05T10:04:23.560Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T10:04:24.098Z] [INFO] Aufgabe aktualisiert: Bilanzbuchhaltung - Bundesanzeiger (ID: 3) +[2026-01-05T10:04:24.100Z] [INFO] PUT /api/tasks/3 200 13ms +[2026-01-05T10:04:25.879Z] [INFO] POST /api/auth/refresh 200 15ms +[2026-01-05T10:04:27.365Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T10:04:31.549Z] [INFO] GET /api/tasks/6 200 25ms +[2026-01-05T10:04:31.594Z] [INFO] GET /api/subtasks/6 200 12ms +[2026-01-05T10:04:31.609Z] [INFO] GET /api/tasks/6/history 404 12ms +[2026-01-05T10:04:31.617Z] [INFO] GET /api/links/6 304 17ms +[2026-01-05T10:04:31.624Z] [INFO] GET /api/comments/6 304 6ms +[2026-01-05T10:04:31.632Z] [INFO] GET /api/files/6 304 7ms +[2026-01-05T10:04:31.684Z] [INFO] GET /api/files/preview/2?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwNzQ2NywiZXhwIjoxNzY3NjA4MzY3fQ.exkMMBm1ScUKpsWbBD6w0YZeA4bqkKrAPgGaTs9qoas 200 12ms +[2026-01-05T10:04:31.685Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwNzQ2NywiZXhwIjoxNzY3NjA4MzY3fQ.exkMMBm1ScUKpsWbBD6w0YZeA4bqkKrAPgGaTs9qoas 200 19ms +[2026-01-05T10:04:32.539Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T10:04:38.521Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:04:38.523Z] [INFO] PUT /api/tasks/6 200 10ms +[2026-01-05T10:04:39.526Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T10:04:48.436Z] [INFO] POST /api/auth/refresh 200 4ms +[2026-01-05T10:04:50.036Z] [INFO] GET /api/tasks/6 200 11ms +[2026-01-05T10:04:50.087Z] [INFO] GET /api/links/6 304 19ms +[2026-01-05T10:04:50.102Z] [INFO] GET /api/subtasks/6 304 10ms +[2026-01-05T10:04:50.111Z] [INFO] GET /api/comments/6 304 8ms +[2026-01-05T10:04:50.117Z] [INFO] GET /api/files/6 304 12ms +[2026-01-05T10:04:50.121Z] [INFO] GET /api/tasks/6/history 404 3ms +[2026-01-05T10:04:50.172Z] [INFO] GET /api/files/preview/2?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwNzQ4OCwiZXhwIjoxNzY3NjA4Mzg4fQ.HtKQ185EcpgD5J5nQpL6qIkI31sO75GJ8pXDFB1tUIk 200 25ms +[2026-01-05T10:04:50.177Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwNzQ4OCwiZXhwIjoxNzY3NjA4Mzg4fQ.HtKQ185EcpgD5J5nQpL6qIkI31sO75GJ8pXDFB1tUIk 200 20ms +[2026-01-05T10:04:51.034Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T10:04:52.803Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwNzQ5MSwiZXhwIjoxNzY3NjA4MzkxfQ.o00tk5FhDo16zarJpfDeCqUerOW7ha9nM5_HTBEq97s 200 9ms +[2026-01-05T10:04:54.816Z] [INFO] GET /api/files/preview/2?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwNzQ5MSwiZXhwIjoxNzY3NjA4MzkxfQ.o00tk5FhDo16zarJpfDeCqUerOW7ha9nM5_HTBEq97s 200 9ms +[2026-01-05T10:04:57.457Z] [INFO] Datei gelöscht: Screenshot 2025-12-29 235228.jpg +[2026-01-05T10:04:57.458Z] [INFO] DELETE /api/files/2 200 8ms +[2026-01-05T10:04:58.456Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T10:04:59.993Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:04:59.995Z] [INFO] PUT /api/tasks/6 200 5ms +[2026-01-05T10:05:01.002Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T10:05:05.527Z] [INFO] GET /api/tasks/1 200 12ms +[2026-01-05T10:05:05.566Z] [INFO] GET /api/subtasks/1 304 7ms +[2026-01-05T10:05:05.577Z] [INFO] GET /api/links/1 304 6ms +[2026-01-05T10:05:05.582Z] [INFO] GET /api/files/1 304 4ms +[2026-01-05T10:05:05.587Z] [INFO] GET /api/comments/1 304 4ms +[2026-01-05T10:05:05.592Z] [INFO] GET /api/tasks/1/history 404 4ms +[2026-01-05T10:05:06.534Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T10:05:09.641Z] [INFO] Aufgabe aktualisiert: Router (ID: 1) +[2026-01-05T10:05:09.644Z] [INFO] PUT /api/tasks/1 200 7ms +[2026-01-05T10:05:10.647Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T10:05:11.665Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:05:12.475Z] [INFO] GET /api/knowledge/entries?categoryId=1 200 6ms +[2026-01-05T10:05:13.473Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T10:05:14.975Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T10:05:17.136Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:05:17.860Z] [INFO] GET /api/knowledge/entries?categoryId=1 304 3ms +[2026-01-05T10:05:18.878Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T10:05:21.859Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T10:07:16.440Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:07:17.062Z] [INFO] GET / 200 3ms +[2026-01-05T10:07:17.123Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (ldj68WYdeYFoRECbAAAu) +[2026-01-05T10:07:17.134Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T10:07:17.169Z] [INFO] GET /css/base.css 200 6ms +[2026-01-05T10:07:17.194Z] [INFO] GET /css/components.css 200 4ms +[2026-01-05T10:07:17.201Z] [INFO] GET /css/board.css 200 4ms +[2026-01-05T10:07:17.206Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T10:07:17.208Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-05T10:07:17.210Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T10:07:17.212Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T10:07:17.234Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T10:07:17.251Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T10:07:17.259Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-05T10:07:17.266Z] [INFO] GET /css/coding.css 200 9ms +[2026-01-05T10:07:17.269Z] [INFO] GET /css/knowledge.css 200 8ms +[2026-01-05T10:07:17.270Z] [INFO] GET /css/responsive.css 200 5ms +[2026-01-05T10:07:17.271Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T10:07:17.286Z] [INFO] GET /js/app.js 200 1ms +[2026-01-05T10:07:17.356Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-05T10:07:17.361Z] [INFO] GET /js/sync.js 200 9ms +[2026-01-05T10:07:17.368Z] [INFO] GET /js/store.js 200 13ms +[2026-01-05T10:07:17.371Z] [INFO] GET /js/api.js 200 12ms +[2026-01-05T10:07:17.375Z] [INFO] GET /js/board.js 200 5ms +[2026-01-05T10:07:17.377Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-05T10:07:17.388Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T10:07:17.396Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T10:07:17.400Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T10:07:17.403Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-05T10:07:17.407Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-05T10:07:17.428Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T10:07:17.430Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T10:07:17.434Z] [INFO] GET /js/gitea.js 200 8ms +[2026-01-05T10:07:17.441Z] [INFO] GET /js/admin.js 200 5ms +[2026-01-05T10:07:17.442Z] [INFO] GET /js/knowledge.js 200 5ms +[2026-01-05T10:07:17.444Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-05T10:07:17.461Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T10:07:17.463Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-05T10:07:17.501Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T10:07:17.511Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T10:07:17.515Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T10:07:17.546Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T10:07:17.582Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (GlHSuIYHbJADzervAAAw) +[2026-01-05T10:07:17.592Z] [INFO] GET /api/projects 200 7ms +[2026-01-05T10:07:17.625Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:07:17.628Z] [INFO] GET /api/columns/2 304 2ms +[2026-01-05T10:07:17.632Z] [INFO] GET /api/stats/dashboard?projectId=2 200 3ms +[2026-01-05T10:07:17.635Z] [INFO] GET /api/labels/2 304 2ms +[2026-01-05T10:07:17.649Z] [INFO] GET /api/tasks/project/2 200 12ms +[2026-01-05T10:07:17.689Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 4ms +[2026-01-05T10:07:17.725Z] [INFO] GET /api/notifications 304 5ms +[2026-01-05T10:07:17.765Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-05T10:07:19.069Z] [INFO] GET /api/tasks/10 200 6ms +[2026-01-05T10:07:19.111Z] [INFO] GET /api/files/10 200 9ms +[2026-01-05T10:07:19.115Z] [INFO] GET /api/tasks/10/history 404 12ms +[2026-01-05T10:07:19.124Z] [INFO] GET /api/subtasks/10 200 5ms +[2026-01-05T10:07:19.130Z] [INFO] GET /api/comments/10 200 4ms +[2026-01-05T10:07:19.135Z] [INFO] GET /api/links/10 200 4ms +[2026-01-05T10:07:20.078Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T10:07:20.805Z] [INFO] Aufgabe aktualisiert: Bilanzbuchhaltung - Finanzamt (ID: 10) +[2026-01-05T10:07:20.807Z] [INFO] PUT /api/tasks/10 200 7ms +[2026-01-05T10:07:22.633Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:07:23.958Z] [INFO] GET /api/tasks/6 200 13ms +[2026-01-05T10:07:23.994Z] [INFO] GET /api/tasks/6/history 404 4ms +[2026-01-05T10:07:24.000Z] [INFO] GET /api/subtasks/6 304 4ms +[2026-01-05T10:07:24.005Z] [INFO] GET /api/files/6 200 4ms +[2026-01-05T10:07:24.008Z] [INFO] GET /api/links/6 304 6ms +[2026-01-05T10:07:24.011Z] [INFO] GET /api/comments/6 304 2ms +[2026-01-05T10:07:24.045Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwNzY0MiwiZXhwIjoxNzY3NjA4NTQyfQ.lQ5PEuMos7gGk-kZvmrsm3jgt-GhagkZjgQnvBbLzNA 200 8ms +[2026-01-05T10:07:24.968Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T10:07:27.337Z] [INFO] PUT /api/subtasks/17 200 8ms +[2026-01-05T10:07:27.376Z] [INFO] PUT /api/subtasks/17/position 200 7ms +[2026-01-05T10:07:28.346Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:07:28.790Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:07:28.792Z] [INFO] PUT /api/tasks/6 200 17ms +[2026-01-05T10:07:29.771Z] [INFO] POST /api/auth/refresh 200 4ms +[2026-01-05T10:07:30.903Z] [INFO] GET /api/tasks/6 200 18ms +[2026-01-05T10:07:30.937Z] [INFO] GET /api/files/6 304 5ms +[2026-01-05T10:07:30.943Z] [INFO] GET /api/links/6 304 5ms +[2026-01-05T10:07:30.949Z] [INFO] GET /api/comments/6 304 4ms +[2026-01-05T10:07:30.952Z] [INFO] GET /api/tasks/6/history 404 6ms +[2026-01-05T10:07:30.956Z] [INFO] GET /api/subtasks/6 200 3ms +[2026-01-05T10:07:30.975Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwNzY0OSwiZXhwIjoxNzY3NjA4NTQ5fQ.y1tbUGTzhzbm9HcZTV-cXNGxIElhmlvdHiW5-4mPyKA 200 6ms +[2026-01-05T10:07:31.890Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T10:07:35.662Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:07:35.664Z] [INFO] PUT /api/tasks/6 200 12ms +[2026-01-05T10:07:36.668Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T10:07:48.214Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T10:07:50.162Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T10:07:53.470Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:07:56.199Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T10:07:57.524Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:08:08.922Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T10:08:13.207Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T10:08:17.142Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:08:20.060Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T10:18:20.271Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:18:30.905Z] [INFO] GET / 200 5ms +[2026-01-05T10:18:30.977Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (GlHSuIYHbJADzervAAAw) +[2026-01-05T10:18:30.983Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-05T10:18:31.015Z] [INFO] GET /css/base.css 200 5ms +[2026-01-05T10:18:31.039Z] [INFO] GET /css/components.css 200 4ms +[2026-01-05T10:18:31.060Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T10:18:31.063Z] [INFO] GET /css/board.css 200 12ms +[2026-01-05T10:18:31.064Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-05T10:18:31.064Z] [INFO] GET /css/list.css 200 7ms +[2026-01-05T10:18:31.066Z] [INFO] GET /css/admin.css 200 7ms +[2026-01-05T10:18:31.093Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T10:18:31.095Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T10:18:31.098Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T10:18:31.101Z] [INFO] GET /css/coding.css 200 1ms +[2026-01-05T10:18:31.130Z] [INFO] GET /css/knowledge.css 200 13ms +[2026-01-05T10:18:31.133Z] [INFO] GET /css/responsive.css 200 12ms +[2026-01-05T10:18:31.139Z] [INFO] GET /css/mobile.css 200 10ms +[2026-01-05T10:18:31.150Z] [INFO] GET /js/app.js 200 8ms +[2026-01-05T10:18:31.213Z] [INFO] GET /js/store.js 200 8ms +[2026-01-05T10:18:31.215Z] [INFO] GET /js/offline.js 200 9ms +[2026-01-05T10:18:31.219Z] [INFO] GET /js/auth.js 200 10ms +[2026-01-05T10:18:31.222Z] [INFO] GET /js/sync.js 200 11ms +[2026-01-05T10:18:31.225Z] [INFO] GET /js/api.js 200 7ms +[2026-01-05T10:18:31.226Z] [INFO] GET /js/board.js 200 5ms +[2026-01-05T10:18:31.239Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T10:18:31.244Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T10:18:31.251Z] [INFO] GET /js/list.js 200 4ms +[2026-01-05T10:18:31.252Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T10:18:31.270Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T10:18:31.271Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T10:18:31.275Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T10:18:31.281Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T10:18:31.284Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T10:18:31.285Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T10:18:31.299Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T10:18:31.305Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T10:18:31.313Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T10:18:31.349Z] [INFO] POST /api/auth/refresh 200 4ms +[2026-01-05T10:18:31.357Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T10:18:31.360Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T10:18:31.401Z] [INFO] GET /api/auth/users 304 9ms +[2026-01-05T10:18:31.424Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (E1Wcdrzz1j_zbe00AAAy) +[2026-01-05T10:18:31.446Z] [INFO] GET /api/projects 304 9ms +[2026-01-05T10:18:31.484Z] [INFO] GET /api/columns/2 304 8ms +[2026-01-05T10:18:31.490Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-05T10:18:31.499Z] [INFO] GET /api/stats/dashboard?projectId=2 304 7ms +[2026-01-05T10:18:31.502Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:18:31.517Z] [INFO] GET /api/tasks/project/2 200 14ms +[2026-01-05T10:18:31.559Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-05T10:18:31.597Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T10:18:31.640Z] [INFO] GET /api/knowledge/categories 304 10ms +[2026-01-05T10:18:36.040Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:18:40.302Z] [INFO] GET /api/tasks/1 200 12ms +[2026-01-05T10:18:40.341Z] [INFO] GET /api/tasks/1/history 404 7ms +[2026-01-05T10:18:40.349Z] [INFO] GET /api/comments/1 304 6ms +[2026-01-05T10:18:40.354Z] [INFO] GET /api/links/1 304 4ms +[2026-01-05T10:18:40.359Z] [INFO] GET /api/subtasks/1 304 4ms +[2026-01-05T10:18:40.362Z] [INFO] GET /api/files/1 304 6ms +[2026-01-05T10:18:41.140Z] [INFO] Aufgabe aktualisiert: Router (ID: 1) +[2026-01-05T10:18:41.141Z] [INFO] PUT /api/tasks/1 200 10ms +[2026-01-05T10:18:45.759Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T10:18:47.489Z] [INFO] GET / 200 4ms +[2026-01-05T10:18:47.550Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (E1Wcdrzz1j_zbe00AAAy) +[2026-01-05T10:18:47.563Z] [INFO] GET /css/components.css 200 3ms +[2026-01-05T10:18:47.563Z] [INFO] GET /css/board.css 200 3ms +[2026-01-05T10:18:47.565Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-05T10:18:47.567Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T10:18:47.569Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T10:18:47.570Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T10:18:47.600Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T10:18:47.604Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T10:18:47.624Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-05T10:18:47.626Z] [INFO] GET /css/notifications.css 200 7ms +[2026-01-05T10:18:47.628Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-05T10:18:47.631Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-05T10:18:47.634Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T10:18:47.636Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T10:18:47.658Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T10:18:47.662Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T10:18:47.727Z] [INFO] GET /js/store.js 200 4ms +[2026-01-05T10:18:47.733Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-05T10:18:47.735Z] [INFO] GET /js/board.js 200 4ms +[2026-01-05T10:18:47.741Z] [INFO] GET /js/api.js 200 9ms +[2026-01-05T10:18:47.748Z] [INFO] GET /js/offline.js 200 14ms +[2026-01-05T10:18:47.754Z] [INFO] GET /js/sync.js 200 18ms +[2026-01-05T10:18:47.761Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T10:18:47.777Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T10:18:47.779Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T10:18:47.784Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-05T10:18:47.793Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T10:18:47.794Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T10:18:47.807Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T10:18:47.816Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T10:18:47.817Z] [INFO] GET /js/gitea.js 200 5ms +[2026-01-05T10:18:47.825Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T10:18:47.826Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T10:18:47.828Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-05T10:18:47.849Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T10:18:47.883Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-05T10:18:47.896Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T10:18:47.907Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T10:18:47.930Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T10:18:47.967Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (YM1H_HXe-PscJ9ZoAAA0) +[2026-01-05T10:18:47.973Z] [INFO] GET /api/projects 304 4ms +[2026-01-05T10:18:48.007Z] [INFO] GET /api/stats/dashboard?projectId=2 304 7ms +[2026-01-05T10:18:48.009Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:18:48.029Z] [INFO] GET /api/tasks/project/2 200 19ms +[2026-01-05T10:18:48.033Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-05T10:18:48.035Z] [INFO] GET /api/columns/2 304 2ms +[2026-01-05T10:18:48.076Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-05T10:18:48.129Z] [INFO] GET /api/notifications 304 7ms +[2026-01-05T10:18:48.169Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-05T10:18:49.186Z] [INFO] GET / 200 4ms +[2026-01-05T10:18:49.247Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (YM1H_HXe-PscJ9ZoAAA0) +[2026-01-05T10:18:49.253Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T10:18:49.269Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T10:18:49.270Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-05T10:18:49.273Z] [INFO] GET /css/components.css 200 8ms +[2026-01-05T10:18:49.275Z] [INFO] GET /css/modal.css 200 9ms +[2026-01-05T10:18:49.278Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T10:18:49.283Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T10:18:49.299Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-05T10:18:49.311Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T10:18:49.326Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T10:18:49.334Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-05T10:18:49.335Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T10:18:49.337Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T10:18:49.338Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-05T10:18:49.340Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T10:18:49.369Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T10:18:49.434Z] [INFO] GET /js/api.js 200 4ms +[2026-01-05T10:18:49.436Z] [INFO] GET /js/board.js 200 6ms +[2026-01-05T10:18:49.437Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-05T10:18:49.439Z] [INFO] GET /js/sync.js 200 7ms +[2026-01-05T10:18:49.441Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-05T10:18:49.443Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T10:18:49.465Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T10:18:49.476Z] [INFO] GET /js/calendar.js 200 7ms +[2026-01-05T10:18:49.478Z] [INFO] GET /js/list.js 200 7ms +[2026-01-05T10:18:49.481Z] [INFO] GET /js/shortcuts.js 200 6ms +[2026-01-05T10:18:49.483Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-05T10:18:49.500Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T10:18:49.501Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T10:18:49.508Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T10:18:49.509Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T10:18:49.514Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T10:18:49.516Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T10:18:49.530Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T10:18:49.541Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-05T10:18:49.585Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T10:18:49.590Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T10:18:49.595Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T10:18:49.628Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T10:18:49.657Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (lmgovcwCFqSFgaRmAAA2) +[2026-01-05T10:18:49.663Z] [INFO] GET /api/projects 304 4ms +[2026-01-05T10:18:49.693Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-05T10:18:49.700Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-05T10:18:49.712Z] [INFO] GET /api/tasks/project/2 304 11ms +[2026-01-05T10:18:49.713Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:18:49.719Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-05T10:18:49.766Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-05T10:18:49.805Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T10:18:49.843Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-05T10:18:52.673Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:18:54.700Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:19:40.016Z] [INFO] SIGTERM empfangen, fahre herunter... +[2026-01-05T10:19:54.363Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-05T10:19:54.518Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-05T10:19:55.169Z] [INFO] Admin-Passwort bereits korrekt +[2026-01-05T10:19:55.172Z] [INFO] Datenbank initialisiert +[2026-01-05T10:19:55.180Z] [INFO] Server läuft auf Port 3001 +[2026-01-05T10:19:55.181Z] [INFO] Umgebung: development +[2026-01-05T10:19:55.183Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-05T10:19:55.183Z] [INFO] Automatische Backups aktiviert +[2026-01-05T10:19:57.905Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (WyiWfh1D3SsaMKmcAAAB) +[2026-01-05T10:19:57.956Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:20:55.197Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-05T10-20-55-185Z.db.enc +[2026-01-05T10:20:55.201Z] [INFO] Backup erstellt: backup_2026-01-05T10-20-55-185Z.db +[2026-01-05T10:20:55.197Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-05T10-20-55-185Z.db.enc +[2026-01-05T10:20:55.215Z] [INFO] Datei sicher gelöscht: backup_2026-01-03T23-26-48-022Z.db.enc +[2026-01-05T10:20:55.216Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-03T23-26-48-022Z.db.enc +[2026-01-05T10:20:55.217Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-05T10:21:00.884Z] [INFO] GET / 200 18ms +[2026-01-05T10:21:00.964Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (WyiWfh1D3SsaMKmcAAAB) +[2026-01-05T10:21:00.974Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-05T10:21:00.976Z] [INFO] GET /css/base.css 200 5ms +[2026-01-05T10:21:01.026Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-05T10:21:01.034Z] [INFO] GET /css/components.css 200 11ms +[2026-01-05T10:21:01.036Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-05T10:21:01.040Z] [INFO] GET /css/board.css 200 8ms +[2026-01-05T10:21:01.055Z] [INFO] GET /css/admin.css 200 8ms +[2026-01-05T10:21:01.057Z] [INFO] GET /css/list.css 200 9ms +[2026-01-05T10:21:01.068Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-05T10:21:01.086Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-05T10:21:01.100Z] [INFO] GET /css/coding.css 200 9ms +[2026-01-05T10:21:01.104Z] [INFO] GET /css/gitea.css 200 10ms +[2026-01-05T10:21:01.108Z] [INFO] GET /css/knowledge.css 200 10ms +[2026-01-05T10:21:01.110Z] [INFO] GET /css/responsive.css 200 8ms +[2026-01-05T10:21:01.112Z] [INFO] GET /css/mobile.css 200 6ms +[2026-01-05T10:21:01.134Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T10:21:01.227Z] [INFO] GET /js/store.js 200 10ms +[2026-01-05T10:21:01.231Z] [INFO] GET /js/offline.js 200 10ms +[2026-01-05T10:21:01.235Z] [INFO] GET /js/api.js 200 11ms +[2026-01-05T10:21:01.239Z] [INFO] GET /js/sync.js 200 10ms +[2026-01-05T10:21:01.241Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T10:21:01.243Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-05T10:21:01.260Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-05T10:21:01.271Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-05T10:21:01.280Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-05T10:21:01.283Z] [INFO] GET /js/list.js 200 6ms +[2026-01-05T10:21:01.284Z] [INFO] GET /js/undo.js 200 6ms +[2026-01-05T10:21:01.295Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T10:21:01.300Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T10:21:01.303Z] [INFO] GET /js/notifications.js 200 1ms +[2026-01-05T10:21:01.309Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T10:21:01.315Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T10:21:01.317Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T10:21:01.329Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T10:21:01.336Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T10:21:01.419Z] [INFO] POST /api/auth/refresh 200 19ms +[2026-01-05T10:21:01.443Z] [INFO] GET /api/auth/users 304 21ms +[2026-01-05T10:21:01.445Z] [INFO] GET /assets/icons/task.svg 304 23ms +[2026-01-05T10:21:01.477Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T10:21:01.519Z] [INFO] GET /api/projects 304 12ms +[2026-01-05T10:21:01.527Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (RZmIiwMPcuv_-FGVAAAD) +[2026-01-05T10:21:01.576Z] [INFO] GET /api/tasks/project/2 304 26ms +[2026-01-05T10:21:01.588Z] [INFO] GET /api/stats/dashboard?projectId=2 304 6ms +[2026-01-05T10:21:01.593Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-05T10:21:01.598Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T10:21:01.601Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:21:01.640Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-05T10:21:01.677Z] [INFO] GET /api/notifications 304 9ms +[2026-01-05T10:21:01.718Z] [INFO] GET /api/knowledge/categories 304 11ms +[2026-01-05T10:21:06.585Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:21:08.858Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:21:14.154Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T10:21:14.865Z] [INFO] GET / 200 3ms +[2026-01-05T10:21:14.927Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (RZmIiwMPcuv_-FGVAAAD) +[2026-01-05T10:21:14.943Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-05T10:21:14.949Z] [INFO] GET /css/components.css 200 8ms +[2026-01-05T10:21:14.953Z] [INFO] GET /css/base.css 200 8ms +[2026-01-05T10:21:14.959Z] [INFO] GET /css/modal.css 200 12ms +[2026-01-05T10:21:14.961Z] [INFO] GET /css/calendar.css 200 9ms +[2026-01-05T10:21:14.963Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T10:21:14.981Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T10:21:14.988Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T10:21:14.999Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T10:21:15.010Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T10:21:15.026Z] [INFO] GET /css/gitea.css 200 7ms +[2026-01-05T10:21:15.031Z] [INFO] GET /css/coding.css 200 10ms +[2026-01-05T10:21:15.038Z] [INFO] GET /css/knowledge.css 200 14ms +[2026-01-05T10:21:15.041Z] [INFO] GET /css/responsive.css 200 11ms +[2026-01-05T10:21:15.046Z] [INFO] GET /css/mobile.css 200 6ms +[2026-01-05T10:21:15.058Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T10:21:15.122Z] [INFO] GET /js/api.js 200 5ms +[2026-01-05T10:21:15.131Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-05T10:21:15.135Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-05T10:21:15.137Z] [INFO] GET /js/auth.js 200 8ms +[2026-01-05T10:21:15.138Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T10:21:15.140Z] [INFO] GET /js/board.js 200 6ms +[2026-01-05T10:21:15.157Z] [INFO] GET /js/task-modal.js 200 1ms +[2026-01-05T10:21:15.163Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T10:21:15.171Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T10:21:15.174Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-05T10:21:15.184Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T10:21:15.191Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T10:21:15.203Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T10:21:15.210Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T10:21:15.214Z] [INFO] GET /js/gitea.js 200 1ms +[2026-01-05T10:21:15.222Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T10:21:15.250Z] [INFO] GET /js/mobile.js 200 7ms +[2026-01-05T10:21:15.253Z] [INFO] GET /js/coding.js 200 7ms +[2026-01-05T10:21:15.257Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T10:21:15.297Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T10:21:15.302Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T10:21:15.305Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T10:21:15.346Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T10:21:15.372Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (yylj3h3w8Pb2CnDjAAAF) +[2026-01-05T10:21:15.378Z] [INFO] GET /api/projects 304 3ms +[2026-01-05T10:21:15.413Z] [INFO] GET /api/columns/2 304 9ms +[2026-01-05T10:21:15.421Z] [INFO] GET /api/stats/dashboard?projectId=2 304 7ms +[2026-01-05T10:21:15.436Z] [INFO] GET /api/tasks/project/2 304 14ms +[2026-01-05T10:21:15.441Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:21:15.445Z] [INFO] GET /api/labels/2 304 6ms +[2026-01-05T10:21:15.494Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 12ms +[2026-01-05T10:21:15.546Z] [INFO] GET /api/notifications 304 17ms +[2026-01-05T10:21:15.583Z] [INFO] GET /api/knowledge/categories 304 5ms +[2026-01-05T10:21:16.307Z] [INFO] GET / 200 4ms +[2026-01-05T10:21:16.342Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (yylj3h3w8Pb2CnDjAAAF) +[2026-01-05T10:21:16.356Z] [INFO] GET /css/components.css 200 8ms +[2026-01-05T10:21:16.361Z] [INFO] GET /css/board.css 200 10ms +[2026-01-05T10:21:16.364Z] [INFO] GET /css/variables.css 200 11ms +[2026-01-05T10:21:16.367Z] [INFO] GET /css/base.css 200 8ms +[2026-01-05T10:21:16.370Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T10:21:16.374Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T10:21:16.393Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T10:21:16.401Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T10:21:16.407Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T10:21:16.411Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T10:21:16.414Z] [INFO] GET /css/gitea.css 200 1ms +[2026-01-05T10:21:16.419Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T10:21:16.421Z] [INFO] GET /css/knowledge.css 200 1ms +[2026-01-05T10:21:16.431Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T10:21:16.439Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T10:21:16.450Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T10:21:16.532Z] [INFO] GET /js/sync.js 200 3ms +[2026-01-05T10:21:16.533Z] [INFO] GET /js/api.js 200 4ms +[2026-01-05T10:21:16.539Z] [INFO] GET /js/store.js 200 3ms +[2026-01-05T10:21:16.541Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-05T10:21:16.542Z] [INFO] GET /js/board.js 200 6ms +[2026-01-05T10:21:16.545Z] [INFO] GET /js/offline.js 200 1ms +[2026-01-05T10:21:16.568Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T10:21:16.570Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-05T10:21:16.576Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T10:21:16.579Z] [INFO] GET /js/shortcuts.js 200 6ms +[2026-01-05T10:21:16.580Z] [INFO] GET /js/undo.js 200 5ms +[2026-01-05T10:21:16.607Z] [INFO] GET /js/admin.js 200 6ms +[2026-01-05T10:21:16.618Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-05T10:21:16.621Z] [INFO] GET /js/notifications.js 200 6ms +[2026-01-05T10:21:16.625Z] [INFO] GET /js/gitea.js 200 9ms +[2026-01-05T10:21:16.629Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T10:21:16.631Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T10:21:16.634Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T10:21:16.647Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T10:21:16.697Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T10:21:16.704Z] [INFO] GET /assets/icons/task.svg 304 5ms +[2026-01-05T10:21:16.712Z] [INFO] GET /api/auth/users 304 9ms +[2026-01-05T10:21:16.747Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T10:21:16.783Z] [INFO] GET /api/projects 304 5ms +[2026-01-05T10:21:16.788Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (sBqeGw6v6u5UuwgjAAAH) +[2026-01-05T10:21:16.823Z] [INFO] GET /api/stats/dashboard?projectId=2 304 6ms +[2026-01-05T10:21:16.828Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T10:21:16.833Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-05T10:21:16.835Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:21:16.850Z] [INFO] GET /api/tasks/project/2 304 17ms +[2026-01-05T10:21:16.891Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-05T10:21:16.931Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T10:21:16.973Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-05T10:21:19.200Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T10:23:01.217Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-05T10:23:01.223Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T10:23:01.232Z] [INFO] GET /css/board.css 200 4ms +[2026-01-05T10:23:01.233Z] [INFO] GET /css/components.css 200 4ms +[2026-01-05T10:23:01.235Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-05T10:23:01.247Z] [INFO] GET /css/calendar.css 200 2ms +[2026-01-05T10:23:01.256Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T10:23:01.286Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T10:23:01.298Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T10:23:01.305Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T10:23:01.307Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T10:23:01.311Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-05T10:23:01.326Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T10:23:01.334Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T10:23:01.342Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T10:23:01.969Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T10:23:03.375Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T10:23:12.071Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T10:23:15.218Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:23:15.274Z] [INFO] GET / 200 5ms +[2026-01-05T10:23:20.263Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T10:26:07.786Z] [INFO] GET / 200 3ms +[2026-01-05T10:26:07.848Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (sBqeGw6v6u5UuwgjAAAH) +[2026-01-05T10:26:07.862Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T10:26:07.896Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T10:26:07.933Z] [INFO] GET /css/components.css 200 9ms +[2026-01-05T10:26:07.935Z] [INFO] GET /css/board.css 200 9ms +[2026-01-05T10:26:07.943Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-05T10:26:07.944Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-05T10:26:07.946Z] [INFO] GET /css/list.css 200 6ms +[2026-01-05T10:26:07.948Z] [INFO] GET /css/admin.css 200 7ms +[2026-01-05T10:26:07.970Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T10:26:07.986Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T10:26:07.987Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T10:26:07.991Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-05T10:26:07.992Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T10:26:07.995Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T10:26:07.999Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T10:26:08.023Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T10:26:08.104Z] [INFO] GET /js/store.js 200 6ms +[2026-01-05T10:26:08.110Z] [INFO] GET /js/api.js 200 8ms +[2026-01-05T10:26:08.112Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-05T10:26:08.115Z] [INFO] GET /js/sync.js 200 8ms +[2026-01-05T10:26:08.117Z] [INFO] GET /js/offline.js 200 9ms +[2026-01-05T10:26:08.137Z] [INFO] GET /js/board.js 200 1ms +[2026-01-05T10:26:08.143Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T10:26:08.144Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T10:26:08.156Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-05T10:26:08.157Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-05T10:26:08.169Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T10:26:08.170Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T10:26:08.177Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T10:26:08.187Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T10:26:08.189Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T10:26:08.194Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T10:26:08.199Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T10:26:08.202Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T10:26:08.209Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T10:26:08.256Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:26:08.265Z] [INFO] GET /api/auth/users 200 5ms +[2026-01-05T10:26:08.268Z] [INFO] GET /assets/icons/task.svg 200 10ms +[2026-01-05T10:26:08.323Z] [INFO] GET /api/auth/users 200 7ms +[2026-01-05T10:26:08.353Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (tFia9Q5tvxs3VI-wAAAJ) +[2026-01-05T10:26:08.360Z] [INFO] GET /api/projects 200 4ms +[2026-01-05T10:26:08.391Z] [INFO] GET /api/columns/2 200 6ms +[2026-01-05T10:26:08.409Z] [INFO] GET /api/tasks/project/2 200 17ms +[2026-01-05T10:26:08.415Z] [INFO] GET /api/labels/2 200 5ms +[2026-01-05T10:26:08.417Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:26:08.422Z] [INFO] GET /api/stats/dashboard?projectId=2 200 4ms +[2026-01-05T10:26:08.455Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 4ms +[2026-01-05T10:26:08.502Z] [INFO] GET /api/notifications 200 8ms +[2026-01-05T10:26:08.546Z] [INFO] GET /api/knowledge/categories 200 9ms +[2026-01-05T10:26:16.850Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T10:26:16.854Z] [INFO] GET /css/variables.css 200 7ms +[2026-01-05T10:26:16.860Z] [INFO] GET /css/modal.css 200 11ms +[2026-01-05T10:26:16.863Z] [INFO] GET /css/calendar.css 200 11ms +[2026-01-05T10:26:16.865Z] [INFO] GET /css/base.css 200 6ms +[2026-01-05T10:26:16.866Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T10:26:16.886Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T10:26:16.901Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T10:26:16.907Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T10:26:16.919Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T10:26:16.921Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-05T10:26:16.923Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-05T10:26:16.926Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-05T10:26:16.933Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T10:26:16.938Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T10:26:18.387Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T10:26:47.450Z] [INFO] GET / 200 6ms +[2026-01-05T10:26:47.515Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (tFia9Q5tvxs3VI-wAAAJ) +[2026-01-05T10:26:47.530Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T10:26:47.538Z] [INFO] GET /css/components.css 200 2ms +[2026-01-05T10:26:47.539Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T10:26:47.559Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T10:26:47.560Z] [INFO] GET /css/list.css 200 5ms +[2026-01-05T10:26:47.566Z] [INFO] GET /css/modal.css 200 2ms +[2026-01-05T10:26:47.568Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T10:26:47.574Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T10:26:47.603Z] [INFO] GET /css/proposals.css 200 10ms +[2026-01-05T10:26:47.605Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T10:26:47.612Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T10:26:47.635Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-05T10:26:47.639Z] [INFO] GET /css/coding.css 200 8ms +[2026-01-05T10:26:47.643Z] [INFO] GET /css/responsive.css 200 10ms +[2026-01-05T10:26:47.648Z] [INFO] GET /css/mobile.css 200 8ms +[2026-01-05T10:26:47.656Z] [INFO] GET /js/app.js 200 9ms +[2026-01-05T10:26:47.728Z] [INFO] GET /js/store.js 200 10ms +[2026-01-05T10:26:47.729Z] [INFO] GET /js/api.js 200 9ms +[2026-01-05T10:26:47.731Z] [INFO] GET /js/auth.js 200 8ms +[2026-01-05T10:26:47.731Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-05T10:26:47.732Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-05T10:26:47.762Z] [INFO] GET /js/board.js 200 3ms +[2026-01-05T10:26:47.769Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-05T10:26:47.772Z] [INFO] GET /js/list.js 200 5ms +[2026-01-05T10:26:47.774Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-05T10:26:47.781Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-05T10:26:47.795Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T10:26:47.802Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T10:26:47.804Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T10:26:47.805Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T10:26:47.811Z] [INFO] GET /js/gitea.js 200 1ms +[2026-01-05T10:26:47.820Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T10:26:47.825Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T10:26:47.834Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T10:26:47.835Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T10:26:47.886Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T10:26:47.895Z] [INFO] GET /api/auth/users 200 7ms +[2026-01-05T10:26:47.900Z] [INFO] GET /assets/icons/task.svg 200 9ms +[2026-01-05T10:26:47.948Z] [INFO] GET /api/auth/users 200 3ms +[2026-01-05T10:26:47.985Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (sXXQFHhzLhk3YJ8XAAAL) +[2026-01-05T10:26:47.993Z] [INFO] GET /api/projects 200 15ms +[2026-01-05T10:26:48.033Z] [INFO] GET /api/stats/dashboard?projectId=2 200 6ms +[2026-01-05T10:26:48.036Z] [INFO] GET /api/columns/2 200 8ms +[2026-01-05T10:26:48.048Z] [INFO] GET /api/tasks/project/2 200 12ms +[2026-01-05T10:26:48.052Z] [INFO] GET /api/labels/2 200 15ms +[2026-01-05T10:26:48.057Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:26:48.100Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 6ms +[2026-01-05T10:26:48.135Z] [INFO] GET /api/notifications 200 3ms +[2026-01-05T10:26:48.174Z] [INFO] GET /api/knowledge/categories 200 6ms +[2026-01-05T10:26:50.352Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:26:52.204Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:26:54.864Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T10:27:03.258Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:27:18.845Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:27:21.873Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T10:27:22.969Z] [INFO] GET /api/tasks/6 200 5ms +[2026-01-05T10:27:23.022Z] [INFO] GET /api/subtasks/6 304 12ms +[2026-01-05T10:27:23.031Z] [INFO] GET /api/links/6 304 7ms +[2026-01-05T10:27:23.042Z] [INFO] GET /api/files/6 304 11ms +[2026-01-05T10:27:23.045Z] [INFO] GET /api/comments/6 304 3ms +[2026-01-05T10:27:23.049Z] [INFO] GET /api/tasks/6/history 404 3ms +[2026-01-05T10:27:23.091Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwODg0MSwiZXhwIjoxNzY3NjA5NzQxfQ.lwZUOSqWhkN8KNmfl8tTUzcanqSfniNJbz0M65KJfMw 200 15ms +[2026-01-05T10:27:23.990Z] [INFO] POST /api/auth/refresh 200 4ms +[2026-01-05T10:27:24.553Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:27:24.558Z] [INFO] PUT /api/tasks/6 200 14ms +[2026-01-05T10:27:25.536Z] [INFO] POST /api/auth/refresh 200 15ms +[2026-01-05T10:29:12.059Z] [INFO] GET / 200 7ms +[2026-01-05T10:29:12.121Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (sXXQFHhzLhk3YJ8XAAAL) +[2026-01-05T10:29:12.129Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T10:29:12.158Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T10:29:12.196Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T10:29:12.198Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T10:29:12.204Z] [INFO] GET /css/modal.css 200 11ms +[2026-01-05T10:29:12.208Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T10:29:12.209Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T10:29:12.212Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-05T10:29:12.233Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T10:29:12.250Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T10:29:12.254Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T10:29:12.262Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T10:29:12.264Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-05T10:29:12.266Z] [INFO] GET /css/responsive.css 200 5ms +[2026-01-05T10:29:12.268Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T10:29:12.291Z] [INFO] GET /js/app.js 200 5ms +[2026-01-05T10:29:12.360Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T10:29:12.362Z] [INFO] GET /js/api.js 200 6ms +[2026-01-05T10:29:12.374Z] [INFO] GET /js/auth.js 200 9ms +[2026-01-05T10:29:12.379Z] [INFO] GET /js/board.js 200 10ms +[2026-01-05T10:29:12.380Z] [INFO] GET /js/offline.js 200 8ms +[2026-01-05T10:29:12.382Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-05T10:29:12.389Z] [INFO] GET /js/task-modal.js 200 1ms +[2026-01-05T10:29:12.398Z] [INFO] GET /js/calendar.js 200 1ms +[2026-01-05T10:29:12.414Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-05T10:29:12.416Z] [INFO] GET /js/list.js 200 4ms +[2026-01-05T10:29:12.422Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-05T10:29:12.427Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T10:29:12.432Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T10:29:12.433Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T10:29:12.442Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T10:29:12.446Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T10:29:12.456Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T10:29:12.459Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-05T10:29:12.465Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T10:29:12.504Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T10:29:12.510Z] [INFO] GET /api/auth/users 304 3ms +[2026-01-05T10:29:12.512Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-05T10:29:12.547Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T10:29:12.589Z] [INFO] GET /api/projects 304 11ms +[2026-01-05T10:29:12.598Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (vnRgXXlgYUftunZxAAAN) +[2026-01-05T10:29:12.632Z] [INFO] GET /api/labels/2 304 8ms +[2026-01-05T10:29:12.638Z] [INFO] GET /api/stats/dashboard?projectId=2 304 13ms +[2026-01-05T10:29:12.644Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-05T10:29:12.662Z] [INFO] GET /api/tasks/project/2 200 17ms +[2026-01-05T10:29:12.666Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:29:12.701Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 4ms +[2026-01-05T10:29:12.740Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T10:29:12.779Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-05T10:29:15.287Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:29:17.471Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T10:29:20.393Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T10:29:23.177Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T10:29:26.841Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:29:51.910Z] [INFO] GET /api/tasks/1 200 11ms +[2026-01-05T10:29:51.952Z] [INFO] GET /api/links/1 304 6ms +[2026-01-05T10:29:51.956Z] [INFO] GET /api/subtasks/1 304 3ms +[2026-01-05T10:29:51.963Z] [INFO] GET /api/files/1 304 5ms +[2026-01-05T10:29:51.967Z] [INFO] GET /api/comments/1 304 3ms +[2026-01-05T10:29:51.972Z] [INFO] GET /api/tasks/1/history 404 4ms +[2026-01-05T10:29:52.898Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T10:29:53.204Z] [INFO] Aufgabe aktualisiert: Router (ID: 1) +[2026-01-05T10:29:53.206Z] [INFO] PUT /api/tasks/1 200 8ms +[2026-01-05T10:29:54.203Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:30:31.442Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T10:30:47.130Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T10:30:53.963Z] [INFO] GET / 200 7ms +[2026-01-05T10:30:54.022Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (vnRgXXlgYUftunZxAAAN) +[2026-01-05T10:30:54.035Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T10:30:54.044Z] [INFO] GET /css/components.css 200 3ms +[2026-01-05T10:30:54.047Z] [INFO] GET /css/base.css 200 4ms +[2026-01-05T10:30:54.047Z] [INFO] GET /css/board.css 200 4ms +[2026-01-05T10:30:54.049Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-05T10:30:54.073Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-05T10:30:54.085Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T10:30:54.094Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T10:30:54.102Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T10:30:54.105Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-05T10:30:54.107Z] [INFO] GET /css/proposals.css 200 7ms +[2026-01-05T10:30:54.109Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-05T10:30:54.114Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-05T10:30:54.149Z] [INFO] GET /css/responsive.css 200 24ms +[2026-01-05T10:30:54.155Z] [INFO] GET /css/mobile.css 200 15ms +[2026-01-05T10:30:54.160Z] [INFO] GET /js/app.js 200 10ms +[2026-01-05T10:30:54.233Z] [INFO] GET /js/api.js 200 4ms +[2026-01-05T10:30:54.234Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-05T10:30:54.236Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T10:30:54.238Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-05T10:30:54.241Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-05T10:30:54.242Z] [INFO] GET /js/board.js 200 5ms +[2026-01-05T10:30:54.266Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T10:30:54.268Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-05T10:30:54.275Z] [INFO] GET /js/undo.js 200 6ms +[2026-01-05T10:30:54.276Z] [INFO] GET /js/list.js 200 6ms +[2026-01-05T10:30:54.277Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-05T10:30:54.291Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T10:30:54.299Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T10:30:54.302Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T10:30:54.309Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-05T10:30:54.311Z] [INFO] GET /js/knowledge.js 200 7ms +[2026-01-05T10:30:54.314Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T10:30:54.323Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T10:30:54.337Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-05T10:30:54.382Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T10:30:54.392Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T10:30:54.394Z] [INFO] GET /assets/icons/task.svg 304 8ms +[2026-01-05T10:30:54.423Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T10:30:54.452Z] [INFO] GET /api/projects 304 3ms +[2026-01-05T10:30:54.479Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (CUG0JjUpUqAqQ_LCAAAP) +[2026-01-05T10:30:54.499Z] [INFO] GET /api/tasks/project/2 200 15ms +[2026-01-05T10:30:54.504Z] [INFO] GET /api/stats/dashboard?projectId=2 304 4ms +[2026-01-05T10:30:54.511Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T10:30:54.516Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-05T10:30:54.518Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:30:54.558Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-05T10:30:54.599Z] [INFO] GET /api/notifications 304 9ms +[2026-01-05T10:30:54.640Z] [INFO] GET /api/knowledge/categories 304 10ms +[2026-01-05T10:30:55.567Z] [INFO] GET /api/tasks/6 200 13ms +[2026-01-05T10:30:55.613Z] [INFO] GET /api/comments/6 304 11ms +[2026-01-05T10:30:55.619Z] [INFO] GET /api/links/6 304 5ms +[2026-01-05T10:30:55.624Z] [INFO] GET /api/files/6 304 4ms +[2026-01-05T10:30:55.631Z] [INFO] GET /api/subtasks/6 304 6ms +[2026-01-05T10:30:55.642Z] [INFO] GET /api/tasks/6/history 404 10ms +[2026-01-05T10:30:55.664Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwOTA1NCwiZXhwIjoxNzY3NjA5OTU0fQ.kuJaDoMEsA6TPjCceEWuFzKAr2OqRYZNwVOSku-UIIM 200 9ms +[2026-01-05T10:30:56.581Z] [INFO] POST /api/auth/refresh 200 16ms +[2026-01-05T10:30:57.451Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:30:57.453Z] [INFO] PUT /api/tasks/6 200 10ms +[2026-01-05T10:30:59.167Z] [INFO] GET / 200 3ms +[2026-01-05T10:30:59.227Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (CUG0JjUpUqAqQ_LCAAAP) +[2026-01-05T10:30:59.242Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-05T10:30:59.248Z] [INFO] GET /css/board.css 200 8ms +[2026-01-05T10:30:59.252Z] [INFO] GET /css/components.css 200 11ms +[2026-01-05T10:30:59.255Z] [INFO] GET /css/base.css 200 11ms +[2026-01-05T10:30:59.257Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T10:30:59.259Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-05T10:30:59.286Z] [INFO] GET /css/list.css 200 1ms +[2026-01-05T10:30:59.290Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T10:30:59.295Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T10:30:59.304Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T10:30:59.307Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T10:30:59.315Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T10:30:59.320Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T10:30:59.322Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T10:30:59.325Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T10:30:59.341Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T10:30:59.408Z] [INFO] GET /js/api.js 200 4ms +[2026-01-05T10:30:59.412Z] [INFO] GET /js/store.js 200 7ms +[2026-01-05T10:30:59.415Z] [INFO] GET /js/offline.js 200 8ms +[2026-01-05T10:30:59.418Z] [INFO] GET /js/board.js 200 8ms +[2026-01-05T10:30:59.421Z] [INFO] GET /js/sync.js 200 8ms +[2026-01-05T10:30:59.423Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-05T10:30:59.440Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T10:30:59.443Z] [INFO] GET /js/list.js 200 4ms +[2026-01-05T10:30:59.452Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T10:30:59.455Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-05T10:30:59.460Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T10:30:59.470Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T10:30:59.475Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T10:30:59.477Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T10:30:59.487Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T10:30:59.489Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T10:30:59.493Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T10:30:59.500Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T10:30:59.504Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T10:30:59.548Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T10:30:59.553Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T10:30:59.558Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T10:30:59.599Z] [INFO] GET /api/auth/users 304 13ms +[2026-01-05T10:30:59.624Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (yxyifh0sbmFPLaAyAAAR) +[2026-01-05T10:30:59.631Z] [INFO] GET /api/projects 304 4ms +[2026-01-05T10:30:59.662Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:30:59.669Z] [INFO] GET /api/stats/dashboard?projectId=2 304 9ms +[2026-01-05T10:30:59.676Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-05T10:30:59.694Z] [INFO] GET /api/tasks/project/2 200 17ms +[2026-01-05T10:30:59.697Z] [INFO] GET /api/columns/2 304 19ms +[2026-01-05T10:30:59.738Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-05T10:30:59.782Z] [INFO] GET /api/notifications 304 9ms +[2026-01-05T10:30:59.824Z] [INFO] GET /api/knowledge/categories 304 8ms +[2026-01-05T10:31:06.651Z] [INFO] GET /api/tasks/6 200 13ms +[2026-01-05T10:31:06.692Z] [INFO] GET /api/links/6 304 6ms +[2026-01-05T10:31:06.697Z] [INFO] GET /api/subtasks/6 304 4ms +[2026-01-05T10:31:06.703Z] [INFO] GET /api/files/6 304 5ms +[2026-01-05T10:31:06.707Z] [INFO] GET /api/comments/6 304 8ms +[2026-01-05T10:31:06.710Z] [INFO] GET /api/tasks/6/history 404 6ms +[2026-01-05T10:31:06.744Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwOTA1OSwiZXhwIjoxNzY3NjA5OTU5fQ.QOpUZem5Z7YNfB9gdAYCP3JQIEfeCuVPg0L6KwpE-gk 200 8ms +[2026-01-05T10:31:07.653Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T10:31:09.152Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T10:31:09.153Z] [INFO] GET /css/board.css 200 3ms +[2026-01-05T10:31:09.155Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-05T10:31:09.158Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T10:31:09.159Z] [INFO] GET /css/components.css 200 2ms +[2026-01-05T10:31:09.161Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-05T10:31:09.183Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T10:31:09.191Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T10:31:09.211Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T10:31:09.213Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-05T10:31:09.224Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T10:31:09.232Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-05T10:31:09.235Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-05T10:31:09.241Z] [INFO] GET /css/responsive.css 200 10ms +[2026-01-05T10:31:09.245Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T10:31:09.988Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T10:31:12.861Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:31:12.862Z] [INFO] PUT /api/tasks/6 200 8ms +[2026-01-05T10:31:13.848Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:31:16.120Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:31:16.121Z] [INFO] PUT /api/tasks/6 200 6ms +[2026-01-05T10:31:16.835Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:31:16.837Z] [INFO] PUT /api/tasks/6 200 12ms +[2026-01-05T10:31:17.829Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:31:45.680Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T10:31:46.151Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:31:46.153Z] [INFO] PUT /api/tasks/6 200 6ms +[2026-01-05T10:31:47.212Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:31:47.393Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:31:47.395Z] [INFO] PUT /api/tasks/6 200 6ms +[2026-01-05T10:31:48.400Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T10:33:20.031Z] [INFO] GET /api/tasks/6 200 11ms +[2026-01-05T10:33:20.094Z] [INFO] GET /api/subtasks/6 304 7ms +[2026-01-05T10:33:20.129Z] [INFO] GET /api/links/6 304 6ms +[2026-01-05T10:33:20.172Z] [INFO] GET /api/files/6 304 9ms +[2026-01-05T10:33:20.177Z] [INFO] GET /api/comments/6 304 3ms +[2026-01-05T10:33:20.182Z] [INFO] GET /api/tasks/6/history 404 4ms +[2026-01-05T10:33:20.218Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwOTEwOCwiZXhwIjoxNzY3NjEwMDA4fQ.wKPqigyeonKObafsENz6LzkKHiPvbX5E9pjG40EbuFA 200 11ms +[2026-01-05T10:33:20.967Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T10:33:26.528Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:33:26.531Z] [INFO] PUT /api/tasks/6 200 7ms +[2026-01-05T10:33:27.532Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T10:33:34.408Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T10:33:54.686Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T10:34:01.520Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:34:05.726Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:34:07.255Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:34:09.971Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:34:12.826Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:34:14.710Z] [INFO] POST /api/auth/refresh 200 4ms +[2026-01-05T10:34:26.201Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T10:36:31.304Z] [INFO] GET / 200 60ms +[2026-01-05T10:36:31.409Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (yxyifh0sbmFPLaAyAAAR) +[2026-01-05T10:36:31.454Z] [INFO] GET /css/variables.css 200 12ms +[2026-01-05T10:36:31.531Z] [INFO] GET /css/base.css 200 83ms +[2026-01-05T10:36:31.541Z] [INFO] GET /css/components.css 200 7ms +[2026-01-05T10:36:31.550Z] [INFO] GET /css/board.css 200 14ms +[2026-01-05T10:36:31.553Z] [INFO] GET /css/modal.css 200 15ms +[2026-01-05T10:36:31.559Z] [INFO] GET /css/list.css 200 12ms +[2026-01-05T10:36:31.562Z] [INFO] GET /css/calendar.css 200 17ms +[2026-01-05T10:36:31.569Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T10:36:31.598Z] [INFO] GET /css/proposals.css 200 6ms +[2026-01-05T10:36:31.610Z] [INFO] GET /css/notifications.css 200 14ms +[2026-01-05T10:36:31.613Z] [INFO] GET /css/gitea.css 200 13ms +[2026-01-05T10:36:31.616Z] [INFO] GET /css/coding.css 200 13ms +[2026-01-05T10:36:31.617Z] [INFO] GET /css/knowledge.css 200 9ms +[2026-01-05T10:36:31.619Z] [INFO] GET /css/responsive.css 200 7ms +[2026-01-05T10:36:31.627Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T10:36:31.659Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T10:36:31.746Z] [INFO] GET /js/auth.js 200 8ms +[2026-01-05T10:36:31.748Z] [INFO] GET /js/store.js 200 8ms +[2026-01-05T10:36:31.751Z] [INFO] GET /js/sync.js 200 8ms +[2026-01-05T10:36:31.754Z] [INFO] GET /js/api.js 200 9ms +[2026-01-05T10:36:31.757Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-05T10:36:31.758Z] [INFO] GET /js/board.js 200 8ms +[2026-01-05T10:36:31.789Z] [INFO] GET /js/calendar.js 200 13ms +[2026-01-05T10:36:31.797Z] [INFO] GET /js/list.js 200 10ms +[2026-01-05T10:36:31.799Z] [INFO] GET /js/undo.js 200 8ms +[2026-01-05T10:36:31.800Z] [INFO] GET /js/shortcuts.js 200 8ms +[2026-01-05T10:36:31.804Z] [INFO] GET /js/task-modal.js 200 6ms +[2026-01-05T10:36:31.815Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-05T10:36:31.822Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T10:36:31.831Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T10:36:31.838Z] [INFO] GET /js/notifications.js 200 7ms +[2026-01-05T10:36:31.839Z] [INFO] GET /js/knowledge.js 200 7ms +[2026-01-05T10:36:31.846Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T10:36:31.851Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T10:36:31.854Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-05T10:36:31.988Z] [INFO] POST /api/auth/refresh 200 82ms +[2026-01-05T10:36:32.005Z] [INFO] GET /api/auth/users 304 14ms +[2026-01-05T10:36:32.011Z] [INFO] GET /assets/icons/task.svg 304 19ms +[2026-01-05T10:36:32.049Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T10:36:32.094Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (6BXgLUPyvU4RJgGMAAAT) +[2026-01-05T10:36:32.112Z] [INFO] GET /api/projects 304 14ms +[2026-01-05T10:36:32.168Z] [INFO] GET /api/stats/dashboard?projectId=2 304 18ms +[2026-01-05T10:36:32.176Z] [INFO] GET /api/columns/2 304 7ms +[2026-01-05T10:36:32.180Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:36:32.221Z] [INFO] GET /api/tasks/project/2 200 38ms +[2026-01-05T10:36:32.228Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-05T10:36:32.275Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 8ms +[2026-01-05T10:36:32.315Z] [INFO] GET /api/notifications 304 12ms +[2026-01-05T10:36:32.359Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-05T10:36:33.241Z] [INFO] GET /api/tasks/6 200 9ms +[2026-01-05T10:36:33.278Z] [INFO] GET /api/files/6 304 7ms +[2026-01-05T10:36:33.284Z] [INFO] GET /api/comments/6 304 13ms +[2026-01-05T10:36:33.293Z] [INFO] GET /api/tasks/6/history 404 4ms +[2026-01-05T10:36:33.299Z] [INFO] GET /api/subtasks/6 304 5ms +[2026-01-05T10:36:33.302Z] [INFO] GET /api/links/6 304 3ms +[2026-01-05T10:36:33.317Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwOTM5MSwiZXhwIjoxNzY3NjEwMjkxfQ.XUckGzBNrHOSIGVeONj3T7bQVDp1YyPXuZlvRJivyhk 200 7ms +[2026-01-05T10:36:34.247Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:36:35.815Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:36:35.818Z] [INFO] PUT /api/tasks/6 200 13ms +[2026-01-05T10:36:37.684Z] [INFO] GET / 200 6ms +[2026-01-05T10:36:37.750Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (6BXgLUPyvU4RJgGMAAAT) +[2026-01-05T10:36:37.760Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T10:36:37.767Z] [INFO] GET /css/components.css 200 10ms +[2026-01-05T10:36:37.774Z] [INFO] GET /css/variables.css 200 15ms +[2026-01-05T10:36:37.775Z] [INFO] GET /css/base.css 200 14ms +[2026-01-05T10:36:37.777Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T10:36:37.780Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-05T10:36:37.804Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T10:36:37.812Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T10:36:37.813Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T10:36:37.830Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T10:36:37.831Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T10:36:37.833Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T10:36:37.838Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T10:36:37.844Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T10:36:37.845Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T10:36:37.869Z] [INFO] GET /js/app.js 200 6ms +[2026-01-05T10:36:37.960Z] [INFO] GET /js/store.js 200 8ms +[2026-01-05T10:36:37.971Z] [INFO] GET /js/sync.js 200 10ms +[2026-01-05T10:36:37.977Z] [INFO] GET /js/api.js 200 8ms +[2026-01-05T10:36:37.978Z] [INFO] GET /js/board.js 200 15ms +[2026-01-05T10:36:37.980Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-05T10:36:37.983Z] [INFO] GET /js/offline.js 200 8ms +[2026-01-05T10:36:37.994Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T10:36:38.011Z] [INFO] GET /js/list.js 200 6ms +[2026-01-05T10:36:38.014Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T10:36:38.016Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-05T10:36:38.016Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T10:36:38.026Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-05T10:36:38.030Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-05T10:36:38.044Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T10:36:38.045Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T10:36:38.048Z] [INFO] GET /js/knowledge.js 200 1ms +[2026-01-05T10:36:38.055Z] [INFO] GET /js/coding.js 200 1ms +[2026-01-05T10:36:38.067Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T10:36:38.075Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T10:36:38.119Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:36:38.121Z] [INFO] GET /assets/icons/task.svg 304 13ms +[2026-01-05T10:36:38.126Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T10:36:38.167Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-05T10:36:38.197Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (HJjAl0AHsEnRTf92AAAV) +[2026-01-05T10:36:38.207Z] [INFO] GET /api/projects 304 6ms +[2026-01-05T10:36:38.241Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:36:38.252Z] [INFO] GET /api/stats/dashboard?projectId=2 304 8ms +[2026-01-05T10:36:38.258Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-05T10:36:38.262Z] [INFO] GET /api/labels/2 304 8ms +[2026-01-05T10:36:38.288Z] [INFO] GET /api/tasks/project/2 200 21ms +[2026-01-05T10:36:38.335Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 13ms +[2026-01-05T10:36:38.373Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T10:36:38.426Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-05T10:36:38.967Z] [INFO] GET /api/tasks/6 200 13ms +[2026-01-05T10:36:39.008Z] [INFO] GET /api/comments/6 304 8ms +[2026-01-05T10:36:39.015Z] [INFO] GET /api/tasks/6/history 404 6ms +[2026-01-05T10:36:39.021Z] [INFO] GET /api/files/6 304 5ms +[2026-01-05T10:36:39.028Z] [INFO] GET /api/links/6 304 3ms +[2026-01-05T10:36:39.032Z] [INFO] GET /api/subtasks/6 304 3ms +[2026-01-05T10:36:39.055Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwOTM5OCwiZXhwIjoxNzY3NjEwMjk4fQ.g6aY36jXzFUESsIL6zoLEjQzfS3mZVAwM6mv7uURVlw 200 6ms +[2026-01-05T10:36:39.980Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T10:36:41.922Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:36:41.924Z] [INFO] PUT /api/tasks/6 200 7ms +[2026-01-05T10:36:42.931Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:36:46.524Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (HJjAl0AHsEnRTf92AAAV) +[2026-01-05T10:36:53.611Z] [INFO] GET / 200 5ms +[2026-01-05T10:36:53.670Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T10:36:53.695Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T10:36:53.731Z] [INFO] GET /css/components.css 200 4ms +[2026-01-05T10:36:53.733Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T10:36:53.738Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-05T10:36:53.762Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T10:36:53.771Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-05T10:36:53.774Z] [INFO] GET /css/admin.css 200 6ms +[2026-01-05T10:36:53.776Z] [INFO] GET /css/list.css 200 8ms +[2026-01-05T10:36:53.796Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T10:36:53.798Z] [INFO] GET /css/gitea.css 200 1ms +[2026-01-05T10:36:53.814Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T10:36:53.815Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T10:36:53.819Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T10:36:53.822Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T10:36:53.831Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T10:36:53.903Z] [INFO] GET /js/store.js 200 8ms +[2026-01-05T10:36:53.905Z] [INFO] GET /js/auth.js 200 9ms +[2026-01-05T10:36:53.909Z] [INFO] GET /js/api.js 200 11ms +[2026-01-05T10:36:53.918Z] [INFO] GET /js/offline.js 200 18ms +[2026-01-05T10:36:53.921Z] [INFO] GET /js/sync.js 200 14ms +[2026-01-05T10:36:53.923Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T10:36:53.933Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T10:36:53.941Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-05T10:36:53.943Z] [INFO] GET /js/list.js 200 4ms +[2026-01-05T10:36:53.949Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T10:36:53.951Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T10:36:53.960Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T10:36:53.970Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T10:36:53.978Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T10:36:53.985Z] [INFO] GET /js/gitea.js 200 10ms +[2026-01-05T10:36:53.987Z] [INFO] GET /js/knowledge.js 200 10ms +[2026-01-05T10:36:53.989Z] [INFO] GET /js/coding.js 200 6ms +[2026-01-05T10:36:53.991Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T10:36:54.018Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T10:36:54.073Z] [INFO] GET /sw.js 200 5ms +[2026-01-05T10:36:54.079Z] [INFO] GET /assets/icons/task.svg 200 8ms +[2026-01-05T10:36:54.118Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-05T10:36:54.132Z] [INFO] GET /index.html 200 5ms +[2026-01-05T10:36:54.134Z] [INFO] GET / 200 5ms +[2026-01-05T10:36:54.150Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T10:36:54.166Z] [INFO] GET /css/components.css 200 2ms +[2026-01-05T10:36:54.169Z] [INFO] GET /css/board.css 200 1ms +[2026-01-05T10:36:54.188Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-05T10:36:54.198Z] [INFO] GET /css/calendar.css 200 2ms +[2026-01-05T10:36:54.207Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T10:36:54.234Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T10:36:54.240Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T10:36:54.243Z] [INFO] GET /js/api.js 200 2ms +[2026-01-05T10:36:54.272Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-05T10:36:54.275Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-05T10:36:54.276Z] [INFO] GET /js/store.js 200 3ms +[2026-01-05T10:36:54.305Z] [INFO] GET /js/board.js 200 4ms +[2026-01-05T10:36:54.306Z] [INFO] GET /js/offline.js 200 5ms +[2026-01-05T10:36:54.308Z] [INFO] GET /js/task-modal.js 200 1ms +[2026-01-05T10:36:54.335Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T10:36:54.340Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T10:36:54.348Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T10:36:54.367Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T10:36:54.374Z] [INFO] GET /js/tour.js 200 3ms +[2026-01-05T10:36:54.380Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T10:36:54.400Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T10:36:54.408Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T10:36:54.414Z] [INFO] GET /js/gitea.js 200 5ms +[2026-01-05T10:36:54.430Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T10:36:54.436Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T10:36:54.443Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T10:36:54.469Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T10:36:54.471Z] [INFO] GET /css/mobile.css 200 6ms +[2026-01-05T10:36:54.474Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-05T10:36:54.502Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T10:36:54.505Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-05T10:36:54.510Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T10:36:54.536Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T10:36:54.542Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T10:36:58.617Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T10:36:58.618Z] [INFO] POST /api/auth/login 200 466ms +[2026-01-05T10:36:58.660Z] [INFO] GET /api/auth/users 200 7ms +[2026-01-05T10:36:58.696Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (-WD9wqn_35K0Fi1dAAAX) +[2026-01-05T10:36:58.708Z] [INFO] GET /api/projects 200 7ms +[2026-01-05T10:36:58.741Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:36:58.747Z] [INFO] GET /api/columns/2 200 4ms +[2026-01-05T10:36:58.765Z] [INFO] GET /api/tasks/project/2 200 16ms +[2026-01-05T10:36:58.773Z] [INFO] GET /api/stats/dashboard?projectId=2 200 7ms +[2026-01-05T10:36:58.781Z] [INFO] GET /api/labels/2 200 5ms +[2026-01-05T10:36:58.832Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 7ms +[2026-01-05T10:36:58.875Z] [INFO] GET /api/notifications 200 10ms +[2026-01-05T10:36:58.910Z] [INFO] GET /api/knowledge/categories 200 4ms +[2026-01-05T10:36:59.724Z] [INFO] GET /api/tasks/6 200 13ms +[2026-01-05T10:36:59.761Z] [INFO] GET /api/links/6 200 6ms +[2026-01-05T10:36:59.766Z] [INFO] GET /api/subtasks/6 200 4ms +[2026-01-05T10:36:59.773Z] [INFO] GET /api/files/6 200 5ms +[2026-01-05T10:36:59.777Z] [INFO] GET /api/comments/6 200 3ms +[2026-01-05T10:36:59.781Z] [INFO] GET /api/tasks/6/history 404 3ms +[2026-01-05T10:36:59.826Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwOTQxOCwiZXhwIjoxNzY3NjEwMzE4fQ.Nd54LT3ndlSfX3RKTYjp5AMLY9JzX2UoTgjOSOP8jKo 200 10ms +[2026-01-05T10:37:00.719Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T10:37:00.949Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:37:00.951Z] [INFO] PUT /api/tasks/6 200 9ms +[2026-01-05T10:37:01.956Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T10:37:28.264Z] [INFO] POST /api/auth/refresh 200 16ms +[2026-01-05T10:37:33.060Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T10:37:38.394Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T10:37:42.829Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T10:37:49.811Z] [INFO] POST /api/auth/refresh 200 16ms +[2026-01-05T10:37:49.815Z] [INFO] SIGTERM empfangen, fahre herunter... +[2026-01-05T10:38:04.423Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-05T10:38:04.579Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-05T10:38:05.241Z] [INFO] Admin-Passwort bereits korrekt +[2026-01-05T10:38:05.242Z] [INFO] Datenbank initialisiert +[2026-01-05T10:38:05.246Z] [INFO] Server läuft auf Port 3001 +[2026-01-05T10:38:05.247Z] [INFO] Umgebung: development +[2026-01-05T10:38:05.247Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-05T10:38:05.247Z] [INFO] Automatische Backups aktiviert +[2026-01-05T10:38:09.537Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (oeXUOhIoEqLlylp0AAAB) +[2026-01-05T10:38:09.568Z] [INFO] GET /api/health 200 10ms +[2026-01-05T10:38:09.579Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:38:18.779Z] [INFO] GET / 200 22ms +[2026-01-05T10:38:18.847Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (oeXUOhIoEqLlylp0AAAB) +[2026-01-05T10:38:18.856Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-05T10:38:18.858Z] [INFO] GET /css/base.css 200 4ms +[2026-01-05T10:38:18.893Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T10:38:18.896Z] [INFO] GET /css/components.css 200 7ms +[2026-01-05T10:38:18.924Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T10:38:18.937Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-05T10:38:18.942Z] [INFO] GET /css/admin.css 200 8ms +[2026-01-05T10:38:18.947Z] [INFO] GET /css/list.css 200 8ms +[2026-01-05T10:38:18.951Z] [INFO] GET /css/proposals.css 200 7ms +[2026-01-05T10:38:18.967Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T10:38:18.980Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T10:38:18.986Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-05T10:38:18.991Z] [INFO] GET /css/knowledge.css 200 7ms +[2026-01-05T10:38:18.993Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T10:38:19.019Z] [INFO] GET /css/mobile.css 200 6ms +[2026-01-05T10:38:19.022Z] [INFO] GET /js/app.js 200 7ms +[2026-01-05T10:38:19.102Z] [INFO] GET /js/api.js 200 10ms +[2026-01-05T10:38:19.104Z] [INFO] GET /js/auth.js 200 10ms +[2026-01-05T10:38:19.107Z] [INFO] GET /js/offline.js 200 10ms +[2026-01-05T10:38:19.111Z] [INFO] GET /js/board.js 200 11ms +[2026-01-05T10:38:19.114Z] [INFO] GET /js/sync.js 200 9ms +[2026-01-05T10:38:19.115Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T10:38:19.140Z] [INFO] GET /js/list.js 200 5ms +[2026-01-05T10:38:19.148Z] [INFO] GET /js/task-modal.js 200 10ms +[2026-01-05T10:38:19.153Z] [INFO] GET /js/calendar.js 200 7ms +[2026-01-05T10:38:19.155Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-05T10:38:19.156Z] [INFO] GET /js/undo.js 200 6ms +[2026-01-05T10:38:19.165Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T10:38:19.172Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T10:38:19.181Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T10:38:19.187Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T10:38:19.190Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-05T10:38:19.198Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-05T10:38:19.200Z] [INFO] GET /js/gitea.js 200 5ms +[2026-01-05T10:38:19.206Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T10:38:19.287Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T10:38:19.294Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T10:38:19.301Z] [INFO] GET /assets/icons/task.svg 304 13ms +[2026-01-05T10:38:19.343Z] [INFO] GET /api/auth/users 304 11ms +[2026-01-05T10:38:19.367Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (VpQhb9_wZPYo6K-mAAAD) +[2026-01-05T10:38:19.380Z] [INFO] GET /api/projects 304 8ms +[2026-01-05T10:38:19.436Z] [INFO] GET /api/stats/dashboard?projectId=2 304 7ms +[2026-01-05T10:38:19.443Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-05T10:38:19.445Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:38:19.451Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-05T10:38:19.473Z] [INFO] GET /api/tasks/project/2 200 22ms +[2026-01-05T10:38:19.517Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-05T10:38:19.563Z] [INFO] GET /api/notifications 304 12ms +[2026-01-05T10:38:19.601Z] [INFO] GET /api/knowledge/categories 304 7ms +[2026-01-05T10:38:20.078Z] [INFO] GET /api/tasks/6 200 15ms +[2026-01-05T10:38:20.116Z] [INFO] GET /api/links/6 304 5ms +[2026-01-05T10:38:20.120Z] [INFO] GET /api/subtasks/6 304 8ms +[2026-01-05T10:38:20.127Z] [INFO] GET /api/tasks/6/history 404 5ms +[2026-01-05T10:38:20.132Z] [INFO] GET /api/comments/6 304 9ms +[2026-01-05T10:38:20.140Z] [INFO] GET /api/files/6 304 7ms +[2026-01-05T10:38:20.193Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwOTQ5OSwiZXhwIjoxNzY3NjEwMzk5fQ.H-WFe_ZJYMeJxHC6LuX64KgwH_fDLm5Ihca0X9VO2hw 200 17ms +[2026-01-05T10:38:21.078Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T10:38:21.403Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:38:21.406Z] [INFO] PUT /api/tasks/6 200 10ms +[2026-01-05T10:38:22.137Z] [INFO] GET / 200 6ms +[2026-01-05T10:38:22.196Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (VpQhb9_wZPYo6K-mAAAD) +[2026-01-05T10:38:22.216Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T10:38:22.220Z] [INFO] GET /css/base.css 200 8ms +[2026-01-05T10:38:22.224Z] [INFO] GET /css/variables.css 200 10ms +[2026-01-05T10:38:22.226Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T10:38:22.230Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-05T10:38:22.233Z] [INFO] GET /css/components.css 200 8ms +[2026-01-05T10:38:22.259Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T10:38:22.265Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T10:38:22.292Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-05T10:38:22.296Z] [INFO] GET /css/proposals.css 200 8ms +[2026-01-05T10:38:22.300Z] [INFO] GET /css/notifications.css 200 10ms +[2026-01-05T10:38:22.301Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-05T10:38:22.304Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T10:38:22.305Z] [INFO] GET /css/knowledge.css 200 7ms +[2026-01-05T10:38:22.330Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T10:38:22.339Z] [INFO] GET /js/app.js 200 5ms +[2026-01-05T10:38:22.415Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-05T10:38:22.419Z] [INFO] GET /js/store.js 200 8ms +[2026-01-05T10:38:22.423Z] [INFO] GET /js/auth.js 200 10ms +[2026-01-05T10:38:22.425Z] [INFO] GET /js/offline.js 200 8ms +[2026-01-05T10:38:22.433Z] [INFO] GET /js/board.js 200 12ms +[2026-01-05T10:38:22.436Z] [INFO] GET /js/api.js 200 12ms +[2026-01-05T10:38:22.447Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T10:38:22.451Z] [INFO] GET /js/calendar.js 200 1ms +[2026-01-05T10:38:22.458Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T10:38:22.466Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T10:38:22.467Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T10:38:22.481Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T10:38:22.489Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T10:38:22.495Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T10:38:22.499Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T10:38:22.504Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T10:38:22.524Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-05T10:38:22.526Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T10:38:22.532Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T10:38:22.600Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:38:22.604Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T10:38:22.610Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-05T10:38:22.649Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T10:38:22.679Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (crPaIcsRKqhwgwiNAAAF) +[2026-01-05T10:38:22.686Z] [INFO] GET /api/projects 304 4ms +[2026-01-05T10:38:22.722Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:38:22.739Z] [INFO] GET /api/columns/2 304 15ms +[2026-01-05T10:38:22.756Z] [INFO] GET /api/tasks/project/2 200 15ms +[2026-01-05T10:38:22.762Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-05T10:38:22.766Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-05T10:38:22.814Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 3ms +[2026-01-05T10:38:22.869Z] [INFO] GET /api/notifications 304 9ms +[2026-01-05T10:38:22.910Z] [INFO] GET /api/knowledge/categories 304 8ms +[2026-01-05T10:38:23.405Z] [INFO] GET /api/tasks/6 200 14ms +[2026-01-05T10:38:23.441Z] [INFO] GET /api/subtasks/6 304 3ms +[2026-01-05T10:38:23.446Z] [INFO] GET /api/files/6 304 4ms +[2026-01-05T10:38:23.450Z] [INFO] GET /api/tasks/6/history 404 4ms +[2026-01-05T10:38:23.454Z] [INFO] GET /api/links/6 304 3ms +[2026-01-05T10:38:23.458Z] [INFO] GET /api/comments/6 304 3ms +[2026-01-05T10:38:23.488Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwOTUwMiwiZXhwIjoxNzY3NjEwNDAyfQ.nRMhOaM09bNwhOXOEghA5O846XNxtqykAE5tFuoLfWQ 200 11ms +[2026-01-05T10:38:24.403Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T10:38:24.825Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T10:38:24.826Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T10:38:24.829Z] [INFO] GET /css/components.css 200 7ms +[2026-01-05T10:38:24.831Z] [INFO] GET /css/variables.css 200 7ms +[2026-01-05T10:38:24.832Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-05T10:38:24.834Z] [INFO] GET /css/base.css 200 4ms +[2026-01-05T10:38:24.859Z] [INFO] GET /css/list.css 200 1ms +[2026-01-05T10:38:24.864Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-05T10:38:24.881Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T10:38:24.883Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T10:38:24.886Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T10:38:24.887Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T10:38:24.889Z] [INFO] GET /css/knowledge.css 200 1ms +[2026-01-05T10:38:24.920Z] [INFO] GET /css/mobile.css 200 9ms +[2026-01-05T10:38:24.923Z] [INFO] GET /css/responsive.css 200 5ms +[2026-01-05T10:38:25.651Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T10:38:34.363Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T10:38:34.836Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:38:34.839Z] [INFO] PUT /api/tasks/6 200 10ms +[2026-01-05T10:38:35.570Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:38:35.572Z] [INFO] PUT /api/tasks/6 200 8ms +[2026-01-05T10:38:36.427Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:38:36.428Z] [INFO] PUT /api/tasks/6 200 7ms +[2026-01-05T10:38:37.200Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:38:37.202Z] [INFO] PUT /api/tasks/6 200 5ms +[2026-01-05T10:38:38.198Z] [INFO] POST /api/auth/refresh 200 18ms +[2026-01-05T10:39:05.271Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-05T10-39-05-261Z.db.enc +[2026-01-05T10:39:05.271Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-05T10-39-05-261Z.db.enc +[2026-01-05T10:39:05.277Z] [INFO] Backup erstellt: backup_2026-01-05T10-39-05-261Z.db +[2026-01-05T10:39:05.293Z] [INFO] Datei sicher gelöscht: backup_2026-01-03T23-40-53-546Z.db.enc +[2026-01-05T10:39:05.294Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-03T23-40-53-546Z.db.enc +[2026-01-05T10:39:05.295Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-05T10:39:12.573Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:39:12.576Z] [INFO] PUT /api/tasks/6 200 20ms +[2026-01-05T10:39:13.583Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T10:39:32.820Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T10:39:38.104Z] [INFO] GET / 200 2ms +[2026-01-05T10:39:38.169Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (crPaIcsRKqhwgwiNAAAF) +[2026-01-05T10:39:38.182Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-05T10:39:38.190Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T10:39:38.194Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T10:39:38.197Z] [INFO] GET /css/base.css 200 8ms +[2026-01-05T10:39:38.199Z] [INFO] GET /css/components.css 200 8ms +[2026-01-05T10:39:38.202Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-05T10:39:38.212Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T10:39:38.246Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T10:39:38.257Z] [INFO] GET /css/proposals.css 200 9ms +[2026-01-05T10:39:38.259Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T10:39:38.264Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T10:39:38.266Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-05T10:39:38.277Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T10:39:38.292Z] [INFO] GET /css/responsive.css 200 7ms +[2026-01-05T10:39:38.302Z] [INFO] GET /css/mobile.css 200 14ms +[2026-01-05T10:39:38.314Z] [INFO] GET /js/app.js 200 8ms +[2026-01-05T10:39:38.400Z] [INFO] GET /js/store.js 200 11ms +[2026-01-05T10:39:38.404Z] [INFO] GET /js/auth.js 200 13ms +[2026-01-05T10:39:38.405Z] [INFO] GET /js/api.js 200 12ms +[2026-01-05T10:39:38.410Z] [INFO] GET /js/offline.js 200 11ms +[2026-01-05T10:39:38.413Z] [INFO] GET /js/sync.js 200 11ms +[2026-01-05T10:39:38.429Z] [INFO] GET /js/board.js 200 1ms +[2026-01-05T10:39:38.439Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T10:39:38.445Z] [INFO] GET /js/list.js 200 4ms +[2026-01-05T10:39:38.448Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-05T10:39:38.463Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-05T10:39:38.465Z] [INFO] GET /js/admin.js 200 5ms +[2026-01-05T10:39:38.466Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-05T10:39:38.473Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-05T10:39:38.493Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T10:39:38.503Z] [INFO] GET /js/gitea.js 200 5ms +[2026-01-05T10:39:38.508Z] [INFO] GET /js/coding.js 200 7ms +[2026-01-05T10:39:38.509Z] [INFO] GET /js/mobile.js 200 8ms +[2026-01-05T10:39:38.511Z] [INFO] GET /js/knowledge.js 200 6ms +[2026-01-05T10:39:38.512Z] [INFO] GET /js/utils.js 200 6ms +[2026-01-05T10:39:38.576Z] [INFO] GET /assets/icons/task.svg 200 4ms +[2026-01-05T10:39:40.083Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T10:39:40.128Z] [INFO] GET / 200 8ms +[2026-01-05T10:39:40.131Z] [INFO] GET /css/variables.css 200 7ms +[2026-01-05T10:39:40.133Z] [INFO] GET /index.html 200 9ms +[2026-01-05T10:39:40.171Z] [INFO] GET /css/components.css 200 2ms +[2026-01-05T10:39:40.173Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T10:39:40.195Z] [INFO] GET /css/board.css 200 2ms +[2026-01-05T10:39:40.208Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T10:39:40.217Z] [INFO] GET /css/calendar.css 200 2ms +[2026-01-05T10:39:40.240Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T10:39:40.250Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T10:39:40.254Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T10:39:40.276Z] [INFO] GET /js/api.js 200 4ms +[2026-01-05T10:39:40.285Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-05T10:39:40.299Z] [INFO] GET /js/store.js 200 2ms +[2026-01-05T10:39:40.310Z] [INFO] GET /js/sync.js 200 3ms +[2026-01-05T10:39:40.319Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-05T10:39:40.331Z] [INFO] GET /js/board.js 200 3ms +[2026-01-05T10:39:40.342Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T10:39:40.348Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T10:39:40.365Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T10:39:40.377Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-05T10:39:40.380Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-05T10:39:40.406Z] [INFO] GET /js/tour.js 200 8ms +[2026-01-05T10:39:40.414Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-05T10:39:40.418Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T10:39:40.438Z] [INFO] GET /js/notifications.js 200 1ms +[2026-01-05T10:39:40.448Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T10:39:40.450Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T10:39:40.473Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T10:39:40.482Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T10:39:40.485Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T10:39:40.510Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T10:39:40.521Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-05T10:39:40.524Z] [INFO] GET /css/admin.css 200 6ms +[2026-01-05T10:39:40.543Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T10:39:40.562Z] [INFO] GET /css/gitea.css 200 8ms +[2026-01-05T10:39:40.565Z] [INFO] GET /css/knowledge.css 200 10ms +[2026-01-05T10:39:40.582Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-05T10:39:43.012Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T10:39:43.013Z] [INFO] POST /api/auth/login 200 471ms +[2026-01-05T10:39:43.051Z] [INFO] GET /api/auth/users 304 3ms +[2026-01-05T10:39:43.090Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (LBk1k9Vm83AQr2GZAAAH) +[2026-01-05T10:39:43.099Z] [INFO] GET /api/projects 304 6ms +[2026-01-05T10:39:43.129Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:39:43.139Z] [INFO] GET /api/stats/dashboard?projectId=2 304 7ms +[2026-01-05T10:39:43.142Z] [INFO] GET /api/columns/2 304 9ms +[2026-01-05T10:39:43.158Z] [INFO] GET /api/tasks/project/2 200 14ms +[2026-01-05T10:39:43.161Z] [INFO] GET /api/labels/2 304 17ms +[2026-01-05T10:39:43.231Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-05T10:39:43.264Z] [INFO] GET /api/notifications 304 4ms +[2026-01-05T10:39:43.300Z] [INFO] GET /api/knowledge/categories 304 4ms +[2026-01-05T10:39:47.761Z] [INFO] GET /api/tasks/6 200 6ms +[2026-01-05T10:39:47.801Z] [INFO] GET /api/subtasks/6 304 7ms +[2026-01-05T10:39:47.805Z] [INFO] GET /api/links/6 304 10ms +[2026-01-05T10:39:47.809Z] [INFO] GET /api/comments/6 304 3ms +[2026-01-05T10:39:47.814Z] [INFO] GET /api/tasks/6/history 404 4ms +[2026-01-05T10:39:47.822Z] [INFO] GET /api/files/6 304 11ms +[2026-01-05T10:39:47.866Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwOTU4MywiZXhwIjoxNzY3NjEwNDgzfQ.SS-3_2zDQbX3xZQCI8EJH9ymAkCaLDQbpbJW4Ry4WGQ 200 13ms +[2026-01-05T10:39:48.764Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T10:39:48.799Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:39:48.801Z] [INFO] PUT /api/tasks/6 200 7ms +[2026-01-05T10:39:49.716Z] [INFO] GET /css/base.css 200 1ms +[2026-01-05T10:39:49.717Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T10:39:49.723Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-05T10:39:49.727Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T10:39:49.728Z] [INFO] GET / 200 9ms +[2026-01-05T10:39:49.728Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T10:39:49.748Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T10:39:49.752Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T10:39:49.775Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T10:39:49.778Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T10:39:49.786Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T10:39:49.787Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T10:39:49.791Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-05T10:39:49.800Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T10:39:49.812Z] [INFO] GET /css/responsive.css 200 6ms +[2026-01-05T10:39:49.815Z] [INFO] GET /css/mobile.css 200 6ms +[2026-01-05T10:39:50.565Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:40:23.043Z] [INFO] GET / 200 4ms +[2026-01-05T10:40:23.112Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (LBk1k9Vm83AQr2GZAAAH) +[2026-01-05T10:40:23.123Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T10:40:23.140Z] [INFO] GET /css/calendar.css 200 10ms +[2026-01-05T10:40:23.147Z] [INFO] GET /css/components.css 200 13ms +[2026-01-05T10:40:23.149Z] [INFO] GET /css/modal.css 200 12ms +[2026-01-05T10:40:23.150Z] [INFO] GET /css/board.css 200 9ms +[2026-01-05T10:40:23.153Z] [INFO] GET /css/base.css 200 8ms +[2026-01-05T10:40:23.160Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T10:40:23.192Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-05T10:40:23.200Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-05T10:40:23.202Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T10:40:23.211Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T10:40:23.213Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T10:40:23.214Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T10:40:23.219Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T10:40:23.230Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T10:40:23.246Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T10:40:23.317Z] [INFO] GET /js/offline.js 200 8ms +[2026-01-05T10:40:23.320Z] [INFO] GET /js/api.js 200 10ms +[2026-01-05T10:40:23.321Z] [INFO] GET /js/store.js 200 10ms +[2026-01-05T10:40:23.323Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-05T10:40:23.324Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-05T10:40:23.346Z] [INFO] GET /js/board.js 200 2ms +[2026-01-05T10:40:23.352Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T10:40:23.356Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T10:40:23.360Z] [INFO] GET /js/list.js 200 5ms +[2026-01-05T10:40:23.363Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-05T10:40:23.378Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T10:40:23.382Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-05T10:40:23.386Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T10:40:23.394Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T10:40:23.395Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T10:40:23.406Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T10:40:23.414Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T10:40:23.417Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T10:40:23.420Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-05T10:40:23.468Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T10:40:23.475Z] [INFO] GET /api/auth/users 200 5ms +[2026-01-05T10:40:23.478Z] [INFO] GET /assets/icons/task.svg 200 3ms +[2026-01-05T10:40:23.516Z] [INFO] GET /api/auth/users 200 7ms +[2026-01-05T10:40:23.559Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (N_vaXJ8L5n8l1ZoEAAAJ) +[2026-01-05T10:40:23.569Z] [INFO] GET /api/projects 200 6ms +[2026-01-05T10:40:23.603Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:40:23.614Z] [INFO] GET /api/stats/dashboard?projectId=2 200 8ms +[2026-01-05T10:40:23.618Z] [INFO] GET /api/labels/2 200 3ms +[2026-01-05T10:40:23.625Z] [INFO] GET /api/columns/2 200 6ms +[2026-01-05T10:40:23.635Z] [INFO] GET /api/tasks/project/2 200 15ms +[2026-01-05T10:40:23.682Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 9ms +[2026-01-05T10:40:23.723Z] [INFO] GET /api/notifications 200 8ms +[2026-01-05T10:40:23.766Z] [INFO] GET /api/knowledge/categories 200 5ms +[2026-01-05T10:40:23.804Z] [INFO] GET /sw.js 200 2ms +[2026-01-05T10:40:23.851Z] [INFO] GET /index.html 200 8ms +[2026-01-05T10:40:23.854Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-05T10:40:23.855Z] [INFO] GET / 200 9ms +[2026-01-05T10:40:23.891Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T10:40:23.894Z] [INFO] GET /css/base.css 200 7ms +[2026-01-05T10:40:23.897Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T10:40:23.933Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T10:40:23.937Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-05T10:40:23.939Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T10:40:23.968Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T10:40:23.977Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-05T10:40:23.979Z] [INFO] GET /js/api.js 200 4ms +[2026-01-05T10:40:24.001Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-05T10:40:24.015Z] [INFO] GET /js/sync.js 200 3ms +[2026-01-05T10:40:24.017Z] [INFO] GET /js/store.js 200 4ms +[2026-01-05T10:40:24.036Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-05T10:40:24.052Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T10:40:24.058Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T10:40:24.063Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T10:40:24.081Z] [INFO] GET /js/list.js 200 1ms +[2026-01-05T10:40:24.092Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T10:40:24.097Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T10:40:24.114Z] [INFO] GET /js/tour.js 200 3ms +[2026-01-05T10:40:24.129Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-05T10:40:24.133Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-05T10:40:24.164Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T10:40:24.167Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T10:40:24.169Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T10:40:24.208Z] [INFO] GET /js/coding.js 200 9ms +[2026-01-05T10:40:24.212Z] [INFO] GET /js/mobile.js 200 7ms +[2026-01-05T10:40:24.213Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T10:40:24.239Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T10:40:24.246Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T10:40:24.247Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T10:40:24.272Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-05T10:40:24.279Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T10:40:24.280Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T10:40:24.307Z] [INFO] GET /css/coding.css 200 1ms +[2026-01-05T10:40:24.393Z] [INFO] GET /api/tasks/6 200 10ms +[2026-01-05T10:40:24.434Z] [INFO] GET /api/links/6 200 5ms +[2026-01-05T10:40:24.439Z] [INFO] GET /api/subtasks/6 200 9ms +[2026-01-05T10:40:24.441Z] [INFO] GET /api/tasks/6/history 404 11ms +[2026-01-05T10:40:24.447Z] [INFO] GET /api/files/6 200 5ms +[2026-01-05T10:40:24.449Z] [INFO] GET /api/comments/6 200 6ms +[2026-01-05T10:40:24.504Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwOTYyMywiZXhwIjoxNzY3NjEwNTIzfQ.s7wD1-k4p6WTi7rkbfPGxPqOY_E4lb9mh7c48Pyrri0 200 5ms +[2026-01-05T10:40:25.388Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T10:40:27.021Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:40:27.023Z] [INFO] PUT /api/tasks/6 200 11ms +[2026-01-05T10:40:28.009Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T10:40:33.712Z] [INFO] GET / 200 4ms +[2026-01-05T10:40:33.784Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (N_vaXJ8L5n8l1ZoEAAAJ) +[2026-01-05T10:40:33.789Z] [INFO] GET /css/base.css 200 9ms +[2026-01-05T10:40:33.793Z] [INFO] GET /css/components.css 200 10ms +[2026-01-05T10:40:33.796Z] [INFO] GET /css/variables.css 200 8ms +[2026-01-05T10:40:33.799Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-05T10:40:33.801Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T10:40:33.802Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-05T10:40:33.821Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T10:40:33.825Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-05T10:40:33.850Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-05T10:40:33.855Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T10:40:33.857Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T10:40:33.867Z] [INFO] GET /css/responsive.css 200 6ms +[2026-01-05T10:40:33.870Z] [INFO] GET /css/coding.css 200 8ms +[2026-01-05T10:40:33.874Z] [INFO] GET /css/knowledge.css 200 9ms +[2026-01-05T10:40:33.882Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T10:40:33.892Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T10:40:33.957Z] [INFO] GET /js/api.js 200 6ms +[2026-01-05T10:40:33.962Z] [INFO] GET /js/auth.js 200 9ms +[2026-01-05T10:40:33.966Z] [INFO] GET /js/sync.js 200 11ms +[2026-01-05T10:40:33.971Z] [INFO] GET /js/board.js 200 17ms +[2026-01-05T10:40:33.974Z] [INFO] GET /js/store.js 200 15ms +[2026-01-05T10:40:33.977Z] [INFO] GET /js/offline.js 200 16ms +[2026-01-05T10:40:33.998Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T10:40:33.999Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T10:40:34.006Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T10:40:34.009Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T10:40:34.014Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T10:40:34.025Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T10:40:34.031Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T10:40:34.033Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T10:40:34.039Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T10:40:34.043Z] [INFO] GET /js/knowledge.js 200 6ms +[2026-01-05T10:40:34.048Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T10:40:34.060Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T10:40:34.066Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T10:40:34.116Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:40:34.120Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-05T10:40:34.124Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T10:40:34.161Z] [INFO] GET /api/auth/users 304 3ms +[2026-01-05T10:40:34.198Z] [INFO] GET /api/projects 304 3ms +[2026-01-05T10:40:34.202Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (K4hgoFQIJnFpUvzPAAAL) +[2026-01-05T10:40:34.266Z] [INFO] GET /api/tasks/project/2 200 35ms +[2026-01-05T10:40:34.270Z] [INFO] GET /api/labels/2 304 38ms +[2026-01-05T10:40:34.275Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-05T10:40:34.281Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-05T10:40:34.282Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:40:34.316Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-05T10:40:34.350Z] [INFO] GET /api/notifications 304 5ms +[2026-01-05T10:40:34.390Z] [INFO] GET /api/knowledge/categories 304 8ms +[2026-01-05T10:40:34.428Z] [INFO] GET /sw.js 200 5ms +[2026-01-05T10:40:34.487Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-05T10:40:34.492Z] [INFO] GET / 200 7ms +[2026-01-05T10:40:34.494Z] [INFO] GET /index.html 200 8ms +[2026-01-05T10:40:34.527Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T10:40:34.529Z] [INFO] GET /css/components.css 200 4ms +[2026-01-05T10:40:34.551Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T10:40:34.561Z] [INFO] GET /css/modal.css 200 2ms +[2026-01-05T10:40:34.562Z] [INFO] GET /css/calendar.css 200 2ms +[2026-01-05T10:40:34.581Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T10:40:34.599Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T10:40:34.601Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T10:40:34.612Z] [INFO] GET /js/api.js 200 4ms +[2026-01-05T10:40:34.635Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-05T10:40:34.641Z] [INFO] GET /js/store.js 200 8ms +[2026-01-05T10:40:34.649Z] [INFO] GET /js/sync.js 200 3ms +[2026-01-05T10:40:34.667Z] [INFO] GET /js/offline.js 200 2ms +[2026-01-05T10:40:34.675Z] [INFO] GET /js/board.js 200 2ms +[2026-01-05T10:40:34.681Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T10:40:34.700Z] [INFO] GET /js/calendar.js 200 1ms +[2026-01-05T10:40:34.709Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T10:40:34.716Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-05T10:40:34.731Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T10:40:34.741Z] [INFO] GET /js/tour.js 200 3ms +[2026-01-05T10:40:34.750Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T10:40:34.765Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T10:40:34.774Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T10:40:34.783Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T10:40:34.796Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T10:40:34.811Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T10:40:34.840Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T10:40:34.842Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T10:40:34.856Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T10:40:34.890Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-05T10:40:34.894Z] [INFO] GET /css/admin.css 200 7ms +[2026-01-05T10:40:34.898Z] [INFO] GET /css/proposals.css 200 9ms +[2026-01-05T10:40:34.933Z] [INFO] GET /css/gitea.css 200 8ms +[2026-01-05T10:40:34.937Z] [INFO] GET /css/knowledge.css 200 11ms +[2026-01-05T10:40:34.940Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T10:40:35.335Z] [INFO] GET / 200 8ms +[2026-01-05T10:40:35.369Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (K4hgoFQIJnFpUvzPAAAL) +[2026-01-05T10:40:35.393Z] [INFO] GET /css/board.css 200 10ms +[2026-01-05T10:40:35.394Z] [INFO] GET /css/base.css 200 9ms +[2026-01-05T10:40:35.395Z] [INFO] GET /css/components.css 200 9ms +[2026-01-05T10:40:35.397Z] [INFO] GET /css/variables.css 200 11ms +[2026-01-05T10:40:35.398Z] [INFO] GET /css/calendar.css 200 11ms +[2026-01-05T10:40:35.400Z] [INFO] GET /css/modal.css 200 12ms +[2026-01-05T10:40:35.425Z] [INFO] GET /css/list.css 200 1ms +[2026-01-05T10:40:35.432Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T10:40:35.442Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T10:40:35.448Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T10:40:35.452Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T10:40:35.459Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-05T10:40:35.461Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T10:40:35.463Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T10:40:35.471Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-05T10:40:35.483Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T10:40:35.571Z] [INFO] GET /js/store.js 200 9ms +[2026-01-05T10:40:35.574Z] [INFO] GET /js/sync.js 200 7ms +[2026-01-05T10:40:35.578Z] [INFO] GET /js/api.js 200 9ms +[2026-01-05T10:40:35.580Z] [INFO] GET /js/offline.js 200 8ms +[2026-01-05T10:40:35.581Z] [INFO] GET /js/auth.js 200 8ms +[2026-01-05T10:40:35.583Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T10:40:35.601Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T10:40:35.605Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T10:40:35.606Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T10:40:35.608Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T10:40:35.609Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T10:40:35.635Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T10:40:35.637Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-05T10:40:35.642Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T10:40:35.643Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T10:40:35.644Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T10:40:35.648Z] [INFO] GET /js/coding.js 200 1ms +[2026-01-05T10:40:35.668Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T10:40:35.671Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-05T10:40:35.713Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:40:35.716Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-05T10:40:35.724Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T10:40:35.760Z] [INFO] GET /api/auth/users 304 2ms +[2026-01-05T10:40:35.794Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (5ArIvoLQAZyOEXwZAAAN) +[2026-01-05T10:40:35.802Z] [INFO] GET /api/projects 304 5ms +[2026-01-05T10:40:35.837Z] [INFO] GET /api/stats/dashboard?projectId=2 304 4ms +[2026-01-05T10:40:35.838Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:40:35.861Z] [INFO] GET /api/tasks/project/2 304 14ms +[2026-01-05T10:40:35.864Z] [INFO] GET /api/labels/2 304 17ms +[2026-01-05T10:40:35.868Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-05T10:40:35.913Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-05T10:40:35.951Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T10:40:35.989Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-05T10:40:36.449Z] [INFO] GET /api/tasks/6 200 12ms +[2026-01-05T10:40:36.488Z] [INFO] GET /api/tasks/6/history 404 5ms +[2026-01-05T10:40:36.494Z] [INFO] GET /api/files/6 304 5ms +[2026-01-05T10:40:36.501Z] [INFO] GET /api/subtasks/6 304 6ms +[2026-01-05T10:40:36.504Z] [INFO] GET /api/links/6 304 8ms +[2026-01-05T10:40:36.508Z] [INFO] GET /api/comments/6 304 3ms +[2026-01-05T10:40:36.536Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwOTYzNSwiZXhwIjoxNzY3NjEwNTM1fQ.Bbq22nKgJA6q0V_bjkWitZke_2HHe0UdFpdxZaO3TM4 200 11ms +[2026-01-05T10:40:37.464Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T10:40:38.012Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:40:38.014Z] [INFO] PUT /api/tasks/6 200 9ms +[2026-01-05T10:40:39.008Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T10:40:43.764Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T10:40:43.766Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-05T10:40:43.771Z] [INFO] GET /css/components.css 200 4ms +[2026-01-05T10:40:43.776Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-05T10:40:43.780Z] [INFO] GET /css/modal.css 200 11ms +[2026-01-05T10:40:43.782Z] [INFO] GET /css/board.css 200 9ms +[2026-01-05T10:40:43.798Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T10:40:43.801Z] [INFO] GET /css/admin.css 200 6ms +[2026-01-05T10:40:43.825Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T10:40:43.826Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T10:40:43.829Z] [INFO] GET /css/gitea.css 200 1ms +[2026-01-05T10:40:43.833Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T10:40:43.834Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T10:40:43.838Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T10:40:43.856Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T10:40:44.610Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T10:40:53.155Z] [INFO] GET / 200 5ms +[2026-01-05T10:40:53.220Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (5ArIvoLQAZyOEXwZAAAN) +[2026-01-05T10:40:53.237Z] [INFO] GET /css/variables.css 200 7ms +[2026-01-05T10:40:53.242Z] [INFO] GET /css/base.css 200 9ms +[2026-01-05T10:40:53.249Z] [INFO] GET /css/board.css 200 14ms +[2026-01-05T10:40:53.251Z] [INFO] GET /css/calendar.css 200 10ms +[2026-01-05T10:40:53.252Z] [INFO] GET /css/components.css 200 7ms +[2026-01-05T10:40:53.255Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T10:40:53.263Z] [INFO] GET /css/list.css 200 1ms +[2026-01-05T10:40:53.278Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T10:40:53.296Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T10:40:53.299Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-05T10:40:53.304Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T10:40:53.318Z] [INFO] GET /css/coding.css 200 10ms +[2026-01-05T10:40:53.319Z] [INFO] GET /css/knowledge.css 200 9ms +[2026-01-05T10:40:53.321Z] [INFO] GET /css/responsive.css 200 5ms +[2026-01-05T10:40:53.325Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T10:40:53.334Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T10:40:53.403Z] [INFO] GET /js/api.js 200 5ms +[2026-01-05T10:40:53.406Z] [INFO] GET /js/store.js 200 7ms +[2026-01-05T10:40:53.409Z] [INFO] GET /js/sync.js 200 8ms +[2026-01-05T10:40:53.410Z] [INFO] GET /js/auth.js 200 8ms +[2026-01-05T10:40:53.414Z] [INFO] GET /js/offline.js 200 9ms +[2026-01-05T10:40:53.444Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T10:40:53.453Z] [INFO] GET /js/task-modal.js 200 7ms +[2026-01-05T10:40:53.456Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-05T10:40:53.460Z] [INFO] GET /js/list.js 200 9ms +[2026-01-05T10:40:53.462Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T10:40:53.472Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T10:40:53.476Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T10:40:53.486Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T10:40:53.495Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T10:40:53.507Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-05T10:40:53.513Z] [INFO] GET /js/knowledge.js 200 9ms +[2026-01-05T10:40:53.517Z] [INFO] GET /js/coding.js 200 7ms +[2026-01-05T10:40:53.520Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T10:40:53.522Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T10:40:53.576Z] [INFO] GET /assets/icons/task.svg 200 4ms +[2026-01-05T10:40:53.601Z] [INFO] GET /sw.js 200 2ms +[2026-01-05T10:40:53.646Z] [INFO] GET /index.html 200 8ms +[2026-01-05T10:40:53.650Z] [INFO] GET / 200 11ms +[2026-01-05T10:40:53.652Z] [INFO] GET /css/variables.css 200 11ms +[2026-01-05T10:40:53.686Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T10:40:53.693Z] [INFO] GET /css/base.css 200 10ms +[2026-01-05T10:40:53.698Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T10:40:53.725Z] [INFO] GET /css/modal.css 200 1ms +[2026-01-05T10:40:53.729Z] [INFO] GET /css/calendar.css 200 1ms +[2026-01-05T10:40:53.755Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T10:40:53.756Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T10:40:53.760Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-05T10:40:53.787Z] [INFO] GET /js/auth.js 200 2ms +[2026-01-05T10:40:53.788Z] [INFO] GET /js/store.js 200 2ms +[2026-01-05T10:40:53.794Z] [INFO] GET /js/api.js 200 3ms +[2026-01-05T10:40:53.827Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-05T10:40:53.831Z] [INFO] GET /js/offline.js 200 8ms +[2026-01-05T10:40:53.834Z] [INFO] GET /js/board.js 200 5ms +[2026-01-05T10:40:53.869Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-05T10:40:53.872Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-05T10:40:53.874Z] [INFO] GET /js/list.js 200 7ms +[2026-01-05T10:40:53.900Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T10:40:53.905Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T10:40:53.909Z] [INFO] GET /js/tour.js 200 3ms +[2026-01-05T10:40:53.931Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T10:40:53.941Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-05T10:40:53.952Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T10:40:53.962Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T10:40:53.975Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T10:40:53.983Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T10:40:53.995Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T10:40:54.010Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T10:40:54.017Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T10:40:54.025Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-05T10:40:54.042Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T10:40:54.046Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T10:40:54.055Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T10:40:54.074Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T10:40:54.085Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T10:40:59.463Z] [INFO] POST /api/auth/login 200 425ms +[2026-01-05T10:40:59.463Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T10:40:59.506Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T10:40:59.540Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (I6VGecQKn9s0SpzgAAAP) +[2026-01-05T10:40:59.548Z] [INFO] GET /api/projects 304 5ms +[2026-01-05T10:40:59.583Z] [INFO] GET /api/stats/dashboard?projectId=2 304 6ms +[2026-01-05T10:40:59.585Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:40:59.601Z] [INFO] GET /api/tasks/project/2 200 15ms +[2026-01-05T10:40:59.606Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-05T10:40:59.610Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T10:40:59.672Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 8ms +[2026-01-05T10:40:59.714Z] [INFO] GET /api/notifications 304 11ms +[2026-01-05T10:40:59.758Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-05T10:41:00.226Z] [INFO] GET /api/tasks/6 200 9ms +[2026-01-05T10:41:00.271Z] [INFO] GET /api/subtasks/6 304 10ms +[2026-01-05T10:41:00.285Z] [INFO] GET /api/files/6 304 11ms +[2026-01-05T10:41:00.281Z] [INFO] GET /api/links/6 304 9ms +[2026-01-05T10:41:00.289Z] [INFO] GET /api/comments/6 304 14ms +[2026-01-05T10:41:00.294Z] [INFO] GET /api/tasks/6/history 404 4ms +[2026-01-05T10:41:00.332Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwOTY1OSwiZXhwIjoxNzY3NjEwNTU5fQ.dFeIxMLx8Lz3zJmSCbQ876MemU4oGr3mtmTrZWx3ItQ 200 6ms +[2026-01-05T10:41:01.230Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:41:17.419Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:41:17.421Z] [INFO] PUT /api/tasks/6 200 8ms +[2026-01-05T10:41:18.466Z] [INFO] POST /api/auth/refresh 200 33ms +[2026-01-05T10:41:28.030Z] [INFO] GET /api/tasks/27 200 10ms +[2026-01-05T10:41:28.074Z] [INFO] GET /api/links/27 200 7ms +[2026-01-05T10:41:28.077Z] [INFO] GET /api/subtasks/27 200 8ms +[2026-01-05T10:41:28.079Z] [INFO] GET /api/comments/27 200 9ms +[2026-01-05T10:41:28.082Z] [INFO] GET /api/tasks/27/history 404 2ms +[2026-01-05T10:41:28.087Z] [INFO] GET /api/files/27 200 3ms +[2026-01-05T10:41:29.033Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:41:34.357Z] [INFO] Aufgabe aktualisiert: WSL abklären, welche Integrationsform (ID: 27) +[2026-01-05T10:41:34.359Z] [INFO] PUT /api/tasks/27 200 5ms +[2026-01-05T10:41:35.354Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T10:41:36.163Z] [INFO] GET /api/tasks/6 200 9ms +[2026-01-05T10:41:36.215Z] [INFO] GET /api/subtasks/6 304 4ms +[2026-01-05T10:41:36.220Z] [INFO] GET /api/comments/6 304 4ms +[2026-01-05T10:41:36.224Z] [INFO] GET /api/files/6 304 8ms +[2026-01-05T10:41:36.227Z] [INFO] GET /api/tasks/6/history 404 3ms +[2026-01-05T10:41:36.231Z] [INFO] GET /api/links/6 304 3ms +[2026-01-05T10:41:36.274Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwOTY5NSwiZXhwIjoxNzY3NjEwNTk1fQ.JOrDwdjimAe16XflvQT9kSJaX7e7mhPLMWVtUyUaEHw 200 16ms +[2026-01-05T10:41:37.184Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:41:46.457Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:41:46.459Z] [INFO] PUT /api/tasks/6 200 9ms +[2026-01-05T10:41:47.461Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T10:41:47.545Z] [INFO] GET /api/tasks/6 200 12ms +[2026-01-05T10:41:47.589Z] [INFO] GET /api/tasks/6/history 404 9ms +[2026-01-05T10:41:47.595Z] [INFO] GET /api/subtasks/6 304 13ms +[2026-01-05T10:41:47.600Z] [INFO] GET /api/links/6 304 17ms +[2026-01-05T10:41:47.610Z] [INFO] GET /api/files/6 304 7ms +[2026-01-05T10:41:47.613Z] [INFO] GET /api/comments/6 304 10ms +[2026-01-05T10:41:47.652Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwOTcwNywiZXhwIjoxNzY3NjEwNjA3fQ.Ko07TBtY-ndZrUkHDNB9zqGzYf_lQMv6p_TZ5IM3KGU 200 8ms +[2026-01-05T10:41:48.548Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:41:48.865Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:41:48.868Z] [INFO] PUT /api/tasks/6 200 9ms +[2026-01-05T10:41:50.783Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T10:41:53.387Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T10:41:56.722Z] [INFO] GET /api/tasks/3 200 6ms +[2026-01-05T10:41:56.766Z] [INFO] GET /api/subtasks/3 200 3ms +[2026-01-05T10:41:56.772Z] [INFO] GET /api/comments/3 200 5ms +[2026-01-05T10:41:56.775Z] [INFO] GET /api/files/3 200 6ms +[2026-01-05T10:41:56.781Z] [INFO] GET /api/tasks/3/history 404 3ms +[2026-01-05T10:41:56.785Z] [INFO] GET /api/links/3 200 3ms +[2026-01-05T10:41:57.724Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T10:42:08.547Z] [INFO] Aufgabe aktualisiert: Bilanzbuchhaltung - Bundesanzeiger (ID: 3) +[2026-01-05T10:42:08.550Z] [INFO] PUT /api/tasks/3 200 11ms +[2026-01-05T10:42:10.102Z] [INFO] GET /api/knowledge/entries?categoryId=15 200 16ms +[2026-01-05T10:42:12.699Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T10:42:13.069Z] [INFO] GET /api/knowledge/entries?categoryId=15 304 6ms +[2026-01-05T10:42:16.036Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T10:42:24.276Z] [INFO] GET / 200 4ms +[2026-01-05T10:42:24.334Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (I6VGecQKn9s0SpzgAAAP) +[2026-01-05T10:42:24.345Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-05T10:42:24.352Z] [INFO] GET /css/base.css 200 5ms +[2026-01-05T10:42:24.359Z] [INFO] GET /css/components.css 200 10ms +[2026-01-05T10:42:24.363Z] [INFO] GET /css/board.css 200 12ms +[2026-01-05T10:42:24.366Z] [INFO] GET /css/modal.css 200 10ms +[2026-01-05T10:42:24.376Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-05T10:42:24.385Z] [INFO] GET /css/list.css 200 1ms +[2026-01-05T10:42:24.404Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T10:42:24.406Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T10:42:24.415Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-05T10:42:24.416Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-05T10:42:24.427Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-05T10:42:24.432Z] [INFO] GET /css/knowledge.css 200 8ms +[2026-01-05T10:42:24.437Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T10:42:24.460Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T10:42:24.465Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T10:42:24.526Z] [INFO] GET /js/api.js 200 3ms +[2026-01-05T10:42:24.527Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-05T10:42:24.528Z] [INFO] GET /js/store.js 200 4ms +[2026-01-05T10:42:24.529Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-05T10:42:24.531Z] [INFO] GET /js/board.js 200 3ms +[2026-01-05T10:42:24.539Z] [INFO] GET /js/offline.js 200 5ms +[2026-01-05T10:42:24.562Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T10:42:24.569Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-05T10:42:24.571Z] [INFO] GET /js/list.js 200 4ms +[2026-01-05T10:42:24.573Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T10:42:24.586Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T10:42:24.591Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T10:42:24.600Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T10:42:24.605Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T10:42:24.606Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T10:42:24.618Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T10:42:24.619Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T10:42:24.623Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T10:42:24.630Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T10:42:24.677Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T10:42:24.681Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T10:42:24.686Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T10:42:24.727Z] [INFO] GET /api/auth/users 304 8ms +[2026-01-05T10:42:24.753Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (XsvrYXtPhU9prWAyAAAR) +[2026-01-05T10:42:24.764Z] [INFO] GET /api/projects 304 4ms +[2026-01-05T10:42:24.804Z] [INFO] GET /api/stats/dashboard?projectId=2 304 6ms +[2026-01-05T10:42:24.807Z] [INFO] GET /api/columns/2 304 8ms +[2026-01-05T10:42:24.808Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:42:24.811Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-05T10:42:24.825Z] [INFO] GET /api/tasks/project/2 200 14ms +[2026-01-05T10:42:24.862Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 4ms +[2026-01-05T10:42:24.895Z] [INFO] GET /api/notifications 304 3ms +[2026-01-05T10:42:24.931Z] [INFO] GET /api/knowledge/categories 304 5ms +[2026-01-05T10:42:26.412Z] [INFO] GET /api/tasks/6 200 10ms +[2026-01-05T10:42:26.453Z] [INFO] GET /api/tasks/6/history 404 5ms +[2026-01-05T10:42:26.464Z] [INFO] GET /api/files/6 304 9ms +[2026-01-05T10:42:26.469Z] [INFO] GET /api/comments/6 304 12ms +[2026-01-05T10:42:26.476Z] [INFO] GET /api/subtasks/6 304 5ms +[2026-01-05T10:42:26.477Z] [INFO] GET /sw.js 200 7ms +[2026-01-05T10:42:26.481Z] [INFO] GET /api/links/6 304 5ms +[2026-01-05T10:42:26.502Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwOTc0NCwiZXhwIjoxNzY3NjEwNjQ0fQ.FAXNkLMps4tb9fh8hZ4K1_J5txLnx7ehC7MVV_GBNoA 200 6ms +[2026-01-05T10:42:26.518Z] [INFO] GET /index.html 200 5ms +[2026-01-05T10:42:26.520Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-05T10:42:26.521Z] [INFO] GET / 200 5ms +[2026-01-05T10:42:26.554Z] [INFO] GET /css/base.css 200 5ms +[2026-01-05T10:42:26.557Z] [INFO] GET /css/components.css 200 7ms +[2026-01-05T10:42:26.582Z] [INFO] GET /css/board.css 200 2ms +[2026-01-05T10:42:26.587Z] [INFO] GET /css/modal.css 200 2ms +[2026-01-05T10:42:26.589Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T10:42:26.616Z] [INFO] GET /js/app.js 200 1ms +[2026-01-05T10:42:26.619Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T10:42:26.648Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-05T10:42:26.667Z] [INFO] GET /js/api.js 200 1ms +[2026-01-05T10:42:26.671Z] [INFO] GET /js/auth.js 200 1ms +[2026-01-05T10:42:26.686Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T10:42:26.699Z] [INFO] GET /js/offline.js 200 2ms +[2026-01-05T10:42:26.704Z] [INFO] GET /js/sync.js 200 3ms +[2026-01-05T10:42:26.716Z] [INFO] GET /js/board.js 200 2ms +[2026-01-05T10:42:26.729Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T10:42:26.740Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T10:42:26.763Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T10:42:26.770Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T10:42:26.775Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T10:42:26.795Z] [INFO] GET /js/tour.js 200 2ms +[2026-01-05T10:42:26.805Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T10:42:26.812Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T10:42:26.837Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T10:42:26.840Z] [INFO] GET /js/gitea.js 200 5ms +[2026-01-05T10:42:26.844Z] [INFO] GET /js/knowledge.js 200 1ms +[2026-01-05T10:42:26.873Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T10:42:26.877Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-05T10:42:26.889Z] [INFO] GET /css/list.css 200 1ms +[2026-01-05T10:42:26.905Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T10:42:26.916Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T10:42:26.923Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-05T10:42:26.937Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-05T10:42:26.952Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T10:42:26.966Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T10:42:26.976Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T10:42:27.417Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:42:29.038Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:42:29.042Z] [INFO] PUT /api/tasks/6 200 12ms +[2026-01-05T10:42:30.057Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:42:37.831Z] [INFO] GET / 200 4ms +[2026-01-05T10:42:37.901Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (XsvrYXtPhU9prWAyAAAR) +[2026-01-05T10:42:37.925Z] [INFO] GET /css/variables.css 200 11ms +[2026-01-05T10:42:37.927Z] [INFO] GET /css/components.css 200 11ms +[2026-01-05T10:42:37.928Z] [INFO] GET /css/calendar.css 200 10ms +[2026-01-05T10:42:37.931Z] [INFO] GET /css/base.css 200 7ms +[2026-01-05T10:42:37.934Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-05T10:42:37.935Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T10:42:37.955Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T10:42:37.962Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T10:42:37.983Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T10:42:37.985Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T10:42:37.993Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T10:42:37.995Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T10:42:37.996Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-05T10:42:38.004Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T10:42:38.012Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-05T10:42:38.022Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T10:42:38.101Z] [INFO] GET /js/store.js 200 3ms +[2026-01-05T10:42:38.103Z] [INFO] GET /js/api.js 200 5ms +[2026-01-05T10:42:38.105Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-05T10:42:38.107Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-05T10:42:38.108Z] [INFO] GET /js/board.js 200 4ms +[2026-01-05T10:42:38.109Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-05T10:42:38.133Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-05T10:42:38.134Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-05T10:42:38.136Z] [INFO] GET /js/list.js 200 4ms +[2026-01-05T10:42:38.138Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T10:42:38.141Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T10:42:38.160Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T10:42:38.166Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T10:42:38.170Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T10:42:38.172Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T10:42:38.174Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T10:42:38.175Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T10:42:38.195Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T10:42:38.205Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-05T10:42:38.259Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T10:42:38.264Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T10:42:38.265Z] [INFO] GET /assets/icons/task.svg 304 5ms +[2026-01-05T10:42:38.316Z] [INFO] GET /api/auth/users 304 2ms +[2026-01-05T10:42:38.350Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (XQLn5-NgKWmDSDImAAAT) +[2026-01-05T10:42:38.360Z] [INFO] GET /api/projects 304 7ms +[2026-01-05T10:42:38.391Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:42:38.402Z] [INFO] GET /api/stats/dashboard?projectId=2 304 7ms +[2026-01-05T10:42:38.406Z] [INFO] GET /api/columns/2 304 10ms +[2026-01-05T10:42:38.411Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-05T10:42:38.425Z] [INFO] GET /api/tasks/project/2 200 14ms +[2026-01-05T10:42:38.472Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-05T10:42:38.513Z] [INFO] GET /api/notifications 304 9ms +[2026-01-05T10:42:38.553Z] [INFO] GET /api/knowledge/categories 304 7ms +[2026-01-05T10:42:39.640Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-05T10:42:39.640Z] [INFO] POST /api/auth/logout 200 3ms +[2026-01-05T10:42:39.644Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-05T10:42:39.645Z] [INFO] POST /api/auth/logout 200 3ms +[2026-01-05T10:42:39.670Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (XQLn5-NgKWmDSDImAAAT) +[2026-01-05T10:42:46.524Z] [INFO] GET / 200 4ms +[2026-01-05T10:42:46.601Z] [INFO] GET /css/variables.css 200 10ms +[2026-01-05T10:42:46.626Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T10:42:46.667Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T10:42:46.669Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T10:42:46.671Z] [INFO] GET /css/list.css 200 6ms +[2026-01-05T10:42:46.673Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-05T10:42:46.674Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-05T10:42:46.676Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T10:42:46.703Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T10:42:46.710Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-05T10:42:46.714Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T10:42:46.733Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T10:42:46.735Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-05T10:42:46.745Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T10:42:46.747Z] [INFO] GET /css/responsive.css 200 5ms +[2026-01-05T10:42:46.753Z] [INFO] GET /js/app.js 200 8ms +[2026-01-05T10:42:46.833Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-05T10:42:46.837Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-05T10:42:46.840Z] [INFO] GET /js/auth.js 200 8ms +[2026-01-05T10:42:46.843Z] [INFO] GET /js/store.js 200 8ms +[2026-01-05T10:42:46.845Z] [INFO] GET /js/api.js 200 6ms +[2026-01-05T10:42:46.847Z] [INFO] GET /js/board.js 200 5ms +[2026-01-05T10:42:46.862Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T10:42:46.872Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-05T10:42:46.875Z] [INFO] GET /js/list.js 200 6ms +[2026-01-05T10:42:46.882Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-05T10:42:46.883Z] [INFO] GET /js/undo.js 200 5ms +[2026-01-05T10:42:46.910Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-05T10:42:46.912Z] [INFO] GET /js/admin.js 200 6ms +[2026-01-05T10:42:46.914Z] [INFO] GET /js/gitea.js 200 7ms +[2026-01-05T10:42:46.917Z] [INFO] GET /js/knowledge.js 200 8ms +[2026-01-05T10:42:46.920Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T10:42:46.923Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T10:42:46.948Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-05T10:42:46.951Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-05T10:42:46.997Z] [INFO] GET /sw.js 200 4ms +[2026-01-05T10:42:46.999Z] [INFO] GET /assets/icons/task.svg 200 8ms +[2026-01-05T10:42:47.039Z] [INFO] GET /index.html 200 9ms +[2026-01-05T10:42:47.044Z] [INFO] GET /css/variables.css 200 8ms +[2026-01-05T10:42:47.046Z] [INFO] GET / 200 9ms +[2026-01-05T10:42:47.081Z] [INFO] GET /css/base.css 200 6ms +[2026-01-05T10:42:47.083Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T10:42:47.088Z] [INFO] GET /css/board.css 200 2ms +[2026-01-05T10:42:47.116Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T10:42:47.120Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-05T10:42:47.123Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T10:42:47.149Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T10:42:47.152Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-05T10:42:47.181Z] [INFO] GET /js/api.js 200 3ms +[2026-01-05T10:42:47.186Z] [INFO] GET /js/store.js 200 6ms +[2026-01-05T10:42:47.188Z] [INFO] GET /js/auth.js 200 5ms +[2026-01-05T10:42:47.213Z] [INFO] GET /js/offline.js 200 2ms +[2026-01-05T10:42:47.217Z] [INFO] GET /js/board.js 200 2ms +[2026-01-05T10:42:47.222Z] [INFO] GET /js/sync.js 200 2ms +[2026-01-05T10:42:47.241Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T10:42:47.247Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T10:42:47.256Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T10:42:47.274Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T10:42:47.276Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T10:42:47.296Z] [INFO] GET /js/tour.js 200 2ms +[2026-01-05T10:42:47.303Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T10:42:47.308Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T10:42:47.335Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T10:42:47.336Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T10:42:47.339Z] [INFO] GET /js/knowledge.js 200 6ms +[2026-01-05T10:42:47.366Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T10:42:47.373Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T10:42:47.388Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T10:42:47.400Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T10:42:47.403Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-05T10:42:47.422Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T10:42:47.430Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-05T10:42:47.433Z] [INFO] GET /css/gitea.css 200 0ms +[2026-01-05T10:42:47.454Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-05T10:42:47.471Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-05T10:42:51.237Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T10:42:51.237Z] [INFO] POST /api/auth/login 200 463ms +[2026-01-05T10:42:51.276Z] [INFO] GET /api/auth/users 200 4ms +[2026-01-05T10:42:51.308Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (BxvruqMVUpl052e7AAAV) +[2026-01-05T10:42:51.317Z] [INFO] GET /api/projects 200 4ms +[2026-01-05T10:42:51.354Z] [INFO] GET /api/stats/dashboard?projectId=2 200 9ms +[2026-01-05T10:42:51.361Z] [INFO] GET /api/labels/2 200 6ms +[2026-01-05T10:42:51.378Z] [INFO] GET /api/tasks/project/2 200 16ms +[2026-01-05T10:42:51.379Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T10:42:51.385Z] [INFO] GET /api/columns/2 200 4ms +[2026-01-05T10:42:51.482Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 9ms +[2026-01-05T10:42:51.524Z] [INFO] GET /api/notifications 200 5ms +[2026-01-05T10:42:51.564Z] [INFO] GET /api/knowledge/categories 200 10ms +[2026-01-05T10:42:52.445Z] [INFO] GET /api/tasks/6 200 10ms +[2026-01-05T10:42:52.489Z] [INFO] GET /api/links/6 200 8ms +[2026-01-05T10:42:52.496Z] [INFO] GET /api/subtasks/6 200 6ms +[2026-01-05T10:42:52.501Z] [INFO] GET /api/tasks/6/history 404 5ms +[2026-01-05T10:42:52.505Z] [INFO] GET /api/comments/6 200 4ms +[2026-01-05T10:42:52.509Z] [INFO] GET /api/files/6 200 4ms +[2026-01-05T10:42:52.558Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYwOTc3MSwiZXhwIjoxNzY3NjEwNjcxfQ._xlp0A3s-8TBFy4Pw9MKf6vBEXGjjazjRPdHpfAO6Ng 200 12ms +[2026-01-05T10:42:53.435Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T10:42:55.326Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T10:42:55.329Z] [INFO] PUT /api/tasks/6 200 11ms +[2026-01-05T10:42:56.161Z] [INFO] GET /api/tasks/14 200 11ms +[2026-01-05T10:42:56.204Z] [INFO] GET /api/comments/14 200 7ms +[2026-01-05T10:42:56.209Z] [INFO] GET /api/subtasks/14 200 11ms +[2026-01-05T10:42:56.215Z] [INFO] GET /api/tasks/14/history 404 4ms +[2026-01-05T10:42:56.221Z] [INFO] GET /api/files/14 200 5ms +[2026-01-05T10:42:56.226Z] [INFO] GET /api/links/14 200 4ms +[2026-01-05T10:42:57.153Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T10:42:57.169Z] [INFO] Aufgabe aktualisiert: Namensänderung - Damit verbundene Todos (ID: 14) +[2026-01-05T10:42:57.170Z] [INFO] PUT /api/tasks/14 200 6ms +[2026-01-05T10:42:58.174Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T10:49:58.868Z] [INFO] POST / 200 4ms +[2026-01-05T10:52:58.774Z] [INFO] POST /api/auth/refresh 200 17ms +[2026-01-05T11:02:59.754Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T11:10:09.523Z] [INFO] HEAD / 200 1ms +[2026-01-05T11:10:10.089Z] [INFO] GET / 206 10ms +[2026-01-05T11:10:10.513Z] [INFO] HEAD /_next 200 2ms +[2026-01-05T11:10:11.443Z] [INFO] POST / 200 4ms +[2026-01-05T11:10:11.920Z] [INFO] POST /_next 200 3ms +[2026-01-05T11:13:00.711Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T11:23:01.718Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T11:33:02.706Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T11:36:07.518Z] [INFO] POST / 200 1065ms +[2026-01-05T11:43:03.694Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T11:53:04.698Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T12:03:05.684Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T12:13:06.690Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T12:23:07.639Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T12:29:50.053Z] [INFO] GET / 200 3ms +[2026-01-05T12:29:50.115Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (BxvruqMVUpl052e7AAAV) +[2026-01-05T12:29:50.129Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-05T12:29:50.159Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T12:29:50.195Z] [INFO] GET /css/components.css 200 7ms +[2026-01-05T12:29:50.196Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T12:29:50.202Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T12:29:50.204Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T12:29:50.205Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T12:29:50.206Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T12:29:50.254Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T12:29:50.292Z] [INFO] GET /css/knowledge.css 200 8ms +[2026-01-05T12:29:50.294Z] [INFO] GET /css/mobile.css 200 8ms +[2026-01-05T12:29:50.298Z] [INFO] GET /css/notifications.css 200 10ms +[2026-01-05T12:29:50.300Z] [INFO] GET /css/responsive.css 200 10ms +[2026-01-05T12:29:50.302Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-05T12:29:50.303Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T12:29:50.326Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T12:29:50.391Z] [INFO] GET /js/store.js 200 8ms +[2026-01-05T12:29:50.398Z] [INFO] GET /js/offline.js 200 9ms +[2026-01-05T12:29:50.401Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-05T12:29:50.404Z] [INFO] GET /js/api.js 200 8ms +[2026-01-05T12:29:50.408Z] [INFO] GET /js/sync.js 200 8ms +[2026-01-05T12:29:50.409Z] [INFO] GET /js/board.js 200 6ms +[2026-01-05T12:29:50.420Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T12:29:50.421Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T12:29:50.434Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-05T12:29:50.435Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T12:29:50.438Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-05T12:29:50.449Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T12:29:50.459Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T12:29:50.461Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T12:29:50.467Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T12:29:50.476Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T12:29:50.477Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T12:29:50.481Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-05T12:29:50.487Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T12:29:50.528Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T12:29:50.531Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T12:29:50.536Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T12:29:50.576Z] [INFO] GET /api/auth/users 304 8ms +[2026-01-05T12:29:50.614Z] [INFO] GET /api/projects 304 7ms +[2026-01-05T12:29:50.624Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (yr5E6z0EBgewrpZJAAAX) +[2026-01-05T12:29:50.649Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-05T12:29:50.656Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-05T12:29:50.672Z] [INFO] GET /api/tasks/project/2 200 16ms +[2026-01-05T12:29:50.677Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T12:29:50.679Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T12:29:50.720Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-05T12:29:50.754Z] [INFO] GET /api/notifications 304 4ms +[2026-01-05T12:29:50.807Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-05T12:29:52.137Z] [INFO] GET /api/tasks/6 200 6ms +[2026-01-05T12:29:52.170Z] [INFO] GET /api/subtasks/6 304 4ms +[2026-01-05T12:29:52.173Z] [INFO] GET /api/links/6 304 6ms +[2026-01-05T12:29:52.177Z] [INFO] GET /api/files/6 304 3ms +[2026-01-05T12:29:52.181Z] [INFO] GET /api/comments/6 304 3ms +[2026-01-05T12:29:52.183Z] [INFO] GET /api/tasks/6/history 404 5ms +[2026-01-05T12:29:52.223Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYxNjE5MCwiZXhwIjoxNzY3NjE3MDkwfQ.-DnyXJnP0bX8UPu9wFaY43YbFnOQuZVy8yl--FKospU 200 8ms +[2026-01-05T12:29:53.765Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T12:29:53.769Z] [INFO] PUT /api/tasks/6 200 22ms +[2026-01-05T12:29:54.769Z] [INFO] GET /css/base.css 200 6ms +[2026-01-05T12:29:54.770Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T12:29:54.775Z] [INFO] GET /css/components.css 200 9ms +[2026-01-05T12:29:54.782Z] [INFO] GET /css/modal.css 200 14ms +[2026-01-05T12:29:54.791Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-05T12:29:54.792Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-05T12:29:54.801Z] [INFO] GET /css/list.css 200 1ms +[2026-01-05T12:29:54.841Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-05T12:29:54.847Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T12:29:54.849Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-05T12:29:54.853Z] [INFO] GET /css/proposals.css 200 7ms +[2026-01-05T12:29:54.852Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-05T12:29:54.859Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T12:29:54.877Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T12:29:54.885Z] [INFO] GET /css/mobile.css 200 5ms +[2026-01-05T12:29:55.595Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T12:30:08.616Z] [INFO] GET /api/tasks/6 200 7ms +[2026-01-05T12:30:08.667Z] [INFO] GET /api/subtasks/6 200 10ms +[2026-01-05T12:30:08.676Z] [INFO] GET /api/tasks/6/history 404 7ms +[2026-01-05T12:30:08.684Z] [INFO] GET /api/files/6 200 14ms +[2026-01-05T12:30:08.690Z] [INFO] GET /api/comments/6 200 13ms +[2026-01-05T12:30:08.694Z] [INFO] GET /api/links/6 200 16ms +[2026-01-05T12:30:08.729Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYxNjE5NSwiZXhwIjoxNzY3NjE3MDk1fQ.Ru_dWExytIRnPqQRpzrjcNIct5g-FMMCSFoPatMQzqQ 200 11ms +[2026-01-05T12:30:09.628Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T12:30:15.447Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T12:30:15.449Z] [INFO] PUT /api/tasks/6 200 15ms +[2026-01-05T12:30:16.442Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T12:30:20.259Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T12:30:20.261Z] [INFO] PUT /api/tasks/6 200 16ms +[2026-01-05T12:30:21.257Z] [INFO] POST /api/auth/refresh 200 15ms +[2026-01-05T12:30:50.472Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T12:30:50.481Z] [INFO] PUT /api/tasks/6 200 29ms +[2026-01-05T12:30:51.455Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T12:35:56.718Z] [INFO] POST / 200 3ms +[2026-01-05T12:40:52.621Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T12:50:53.593Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T13:00:54.573Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T13:10:55.591Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T13:20:56.570Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T13:26:30.692Z] [INFO] GET / 200 5ms +[2026-01-05T13:28:09.826Z] [INFO] GET / 200 3ms +[2026-01-05T13:30:21.619Z] [INFO] GET / 200 3ms +[2026-01-05T13:30:21.693Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (yr5E6z0EBgewrpZJAAAX) +[2026-01-05T13:30:21.702Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T13:30:21.736Z] [INFO] GET /css/base.css 200 4ms +[2026-01-05T13:30:21.757Z] [INFO] GET /css/components.css 200 4ms +[2026-01-05T13:30:21.773Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T13:30:21.775Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T13:30:21.782Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T13:30:21.802Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-05T13:30:21.803Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T13:30:21.807Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T13:30:21.815Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T13:30:21.825Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T13:30:21.829Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T13:30:21.833Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T13:30:21.847Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T13:30:21.848Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T13:30:21.856Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T13:30:21.924Z] [INFO] GET /js/api.js 200 8ms +[2026-01-05T13:30:21.931Z] [INFO] GET /js/store.js 200 12ms +[2026-01-05T13:30:21.933Z] [INFO] GET /js/auth.js 200 12ms +[2026-01-05T13:30:21.938Z] [INFO] GET /js/board.js 200 6ms +[2026-01-05T13:30:21.937Z] [INFO] GET /js/offline.js 200 8ms +[2026-01-05T13:30:21.940Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-05T13:30:21.963Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-05T13:30:21.968Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-05T13:30:21.971Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T13:30:21.974Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T13:30:21.977Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T13:30:21.998Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T13:30:21.999Z] [INFO] GET /js/admin.js 200 5ms +[2026-01-05T13:30:22.001Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T13:30:22.003Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T13:30:22.012Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T13:30:22.013Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T13:30:22.034Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-05T13:30:22.036Z] [INFO] GET /js/utils.js 200 6ms +[2026-01-05T13:30:22.078Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T13:30:22.081Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-05T13:30:22.085Z] [INFO] GET /api/auth/users 304 3ms +[2026-01-05T13:30:22.125Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T13:30:22.154Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (XIVFgop1HWglR4AxAAAZ) +[2026-01-05T13:30:22.168Z] [INFO] GET /api/projects 304 3ms +[2026-01-05T13:30:22.202Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T13:30:22.220Z] [INFO] GET /api/tasks/project/2 200 17ms +[2026-01-05T13:30:22.224Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-05T13:30:22.229Z] [INFO] GET /api/stats/dashboard?projectId=2 304 4ms +[2026-01-05T13:30:22.232Z] [INFO] GET /api/labels/2 304 6ms +[2026-01-05T13:30:22.281Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 10ms +[2026-01-05T13:30:22.328Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T13:30:22.378Z] [INFO] GET /api/knowledge/categories 304 8ms +[2026-01-05T13:30:23.803Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T13:30:23.840Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T13:30:23.843Z] [INFO] GET / 200 5ms +[2026-01-05T13:30:23.845Z] [INFO] GET /index.html 200 6ms +[2026-01-05T13:30:23.877Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T13:30:23.890Z] [INFO] GET /css/components.css 200 2ms +[2026-01-05T13:30:23.907Z] [INFO] GET /css/board.css 200 2ms +[2026-01-05T13:30:23.920Z] [INFO] GET /css/calendar.css 200 2ms +[2026-01-05T13:30:23.921Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-05T13:30:23.953Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T13:30:23.955Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T13:30:23.962Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-05T13:30:23.990Z] [INFO] GET /js/api.js 200 3ms +[2026-01-05T13:30:23.992Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-05T13:30:24.024Z] [INFO] GET /js/offline.js 200 5ms +[2026-01-05T13:30:24.026Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-05T13:30:24.028Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T13:30:24.061Z] [INFO] GET /js/board.js 200 5ms +[2026-01-05T13:30:24.065Z] [INFO] GET /js/task-modal.js 200 7ms +[2026-01-05T13:30:24.075Z] [INFO] GET /js/calendar.js 200 11ms +[2026-01-05T13:30:24.106Z] [INFO] GET /js/list.js 200 14ms +[2026-01-05T13:30:24.107Z] [INFO] GET /js/shortcuts.js 200 7ms +[2026-01-05T13:30:24.135Z] [INFO] GET /js/undo.js 200 22ms +[2026-01-05T13:30:24.145Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T13:30:24.148Z] [INFO] GET /js/tour.js 200 7ms +[2026-01-05T13:30:24.169Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T13:30:24.174Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T13:30:24.178Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T13:30:24.205Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T13:30:24.207Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T13:30:24.215Z] [INFO] GET /js/mobile.js 200 6ms +[2026-01-05T13:30:24.233Z] [INFO] GET /css/list.css 200 1ms +[2026-01-05T13:30:24.237Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-05T13:30:24.246Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T13:30:24.267Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-05T13:30:24.272Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T13:30:24.277Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T13:30:24.300Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T13:30:24.307Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T13:30:24.550Z] [INFO] GET /api/tasks/6 200 13ms +[2026-01-05T13:30:24.608Z] [INFO] GET /api/comments/6 304 6ms +[2026-01-05T13:30:24.614Z] [INFO] GET /api/files/6 304 5ms +[2026-01-05T13:30:24.620Z] [INFO] GET /api/links/6 304 6ms +[2026-01-05T13:30:24.626Z] [INFO] GET /api/subtasks/6 304 6ms +[2026-01-05T13:30:24.634Z] [INFO] GET /api/tasks/6/history 404 13ms +[2026-01-05T13:30:24.651Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYxOTgyMiwiZXhwIjoxNzY3NjIwNzIyfQ.9HivXmFaJLauIhmstzS5mmmX6kkDrWHBPJXwLQdk_54 200 7ms +[2026-01-05T13:30:25.554Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T13:30:26.232Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T13:30:26.233Z] [INFO] PUT /api/tasks/6 200 14ms +[2026-01-05T13:30:27.228Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T13:30:31.045Z] [INFO] GET / 200 4ms +[2026-01-05T13:30:31.101Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (XIVFgop1HWglR4AxAAAZ) +[2026-01-05T13:30:31.114Z] [INFO] GET /css/board.css 200 3ms +[2026-01-05T13:30:31.117Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T13:30:31.119Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-05T13:30:31.121Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T13:30:31.125Z] [INFO] GET /css/base.css 200 7ms +[2026-01-05T13:30:31.126Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T13:30:31.151Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T13:30:31.157Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-05T13:30:31.171Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T13:30:31.173Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-05T13:30:31.182Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T13:30:31.190Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T13:30:31.194Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-05T13:30:31.198Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T13:30:31.206Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T13:30:31.219Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T13:30:31.281Z] [INFO] GET /js/store.js 200 4ms +[2026-01-05T13:30:31.284Z] [INFO] GET /js/api.js 200 5ms +[2026-01-05T13:30:31.285Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-05T13:30:31.287Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-05T13:30:31.316Z] [INFO] GET /js/task-modal.js 200 6ms +[2026-01-05T13:30:31.318Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-05T13:30:31.321Z] [INFO] GET /js/calendar.js 200 8ms +[2026-01-05T13:30:31.324Z] [INFO] GET /js/list.js 200 9ms +[2026-01-05T13:30:31.327Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T13:30:31.331Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T13:30:31.353Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-05T13:30:31.355Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T13:30:31.360Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T13:30:31.362Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T13:30:31.371Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T13:30:31.385Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T13:30:31.391Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T13:30:31.393Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T13:30:31.403Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T13:30:31.462Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T13:30:31.467Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T13:30:31.471Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T13:30:31.511Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T13:30:31.550Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (KfoP3cwwCKcm_CAtAAAb) +[2026-01-05T13:30:31.556Z] [INFO] GET /api/projects 304 5ms +[2026-01-05T13:30:31.594Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-05T13:30:31.617Z] [INFO] GET /api/tasks/project/2 200 21ms +[2026-01-05T13:30:31.622Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T13:30:31.625Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T13:30:31.635Z] [INFO] GET /api/stats/dashboard?projectId=2 304 6ms +[2026-01-05T13:30:31.660Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 4ms +[2026-01-05T13:30:31.704Z] [INFO] GET /api/notifications 304 6ms +[2026-01-05T13:30:31.743Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-05T13:30:32.250Z] [INFO] GET /api/tasks/6 200 16ms +[2026-01-05T13:30:32.286Z] [INFO] GET /api/comments/6 304 5ms +[2026-01-05T13:30:32.292Z] [INFO] GET /api/links/6 304 5ms +[2026-01-05T13:30:32.296Z] [INFO] GET /api/tasks/6/history 404 3ms +[2026-01-05T13:30:32.300Z] [INFO] GET /api/subtasks/6 304 3ms +[2026-01-05T13:30:32.304Z] [INFO] GET /api/files/6 304 3ms +[2026-01-05T13:30:32.347Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYxOTgzMSwiZXhwIjoxNzY3NjIwNzMxfQ.-ezm87xvNvboEqoPgN7VrHrWWM3j9S6NFg9ppYCzHZw 200 7ms +[2026-01-05T13:30:33.244Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T13:30:33.504Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T13:30:33.508Z] [INFO] PUT /api/tasks/6 200 22ms +[2026-01-05T13:30:34.491Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T13:31:16.210Z] [INFO] GET / 200 5ms +[2026-01-05T13:31:16.271Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (KfoP3cwwCKcm_CAtAAAb) +[2026-01-05T13:31:16.281Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T13:31:16.289Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T13:31:16.290Z] [INFO] GET /css/base.css 200 5ms +[2026-01-05T13:31:16.297Z] [INFO] GET /css/calendar.css 200 9ms +[2026-01-05T13:31:16.294Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T13:31:16.298Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T13:31:16.311Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T13:31:16.326Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T13:31:16.359Z] [INFO] GET /css/proposals.css 200 8ms +[2026-01-05T13:31:16.369Z] [INFO] GET /css/notifications.css 200 12ms +[2026-01-05T13:31:16.373Z] [INFO] GET /css/gitea.css 200 10ms +[2026-01-05T13:31:16.374Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-05T13:31:16.376Z] [INFO] GET /css/responsive.css 200 6ms +[2026-01-05T13:31:16.377Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-05T13:31:16.387Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-05T13:31:16.401Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T13:31:16.464Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-05T13:31:16.465Z] [INFO] GET /js/store.js 200 4ms +[2026-01-05T13:31:16.467Z] [INFO] GET /js/api.js 200 5ms +[2026-01-05T13:31:16.469Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-05T13:31:16.471Z] [INFO] GET /js/offline.js 200 5ms +[2026-01-05T13:31:16.472Z] [INFO] GET /js/board.js 200 4ms +[2026-01-05T13:31:16.499Z] [INFO] GET /js/task-modal.js 200 6ms +[2026-01-05T13:31:16.502Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-05T13:31:16.507Z] [INFO] GET /js/list.js 200 6ms +[2026-01-05T13:31:16.511Z] [INFO] GET /js/shortcuts.js 200 6ms +[2026-01-05T13:31:16.521Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T13:31:16.531Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-05T13:31:16.540Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T13:31:16.543Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-05T13:31:16.545Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T13:31:16.551Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T13:31:16.554Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T13:31:16.573Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T13:31:16.574Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T13:31:16.619Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T13:31:16.623Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T13:31:16.627Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T13:31:16.663Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T13:31:16.696Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (wYC-ZnXERc9VbnBpAAAd) +[2026-01-05T13:31:16.707Z] [INFO] GET /api/projects 304 7ms +[2026-01-05T13:31:16.741Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T13:31:16.751Z] [INFO] GET /api/stats/dashboard?projectId=2 304 8ms +[2026-01-05T13:31:16.758Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-05T13:31:16.763Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T13:31:16.779Z] [INFO] GET /api/tasks/project/2 200 15ms +[2026-01-05T13:31:16.830Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 10ms +[2026-01-05T13:31:16.864Z] [INFO] GET /api/notifications 304 6ms +[2026-01-05T13:31:16.898Z] [INFO] GET /api/knowledge/categories 304 5ms +[2026-01-05T13:31:18.339Z] [INFO] GET /sw.js 200 4ms +[2026-01-05T13:31:18.404Z] [INFO] GET /api/tasks/6 200 19ms +[2026-01-05T13:31:18.409Z] [INFO] GET /index.html 200 31ms +[2026-01-05T13:31:18.410Z] [INFO] GET /css/variables.css 200 28ms +[2026-01-05T13:31:18.417Z] [INFO] GET / 200 11ms +[2026-01-05T13:31:18.452Z] [INFO] GET /api/links/6 304 13ms +[2026-01-05T13:31:18.459Z] [INFO] GET /api/files/6 304 5ms +[2026-01-05T13:31:18.469Z] [INFO] GET /api/subtasks/6 304 9ms +[2026-01-05T13:31:18.474Z] [INFO] GET /api/comments/6 304 4ms +[2026-01-05T13:31:18.481Z] [INFO] GET /api/tasks/6/history 404 6ms +[2026-01-05T13:31:18.485Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T13:31:18.486Z] [INFO] GET /css/components.css 200 3ms +[2026-01-05T13:31:18.491Z] [INFO] GET /css/board.css 200 2ms +[2026-01-05T13:31:18.506Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYxOTg3NiwiZXhwIjoxNzY3NjIwNzc2fQ.1mc0217OEvvClRHGGjznCiSYmhPWAljAQQJfBDKHmcQ 200 10ms +[2026-01-05T13:31:18.517Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-05T13:31:18.521Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T13:31:18.551Z] [INFO] GET /css/responsive.css 200 7ms +[2026-01-05T13:31:18.555Z] [INFO] GET /js/app.js 200 8ms +[2026-01-05T13:31:18.577Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-05T13:31:18.589Z] [INFO] GET /js/api.js 200 9ms +[2026-01-05T13:31:18.595Z] [INFO] GET /js/auth.js 200 9ms +[2026-01-05T13:31:18.605Z] [INFO] GET /js/store.js 200 1ms +[2026-01-05T13:31:18.626Z] [INFO] GET /js/sync.js 200 3ms +[2026-01-05T13:31:18.635Z] [INFO] GET /js/offline.js 200 2ms +[2026-01-05T13:31:18.650Z] [INFO] GET /js/board.js 200 4ms +[2026-01-05T13:31:18.662Z] [INFO] GET /js/task-modal.js 200 8ms +[2026-01-05T13:31:18.668Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T13:31:18.701Z] [INFO] GET /js/list.js 200 6ms +[2026-01-05T13:31:18.703Z] [INFO] GET /js/shortcuts.js 200 6ms +[2026-01-05T13:31:18.710Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T13:31:18.735Z] [INFO] GET /js/tour.js 200 3ms +[2026-01-05T13:31:18.745Z] [INFO] GET /js/admin.js 200 6ms +[2026-01-05T13:31:18.748Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T13:31:18.766Z] [INFO] GET /js/notifications.js 200 1ms +[2026-01-05T13:31:18.776Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T13:31:18.781Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T13:31:18.814Z] [INFO] GET /js/coding.js 200 9ms +[2026-01-05T13:31:18.816Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-05T13:31:18.818Z] [INFO] GET /css/list.css 200 6ms +[2026-01-05T13:31:18.847Z] [INFO] GET /css/mobile.css 200 5ms +[2026-01-05T13:31:18.857Z] [INFO] GET /css/admin.css 200 7ms +[2026-01-05T13:31:18.860Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-05T13:31:18.882Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T13:31:18.886Z] [INFO] GET /css/gitea.css 200 1ms +[2026-01-05T13:31:18.895Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-05T13:31:18.911Z] [INFO] GET /css/coding.css 200 1ms +[2026-01-05T13:31:19.386Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T13:31:19.514Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T13:31:19.518Z] [INFO] PUT /api/tasks/6 200 22ms +[2026-01-05T13:31:20.078Z] [INFO] GET / 200 2ms +[2026-01-05T13:31:20.135Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (wYC-ZnXERc9VbnBpAAAd) +[2026-01-05T13:31:20.151Z] [INFO] GET /css/variables.css 200 9ms +[2026-01-05T13:31:20.157Z] [INFO] GET /css/base.css 200 9ms +[2026-01-05T13:31:20.160Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T13:31:20.163Z] [INFO] GET /css/components.css 200 7ms +[2026-01-05T13:31:20.166Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-05T13:31:20.167Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T13:31:20.183Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T13:31:20.190Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T13:31:20.213Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-05T13:31:20.217Z] [INFO] GET /css/notifications.css 200 7ms +[2026-01-05T13:31:20.224Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-05T13:31:20.226Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-05T13:31:20.228Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-05T13:31:20.231Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T13:31:20.246Z] [INFO] GET /css/mobile.css 200 6ms +[2026-01-05T13:31:20.254Z] [INFO] GET /js/app.js 200 1ms +[2026-01-05T13:31:20.314Z] [INFO] GET /js/store.js 200 4ms +[2026-01-05T13:31:20.318Z] [INFO] GET /js/api.js 200 5ms +[2026-01-05T13:31:20.322Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-05T13:31:20.324Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-05T13:31:20.326Z] [INFO] GET /js/offline.js 200 5ms +[2026-01-05T13:31:20.328Z] [INFO] GET /js/board.js 200 4ms +[2026-01-05T13:31:20.346Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T13:31:20.355Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T13:31:20.363Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-05T13:31:20.366Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-05T13:31:20.372Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T13:31:20.377Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T13:31:20.386Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-05T13:31:20.389Z] [INFO] GET /js/notifications.js 200 6ms +[2026-01-05T13:31:20.400Z] [INFO] GET /js/knowledge.js 200 7ms +[2026-01-05T13:31:20.404Z] [INFO] GET /js/gitea.js 200 7ms +[2026-01-05T13:31:20.408Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T13:31:20.416Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T13:31:20.418Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T13:31:20.466Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T13:31:20.475Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T13:31:20.477Z] [INFO] GET /assets/icons/task.svg 304 9ms +[2026-01-05T13:31:20.515Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T13:31:20.555Z] [INFO] GET /api/projects 304 10ms +[2026-01-05T13:31:20.566Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (42zkfW3AiSlJ5DkiAAAf) +[2026-01-05T13:31:20.587Z] [INFO] GET /api/stats/dashboard?projectId=2 304 7ms +[2026-01-05T13:31:20.592Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-05T13:31:20.621Z] [INFO] GET /api/tasks/project/2 200 28ms +[2026-01-05T13:31:20.626Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T13:31:20.629Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T13:31:20.673Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 8ms +[2026-01-05T13:31:20.708Z] [INFO] GET /api/notifications 304 6ms +[2026-01-05T13:31:20.750Z] [INFO] GET /api/knowledge/categories 304 7ms +[2026-01-05T13:31:22.119Z] [INFO] GET /api/tasks/6 200 14ms +[2026-01-05T13:31:22.158Z] [INFO] GET /api/links/6 304 8ms +[2026-01-05T13:31:22.166Z] [INFO] GET /api/subtasks/6 304 7ms +[2026-01-05T13:31:22.171Z] [INFO] GET /api/files/6 304 11ms +[2026-01-05T13:31:22.177Z] [INFO] GET /api/tasks/6/history 404 4ms +[2026-01-05T13:31:22.182Z] [INFO] GET /api/comments/6 304 4ms +[2026-01-05T13:31:22.202Z] [INFO] GET /sw.js 200 2ms +[2026-01-05T13:31:22.207Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYxOTg4MCwiZXhwIjoxNzY3NjIwNzgwfQ.so0ZGaFC11WRX3vHlh6DYaeYOH3aSuAjL8IG2jf99GQ 200 4ms +[2026-01-05T13:31:23.129Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T13:31:23.396Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T13:31:23.398Z] [INFO] PUT /api/tasks/6 200 16ms +[2026-01-05T13:31:24.382Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T13:31:30.216Z] [INFO] GET / 200 3ms +[2026-01-05T13:31:30.277Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (42zkfW3AiSlJ5DkiAAAf) +[2026-01-05T13:31:30.294Z] [INFO] GET /css/variables.css 200 8ms +[2026-01-05T13:31:30.297Z] [INFO] GET /css/modal.css 200 10ms +[2026-01-05T13:31:30.301Z] [INFO] GET /css/base.css 200 12ms +[2026-01-05T13:31:30.306Z] [INFO] GET /css/board.css 200 16ms +[2026-01-05T13:31:30.310Z] [INFO] GET /css/calendar.css 200 11ms +[2026-01-05T13:31:30.312Z] [INFO] GET /css/components.css 200 8ms +[2026-01-05T13:31:30.325Z] [INFO] GET /css/list.css 200 1ms +[2026-01-05T13:31:30.329Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T13:31:30.358Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T13:31:30.359Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T13:31:30.361Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T13:31:30.365Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-05T13:31:30.366Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T13:31:30.372Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T13:31:30.386Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T13:31:30.392Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T13:31:30.493Z] [INFO] GET /js/api.js 200 7ms +[2026-01-05T13:31:30.494Z] [INFO] GET /js/sync.js 200 7ms +[2026-01-05T13:31:30.501Z] [INFO] GET /js/offline.js 200 12ms +[2026-01-05T13:31:30.503Z] [INFO] GET /js/board.js 200 12ms +[2026-01-05T13:31:30.505Z] [INFO] GET /js/auth.js 200 5ms +[2026-01-05T13:31:30.507Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T13:31:30.523Z] [INFO] GET /js/task-modal.js 200 1ms +[2026-01-05T13:31:30.524Z] [INFO] GET /js/list.js 200 1ms +[2026-01-05T13:31:30.535Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T13:31:30.538Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-05T13:31:30.540Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T13:31:30.556Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T13:31:30.558Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T13:31:30.564Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T13:31:30.569Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T13:31:30.571Z] [INFO] GET /js/knowledge.js 200 1ms +[2026-01-05T13:31:30.585Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T13:31:30.588Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-05T13:31:30.601Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T13:31:30.641Z] [INFO] GET /api/auth/users 304 8ms +[2026-01-05T13:31:30.651Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T13:31:30.652Z] [INFO] GET /assets/icons/task.svg 304 9ms +[2026-01-05T13:31:30.691Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T13:31:30.717Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (HdJNYb-lYkgJKNjZAAAh) +[2026-01-05T13:31:30.730Z] [INFO] GET /api/projects 304 7ms +[2026-01-05T13:31:30.768Z] [INFO] GET /api/stats/dashboard?projectId=2 304 10ms +[2026-01-05T13:31:30.770Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T13:31:30.789Z] [INFO] GET /api/tasks/project/2 200 18ms +[2026-01-05T13:31:30.793Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-05T13:31:30.796Z] [INFO] GET /api/labels/2 304 6ms +[2026-01-05T13:31:30.844Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 4ms +[2026-01-05T13:31:30.886Z] [INFO] GET /api/notifications 304 3ms +[2026-01-05T13:31:30.926Z] [INFO] GET /api/knowledge/categories 304 7ms +[2026-01-05T13:31:38.636Z] [INFO] GET /api/tasks/6 200 13ms +[2026-01-05T13:31:38.682Z] [INFO] GET /api/links/6 304 6ms +[2026-01-05T13:31:38.690Z] [INFO] GET /api/subtasks/6 304 6ms +[2026-01-05T13:31:38.697Z] [INFO] GET /api/comments/6 304 5ms +[2026-01-05T13:31:38.708Z] [INFO] GET /api/tasks/6/history 404 10ms +[2026-01-05T13:31:38.712Z] [INFO] GET /api/files/6 304 11ms +[2026-01-05T13:31:38.751Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYxOTg5MCwiZXhwIjoxNzY3NjIwNzkwfQ.QD0vcDCFFLcRaENo6osDKeXwRXNvwc4LubSSGuCLrzk 200 6ms +[2026-01-05T13:31:39.641Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T13:31:47.780Z] [INFO] GET /css/variables.css 200 10ms +[2026-01-05T13:31:47.782Z] [INFO] GET /css/board.css 200 11ms +[2026-01-05T13:31:47.784Z] [INFO] GET /css/components.css 200 9ms +[2026-01-05T13:31:47.786Z] [INFO] GET /css/modal.css 200 9ms +[2026-01-05T13:31:47.788Z] [INFO] GET /css/base.css 200 9ms +[2026-01-05T13:31:47.790Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-05T13:31:47.811Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T13:31:47.820Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T13:31:47.834Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T13:31:47.848Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T13:31:47.850Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T13:31:47.854Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-05T13:31:47.866Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-05T13:31:47.867Z] [INFO] GET /css/responsive.css 200 5ms +[2026-01-05T13:31:47.869Z] [INFO] GET /css/mobile.css 200 6ms +[2026-01-05T13:31:48.623Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T13:32:16.717Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T13:32:16.719Z] [INFO] PUT /api/tasks/6 200 15ms +[2026-01-05T13:32:17.723Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T13:32:33.843Z] [INFO] GET /api/tasks/6 200 13ms +[2026-01-05T13:32:33.890Z] [INFO] GET /api/comments/6 200 9ms +[2026-01-05T13:32:33.897Z] [INFO] GET /api/files/6 200 5ms +[2026-01-05T13:32:33.901Z] [INFO] GET /api/tasks/6/history 404 3ms +[2026-01-05T13:32:33.904Z] [INFO] GET /api/links/6 200 2ms +[2026-01-05T13:32:33.907Z] [INFO] GET /api/subtasks/6 200 2ms +[2026-01-05T13:32:33.940Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYxOTkzNywiZXhwIjoxNzY3NjIwODM3fQ.iFnR8IVdqUCMGRsJPICXqwYahmYMQdDFUUAPDp6yltc 200 13ms +[2026-01-05T13:32:34.860Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T13:33:55.464Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T13:34:10.820Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T13:34:10.822Z] [INFO] PUT /api/tasks/6 200 12ms +[2026-01-05T13:34:11.809Z] [INFO] POST /api/auth/refresh 200 4ms +[2026-01-05T13:35:08.128Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T13:35:09.785Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T13:35:12.730Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T13:35:18.524Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T13:35:21.295Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T13:35:23.080Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T13:35:29.093Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T13:35:31.859Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T13:35:33.020Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T13:35:36.856Z] [INFO] Spalte aktualisiert: In Arbeit (ID: 5) +[2026-01-05T13:35:36.859Z] [INFO] PUT /api/columns/5 200 9ms +[2026-01-05T13:35:37.854Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T13:35:41.934Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T13:35:43.679Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T13:35:46.673Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T13:35:49.505Z] [INFO] POST /api/auth/refresh 200 4ms +[2026-01-05T13:35:58.546Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T13:36:39.174Z] [INFO] POST /api/auth/refresh 200 28ms +[2026-01-05T13:37:08.713Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T13:37:11.867Z] [INFO] GET /api/tasks/6 200 21ms +[2026-01-05T13:37:11.909Z] [INFO] GET /api/subtasks/6 304 8ms +[2026-01-05T13:37:11.941Z] [INFO] GET /api/links/6 304 9ms +[2026-01-05T13:37:11.957Z] [INFO] GET /api/files/6 304 4ms +[2026-01-05T13:37:11.966Z] [INFO] GET /api/comments/6 304 5ms +[2026-01-05T13:37:11.973Z] [INFO] GET /api/tasks/6/history 404 4ms +[2026-01-05T13:37:11.992Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYyMDIyOCwiZXhwIjoxNzY3NjIxMTI4fQ.Y3cN8xpNXGUggB45-QbJKaWB_jjRsyv2UDGOQW7Msyw 200 6ms +[2026-01-05T13:37:12.855Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T13:37:14.541Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T13:37:14.543Z] [INFO] PUT /api/tasks/6 200 22ms +[2026-01-05T13:37:14.937Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T13:37:14.940Z] [INFO] PUT /api/tasks/6 200 17ms +[2026-01-05T13:37:15.770Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T13:37:15.774Z] [INFO] PUT /api/tasks/6 200 24ms +[2026-01-05T13:37:16.144Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T13:37:16.149Z] [INFO] PUT /api/tasks/6 200 23ms +[2026-01-05T13:37:16.662Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T13:37:16.664Z] [INFO] PUT /api/tasks/6 200 16ms +[2026-01-05T13:37:17.495Z] [INFO] GET / 200 3ms +[2026-01-05T13:37:17.556Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (HdJNYb-lYkgJKNjZAAAh) +[2026-01-05T13:37:17.567Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T13:37:17.568Z] [INFO] GET /css/base.css 200 5ms +[2026-01-05T13:37:17.569Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T13:37:17.570Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-05T13:37:17.570Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T13:37:17.600Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T13:37:17.602Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T13:37:17.622Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T13:37:17.629Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-05T13:37:17.636Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-05T13:37:17.638Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T13:37:17.639Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T13:37:17.652Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T13:37:17.658Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T13:37:17.664Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T13:37:17.672Z] [INFO] GET /js/app.js 200 5ms +[2026-01-05T13:37:17.780Z] [INFO] GET /js/store.js 200 4ms +[2026-01-05T13:37:17.783Z] [INFO] GET /js/api.js 200 8ms +[2026-01-05T13:37:17.787Z] [INFO] GET /js/auth.js 200 8ms +[2026-01-05T13:37:17.788Z] [INFO] GET /js/sync.js 200 10ms +[2026-01-05T13:37:17.792Z] [INFO] GET /js/offline.js 200 11ms +[2026-01-05T13:37:17.797Z] [INFO] GET /js/board.js 200 12ms +[2026-01-05T13:37:17.814Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-05T13:37:17.816Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-05T13:37:17.826Z] [INFO] GET /js/list.js 200 8ms +[2026-01-05T13:37:17.832Z] [INFO] GET /js/shortcuts.js 200 12ms +[2026-01-05T13:37:17.839Z] [INFO] GET /js/undo.js 200 17ms +[2026-01-05T13:37:17.851Z] [INFO] GET /js/admin.js 200 5ms +[2026-01-05T13:37:17.853Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T13:37:17.855Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-05T13:37:17.860Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T13:37:17.867Z] [INFO] GET /js/gitea.js 200 1ms +[2026-01-05T13:37:17.879Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T13:37:17.890Z] [INFO] GET /js/mobile.js 200 7ms +[2026-01-05T13:37:17.893Z] [INFO] GET /js/utils.js 200 8ms +[2026-01-05T13:37:17.930Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T13:37:17.937Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T13:37:17.942Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T13:37:17.993Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-05T13:37:18.019Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (3HQu9qFgG9PbaF8YAAAj) +[2026-01-05T13:37:18.029Z] [INFO] GET /api/projects 304 6ms +[2026-01-05T13:37:18.058Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T13:37:18.077Z] [INFO] GET /api/tasks/project/2 200 16ms +[2026-01-05T13:37:18.084Z] [INFO] GET /api/columns/2 200 22ms +[2026-01-05T13:37:18.090Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-05T13:37:18.094Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T13:37:18.141Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-05T13:37:18.178Z] [INFO] GET /api/notifications 304 4ms +[2026-01-05T13:37:18.223Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-05T13:37:18.702Z] [INFO] GET /api/tasks/6 200 12ms +[2026-01-05T13:37:18.749Z] [INFO] GET /api/subtasks/6 304 6ms +[2026-01-05T13:37:18.754Z] [INFO] GET /api/links/6 304 4ms +[2026-01-05T13:37:18.765Z] [INFO] GET /api/tasks/6/history 404 8ms +[2026-01-05T13:37:18.774Z] [INFO] GET /api/files/6 304 9ms +[2026-01-05T13:37:18.782Z] [INFO] GET /api/comments/6 304 7ms +[2026-01-05T13:37:18.810Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYyMDIzNywiZXhwIjoxNzY3NjIxMTM3fQ.e_sQUEP8vpL48ULrZvXWyEFceWFijfpFWmVpa08tUYA 200 7ms +[2026-01-05T13:37:19.714Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T13:37:19.718Z] [INFO] GET /sw.js 200 2ms +[2026-01-05T13:37:19.755Z] [INFO] GET / 200 6ms +[2026-01-05T13:37:19.758Z] [INFO] GET /index.html 200 7ms +[2026-01-05T13:37:19.759Z] [INFO] GET /css/variables.css 200 7ms +[2026-01-05T13:37:19.785Z] [INFO] GET /css/base.css 200 1ms +[2026-01-05T13:37:19.801Z] [INFO] GET /css/components.css 200 1ms +[2026-01-05T13:37:19.810Z] [INFO] GET /css/board.css 200 2ms +[2026-01-05T13:37:19.817Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-05T13:37:19.842Z] [INFO] GET /css/calendar.css 200 2ms +[2026-01-05T13:37:19.845Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T13:37:19.865Z] [INFO] GET /js/app.js 200 1ms +[2026-01-05T13:37:19.875Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T13:37:19.881Z] [INFO] GET /js/api.js 200 3ms +[2026-01-05T13:37:19.906Z] [INFO] GET /js/auth.js 200 2ms +[2026-01-05T13:37:19.939Z] [INFO] GET /js/store.js 200 4ms +[2026-01-05T13:37:19.941Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-05T13:37:19.943Z] [INFO] GET /js/offline.js 200 5ms +[2026-01-05T13:37:19.971Z] [INFO] GET /js/board.js 200 3ms +[2026-01-05T13:37:19.976Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T13:37:19.990Z] [INFO] GET /js/calendar.js 200 1ms +[2026-01-05T13:37:19.999Z] [INFO] GET /js/list.js 200 1ms +[2026-01-05T13:37:20.007Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-05T13:37:20.029Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-05T13:37:20.054Z] [INFO] GET /js/tour.js 200 3ms +[2026-01-05T13:37:20.063Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T13:37:20.065Z] [INFO] GET /js/admin.js 200 5ms +[2026-01-05T13:37:20.091Z] [INFO] GET /js/notifications.js 200 1ms +[2026-01-05T13:37:20.092Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T13:37:20.098Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T13:37:20.123Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T13:37:20.129Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T13:37:20.148Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T13:37:20.159Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T13:37:20.162Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T13:37:20.177Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T13:37:20.201Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T13:37:20.203Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T13:37:20.207Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T13:37:20.229Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T13:37:24.289Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T13:37:24.291Z] [INFO] PUT /api/tasks/6 200 17ms +[2026-01-05T13:37:25.285Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T13:37:52.841Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-05T13:37:52.842Z] [INFO] POST /api/auth/logout 200 6ms +[2026-01-05T13:37:52.844Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-05T13:37:52.845Z] [INFO] POST /api/auth/logout 200 2ms +[2026-01-05T13:37:52.870Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (3HQu9qFgG9PbaF8YAAAj) +[2026-01-05T13:37:57.324Z] [INFO] Login erfolgreich: admin +[2026-01-05T13:37:57.326Z] [INFO] POST /api/auth/login 200 472ms +[2026-01-05T13:37:57.369Z] [INFO] GET /api/admin/users 200 12ms +[2026-01-05T13:37:57.416Z] [INFO] GET /api/admin/upload-settings 200 15ms +[2026-01-05T13:38:01.023Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T13:38:02.832Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T13:38:05.146Z] [INFO] GET / 200 3ms +[2026-01-05T13:38:05.217Z] [INFO] GET /css/variables.css 200 7ms +[2026-01-05T13:38:05.224Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-05T13:38:05.227Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-05T13:38:05.231Z] [INFO] GET /css/components.css 200 9ms +[2026-01-05T13:38:05.234Z] [INFO] GET /css/board.css 200 8ms +[2026-01-05T13:38:05.235Z] [INFO] GET /css/base.css 200 6ms +[2026-01-05T13:38:05.244Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T13:38:05.275Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T13:38:05.277Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T13:38:05.283Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T13:38:05.285Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T13:38:05.294Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T13:38:05.296Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-05T13:38:05.304Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-05T13:38:05.305Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T13:38:05.323Z] [INFO] GET /js/app.js 200 1ms +[2026-01-05T13:38:05.380Z] [INFO] GET /js/store.js 200 2ms +[2026-01-05T13:38:05.381Z] [INFO] GET /js/api.js 200 3ms +[2026-01-05T13:38:05.384Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-05T13:38:05.386Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-05T13:38:05.387Z] [INFO] GET /js/board.js 200 4ms +[2026-01-05T13:38:05.389Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-05T13:38:05.410Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T13:38:05.420Z] [INFO] GET /js/list.js 200 4ms +[2026-01-05T13:38:05.422Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-05T13:38:05.431Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-05T13:38:05.443Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T13:38:05.453Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T13:38:05.472Z] [INFO] GET /js/notifications.js 200 7ms +[2026-01-05T13:38:05.474Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T13:38:05.476Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-05T13:38:05.477Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T13:38:05.478Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T13:38:05.482Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-05T13:38:05.505Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T13:38:05.555Z] [INFO] POST /api/auth/refresh 200 17ms +[2026-01-05T13:38:05.577Z] [INFO] GET /api/auth/users 304 15ms +[2026-01-05T13:38:05.580Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T13:38:05.613Z] [INFO] GET /api/admin/users 304 3ms +[2026-01-05T13:38:05.654Z] [INFO] GET /api/admin/upload-settings 304 8ms +[2026-01-05T13:38:06.153Z] [INFO] Logout: admin +[2026-01-05T13:38:06.155Z] [INFO] POST /api/auth/logout 200 9ms +[2026-01-05T13:38:06.198Z] [INFO] GET / 200 5ms +[2026-01-05T13:38:06.250Z] [INFO] GET /css/variables.css 200 8ms +[2026-01-05T13:38:06.254Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-05T13:38:06.256Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-05T13:38:06.259Z] [INFO] GET /css/base.css 200 7ms +[2026-01-05T13:38:06.261Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T13:38:06.262Z] [INFO] GET /css/board.css 200 4ms +[2026-01-05T13:38:06.280Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T13:38:06.288Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-05T13:38:06.289Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T13:38:06.305Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-05T13:38:06.310Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T13:38:06.311Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T13:38:06.314Z] [INFO] GET /css/knowledge.css 200 1ms +[2026-01-05T13:38:06.318Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-05T13:38:06.319Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T13:38:06.337Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T13:38:06.406Z] [INFO] GET /js/sync.js 200 7ms +[2026-01-05T13:38:06.407Z] [INFO] GET /js/api.js 200 7ms +[2026-01-05T13:38:06.411Z] [INFO] GET /js/auth.js 200 8ms +[2026-01-05T13:38:06.413Z] [INFO] GET /js/offline.js 200 8ms +[2026-01-05T13:38:06.415Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T13:38:06.415Z] [INFO] GET /js/store.js 200 6ms +[2026-01-05T13:38:06.438Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T13:38:06.442Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-05T13:38:06.449Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T13:38:06.458Z] [INFO] GET /js/list.js 200 1ms +[2026-01-05T13:38:06.464Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T13:38:06.470Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T13:38:06.471Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T13:38:06.478Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T13:38:06.486Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T13:38:06.494Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T13:38:06.496Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T13:38:06.504Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T13:38:06.506Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T13:38:06.549Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-05T13:38:08.084Z] [INFO] GET /sw.js 200 5ms +[2026-01-05T13:38:10.115Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T13:38:10.116Z] [INFO] POST /api/auth/login 200 460ms +[2026-01-05T13:38:10.152Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T13:38:10.193Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (h5UE2W19v1WrgRvcAAAl) +[2026-01-05T13:38:10.201Z] [INFO] GET /api/projects 304 5ms +[2026-01-05T13:38:10.241Z] [INFO] GET /api/stats/dashboard?projectId=2 304 8ms +[2026-01-05T13:38:10.260Z] [INFO] GET /api/tasks/project/2 200 16ms +[2026-01-05T13:38:10.262Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T13:38:10.265Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T13:38:10.269Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-05T13:38:10.335Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-05T13:38:10.373Z] [INFO] GET /api/notifications 304 7ms +[2026-01-05T13:38:10.407Z] [INFO] GET /api/knowledge/categories 304 3ms +[2026-01-05T13:38:34.243Z] [INFO] GET /api/tasks/6 200 10ms +[2026-01-05T13:38:34.286Z] [INFO] GET /api/subtasks/6 304 5ms +[2026-01-05T13:38:34.290Z] [INFO] GET /api/links/6 304 9ms +[2026-01-05T13:38:34.296Z] [INFO] GET /api/files/6 304 5ms +[2026-01-05T13:38:34.299Z] [INFO] GET /api/tasks/6/history 404 7ms +[2026-01-05T13:38:34.303Z] [INFO] GET /api/comments/6 304 4ms +[2026-01-05T13:38:34.335Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYyMDI5MCwiZXhwIjoxNzY3NjIxMTkwfQ.xFXeWq2pakVxSJ1FOHKhTs1pw-CG7_MM_1GAUFATMRs 200 8ms +[2026-01-05T13:38:35.240Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T13:38:54.883Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T13:38:54.890Z] [INFO] PUT /api/tasks/6 200 20ms +[2026-01-05T13:38:55.885Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T13:42:55.207Z] [INFO] GET / 200 4ms +[2026-01-05T13:42:55.271Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (h5UE2W19v1WrgRvcAAAl) +[2026-01-05T13:42:55.278Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T13:42:55.307Z] [INFO] GET /css/base.css 200 1ms +[2026-01-05T13:42:55.343Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-05T13:42:55.345Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-05T13:42:55.346Z] [INFO] GET /css/components.css 200 7ms +[2026-01-05T13:42:55.347Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T13:42:55.349Z] [INFO] GET /css/list.css 200 7ms +[2026-01-05T13:42:55.353Z] [INFO] GET /css/admin.css 200 9ms +[2026-01-05T13:42:55.377Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T13:42:55.389Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T13:42:55.394Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T13:42:55.396Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-05T13:42:55.400Z] [INFO] GET /css/knowledge.css 200 1ms +[2026-01-05T13:42:55.408Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T13:42:55.410Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T13:42:55.425Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T13:42:55.493Z] [INFO] GET /js/api.js 200 4ms +[2026-01-05T13:42:55.503Z] [INFO] GET /js/store.js 200 13ms +[2026-01-05T13:42:55.513Z] [INFO] GET /js/board.js 200 19ms +[2026-01-05T13:42:55.515Z] [INFO] GET /js/sync.js 200 20ms +[2026-01-05T13:42:55.516Z] [INFO] GET /js/auth.js 200 10ms +[2026-01-05T13:42:55.518Z] [INFO] GET /js/offline.js 200 9ms +[2026-01-05T13:42:55.524Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T13:42:55.528Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T13:42:55.552Z] [INFO] GET /js/list.js 200 6ms +[2026-01-05T13:42:55.554Z] [INFO] GET /js/undo.js 200 5ms +[2026-01-05T13:42:55.558Z] [INFO] GET /js/shortcuts.js 200 8ms +[2026-01-05T13:42:55.562Z] [INFO] GET /js/admin.js 200 5ms +[2026-01-05T13:42:55.566Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-05T13:42:55.571Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T13:42:55.580Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T13:42:55.581Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T13:42:55.589Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-05T13:42:55.594Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T13:42:55.595Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T13:42:55.643Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T13:42:55.646Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T13:42:55.651Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T13:42:55.683Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T13:42:55.717Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (PAiU2AqeHRCoy0REAAAn) +[2026-01-05T13:42:55.731Z] [INFO] GET /api/projects 304 4ms +[2026-01-05T13:42:55.778Z] [INFO] GET /api/tasks/project/2 200 18ms +[2026-01-05T13:42:55.783Z] [INFO] GET /api/stats/dashboard?projectId=2 304 22ms +[2026-01-05T13:42:55.785Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T13:42:55.792Z] [INFO] GET /api/labels/2 304 6ms +[2026-01-05T13:42:55.797Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-05T13:42:55.837Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-05T13:42:55.891Z] [INFO] GET /api/notifications 304 3ms +[2026-01-05T13:42:55.928Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-05T13:42:57.978Z] [INFO] GET /api/tasks/6 200 17ms +[2026-01-05T13:42:58.020Z] [INFO] GET /api/comments/6 304 9ms +[2026-01-05T13:42:58.025Z] [INFO] GET /api/subtasks/6 304 14ms +[2026-01-05T13:42:58.032Z] [INFO] GET /api/files/6 304 6ms +[2026-01-05T13:42:58.037Z] [INFO] GET /api/tasks/6/history 404 4ms +[2026-01-05T13:42:58.040Z] [INFO] GET /api/links/6 304 6ms +[2026-01-05T13:42:58.072Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYyMDU3NSwiZXhwIjoxNzY3NjIxNDc1fQ.vC5UV8hwbCtQ4hBjdBvs8_yd2k3Il5Vrmmo0qLx5-mw 200 9ms +[2026-01-05T13:42:58.976Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T13:43:01.205Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T13:43:01.207Z] [INFO] PUT /api/tasks/6 200 11ms +[2026-01-05T13:43:01.822Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T13:43:01.824Z] [INFO] PUT /api/tasks/6 200 14ms +[2026-01-05T13:43:02.814Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T13:43:09.735Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T13:43:09.738Z] [INFO] PUT /api/tasks/6 200 18ms +[2026-01-05T13:43:10.126Z] [INFO] PUT /api/tasks/6 200 13ms +[2026-01-05T13:43:10.125Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T13:43:10.592Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T13:43:10.594Z] [INFO] PUT /api/tasks/6 200 20ms +[2026-01-05T13:43:11.150Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T13:43:11.152Z] [INFO] PUT /api/tasks/6 200 21ms +[2026-01-05T13:43:12.118Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T13:43:12.267Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T13:43:12.269Z] [INFO] PUT /api/tasks/6 200 15ms +[2026-01-05T13:43:13.270Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T13:53:13.417Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T14:01:41.075Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T14:01:42.945Z] [INFO] GET / 200 4ms +[2026-01-05T14:01:43.007Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (PAiU2AqeHRCoy0REAAAn) +[2026-01-05T14:01:43.022Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-05T14:01:43.053Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T14:01:43.081Z] [INFO] GET /css/components.css 200 3ms +[2026-01-05T14:01:43.087Z] [INFO] GET /css/board.css 200 4ms +[2026-01-05T14:01:43.088Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-05T14:01:43.123Z] [INFO] GET /css/calendar.css 200 10ms +[2026-01-05T14:01:43.124Z] [INFO] GET /css/admin.css 200 9ms +[2026-01-05T14:01:43.127Z] [INFO] GET /css/proposals.css 200 11ms +[2026-01-05T14:01:43.128Z] [INFO] GET /css/list.css 200 11ms +[2026-01-05T14:01:43.133Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-05T14:01:43.136Z] [INFO] GET /css/gitea.css 200 1ms +[2026-01-05T14:01:43.154Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T14:01:43.159Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T14:01:43.165Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T14:01:43.166Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T14:01:43.182Z] [INFO] GET /js/app.js 200 8ms +[2026-01-05T14:01:43.241Z] [INFO] GET /js/store.js 200 3ms +[2026-01-05T14:01:43.248Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-05T14:01:43.249Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-05T14:01:43.253Z] [INFO] GET /js/api.js 200 6ms +[2026-01-05T14:01:43.254Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T14:01:43.256Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-05T14:01:43.273Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T14:01:43.281Z] [INFO] GET /js/list.js 200 5ms +[2026-01-05T14:01:43.282Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-05T14:01:43.286Z] [INFO] GET /js/shortcuts.js 200 7ms +[2026-01-05T14:01:43.289Z] [INFO] GET /js/admin.js 200 5ms +[2026-01-05T14:01:43.298Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T14:01:43.302Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T14:01:43.311Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T14:01:43.319Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T14:01:43.321Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T14:01:43.323Z] [INFO] GET /js/knowledge.js 200 5ms +[2026-01-05T14:01:43.328Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T14:01:43.333Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T14:01:43.379Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T14:01:43.386Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T14:01:43.389Z] [INFO] GET /assets/icons/task.svg 304 7ms +[2026-01-05T14:01:43.423Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T14:01:43.463Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (ZeOs39a_IGICEcnNAAAp) +[2026-01-05T14:01:43.469Z] [INFO] GET /api/projects 304 13ms +[2026-01-05T14:01:43.513Z] [INFO] GET /api/stats/dashboard?projectId=2 304 11ms +[2026-01-05T14:01:43.535Z] [INFO] GET /api/tasks/project/2 200 21ms +[2026-01-05T14:01:43.536Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T14:01:43.542Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T14:01:43.546Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-05T14:01:43.612Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-05T14:01:43.659Z] [INFO] GET /api/notifications 304 4ms +[2026-01-05T14:01:43.697Z] [INFO] GET /api/knowledge/categories 304 5ms +[2026-01-05T14:10:11.559Z] [INFO] GET /api/tasks/6 200 19ms +[2026-01-05T14:10:11.625Z] [INFO] GET /api/subtasks/6 304 11ms +[2026-01-05T14:10:11.667Z] [INFO] GET /api/links/6 304 11ms +[2026-01-05T14:10:11.688Z] [INFO] GET /api/files/6 304 7ms +[2026-01-05T14:10:11.697Z] [INFO] GET /api/comments/6 304 5ms +[2026-01-05T14:10:11.701Z] [INFO] GET /api/tasks/6/history 404 4ms +[2026-01-05T14:10:11.737Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYyMTcwMywiZXhwIjoxNzY3NjIyNjAzfQ._NMJHUEluzNH2-fviWcee_xE9QFkY7fpCwSfD4p4xrM 200 17ms +[2026-01-05T14:10:12.472Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T14:10:14.700Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T14:10:14.703Z] [INFO] PUT /api/tasks/6 200 23ms +[2026-01-05T14:10:15.686Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T14:10:17.442Z] [INFO] GET / 200 4ms +[2026-01-05T14:10:17.515Z] [INFO] GET /css/variables.css 200 7ms +[2026-01-05T14:10:17.517Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (ZeOs39a_IGICEcnNAAAp) +[2026-01-05T14:10:17.520Z] [INFO] GET /css/base.css 200 10ms +[2026-01-05T14:10:17.522Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T14:10:17.525Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-05T14:10:17.527Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T14:10:17.543Z] [INFO] GET /css/calendar.css 200 1ms +[2026-01-05T14:10:17.549Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T14:10:17.579Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-05T14:10:17.581Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-05T14:10:17.582Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-05T14:10:17.584Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-05T14:10:17.585Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T14:10:17.586Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-05T14:10:17.613Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T14:10:17.618Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T14:10:17.627Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T14:10:17.711Z] [INFO] GET /js/store.js 200 3ms +[2026-01-05T14:10:17.712Z] [INFO] GET /js/api.js 200 4ms +[2026-01-05T14:10:17.718Z] [INFO] GET /js/offline.js 200 2ms +[2026-01-05T14:10:17.719Z] [INFO] GET /js/sync.js 200 3ms +[2026-01-05T14:10:17.720Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-05T14:10:17.721Z] [INFO] GET /js/board.js 200 4ms +[2026-01-05T14:10:17.754Z] [INFO] GET /js/task-modal.js 200 7ms +[2026-01-05T14:10:17.757Z] [INFO] GET /js/list.js 200 7ms +[2026-01-05T14:10:17.760Z] [INFO] GET /js/calendar.js 200 10ms +[2026-01-05T14:10:17.762Z] [INFO] GET /js/admin.js 200 11ms +[2026-01-05T14:10:17.767Z] [INFO] GET /js/undo.js 200 15ms +[2026-01-05T14:10:17.771Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T14:10:17.789Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T14:10:17.794Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T14:10:17.796Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T14:10:17.799Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T14:10:17.800Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T14:10:17.804Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T14:10:17.822Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T14:10:17.864Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T14:10:17.874Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T14:10:17.875Z] [INFO] GET /assets/icons/task.svg 304 5ms +[2026-01-05T14:10:17.913Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T14:10:17.944Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (kaIjygmwuS_B_Y0hAAAr) +[2026-01-05T14:10:17.956Z] [INFO] GET /api/projects 304 7ms +[2026-01-05T14:10:17.991Z] [INFO] GET /api/stats/dashboard?projectId=2 304 4ms +[2026-01-05T14:10:18.012Z] [INFO] GET /api/tasks/project/2 200 20ms +[2026-01-05T14:10:18.014Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T14:10:18.024Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-05T14:10:18.027Z] [INFO] GET /api/labels/2 304 7ms +[2026-01-05T14:10:18.066Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-05T14:10:18.106Z] [INFO] GET /api/notifications 304 9ms +[2026-01-05T14:10:18.144Z] [INFO] GET /api/knowledge/categories 304 8ms +[2026-01-05T14:10:21.052Z] [INFO] GET /api/tasks/6 200 9ms +[2026-01-05T14:10:21.091Z] [INFO] GET /api/tasks/6/history 404 7ms +[2026-01-05T14:10:21.097Z] [INFO] GET /api/comments/6 304 12ms +[2026-01-05T14:10:21.105Z] [INFO] GET /api/links/6 304 7ms +[2026-01-05T14:10:21.110Z] [INFO] GET /api/files/6 304 11ms +[2026-01-05T14:10:21.116Z] [INFO] GET /api/subtasks/6 304 4ms +[2026-01-05T14:10:21.163Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYyMjIxNywiZXhwIjoxNzY3NjIzMTE3fQ.HrzOmwj7YwLcjjWKtVLwmsQZPviAObfCIcKT7YFLrZY 200 13ms +[2026-01-05T14:10:22.062Z] [INFO] POST /api/auth/refresh 200 16ms +[2026-01-05T14:10:25.783Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T14:10:30.879Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T14:11:57.758Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T14:11:57.759Z] [INFO] PUT /api/tasks/6 200 13ms +[2026-01-05T14:11:58.650Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T14:12:00.017Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T14:12:01.238Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T14:12:03.394Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T14:12:04.624Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T14:12:11.887Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T14:12:14.044Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T14:12:16.162Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T14:12:18.555Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T14:12:21.243Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T14:12:51.830Z] [INFO] GET / 200 4ms +[2026-01-05T14:12:51.889Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (kaIjygmwuS_B_Y0hAAAr) +[2026-01-05T14:12:51.906Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T14:12:51.947Z] [INFO] GET /css/base.css 200 9ms +[2026-01-05T14:12:51.965Z] [INFO] GET /css/components.css 200 3ms +[2026-01-05T14:12:51.979Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-05T14:12:51.980Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T14:12:51.982Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T14:12:51.982Z] [INFO] GET /css/list.css 200 6ms +[2026-01-05T14:12:51.984Z] [INFO] GET /css/admin.css 200 6ms +[2026-01-05T14:12:52.016Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T14:12:52.020Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-05T14:12:52.020Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T14:12:52.033Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T14:12:52.040Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-05T14:12:52.042Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T14:12:52.052Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T14:12:52.053Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T14:12:52.123Z] [INFO] GET /js/store.js 200 4ms +[2026-01-05T14:12:52.125Z] [INFO] GET /js/board.js 200 4ms +[2026-01-05T14:12:52.129Z] [INFO] GET /js/api.js 200 7ms +[2026-01-05T14:12:52.130Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-05T14:12:52.131Z] [INFO] GET /js/offline.js 200 5ms +[2026-01-05T14:12:52.132Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-05T14:12:52.150Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T14:12:52.166Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-05T14:12:52.169Z] [INFO] GET /js/undo.js 200 6ms +[2026-01-05T14:12:52.171Z] [INFO] GET /js/list.js 200 6ms +[2026-01-05T14:12:52.173Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-05T14:12:52.176Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-05T14:12:52.179Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-05T14:12:52.196Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T14:12:52.198Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T14:12:52.204Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T14:12:52.209Z] [INFO] GET /js/mobile.js 200 7ms +[2026-01-05T14:12:52.211Z] [INFO] GET /js/utils.js 200 9ms +[2026-01-05T14:12:52.215Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-05T14:12:52.262Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T14:12:52.265Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-05T14:12:52.268Z] [INFO] GET /api/auth/users 304 3ms +[2026-01-05T14:12:52.307Z] [INFO] GET /api/auth/users 304 9ms +[2026-01-05T14:12:52.339Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (FDM-UzFKSZ0R_hN8AAAt) +[2026-01-05T14:12:52.346Z] [INFO] GET /api/projects 304 5ms +[2026-01-05T14:12:52.380Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T14:12:52.387Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-05T14:12:52.392Z] [INFO] GET /api/stats/dashboard?projectId=2 304 10ms +[2026-01-05T14:12:52.396Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-05T14:12:52.412Z] [INFO] GET /api/tasks/project/2 200 15ms +[2026-01-05T14:12:52.453Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 8ms +[2026-01-05T14:12:52.487Z] [INFO] GET /api/notifications 304 4ms +[2026-01-05T14:12:52.538Z] [INFO] GET /api/knowledge/categories 304 7ms +[2026-01-05T14:12:52.921Z] [INFO] GET /api/tasks/6 200 14ms +[2026-01-05T14:12:52.959Z] [INFO] GET /api/links/6 304 5ms +[2026-01-05T14:12:52.964Z] [INFO] GET /api/subtasks/6 304 4ms +[2026-01-05T14:12:52.969Z] [INFO] GET /api/tasks/6/history 404 4ms +[2026-01-05T14:12:52.973Z] [INFO] GET /api/comments/6 304 3ms +[2026-01-05T14:12:52.976Z] [INFO] GET /api/files/6 304 3ms +[2026-01-05T14:12:53.013Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYyMjM3MiwiZXhwIjoxNzY3NjIzMjcyfQ.cYQNgXicuJJHUmqD-Sz-gwjg68jiHWZ0hgiEfmCCOl4 200 8ms +[2026-01-05T14:12:53.921Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T14:13:39.364Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T14:13:39.366Z] [INFO] PUT /api/tasks/6 200 13ms +[2026-01-05T14:13:40.363Z] [INFO] GET /api/tasks/6 200 23ms +[2026-01-05T14:13:40.428Z] [INFO] GET /api/comments/6 304 5ms +[2026-01-05T14:13:40.433Z] [INFO] GET /api/tasks/6/history 404 10ms +[2026-01-05T14:13:40.436Z] [INFO] GET /api/files/6 304 8ms +[2026-01-05T14:13:40.439Z] [INFO] GET /api/links/6 304 5ms +[2026-01-05T14:13:40.444Z] [INFO] GET /api/subtasks/6 304 4ms +[2026-01-05T14:13:40.473Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzYyMjM3MywiZXhwIjoxNzY3NjIzMjczfQ.FIUJ4NFU6VgavqQI9TuaJ0sF3traoju59lRGZNzQWU0 200 7ms +[2026-01-05T14:13:41.357Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T14:13:44.513Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T14:13:44.516Z] [INFO] PUT /api/tasks/6 200 20ms +[2026-01-05T14:13:45.503Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T14:13:46.172Z] [INFO] GET / 200 4ms +[2026-01-05T14:13:46.231Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (FDM-UzFKSZ0R_hN8AAAt) +[2026-01-05T14:13:46.250Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T14:13:46.251Z] [INFO] GET /css/components.css 200 7ms +[2026-01-05T14:13:46.255Z] [INFO] GET /css/board.css 200 10ms +[2026-01-05T14:13:46.259Z] [INFO] GET /css/base.css 200 11ms +[2026-01-05T14:13:46.263Z] [INFO] GET /css/calendar.css 200 14ms +[2026-01-05T14:13:46.265Z] [INFO] GET /css/variables.css 200 9ms +[2026-01-05T14:13:46.290Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T14:13:46.294Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T14:13:46.311Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T14:13:46.310Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-05T14:13:46.314Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T14:13:46.316Z] [INFO] GET /css/coding.css 200 1ms +[2026-01-05T14:13:46.320Z] [INFO] GET /css/knowledge.css 200 1ms +[2026-01-05T14:13:46.337Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T14:13:46.345Z] [INFO] GET /css/mobile.css 200 5ms +[2026-01-05T14:13:46.349Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T14:13:46.447Z] [INFO] GET /js/store.js 200 4ms +[2026-01-05T14:13:46.451Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T14:13:46.455Z] [INFO] GET /js/auth.js 200 9ms +[2026-01-05T14:13:46.458Z] [INFO] GET /js/sync.js 200 9ms +[2026-01-05T14:13:46.462Z] [INFO] GET /js/offline.js 200 9ms +[2026-01-05T14:13:46.463Z] [INFO] GET /js/api.js 200 7ms +[2026-01-05T14:13:46.477Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T14:13:46.486Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T14:13:46.492Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T14:13:46.496Z] [INFO] GET /js/shortcuts.js 200 6ms +[2026-01-05T14:13:46.497Z] [INFO] GET /js/undo.js 200 6ms +[2026-01-05T14:13:46.507Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T14:13:46.511Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T14:13:46.521Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-05T14:13:46.528Z] [INFO] GET /js/knowledge.js 200 6ms +[2026-01-05T14:13:46.539Z] [INFO] GET /js/notifications.js 200 8ms +[2026-01-05T14:13:46.541Z] [INFO] GET /js/coding.js 200 11ms +[2026-01-05T14:13:46.545Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T14:13:46.546Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T14:13:46.600Z] [INFO] POST /api/auth/refresh 200 16ms +[2026-01-05T14:13:46.604Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T14:13:46.612Z] [INFO] GET /api/auth/users 304 9ms +[2026-01-05T14:13:46.644Z] [INFO] GET /api/auth/users 304 3ms +[2026-01-05T14:13:46.678Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (KxusRIQqQWA34ot2AAAv) +[2026-01-05T14:13:46.694Z] [INFO] GET /api/projects 304 5ms +[2026-01-05T14:13:46.727Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T14:13:46.732Z] [INFO] GET /api/stats/dashboard?projectId=2 304 4ms +[2026-01-05T14:13:46.749Z] [INFO] GET /api/tasks/project/2 200 16ms +[2026-01-05T14:13:46.752Z] [INFO] GET /api/columns/2 304 2ms +[2026-01-05T14:13:46.755Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-05T14:13:46.793Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-05T14:13:46.823Z] [INFO] GET /api/notifications 304 5ms +[2026-01-05T14:13:46.861Z] [INFO] GET /api/knowledge/categories 304 4ms +[2026-01-05T14:13:54.901Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T14:14:09.965Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T14:15:27.759Z] [INFO] POST /api/auth/refresh 200 16ms +[2026-01-05T14:25:28.348Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T14:35:29.340Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T14:45:30.316Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T14:55:31.440Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T15:05:32.404Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T15:12:38.101Z] [INFO] POST / 200 15ms +[2026-01-05T15:15:33.429Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T15:25:34.404Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T15:35:35.371Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T15:45:36.383Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T15:55:37.337Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T15:57:14.237Z] [INFO] GET /.env 200 22ms +[2026-01-05T16:05:38.338Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T16:15:39.338Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T16:25:40.300Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T16:28:20.263Z] [INFO] GET / 200 5ms +[2026-01-05T16:28:20.325Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (KxusRIQqQWA34ot2AAAv) +[2026-01-05T16:28:20.333Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T16:28:20.367Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T16:28:20.386Z] [INFO] GET /css/components.css 200 4ms +[2026-01-05T16:28:20.392Z] [INFO] GET /css/board.css 200 4ms +[2026-01-05T16:28:20.395Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-05T16:28:20.403Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T16:28:20.404Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T16:28:20.405Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T16:28:20.429Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-05T16:28:20.440Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T16:28:20.451Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T16:28:20.459Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T16:28:20.465Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T16:28:20.469Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T16:28:20.472Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T16:28:20.480Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T16:28:20.526Z] [INFO] GET /js/api.js 200 8ms +[2026-01-05T16:28:20.527Z] [INFO] GET /js/store.js 200 7ms +[2026-01-05T16:28:20.530Z] [INFO] GET /js/sync.js 200 8ms +[2026-01-05T16:28:20.536Z] [INFO] GET /js/board.js 200 12ms +[2026-01-05T16:28:20.539Z] [INFO] GET /js/offline.js 200 10ms +[2026-01-05T16:28:20.542Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-05T16:28:20.563Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-05T16:28:20.566Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-05T16:28:20.574Z] [INFO] GET /js/list.js 200 4ms +[2026-01-05T16:28:20.576Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-05T16:28:20.580Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-05T16:28:20.593Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T16:28:20.594Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T16:28:20.605Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T16:28:20.606Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T16:28:20.610Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T16:28:20.627Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-05T16:28:20.628Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-05T16:28:20.636Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T16:28:20.682Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T16:28:20.687Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-05T16:28:20.692Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-05T16:28:20.731Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T16:28:20.766Z] [INFO] GET /api/projects 304 6ms +[2026-01-05T16:28:20.771Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (gehECtw4iEB1r07vAAAx) +[2026-01-05T16:28:20.803Z] [INFO] GET /api/stats/dashboard?projectId=2 304 8ms +[2026-01-05T16:28:20.809Z] [INFO] GET /api/columns/2 304 14ms +[2026-01-05T16:28:20.811Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T16:28:20.816Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T16:28:20.831Z] [INFO] GET /api/tasks/project/2 304 12ms +[2026-01-05T16:28:20.870Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 3ms +[2026-01-05T16:28:20.908Z] [INFO] GET /api/notifications 304 6ms +[2026-01-05T16:28:20.945Z] [INFO] GET /api/knowledge/categories 304 4ms +[2026-01-05T16:28:22.404Z] [INFO] GET /sw.js 200 2ms +[2026-01-05T16:28:22.456Z] [INFO] GET / 200 14ms +[2026-01-05T16:28:22.458Z] [INFO] GET /index.html 200 15ms +[2026-01-05T16:28:22.460Z] [INFO] GET /css/variables.css 200 14ms +[2026-01-05T16:28:22.489Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T16:28:22.528Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T16:28:22.530Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T16:28:22.531Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T16:28:22.561Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T16:28:22.567Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T16:28:22.592Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T16:28:22.599Z] [INFO] GET /js/api.js 200 3ms +[2026-01-05T16:28:22.601Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T16:28:22.627Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-05T16:28:22.630Z] [INFO] GET /js/store.js 200 2ms +[2026-01-05T16:28:22.660Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-05T16:28:22.661Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-05T16:28:22.665Z] [INFO] GET /js/board.js 200 3ms +[2026-01-05T16:28:22.688Z] [INFO] GET /js/task-modal.js 200 1ms +[2026-01-05T16:28:22.694Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T16:28:22.695Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T16:28:22.726Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-05T16:28:22.729Z] [INFO] GET /js/undo.js 200 5ms +[2026-01-05T16:28:22.732Z] [INFO] GET /js/tour.js 200 5ms +[2026-01-05T16:28:22.761Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T16:28:22.764Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T16:28:22.769Z] [INFO] GET /js/notifications.js 200 6ms +[2026-01-05T16:28:22.825Z] [INFO] GET /js/knowledge.js 200 5ms +[2026-01-05T16:28:22.827Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-05T16:28:22.829Z] [INFO] GET /js/gitea.js 200 7ms +[2026-01-05T16:28:22.856Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-05T16:28:22.858Z] [INFO] GET /css/list.css 200 1ms +[2026-01-05T16:28:22.859Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T16:28:22.886Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T16:28:22.891Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T16:28:22.893Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T16:28:22.919Z] [INFO] GET /css/gitea.css 200 1ms +[2026-01-05T16:28:22.924Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T16:28:22.936Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T16:28:24.984Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T16:36:38.124Z] [INFO] SIGTERM empfangen, fahre herunter... +[2026-01-05T16:56:05.074Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-05T16:56:05.262Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-05T16:56:05.835Z] [INFO] Admin-Passwort bereits korrekt +[2026-01-05T16:56:05.838Z] [INFO] Datenbank initialisiert +[2026-01-05T16:56:05.845Z] [INFO] Server läuft auf Port 3001 +[2026-01-05T16:56:05.846Z] [INFO] Umgebung: development +[2026-01-05T16:56:05.847Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-05T16:56:05.847Z] [INFO] Automatische Backups aktiviert +[2026-01-05T16:56:14.735Z] [INFO] GET /api/health 200 31ms +[2026-01-05T16:57:05.872Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-05T16-57-05-850Z.db.enc +[2026-01-05T16:57:05.873Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-05T16-57-05-850Z.db.enc +[2026-01-05T16:57:05.904Z] [INFO] Datei sicher gelöscht: backup_2026-01-03T23-52-14-235Z.db.enc +[2026-01-05T16:57:05.887Z] [INFO] Backup erstellt: backup_2026-01-05T16-57-05-850Z.db +[2026-01-05T16:57:05.905Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-03T23-52-14-235Z.db.enc +[2026-01-05T16:57:05.908Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-05T17:09:53.577Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-05T17:09:53.686Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-05T17:09:54.251Z] [INFO] Admin-Passwort bereits korrekt +[2026-01-05T17:09:54.252Z] [INFO] Datenbank initialisiert +[2026-01-05T17:09:54.260Z] [INFO] Server läuft auf Port 3001 +[2026-01-05T17:09:54.262Z] [INFO] Umgebung: development +[2026-01-05T17:09:54.263Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-05T17:09:54.263Z] [INFO] Automatische Backups aktiviert +[2026-01-05T17:09:54.266Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T17:09:54.268Z] [INFO] Reminder Service gestartet - prüft alle 5 Minuten +[2026-01-05T17:10:16.370Z] [INFO] GET /api/health 200 46ms +[2026-01-05T17:10:54.320Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-05T17-10-54-291Z.db.enc +[2026-01-05T17:10:54.340Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-03T23-55-55-968Z.db.enc +[2026-01-05T17:10:54.343Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-05T17:10:54.321Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-05T17-10-54-291Z.db.enc +[2026-01-05T17:10:54.323Z] [INFO] Backup erstellt: backup_2026-01-05T17-10-54-291Z.db +[2026-01-05T17:10:54.339Z] [INFO] Datei sicher gelöscht: backup_2026-01-03T23-55-55-968Z.db.enc +[2026-01-05T17:14:54.376Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T17:19:54.328Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T17:24:54.354Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T17:29:54.384Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T17:30:30.878Z] [INFO] GET / 200 111ms +[2026-01-05T17:30:30.951Z] [INFO] GET /css/variables.css 200 8ms +[2026-01-05T17:30:30.985Z] [INFO] GET /css/base.css 200 7ms +[2026-01-05T17:30:31.015Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T17:30:31.048Z] [INFO] GET /css/board.css 200 10ms +[2026-01-05T17:30:31.082Z] [INFO] GET /css/modal.css 200 11ms +[2026-01-05T17:30:31.122Z] [INFO] GET /css/calendar.css 200 44ms +[2026-01-05T17:30:31.131Z] [INFO] GET /css/list.css 200 13ms +[2026-01-05T17:30:31.136Z] [INFO] GET /css/admin.css 200 10ms +[2026-01-05T17:30:31.138Z] [INFO] GET /css/proposals.css 200 8ms +[2026-01-05T17:30:31.140Z] [INFO] GET /css/gitea.css 200 7ms +[2026-01-05T17:30:31.161Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-05T17:30:31.173Z] [INFO] GET /css/responsive.css 200 7ms +[2026-01-05T17:30:31.176Z] [INFO] GET /css/reminders.css 200 7ms +[2026-01-05T17:30:31.181Z] [INFO] GET /css/mobile.css 200 9ms +[2026-01-05T17:30:31.228Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T17:30:31.230Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-05T17:30:31.384Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T17:30:31.429Z] [INFO] GET /js/store.js 200 9ms +[2026-01-05T17:30:31.435Z] [INFO] GET /js/api.js 200 9ms +[2026-01-05T17:30:31.437Z] [INFO] GET /js/auth.js 200 10ms +[2026-01-05T17:30:31.443Z] [INFO] GET /js/board.js 200 12ms +[2026-01-05T17:30:31.445Z] [INFO] GET /js/offline.js 200 11ms +[2026-01-05T17:30:31.447Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-05T17:30:31.468Z] [INFO] GET /js/task-modal.js 200 11ms +[2026-01-05T17:30:31.470Z] [INFO] GET /js/calendar.js 200 10ms +[2026-01-05T17:30:31.488Z] [INFO] GET /js/list.js 200 5ms +[2026-01-05T17:30:31.493Z] [INFO] GET /js/shortcuts.js 200 8ms +[2026-01-05T17:30:31.498Z] [INFO] GET /js/undo.js 200 11ms +[2026-01-05T17:30:31.503Z] [INFO] GET /js/admin.js 200 12ms +[2026-01-05T17:30:31.518Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-05T17:30:31.524Z] [INFO] GET /js/notifications.js 200 8ms +[2026-01-05T17:30:31.531Z] [INFO] GET /js/knowledge.js 200 10ms +[2026-01-05T17:30:31.534Z] [INFO] GET /js/gitea.js 200 7ms +[2026-01-05T17:30:31.537Z] [INFO] GET /js/coding.js 200 8ms +[2026-01-05T17:30:31.539Z] [INFO] GET /js/mobile.js 200 6ms +[2026-01-05T17:30:31.544Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-05T17:30:31.548Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T17:30:31.627Z] [INFO] GET /assets/icons/task.svg 200 31ms +[2026-01-05T17:30:35.611Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T17:30:35.613Z] [INFO] POST /api/auth/login 200 616ms +[2026-01-05T17:30:35.696Z] [INFO] GET /api/auth/users 304 12ms +[2026-01-05T17:30:35.731Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (Lf55LNnWYLPojal5AAAB) +[2026-01-05T17:30:35.759Z] [INFO] GET /api/projects 304 13ms +[2026-01-05T17:30:35.806Z] [INFO] GET /api/reminders?project_id=2 200 11ms +[2026-01-05T17:30:35.799Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T17:30:35.817Z] [INFO] GET /api/stats/dashboard?projectId=2 304 9ms +[2026-01-05T17:30:35.843Z] [INFO] GET /api/tasks/project/2 304 21ms +[2026-01-05T17:30:35.849Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-05T17:30:35.858Z] [INFO] GET /api/labels/2 304 6ms +[2026-01-05T17:30:35.905Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 10ms +[2026-01-05T17:30:35.938Z] [INFO] GET /api/notifications 304 5ms +[2026-01-05T17:30:35.976Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-05T17:30:39.571Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T17:30:40.714Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T17:30:42.993Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T17:30:45.291Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T17:33:19.686Z] [INFO] SIGTERM empfangen, fahre herunter... +[2026-01-05T17:33:19.767Z] [INFO] Reminder Service gestoppt +[2026-01-05T17:33:34.438Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-05T17:33:34.569Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-05T17:33:35.189Z] [INFO] Admin-Passwort bereits korrekt +[2026-01-05T17:33:35.189Z] [INFO] Datenbank initialisiert +[2026-01-05T17:33:35.194Z] [INFO] Server läuft auf Port 3001 +[2026-01-05T17:33:35.194Z] [INFO] Umgebung: development +[2026-01-05T17:33:35.195Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-05T17:33:35.195Z] [INFO] Automatische Backups aktiviert +[2026-01-05T17:33:35.197Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T17:33:35.198Z] [INFO] Reminder Service gestartet - prüft alle 5 Minuten +[2026-01-05T17:33:37.278Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (aUkWTkwhBgq1k-rVAAAB) +[2026-01-05T17:33:37.348Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T17:34:35.272Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-05T17-34-35-214Z.db.enc +[2026-01-05T17:34:35.276Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-05T17-34-35-214Z.db.enc +[2026-01-05T17:34:35.297Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-03T23-58-54-645Z.db.enc +[2026-01-05T17:34:35.304Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-05T17:34:35.278Z] [INFO] Backup erstellt: backup_2026-01-05T17-34-35-214Z.db +[2026-01-05T17:34:35.297Z] [INFO] Datei sicher gelöscht: backup_2026-01-03T23-58-54-645Z.db.enc +[2026-01-05T17:36:23.897Z] [INFO] POST / 200 31ms +[2026-01-05T17:38:35.201Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T17:40:45.670Z] [INFO] POST /api/auth/refresh 200 55ms +[2026-01-05T17:43:35.204Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T17:48:35.205Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T17:50:45.978Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T17:53:35.207Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T17:58:35.207Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T18:00:46.223Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T18:03:35.211Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T18:08:35.231Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T18:10:46.444Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T18:13:35.248Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T18:18:35.258Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T18:20:46.671Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T18:23:35.275Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T18:28:35.291Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T18:30:46.877Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T18:33:35.294Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T18:38:35.311Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T18:40:47.124Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T18:43:35.314Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T18:48:35.327Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T18:50:24.549Z] [INFO] GET / 200 9ms +[2026-01-05T18:50:47.342Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T18:53:35.341Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T18:58:35.354Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T19:00:47.563Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T19:03:35.358Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T19:08:35.372Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T19:10:47.799Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T19:13:35.384Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T19:18:35.387Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T19:20:48.060Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T19:23:35.397Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T19:28:35.412Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T19:30:48.280Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T19:33:35.412Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T19:36:58.752Z] [INFO] GET / 200 8ms +[2026-01-05T19:36:58.851Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (aUkWTkwhBgq1k-rVAAAB) +[2026-01-05T19:36:58.862Z] [INFO] GET /css/variables.css 200 8ms +[2026-01-05T19:36:58.900Z] [INFO] GET /css/base.css 200 7ms +[2026-01-05T19:36:58.912Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T19:36:58.913Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T19:36:58.932Z] [INFO] GET /css/modal.css 200 15ms +[2026-01-05T19:36:58.937Z] [INFO] GET /css/calendar.css 200 14ms +[2026-01-05T19:36:58.939Z] [INFO] GET /css/list.css 200 11ms +[2026-01-05T19:36:58.943Z] [INFO] GET /css/admin.css 200 8ms +[2026-01-05T19:36:58.968Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-05T19:36:58.972Z] [INFO] GET /css/notifications.css 200 7ms +[2026-01-05T19:36:58.976Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-05T19:36:58.979Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-05T19:36:58.986Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T19:36:58.992Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-05T19:36:58.998Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T19:36:59.025Z] [INFO] GET /css/mobile.css 200 26ms +[2026-01-05T19:36:59.032Z] [INFO] GET /js/app.js 200 9ms +[2026-01-05T19:36:59.106Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-05T19:36:59.107Z] [INFO] GET /js/sync.js 200 9ms +[2026-01-05T19:36:59.109Z] [INFO] GET /js/store.js 200 16ms +[2026-01-05T19:36:59.113Z] [INFO] GET /js/auth.js 200 16ms +[2026-01-05T19:36:59.115Z] [INFO] GET /js/api.js 200 20ms +[2026-01-05T19:36:59.118Z] [INFO] GET /js/board.js 200 16ms +[2026-01-05T19:36:59.145Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-05T19:36:59.148Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-05T19:36:59.154Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T19:36:59.155Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-05T19:36:59.161Z] [INFO] GET /js/undo.js 200 8ms +[2026-01-05T19:36:59.178Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T19:36:59.186Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T19:36:59.198Z] [INFO] GET /js/gitea.js 200 14ms +[2026-01-05T19:36:59.202Z] [INFO] GET /js/knowledge.js 200 12ms +[2026-01-05T19:36:59.207Z] [INFO] GET /js/notifications.js 200 12ms +[2026-01-05T19:36:59.215Z] [INFO] GET /js/coding.js 200 10ms +[2026-01-05T19:36:59.224Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T19:36:59.233Z] [INFO] GET /js/reminders.js 200 4ms +[2026-01-05T19:36:59.235Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T19:36:59.278Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T19:36:59.290Z] [INFO] GET /api/auth/users 304 9ms +[2026-01-05T19:36:59.293Z] [INFO] GET /assets/icons/task.svg 304 11ms +[2026-01-05T19:36:59.327Z] [INFO] GET /api/auth/users 304 3ms +[2026-01-05T19:36:59.375Z] [INFO] GET /api/projects 304 17ms +[2026-01-05T19:36:59.384Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (qrB6R1nXZaqq40MXAAAD) +[2026-01-05T19:36:59.422Z] [INFO] GET /api/stats/dashboard?projectId=2 304 7ms +[2026-01-05T19:36:59.454Z] [INFO] GET /api/tasks/project/2 304 28ms +[2026-01-05T19:36:59.459Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-05T19:36:59.464Z] [INFO] GET /api/columns/2 304 8ms +[2026-01-05T19:36:59.473Z] [INFO] GET /api/reminders?project_id=2 304 8ms +[2026-01-05T19:36:59.487Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T19:36:59.518Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-05T19:36:59.562Z] [INFO] GET /api/notifications 304 12ms +[2026-01-05T19:36:59.615Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-05T19:37:02.868Z] [INFO] POST /api/auth/refresh 200 15ms +[2026-01-05T19:37:04.447Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T19:37:06.926Z] [INFO] POST /api/auth/refresh 200 20ms +[2026-01-05T19:37:30.584Z] [INFO] readCLAUDEmd: Checking path /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-05T19:37:30.615Z] [INFO] readCLAUDEmd: File does not exist: /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-05T19:37:30.616Z] [INFO] Trying fallback path for TaskMate: /app/taskmate-source +[2026-01-05T19:37:30.622Z] [INFO] readCLAUDEmd: Successfully read 14396 characters from /app/taskmate-source/CLAUDE.md +[2026-01-05T19:37:30.644Z] [INFO] GET /api/coding/directories 200 326ms +[2026-01-05T19:37:30.617Z] [INFO] readCLAUDEmd: Checking path /app/taskmate-source/CLAUDE.md +[2026-01-05T19:37:30.738Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T19:37:30.746Z] [INFO] Git directory exists: true +[2026-01-05T19:37:30.739Z] [INFO] Git directory exists: true +[2026-01-05T19:37:30.745Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T19:37:30.950Z] [INFO] GET /api/coding/directories/3/status 200 244ms +[2026-01-05T19:37:31.105Z] [INFO] POST /api/auth/refresh 200 29ms +[2026-01-05T19:37:33.511Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T19:37:35.063Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T19:38:00.712Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T19:38:00.713Z] [INFO] Git directory exists: true +[2026-01-05T19:38:00.713Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T19:38:00.713Z] [INFO] Git directory exists: true +[2026-01-05T19:38:00.738Z] [INFO] GET /api/coding/directories/3/status 304 31ms +[2026-01-05T19:38:24.897Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T19:38:25.994Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T19:38:26.614Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-05T19:38:26.617Z] [INFO] POST /api/auth/logout 200 15ms +[2026-01-05T19:38:26.694Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (qrB6R1nXZaqq40MXAAAD) +[2026-01-05T19:38:26.701Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-05T19:38:26.702Z] [INFO] POST /api/auth/logout 200 4ms +[2026-01-05T19:38:35.414Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T19:38:38.040Z] [INFO] GET / 200 14ms +[2026-01-05T19:38:38.182Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-05T19:38:38.213Z] [INFO] GET /css/base.css 200 5ms +[2026-01-05T19:38:38.246Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T19:38:38.261Z] [INFO] GET /css/modal.css 200 10ms +[2026-01-05T19:38:38.263Z] [INFO] GET /css/board.css 200 10ms +[2026-01-05T19:38:38.269Z] [INFO] GET /css/calendar.css 200 10ms +[2026-01-05T19:38:38.271Z] [INFO] GET /css/list.css 200 6ms +[2026-01-05T19:38:38.305Z] [INFO] GET /css/admin.css 200 16ms +[2026-01-05T19:38:38.315Z] [INFO] GET /css/proposals.css 200 7ms +[2026-01-05T19:38:38.318Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-05T19:38:38.319Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-05T19:38:38.321Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-05T19:38:38.329Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T19:38:38.338Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-05T19:38:38.347Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T19:38:38.367Z] [INFO] GET /css/mobile.css 200 17ms +[2026-01-05T19:38:38.375Z] [INFO] GET /js/app.js 200 6ms +[2026-01-05T19:38:38.445Z] [INFO] GET /js/offline.js 200 9ms +[2026-01-05T19:38:38.448Z] [INFO] GET /js/auth.js 200 11ms +[2026-01-05T19:38:38.453Z] [INFO] GET /js/store.js 200 13ms +[2026-01-05T19:38:38.454Z] [INFO] GET /js/api.js 200 12ms +[2026-01-05T19:38:38.459Z] [INFO] GET /js/board.js 200 12ms +[2026-01-05T19:38:38.460Z] [INFO] GET /js/sync.js 200 10ms +[2026-01-05T19:38:38.477Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-05T19:38:38.484Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-05T19:38:38.487Z] [INFO] GET /js/list.js 200 7ms +[2026-01-05T19:38:38.488Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-05T19:38:38.493Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T19:38:38.512Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-05T19:38:38.515Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T19:38:38.521Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T19:38:38.525Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T19:38:38.530Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T19:38:38.535Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T19:38:38.543Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T19:38:38.544Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-05T19:38:38.552Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T19:38:38.601Z] [INFO] GET /sw.js 200 6ms +[2026-01-05T19:38:38.607Z] [INFO] GET /assets/icons/task.svg 200 9ms +[2026-01-05T19:38:38.652Z] [INFO] GET / 200 10ms +[2026-01-05T19:38:38.656Z] [INFO] GET /css/variables.css 200 9ms +[2026-01-05T19:38:38.658Z] [INFO] GET /index.html 200 13ms +[2026-01-05T19:38:38.688Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T19:38:38.695Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T19:38:38.698Z] [INFO] GET /css/board.css 200 4ms +[2026-01-05T19:38:38.723Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-05T19:38:38.731Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T19:38:38.734Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T19:38:38.756Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T19:38:38.767Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-05T19:38:38.778Z] [INFO] GET /js/api.js 200 3ms +[2026-01-05T19:38:38.789Z] [INFO] GET /js/auth.js 200 1ms +[2026-01-05T19:38:38.797Z] [INFO] GET /js/store.js 200 1ms +[2026-01-05T19:38:38.825Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-05T19:38:38.832Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-05T19:38:38.834Z] [INFO] GET /js/board.js 200 4ms +[2026-01-05T19:38:38.869Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T19:38:38.887Z] [INFO] GET /js/list.js 200 9ms +[2026-01-05T19:38:38.891Z] [INFO] GET /js/calendar.js 200 8ms +[2026-01-05T19:38:38.900Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T19:38:38.916Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-05T19:38:38.922Z] [INFO] GET /js/tour.js 200 2ms +[2026-01-05T19:38:38.931Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T19:38:38.954Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T19:38:38.969Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T19:38:38.976Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T19:38:38.997Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T19:38:39.007Z] [INFO] GET /js/coding.js 200 7ms +[2026-01-05T19:38:39.011Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-05T19:38:39.027Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T19:38:39.036Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T19:38:39.044Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T19:38:39.058Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T19:38:39.065Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T19:38:39.073Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T19:38:39.090Z] [INFO] GET /css/knowledge.css 200 1ms +[2026-01-05T19:38:39.102Z] [INFO] GET /css/coding.css 200 1ms +[2026-01-05T19:38:44.573Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T19:38:44.574Z] [INFO] POST /api/auth/login 200 459ms +[2026-01-05T19:38:44.623Z] [INFO] GET /api/auth/users 200 7ms +[2026-01-05T19:38:44.657Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (V3P3sNBEVm8m3saCAAAF) +[2026-01-05T19:38:44.690Z] [INFO] GET /api/projects 200 13ms +[2026-01-05T19:38:44.740Z] [INFO] GET /api/stats/dashboard?projectId=2 200 10ms +[2026-01-05T19:38:44.773Z] [INFO] GET /api/tasks/project/2 200 42ms +[2026-01-05T19:38:44.780Z] [INFO] GET /api/labels/2 200 5ms +[2026-01-05T19:38:44.783Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T19:38:44.796Z] [INFO] GET /api/reminders?project_id=2 200 10ms +[2026-01-05T19:38:44.805Z] [INFO] GET /api/columns/2 200 16ms +[2026-01-05T19:38:44.875Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 8ms +[2026-01-05T19:38:44.931Z] [INFO] GET /api/notifications 200 7ms +[2026-01-05T19:38:44.976Z] [INFO] GET /api/knowledge/categories 200 9ms +[2026-01-05T19:38:49.450Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T19:38:49.464Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 8ms +[2026-01-05T19:38:51.222Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T19:38:52.930Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T19:38:56.343Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T19:38:59.849Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T19:39:01.040Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T19:39:02.273Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T19:43:35.429Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T19:48:35.439Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T19:49:03.069Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T19:53:35.452Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T19:58:35.464Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T19:59:04.011Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T20:02:45.846Z] [INFO] POST / 200 9ms +[2026-01-05T20:03:35.466Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T20:04:10.340Z] [INFO] GET / 200 10ms +[2026-01-05T20:04:10.410Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (V3P3sNBEVm8m3saCAAAF) +[2026-01-05T20:04:10.424Z] [INFO] GET /css/variables.css 200 8ms +[2026-01-05T20:04:10.456Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T20:04:10.483Z] [INFO] GET /css/components.css 200 2ms +[2026-01-05T20:04:10.487Z] [INFO] GET /css/board.css 200 2ms +[2026-01-05T20:04:10.502Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-05T20:04:10.505Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-05T20:04:10.511Z] [INFO] GET /css/admin.css 200 7ms +[2026-01-05T20:04:10.516Z] [INFO] GET /css/list.css 200 9ms +[2026-01-05T20:04:10.542Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-05T20:04:10.545Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T20:04:10.548Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T20:04:10.560Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-05T20:04:10.561Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-05T20:04:10.563Z] [INFO] GET /css/reminders.css 200 5ms +[2026-01-05T20:04:10.574Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T20:04:10.576Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T20:04:10.596Z] [INFO] GET /js/app.js 200 5ms +[2026-01-05T20:04:10.669Z] [INFO] GET /js/api.js 200 9ms +[2026-01-05T20:04:10.673Z] [INFO] GET /js/store.js 200 10ms +[2026-01-05T20:04:10.675Z] [INFO] GET /js/auth.js 200 9ms +[2026-01-05T20:04:10.677Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-05T20:04:10.680Z] [INFO] GET /js/offline.js 200 2ms +[2026-01-05T20:04:10.682Z] [INFO] GET /js/board.js 200 6ms +[2026-01-05T20:04:10.701Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-05T20:04:10.708Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-05T20:04:10.710Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T20:04:10.712Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T20:04:10.714Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T20:04:10.717Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-05T20:04:10.732Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-05T20:04:10.736Z] [INFO] GET /js/notifications.js 200 1ms +[2026-01-05T20:04:10.741Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T20:04:10.744Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T20:04:10.752Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T20:04:10.760Z] [INFO] GET /js/gitea.js 200 10ms +[2026-01-05T20:04:10.773Z] [INFO] GET /js/reminders.js 200 11ms +[2026-01-05T20:04:10.775Z] [INFO] GET /js/utils.js 200 9ms +[2026-01-05T20:04:10.833Z] [INFO] POST /api/auth/refresh 200 16ms +[2026-01-05T20:04:10.839Z] [INFO] GET /assets/icons/task.svg 304 4ms +[2026-01-05T20:04:10.843Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T20:04:10.886Z] [INFO] GET /api/auth/users 304 9ms +[2026-01-05T20:04:10.911Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (fEDUqdFJ8-RikkYuAAAH) +[2026-01-05T20:04:10.924Z] [INFO] GET /api/projects 304 6ms +[2026-01-05T20:04:10.960Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T20:04:10.984Z] [INFO] GET /api/tasks/project/2 304 23ms +[2026-01-05T20:04:10.988Z] [INFO] GET /api/labels/2 304 26ms +[2026-01-05T20:04:10.991Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-05T20:04:10.996Z] [INFO] GET /api/stats/dashboard?projectId=2 304 4ms +[2026-01-05T20:04:11.000Z] [INFO] GET /api/reminders?project_id=2 304 3ms +[2026-01-05T20:04:11.043Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-05T20:04:11.088Z] [INFO] GET /api/notifications 304 10ms +[2026-01-05T20:04:11.130Z] [INFO] GET /api/knowledge/categories 304 8ms +[2026-01-05T20:04:13.990Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T20:04:20.023Z] [INFO] GET / 200 5ms +[2026-01-05T20:04:20.102Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (fEDUqdFJ8-RikkYuAAAH) +[2026-01-05T20:04:20.124Z] [INFO] GET /css/base.css 200 6ms +[2026-01-05T20:04:20.126Z] [INFO] GET /css/variables.css 200 7ms +[2026-01-05T20:04:20.129Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T20:04:20.131Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T20:04:20.133Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T20:04:20.153Z] [INFO] GET /css/board.css 200 2ms +[2026-01-05T20:04:20.162Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T20:04:20.163Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T20:04:20.195Z] [INFO] GET /css/gitea.css 200 7ms +[2026-01-05T20:04:20.197Z] [INFO] GET /css/proposals.css 200 8ms +[2026-01-05T20:04:20.203Z] [INFO] GET /css/notifications.css 200 11ms +[2026-01-05T20:04:20.204Z] [INFO] GET /css/knowledge.css 200 11ms +[2026-01-05T20:04:20.205Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-05T20:04:20.217Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-05T20:04:20.224Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T20:04:20.243Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T20:04:20.246Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T20:04:20.337Z] [INFO] GET /js/api.js 200 3ms +[2026-01-05T20:04:20.338Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-05T20:04:20.346Z] [INFO] GET /js/sync.js 200 10ms +[2026-01-05T20:04:20.349Z] [INFO] GET /js/board.js 200 6ms +[2026-01-05T20:04:20.350Z] [INFO] GET /js/store.js 200 6ms +[2026-01-05T20:04:20.352Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-05T20:04:20.370Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T20:04:20.374Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T20:04:20.381Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-05T20:04:20.382Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-05T20:04:20.385Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-05T20:04:20.399Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-05T20:04:20.410Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T20:04:20.413Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-05T20:04:20.419Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T20:04:20.424Z] [INFO] GET /js/knowledge.js 200 7ms +[2026-01-05T20:04:20.433Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T20:04:20.442Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-05T20:04:20.445Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-05T20:04:20.447Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-05T20:04:20.488Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T20:04:20.499Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-05T20:04:20.503Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T20:04:20.537Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-05T20:04:20.569Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (CKjn1VgtZ7pXCsf9AAAJ) +[2026-01-05T20:04:20.580Z] [INFO] GET /api/projects 304 5ms +[2026-01-05T20:04:20.621Z] [INFO] GET /api/stats/dashboard?projectId=2 304 6ms +[2026-01-05T20:04:20.627Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-05T20:04:20.628Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T20:04:20.639Z] [INFO] GET /api/labels/2 304 8ms +[2026-01-05T20:04:20.660Z] [INFO] GET /api/tasks/project/2 304 20ms +[2026-01-05T20:04:20.665Z] [INFO] GET /api/reminders?project_id=2 304 3ms +[2026-01-05T20:04:20.719Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 8ms +[2026-01-05T20:04:20.774Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T20:04:20.815Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-05T20:04:22.506Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-05T20:04:22.508Z] [INFO] POST /api/auth/logout 200 6ms +[2026-01-05T20:04:22.514Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-05T20:04:22.515Z] [INFO] POST /api/auth/logout 200 5ms +[2026-01-05T20:04:22.538Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (CKjn1VgtZ7pXCsf9AAAJ) +[2026-01-05T20:04:31.807Z] [INFO] GET / 200 3ms +[2026-01-05T20:04:31.880Z] [INFO] GET /css/variables.css 200 1ms +[2026-01-05T20:04:31.910Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T20:04:31.938Z] [INFO] GET /css/components.css 200 3ms +[2026-01-05T20:04:31.942Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T20:04:31.950Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-05T20:04:31.952Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-05T20:04:31.953Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T20:04:31.957Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-05T20:04:31.969Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T20:04:32.004Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-05T20:04:32.008Z] [INFO] GET /css/gitea.css 200 7ms +[2026-01-05T20:04:32.010Z] [INFO] GET /css/coding.css 200 8ms +[2026-01-05T20:04:32.021Z] [INFO] GET /css/knowledge.css 200 8ms +[2026-01-05T20:04:32.024Z] [INFO] GET /css/reminders.css 200 6ms +[2026-01-05T20:04:32.026Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T20:04:32.036Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T20:04:32.047Z] [INFO] GET /js/app.js 200 6ms +[2026-01-05T20:04:32.125Z] [INFO] GET /js/store.js 200 14ms +[2026-01-05T20:04:32.127Z] [INFO] GET /js/offline.js 200 14ms +[2026-01-05T20:04:32.129Z] [INFO] GET /js/sync.js 200 14ms +[2026-01-05T20:04:32.131Z] [INFO] GET /js/auth.js 200 10ms +[2026-01-05T20:04:32.133Z] [INFO] GET /js/api.js 200 10ms +[2026-01-05T20:04:32.134Z] [INFO] GET /js/board.js 200 4ms +[2026-01-05T20:04:32.156Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T20:04:32.157Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T20:04:32.159Z] [INFO] GET /js/list.js 200 4ms +[2026-01-05T20:04:32.161Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-05T20:04:32.177Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T20:04:32.193Z] [INFO] GET /js/admin.js 200 8ms +[2026-01-05T20:04:32.199Z] [INFO] GET /js/proposals.js 200 8ms +[2026-01-05T20:04:32.201Z] [INFO] GET /js/gitea.js 200 5ms +[2026-01-05T20:04:32.203Z] [INFO] GET /js/notifications.js 200 6ms +[2026-01-05T20:04:32.210Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T20:04:32.212Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T20:04:32.224Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T20:04:32.227Z] [INFO] GET /js/reminders.js 200 1ms +[2026-01-05T20:04:32.232Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T20:04:32.277Z] [INFO] GET /assets/icons/task.svg 200 5ms +[2026-01-05T20:04:32.281Z] [INFO] GET /sw.js 200 5ms +[2026-01-05T20:04:32.331Z] [INFO] GET /css/variables.css 200 8ms +[2026-01-05T20:04:32.333Z] [INFO] GET /index.html 200 5ms +[2026-01-05T20:04:32.336Z] [INFO] GET / 200 7ms +[2026-01-05T20:04:32.366Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T20:04:32.372Z] [INFO] GET /css/components.css 200 3ms +[2026-01-05T20:04:32.375Z] [INFO] GET /css/board.css 200 4ms +[2026-01-05T20:04:32.399Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-05T20:04:32.411Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-05T20:04:32.414Z] [INFO] GET /css/responsive.css 200 6ms +[2026-01-05T20:04:32.429Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T20:04:32.442Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T20:04:32.447Z] [INFO] GET /js/api.js 200 2ms +[2026-01-05T20:04:32.464Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-05T20:04:32.477Z] [INFO] GET /js/store.js 200 3ms +[2026-01-05T20:04:32.481Z] [INFO] GET /js/sync.js 200 2ms +[2026-01-05T20:04:32.499Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-05T20:04:32.517Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T20:04:32.522Z] [INFO] GET /js/task-modal.js 200 10ms +[2026-01-05T20:04:32.532Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T20:04:32.557Z] [INFO] GET /js/list.js 200 6ms +[2026-01-05T20:04:32.559Z] [INFO] GET /js/shortcuts.js 200 6ms +[2026-01-05T20:04:32.566Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T20:04:32.589Z] [INFO] GET /js/tour.js 200 2ms +[2026-01-05T20:04:32.592Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T20:04:32.597Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T20:04:32.623Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T20:04:32.630Z] [INFO] GET /js/gitea.js 200 1ms +[2026-01-05T20:04:32.633Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T20:04:32.660Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T20:04:32.666Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T20:04:32.687Z] [INFO] GET /css/list.css 200 5ms +[2026-01-05T20:04:32.693Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T20:04:32.699Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T20:04:32.719Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T20:04:32.727Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T20:04:32.732Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T20:04:32.759Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T20:04:32.764Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T20:04:36.464Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T20:04:36.465Z] [INFO] POST /api/auth/login 200 451ms +[2026-01-05T20:04:36.506Z] [INFO] GET /api/auth/users 200 4ms +[2026-01-05T20:04:36.537Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (_ygRGAIwUhG0XfVjAAAL) +[2026-01-05T20:04:36.544Z] [INFO] GET /api/projects 200 5ms +[2026-01-05T20:04:36.584Z] [INFO] GET /api/stats/dashboard?projectId=2 200 6ms +[2026-01-05T20:04:36.587Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T20:04:36.593Z] [INFO] GET /api/labels/2 200 5ms +[2026-01-05T20:04:36.595Z] [INFO] GET /api/columns/2 200 6ms +[2026-01-05T20:04:36.608Z] [INFO] GET /api/tasks/project/2 200 12ms +[2026-01-05T20:04:36.615Z] [INFO] GET /api/reminders?project_id=2 200 3ms +[2026-01-05T20:04:36.679Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 6ms +[2026-01-05T20:04:36.714Z] [INFO] GET /api/notifications 200 7ms +[2026-01-05T20:04:36.753Z] [INFO] GET /api/knowledge/categories 200 9ms +[2026-01-05T20:04:39.250Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T20:04:42.740Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T20:04:42.805Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-05T20:04:43.371Z] [INFO] readCLAUDEmd: Checking path /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-05T20:04:43.372Z] [INFO] readCLAUDEmd: File does not exist: /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-05T20:04:43.372Z] [INFO] Trying fallback path for TaskMate: /app/taskmate-source +[2026-01-05T20:04:43.372Z] [INFO] readCLAUDEmd: Checking path /app/taskmate-source/CLAUDE.md +[2026-01-05T20:04:43.373Z] [INFO] readCLAUDEmd: Successfully read 14396 characters from /app/taskmate-source/CLAUDE.md +[2026-01-05T20:04:43.376Z] [INFO] GET /api/coding/directories 200 10ms +[2026-01-05T20:04:43.449Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T20:04:43.449Z] [INFO] Git directory exists: true +[2026-01-05T20:04:43.450Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T20:04:43.450Z] [INFO] Git directory exists: true +[2026-01-05T20:04:43.496Z] [INFO] GET /api/coding/directories/3/status 200 55ms +[2026-01-05T20:04:49.371Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T20:04:52.804Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T20:04:54.372Z] [INFO] GET /api/tasks/6 200 23ms +[2026-01-05T20:04:54.409Z] [INFO] GET /api/subtasks/6 200 6ms +[2026-01-05T20:04:54.420Z] [INFO] GET /api/links/6 200 9ms +[2026-01-05T20:04:54.437Z] [INFO] GET /api/files/6 200 16ms +[2026-01-05T20:04:54.445Z] [INFO] GET /api/comments/6 200 6ms +[2026-01-05T20:04:54.454Z] [INFO] GET /api/tasks/6/history 404 8ms +[2026-01-05T20:04:54.483Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzY0MzQ5MiwiZXhwIjoxNzY3NjQ0MzkyfQ.7EFsskHasy8djBBtZRksvjToFCYZS7Q2oBSUC0GJrNU 200 11ms +[2026-01-05T20:04:55.360Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T20:04:58.723Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T20:04:58.727Z] [INFO] PUT /api/tasks/6 200 14ms +[2026-01-05T20:04:59.516Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T20:08:35.469Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T20:12:47.078Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T20:12:50.257Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T20:12:50.734Z] [INFO] GET / 200 5ms +[2026-01-05T20:12:50.794Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (_ygRGAIwUhG0XfVjAAAL) +[2026-01-05T20:12:50.807Z] [INFO] GET /css/variables.css 200 1ms +[2026-01-05T20:12:50.841Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T20:12:50.876Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T20:12:50.880Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T20:12:50.882Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-05T20:12:50.889Z] [INFO] GET /css/calendar.css 200 1ms +[2026-01-05T20:12:50.898Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T20:12:50.908Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T20:12:50.923Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T20:12:50.933Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T20:12:50.941Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T20:12:50.944Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T20:12:50.951Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-05T20:12:50.955Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-05T20:12:50.960Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T20:12:50.972Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T20:12:50.981Z] [INFO] GET /js/app.js 200 1ms +[2026-01-05T20:12:51.048Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-05T20:12:52.176Z] [INFO] GET / 200 3ms +[2026-01-05T20:12:52.258Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T20:12:52.261Z] [INFO] GET /css/base.css 200 8ms +[2026-01-05T20:12:52.265Z] [INFO] GET /css/board.css 200 10ms +[2026-01-05T20:12:52.268Z] [INFO] GET /css/calendar.css 200 9ms +[2026-01-05T20:12:52.270Z] [INFO] GET /css/components.css 200 7ms +[2026-01-05T20:12:52.271Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-05T20:12:52.294Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T20:12:52.304Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T20:12:52.320Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T20:12:52.331Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-05T20:12:52.333Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T20:12:52.336Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-05T20:12:52.338Z] [INFO] GET /css/knowledge.css 200 1ms +[2026-01-05T20:12:52.350Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T20:12:52.362Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T20:12:52.368Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T20:12:52.378Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-05T20:12:52.511Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T20:12:52.569Z] [INFO] GET /sw.js 200 1ms +[2026-01-05T20:12:52.613Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-05T20:12:52.616Z] [INFO] GET / 200 6ms +[2026-01-05T20:12:52.618Z] [INFO] GET /index.html 200 6ms +[2026-01-05T20:12:52.647Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T20:12:52.652Z] [INFO] GET /css/components.css 200 1ms +[2026-01-05T20:12:52.656Z] [INFO] GET /css/board.css 200 2ms +[2026-01-05T20:12:52.681Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-05T20:12:52.688Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T20:12:52.691Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T20:12:52.719Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T20:12:52.724Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T20:12:52.741Z] [INFO] GET /js/api.js 200 3ms +[2026-01-05T20:12:52.760Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-05T20:12:52.763Z] [INFO] GET /js/store.js 200 7ms +[2026-01-05T20:12:52.790Z] [INFO] GET /js/sync.js 200 2ms +[2026-01-05T20:12:52.796Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-05T20:12:52.802Z] [INFO] GET /js/board.js 200 2ms +[2026-01-05T20:12:52.824Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T20:12:52.833Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-05T20:12:52.835Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T20:12:52.855Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T20:12:52.864Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T20:12:52.868Z] [INFO] GET /js/tour.js 200 2ms +[2026-01-05T20:12:52.888Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T20:12:52.898Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T20:12:52.899Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T20:12:52.929Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T20:12:52.930Z] [INFO] GET /js/knowledge.js 200 5ms +[2026-01-05T20:12:52.943Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T20:12:52.965Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T20:12:52.967Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T20:12:52.976Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T20:12:52.998Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T20:12:53.000Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T20:12:53.009Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-05T20:12:53.032Z] [INFO] GET /css/gitea.css 200 1ms +[2026-01-05T20:12:53.033Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T20:12:53.051Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T20:12:56.544Z] [INFO] GET /?username=hendrik_gebhardt%40gmx.de&password=Hzfne313%21fdEF34 200 4ms +[2026-01-05T20:12:56.630Z] [INFO] GET /css/base.css 200 5ms +[2026-01-05T20:12:56.634Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T20:12:56.638Z] [INFO] GET /css/board.css 200 9ms +[2026-01-05T20:12:56.641Z] [INFO] GET /css/calendar.css 200 9ms +[2026-01-05T20:12:56.643Z] [INFO] GET /css/variables.css 200 7ms +[2026-01-05T20:12:56.644Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T20:12:56.662Z] [INFO] GET /css/list.css 200 1ms +[2026-01-05T20:12:56.676Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T20:12:56.694Z] [INFO] GET /css/proposals.css 200 6ms +[2026-01-05T20:12:56.702Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-05T20:12:56.706Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-05T20:12:56.708Z] [INFO] GET /css/gitea.css 200 7ms +[2026-01-05T20:12:56.712Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T20:12:56.713Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-05T20:12:56.727Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T20:12:56.737Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T20:12:56.738Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T20:12:56.841Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T20:12:58.322Z] [INFO] GET /sw.js 200 2ms +[2026-01-05T20:13:03.206Z] [INFO] GET / 200 4ms +[2026-01-05T20:13:03.300Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-05T20:13:03.302Z] [INFO] GET /css/components.css 200 7ms +[2026-01-05T20:13:03.305Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-05T20:13:03.307Z] [INFO] GET /css/base.css 200 9ms +[2026-01-05T20:13:03.309Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T20:13:03.310Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-05T20:13:03.332Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T20:13:03.337Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-05T20:13:03.356Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T20:13:03.360Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-05T20:13:03.362Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T20:13:03.365Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T20:13:03.366Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T20:13:03.367Z] [INFO] GET /css/reminders.css 200 0ms +[2026-01-05T20:13:03.390Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T20:13:03.395Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T20:13:03.406Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T20:13:03.512Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-05T20:13:05.015Z] [INFO] GET /sw.js 200 2ms +[2026-01-05T20:13:06.129Z] [INFO] GET /?username=hendrik_gebhardt%40gmx.de&password=Hzfne313%21fdEF34 200 3ms +[2026-01-05T20:13:06.214Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T20:13:06.221Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-05T20:13:06.225Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-05T20:13:06.231Z] [INFO] GET /css/base.css 200 11ms +[2026-01-05T20:13:06.233Z] [INFO] GET /css/components.css 200 9ms +[2026-01-05T20:13:06.235Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-05T20:13:06.266Z] [INFO] GET /css/list.css 200 5ms +[2026-01-05T20:13:06.268Z] [INFO] GET /css/admin.css 200 6ms +[2026-01-05T20:13:06.272Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T20:13:06.287Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-05T20:13:06.297Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T20:13:06.298Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-05T20:13:06.299Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-05T20:13:06.302Z] [INFO] GET /css/knowledge.css 200 1ms +[2026-01-05T20:13:06.308Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T20:13:06.319Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T20:13:06.329Z] [INFO] GET /js/app.js 200 1ms +[2026-01-05T20:13:06.395Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-05T20:13:07.937Z] [INFO] GET /sw.js 200 2ms +[2026-01-05T20:13:35.473Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T20:13:45.953Z] [WARN] Login fehlgeschlagen: Benutzer nicht gefunden - test +[2026-01-05T20:13:45.955Z] [INFO] POST /api/auth/login 401 2ms +[2026-01-05T20:18:35.481Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T20:23:29.783Z] [INFO] GET /?username=hendrik_gebhardt%40gmx.de&password=Hzfne313%21fdEF34 200 6ms +[2026-01-05T20:23:29.853Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T20:23:29.884Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T20:23:29.928Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T20:23:29.932Z] [INFO] GET /css/components.css 200 8ms +[2026-01-05T20:23:29.939Z] [INFO] GET /css/modal.css 200 12ms +[2026-01-05T20:23:29.941Z] [INFO] GET /css/calendar.css 200 11ms +[2026-01-05T20:23:29.942Z] [INFO] GET /css/list.css 200 12ms +[2026-01-05T20:23:29.943Z] [INFO] GET /css/admin.css 200 6ms +[2026-01-05T20:23:29.962Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T20:23:29.981Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-05T20:23:29.984Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-05T20:23:29.988Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-05T20:23:29.995Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T20:23:29.999Z] [INFO] GET /css/responsive.css 200 5ms +[2026-01-05T20:23:30.001Z] [INFO] GET /css/reminders.css 200 4ms +[2026-01-05T20:23:30.014Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T20:23:30.026Z] [INFO] GET /js/app.js 200 5ms +[2026-01-05T20:23:30.158Z] [INFO] GET /assets/icons/task.svg 200 4ms +[2026-01-05T20:23:34.333Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T20:23:34.334Z] [INFO] POST /api/auth/login 200 495ms +[2026-01-05T20:23:34.384Z] [INFO] GET /?username=hendrik_gebhardt%40gmx.de&password=Hzfne313%21fdEF34 200 4ms +[2026-01-05T20:23:34.461Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-05T20:23:34.465Z] [INFO] GET /css/base.css 200 7ms +[2026-01-05T20:23:34.468Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-05T20:23:34.470Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T20:23:34.472Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T20:23:34.474Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T20:23:34.494Z] [INFO] GET /css/list.css 200 1ms +[2026-01-05T20:23:34.499Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T20:23:34.532Z] [INFO] GET /css/proposals.css 200 8ms +[2026-01-05T20:23:34.536Z] [INFO] GET /css/gitea.css 200 9ms +[2026-01-05T20:23:34.537Z] [INFO] GET /css/coding.css 200 9ms +[2026-01-05T20:23:34.540Z] [INFO] GET /css/knowledge.css 200 9ms +[2026-01-05T20:23:34.544Z] [INFO] GET /css/notifications.css 200 9ms +[2026-01-05T20:23:34.549Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-05T20:23:34.559Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T20:23:34.573Z] [INFO] GET /css/mobile.css 200 5ms +[2026-01-05T20:23:34.578Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T20:23:34.643Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T20:23:35.481Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T20:23:36.171Z] [INFO] GET /sw.js 200 2ms +[2026-01-05T20:23:36.214Z] [INFO] GET /css/variables.css 200 8ms +[2026-01-05T20:23:36.217Z] [INFO] GET /index.html 200 6ms +[2026-01-05T20:23:36.220Z] [INFO] GET / 200 8ms +[2026-01-05T20:23:36.247Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T20:23:36.261Z] [INFO] GET /css/components.css 200 2ms +[2026-01-05T20:23:36.281Z] [INFO] GET /css/board.css 200 4ms +[2026-01-05T20:23:36.284Z] [INFO] GET /css/modal.css 200 2ms +[2026-01-05T20:23:36.296Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T20:23:36.317Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T20:23:36.337Z] [INFO] GET /js/app.js 200 1ms +[2026-01-05T20:23:36.342Z] [INFO] GET /js/api.js 200 2ms +[2026-01-05T20:23:36.346Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-05T20:23:36.375Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-05T20:23:36.382Z] [INFO] GET /js/store.js 200 1ms +[2026-01-05T20:23:36.396Z] [INFO] GET /js/sync.js 200 3ms +[2026-01-05T20:23:36.407Z] [INFO] GET /js/offline.js 200 2ms +[2026-01-05T20:23:36.416Z] [INFO] GET /js/board.js 200 2ms +[2026-01-05T20:23:36.427Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-05T20:23:36.440Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T20:23:36.465Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T20:23:36.474Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T20:23:36.479Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T20:23:36.499Z] [INFO] GET /js/tour.js 200 2ms +[2026-01-05T20:23:36.506Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T20:23:36.510Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T20:23:36.528Z] [INFO] GET /js/notifications.js 200 1ms +[2026-01-05T20:23:36.538Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T20:23:36.542Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T20:23:36.558Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T20:23:36.574Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T20:23:36.579Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T20:23:36.590Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T20:23:36.608Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T20:23:36.612Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T20:23:36.620Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-05T20:23:36.639Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T20:23:36.646Z] [INFO] GET /css/knowledge.css 200 1ms +[2026-01-05T20:23:36.650Z] [INFO] GET /css/coding.css 200 1ms +[2026-01-05T20:23:44.498Z] [INFO] GET /?username=hendrik_gebhardt%40gmx.de&password=Hzfne313%21fdEF34 200 7ms +[2026-01-05T20:23:44.575Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T20:23:44.578Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-05T20:23:44.582Z] [INFO] GET /css/components.css 200 9ms +[2026-01-05T20:23:44.585Z] [INFO] GET /css/variables.css 200 8ms +[2026-01-05T20:23:44.588Z] [INFO] GET /css/base.css 200 8ms +[2026-01-05T20:23:44.589Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-05T20:23:44.618Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T20:23:44.621Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-05T20:23:44.625Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T20:23:44.630Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T20:23:44.631Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T20:23:44.647Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-05T20:23:44.651Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T20:23:44.653Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-05T20:23:44.655Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T20:23:44.661Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-05T20:23:44.682Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T20:23:44.790Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T20:23:48.210Z] [INFO] GET / 200 3ms +[2026-01-05T20:23:48.287Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T20:23:48.297Z] [INFO] GET /css/components.css 200 8ms +[2026-01-05T20:23:48.304Z] [INFO] GET /css/calendar.css 200 10ms +[2026-01-05T20:23:48.305Z] [INFO] GET /css/modal.css 200 10ms +[2026-01-05T20:23:48.307Z] [INFO] GET /css/variables.css 200 7ms +[2026-01-05T20:23:48.308Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T20:23:48.324Z] [INFO] GET /css/list.css 200 1ms +[2026-01-05T20:23:48.347Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T20:23:48.356Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T20:23:48.367Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-05T20:23:48.368Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-05T20:23:48.370Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-05T20:23:48.376Z] [INFO] GET /css/knowledge.css 200 1ms +[2026-01-05T20:23:48.390Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-05T20:23:48.391Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T20:23:48.400Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T20:23:48.401Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T20:23:48.463Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T20:23:49.997Z] [INFO] GET /sw.js 200 4ms +[2026-01-05T20:23:51.382Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T20:23:51.383Z] [INFO] POST /api/auth/login 200 458ms +[2026-01-05T20:23:51.423Z] [INFO] GET / 200 4ms +[2026-01-05T20:23:51.496Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T20:23:51.500Z] [INFO] GET /css/variables.css 200 7ms +[2026-01-05T20:23:51.505Z] [INFO] GET /css/base.css 200 10ms +[2026-01-05T20:23:51.510Z] [INFO] GET /css/modal.css 200 12ms +[2026-01-05T20:23:51.512Z] [INFO] GET /css/board.css 200 10ms +[2026-01-05T20:23:51.513Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T20:23:51.531Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T20:23:51.538Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T20:23:51.553Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T20:23:51.559Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-05T20:23:51.563Z] [INFO] GET /css/gitea.css 200 1ms +[2026-01-05T20:23:51.567Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T20:23:51.568Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T20:23:51.569Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-05T20:23:51.584Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T20:23:51.594Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-05T20:23:51.599Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T20:23:51.664Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T20:23:53.196Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T20:24:08.356Z] [INFO] HEAD / 200 1ms +[2026-01-05T20:24:08.733Z] [INFO] GET / 206 5ms +[2026-01-05T20:24:09.349Z] [INFO] HEAD /_next 200 2ms +[2026-01-05T20:24:09.822Z] [INFO] POST / 200 4ms +[2026-01-05T20:24:10.225Z] [INFO] POST /_next 200 3ms +[2026-01-05T20:28:35.504Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T20:33:35.507Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T20:38:35.517Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T20:43:35.530Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T20:46:48.328Z] [ERROR] Error: Bad escaped character in JSON at position 59 {"stack":"SyntaxError: Bad escaped character in JSON at position 59\n at JSON.parse ()\n at parse (/app/node_modules/body-parser/lib/types/json.js:92:19)\n at /app/node_modules/body-parser/lib/read.js:128:18\n at AsyncResource.runInAsyncScope (node:async_hooks:206:9)\n at invokeCallback (/app/node_modules/raw-body/index.js:238:16)\n at done (/app/node_modules/raw-body/index.js:227:7)\n at IncomingMessage.onEnd (/app/node_modules/raw-body/index.js:287:7)\n at IncomingMessage.emit (node:events:524:28)\n at endReadableNT (node:internal/streams/readable:1698:12)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)"} +[2026-01-05T20:48:35.535Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T20:52:29.735Z] [WARN] Login fehlgeschlagen: Falsches Passwort - admin (Versuch 1) +[2026-01-05T20:52:29.739Z] [INFO] POST /api/auth/login 401 499ms +[2026-01-05T20:53:02.210Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-05T20:53:02.362Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-05T20:53:02.916Z] [INFO] Admin-Passwort bereits korrekt +[2026-01-05T20:53:02.918Z] [INFO] Datenbank initialisiert +[2026-01-05T20:53:02.930Z] [INFO] Server läuft auf Port 3001 +[2026-01-05T20:53:02.934Z] [INFO] Umgebung: development +[2026-01-05T20:53:02.936Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-05T20:53:02.936Z] [INFO] Automatische Backups aktiviert +[2026-01-05T20:53:02.940Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T20:53:02.942Z] [INFO] Reminder Service gestartet - prüft alle 5 Minuten +[2026-01-05T20:54:02.983Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-05T20-54-02-956Z.db.enc +[2026-01-05T20:54:02.984Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-05T20-54-02-956Z.db.enc +[2026-01-05T20:54:02.985Z] [INFO] Backup erstellt: backup_2026-01-05T20-54-02-956Z.db +[2026-01-05T20:54:03.003Z] [INFO] Datei sicher gelöscht: backup_2026-01-04T00-01-36-216Z.db.enc +[2026-01-05T20:54:03.003Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-04T00-01-36-216Z.db.enc +[2026-01-05T20:54:03.005Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-05T20:58:02.955Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T20:58:08.069Z] [WARN] Login fehlgeschlagen: Falsches Passwort - admin (Versuch 2) +[2026-01-05T20:58:08.087Z] [INFO] POST /api/auth/login 401 520ms +[2026-01-05T21:03:02.970Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T21:08:02.998Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T21:13:03.019Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T21:18:03.023Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T21:23:03.028Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T21:28:03.061Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T21:33:03.083Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T21:34:32.036Z] [INFO] GET / 200 22ms +[2026-01-05T21:36:54.504Z] [INFO] Login erfolgreich: admin +[2026-01-05T21:36:54.511Z] [INFO] POST /api/auth/login 200 541ms +[2026-01-05T21:38:03.107Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T21:41:52.412Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T21:41:52.414Z] [INFO] POST /api/auth/login 200 443ms +[2026-01-05T21:41:52.457Z] [INFO] GET / 200 7ms +[2026-01-05T21:41:52.531Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-05T21:41:52.568Z] [INFO] GET /css/base.css 200 5ms +[2026-01-05T21:41:52.604Z] [INFO] GET /css/components.css 200 13ms +[2026-01-05T21:41:52.609Z] [INFO] GET /css/board.css 200 12ms +[2026-01-05T21:41:52.615Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-05T21:41:52.618Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-05T21:41:52.621Z] [INFO] GET /css/list.css 200 7ms +[2026-01-05T21:41:52.623Z] [INFO] GET /css/admin.css 200 6ms +[2026-01-05T21:41:52.661Z] [INFO] GET /css/notifications.css 200 9ms +[2026-01-05T21:41:52.664Z] [INFO] GET /css/proposals.css 200 7ms +[2026-01-05T21:41:52.670Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-05T21:41:52.674Z] [INFO] GET /css/gitea.css 200 7ms +[2026-01-05T21:41:52.677Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-05T21:41:52.680Z] [INFO] GET /css/reminders.css 200 4ms +[2026-01-05T21:41:52.696Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T21:41:52.698Z] [INFO] GET /css/mobile.css 200 6ms +[2026-01-05T21:41:52.708Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T21:41:52.786Z] [INFO] GET /assets/icons/task.svg 304 15ms +[2026-01-05T21:41:54.297Z] [INFO] GET /sw.js 200 5ms +[2026-01-05T21:42:00.774Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T21:42:00.776Z] [INFO] POST /api/auth/login 200 442ms +[2026-01-05T21:42:00.816Z] [INFO] GET / 200 5ms +[2026-01-05T21:42:00.893Z] [INFO] GET /css/base.css 200 9ms +[2026-01-05T21:42:00.898Z] [INFO] GET /css/calendar.css 200 11ms +[2026-01-05T21:42:00.901Z] [INFO] GET /css/components.css 200 12ms +[2026-01-05T21:42:00.902Z] [INFO] GET /css/modal.css 200 11ms +[2026-01-05T21:42:00.906Z] [INFO] GET /css/board.css 200 10ms +[2026-01-05T21:42:00.907Z] [INFO] GET /css/variables.css 200 7ms +[2026-01-05T21:42:00.928Z] [INFO] GET /css/list.css 200 5ms +[2026-01-05T21:42:00.938Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T21:42:00.955Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T21:42:00.964Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-05T21:42:00.965Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T21:42:00.967Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-05T21:42:00.971Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T21:42:00.972Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-05T21:42:00.989Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T21:42:00.997Z] [INFO] GET /css/mobile.css 200 5ms +[2026-01-05T21:42:01.001Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T21:42:01.065Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-05T21:42:02.583Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T21:42:09.129Z] [INFO] Login erfolgreich: admin +[2026-01-05T21:42:09.130Z] [INFO] POST /api/auth/login 200 454ms +[2026-01-05T21:42:09.175Z] [INFO] GET / 200 6ms +[2026-01-05T21:42:09.237Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T21:42:09.244Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-05T21:42:09.245Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-05T21:42:09.246Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-05T21:42:09.251Z] [INFO] GET /css/board.css 200 4ms +[2026-01-05T21:42:09.252Z] [INFO] GET /css/components.css 200 4ms +[2026-01-05T21:42:09.268Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T21:42:09.277Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T21:42:09.299Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T21:42:09.301Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T21:42:09.308Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-05T21:42:09.310Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-05T21:42:09.314Z] [INFO] GET /css/knowledge.css 200 8ms +[2026-01-05T21:42:09.315Z] [INFO] GET /css/reminders.css 200 6ms +[2026-01-05T21:42:09.328Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T21:42:09.333Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T21:42:09.341Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T21:42:09.406Z] [INFO] GET /assets/icons/task.svg 304 4ms +[2026-01-05T21:42:10.929Z] [INFO] GET /sw.js 200 2ms +[2026-01-05T21:43:03.113Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T21:43:31.675Z] [ERROR] Error: Bad escaped character in JSON at position 48 {"stack":"SyntaxError: Bad escaped character in JSON at position 48\n at JSON.parse ()\n at parse (/app/node_modules/body-parser/lib/types/json.js:92:19)\n at /app/node_modules/body-parser/lib/read.js:128:18\n at AsyncResource.runInAsyncScope (node:async_hooks:206:9)\n at invokeCallback (/app/node_modules/raw-body/index.js:238:16)\n at done (/app/node_modules/raw-body/index.js:227:7)\n at IncomingMessage.onEnd (/app/node_modules/raw-body/index.js:287:7)\n at IncomingMessage.emit (node:events:524:28)\n at endReadableNT (node:internal/streams/readable:1698:12)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)"} +[2026-01-05T21:43:43.956Z] [WARN] Login fehlgeschlagen: Falsches Passwort - admin (Versuch 1) +[2026-01-05T21:43:43.959Z] [INFO] POST /api/auth/login 401 725ms +[2026-01-05T21:44:12.428Z] [INFO] GET / 200 3ms +[2026-01-05T21:44:12.508Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T21:44:12.547Z] [INFO] GET /css/base.css 200 6ms +[2026-01-05T21:44:12.577Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T21:44:12.585Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T21:44:12.588Z] [INFO] GET /css/list.css 200 6ms +[2026-01-05T21:44:12.591Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T21:44:12.592Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-05T21:44:12.594Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-05T21:44:12.625Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-05T21:44:12.635Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-05T21:44:12.639Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-05T21:44:12.650Z] [INFO] GET /css/coding.css 200 8ms +[2026-01-05T21:44:12.652Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-05T21:44:12.654Z] [INFO] GET /css/reminders.css 200 5ms +[2026-01-05T21:44:12.657Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T21:44:12.670Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T21:44:12.680Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T21:44:12.744Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-05T21:44:14.261Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T21:44:17.329Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T21:44:17.330Z] [INFO] POST /api/auth/login 200 461ms +[2026-01-05T21:44:17.376Z] [INFO] GET / 200 3ms +[2026-01-05T21:44:17.458Z] [INFO] GET /css/components.css 200 9ms +[2026-01-05T21:44:17.459Z] [INFO] GET /css/base.css 200 9ms +[2026-01-05T21:44:17.464Z] [INFO] GET /css/board.css 200 11ms +[2026-01-05T21:44:17.463Z] [INFO] GET /css/modal.css 200 12ms +[2026-01-05T21:44:17.468Z] [INFO] GET /css/calendar.css 200 12ms +[2026-01-05T21:44:17.469Z] [INFO] GET /css/variables.css 200 8ms +[2026-01-05T21:44:17.505Z] [INFO] GET /css/list.css 200 12ms +[2026-01-05T21:44:17.511Z] [INFO] GET /css/admin.css 200 11ms +[2026-01-05T21:44:17.514Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T21:44:17.517Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T21:44:17.517Z] [INFO] GET /css/gitea.css 200 1ms +[2026-01-05T21:44:17.520Z] [INFO] GET /css/coding.css 200 1ms +[2026-01-05T21:44:17.534Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T21:44:17.537Z] [INFO] GET /css/reminders.css 200 1ms +[2026-01-05T21:44:17.542Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T21:44:17.552Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T21:44:17.554Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T21:44:17.613Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T21:44:19.137Z] [INFO] GET /sw.js 200 2ms +[2026-01-05T21:44:21.756Z] [WARN] Login fehlgeschlagen: Falsches Passwort - admin (Versuch 2) +[2026-01-05T21:44:21.758Z] [INFO] POST /api/auth/login 401 469ms +[2026-01-05T21:44:25.687Z] [WARN] Login fehlgeschlagen: Falsches Passwort - admin (Versuch 3) +[2026-01-05T21:44:25.689Z] [INFO] POST /api/auth/login 401 700ms +[2026-01-05T21:44:49.719Z] [WARN] Login fehlgeschlagen: Falsches Passwort - admin (Versuch 4) +[2026-01-05T21:44:49.721Z] [INFO] POST /api/auth/login 401 480ms +[2026-01-05T21:45:15.617Z] [WARN] Account gesperrt nach 5 Fehlversuchen: admin +[2026-01-05T21:45:15.617Z] [WARN] Login fehlgeschlagen: Falsches Passwort - admin (Versuch 5) +[2026-01-05T21:45:15.620Z] [INFO] POST /api/auth/login 401 442ms +[2026-01-05T21:45:33.085Z] [WARN] Login blockiert: Account gesperrt - admin +[2026-01-05T21:45:33.087Z] [INFO] POST /api/auth/login 423 4ms +[2026-01-05T21:45:39.385Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T21:45:39.386Z] [INFO] POST /api/auth/login 200 631ms +[2026-01-05T21:45:39.424Z] [INFO] GET / 200 2ms +[2026-01-05T21:45:39.487Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T21:45:39.518Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T21:45:39.559Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T21:45:39.562Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T21:45:39.615Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-05T21:45:39.645Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-05T21:45:39.647Z] [INFO] GET /css/list.css 200 5ms +[2026-01-05T21:45:39.673Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T21:45:39.677Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T21:45:39.682Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T21:45:39.710Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-05T21:45:39.714Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-05T21:45:39.720Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T21:45:39.743Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T21:45:39.747Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-05T21:45:39.778Z] [INFO] GET /css/mobile.css 200 6ms +[2026-01-05T21:45:39.784Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T21:45:39.837Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-05T21:45:40.865Z] [INFO] GET / 200 10ms +[2026-01-05T21:45:40.936Z] [INFO] GET /css/board.css 200 3ms +[2026-01-05T21:45:40.940Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T21:45:40.943Z] [INFO] GET /css/variables.css 200 7ms +[2026-01-05T21:45:40.946Z] [INFO] GET /css/components.css 200 7ms +[2026-01-05T21:45:40.947Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-05T21:45:40.948Z] [INFO] GET /css/base.css 200 4ms +[2026-01-05T21:45:40.975Z] [INFO] GET /css/list.css 200 1ms +[2026-01-05T21:45:40.980Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T21:45:40.994Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T21:45:41.006Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T21:45:41.010Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-05T21:45:41.032Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-05T21:45:41.036Z] [INFO] GET /css/coding.css 200 8ms +[2026-01-05T21:45:41.039Z] [INFO] GET /css/responsive.css 200 9ms +[2026-01-05T21:45:41.040Z] [INFO] GET /css/reminders.css 200 6ms +[2026-01-05T21:45:41.048Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T21:45:41.084Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T21:45:41.204Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-05T21:45:41.343Z] [INFO] GET /sw.js 200 2ms +[2026-01-05T21:45:41.677Z] [INFO] GET / 200 4ms +[2026-01-05T21:45:41.766Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T21:45:41.770Z] [INFO] GET /css/components.css 200 9ms +[2026-01-05T21:45:41.773Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-05T21:45:41.777Z] [INFO] GET /css/board.css 200 9ms +[2026-01-05T21:45:41.778Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-05T21:45:41.780Z] [INFO] GET /css/base.css 200 5ms +[2026-01-05T21:45:41.813Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T21:45:41.815Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T21:45:41.822Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T21:45:41.831Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-05T21:45:41.837Z] [INFO] GET /css/gitea.css 200 8ms +[2026-01-05T21:45:41.848Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-05T21:45:41.851Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-05T21:45:41.859Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-05T21:45:41.864Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T21:45:41.885Z] [INFO] GET /css/mobile.css 200 5ms +[2026-01-05T21:45:41.906Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T21:45:42.003Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T21:46:19.909Z] [INFO] GET /css/base.css 200 11ms +[2026-01-05T21:46:19.911Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-05T21:46:19.913Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T21:46:19.917Z] [INFO] GET /css/components.css 200 9ms +[2026-01-05T21:46:19.918Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T21:46:19.921Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T21:46:19.950Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T21:46:19.952Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T21:46:19.977Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T21:46:19.982Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T21:46:19.986Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-05T21:46:19.988Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-05T21:46:19.991Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-05T21:46:19.998Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-05T21:46:20.007Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T21:46:20.011Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T21:46:23.606Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T21:46:23.608Z] [INFO] POST /api/auth/login 200 461ms +[2026-01-05T21:46:23.651Z] [INFO] GET / 200 5ms +[2026-01-05T21:46:23.719Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T21:46:23.721Z] [INFO] GET /css/base.css 200 4ms +[2026-01-05T21:46:23.725Z] [INFO] GET /css/components.css 200 7ms +[2026-01-05T21:46:23.727Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T21:46:23.731Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T21:46:23.734Z] [INFO] GET /css/calendar.css 200 1ms +[2026-01-05T21:46:23.758Z] [INFO] GET /css/list.css 200 7ms +[2026-01-05T21:46:23.760Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T21:46:23.787Z] [INFO] GET /css/proposals.css 200 6ms +[2026-01-05T21:46:23.797Z] [INFO] GET /css/gitea.css 200 8ms +[2026-01-05T21:46:23.799Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-05T21:46:23.800Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-05T21:46:23.808Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T21:46:23.811Z] [INFO] GET /css/reminders.css 200 1ms +[2026-01-05T21:46:23.829Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T21:46:23.845Z] [INFO] GET /css/mobile.css 200 7ms +[2026-01-05T21:46:23.874Z] [INFO] GET /js/app.js 200 9ms +[2026-01-05T21:46:23.975Z] [INFO] GET /assets/icons/task.svg 200 6ms +[2026-01-05T21:46:25.480Z] [INFO] GET /sw.js 200 7ms +[2026-01-05T21:47:55.348Z] [WARN] Login blockiert: Account gesperrt - admin +[2026-01-05T21:47:55.351Z] [INFO] POST /api/auth/login 423 5ms +[2026-01-05T21:48:00.343Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T21:48:00.344Z] [INFO] POST /api/auth/login 200 461ms +[2026-01-05T21:48:00.383Z] [INFO] GET / 200 3ms +[2026-01-05T21:48:00.460Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T21:48:00.491Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T21:48:00.524Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T21:48:00.526Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T21:48:00.528Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T21:48:00.538Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T21:48:00.539Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T21:48:00.555Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T21:48:00.574Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T21:48:00.580Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T21:48:00.584Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T21:48:00.593Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T21:48:00.609Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-05T21:48:00.611Z] [INFO] GET /css/reminders.css 200 4ms +[2026-01-05T21:48:00.614Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T21:48:00.628Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T21:48:00.629Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T21:48:00.704Z] [INFO] GET /js/store.js 200 3ms +[2026-01-05T21:48:00.707Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-05T21:48:00.712Z] [INFO] GET /js/api.js 200 9ms +[2026-01-05T21:48:00.714Z] [INFO] GET /js/auth.js 200 8ms +[2026-01-05T21:48:00.719Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-05T21:48:00.738Z] [INFO] GET /js/board.js 200 4ms +[2026-01-05T21:48:00.747Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-05T21:48:00.749Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-05T21:48:00.753Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T21:48:00.759Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T21:48:00.767Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T21:48:00.775Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T21:48:00.781Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T21:48:00.782Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T21:48:00.789Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T21:48:00.798Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T21:48:00.807Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T21:48:00.809Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-05T21:48:00.816Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-05T21:48:00.817Z] [INFO] GET /js/reminders.js 200 5ms +[2026-01-05T21:48:00.866Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T21:48:00.875Z] [INFO] GET /api/auth/users 200 6ms +[2026-01-05T21:48:00.877Z] [INFO] GET /assets/icons/task.svg 200 9ms +[2026-01-05T21:48:00.917Z] [INFO] GET /api/auth/users 200 8ms +[2026-01-05T21:48:00.953Z] [INFO] GET /api/projects 200 7ms +[2026-01-05T21:48:00.983Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (mg1c5PjbWJBBa_ClAAAB) +[2026-01-05T21:48:00.993Z] [INFO] GET /api/columns/2 200 5ms +[2026-01-05T21:48:01.026Z] [INFO] GET /api/tasks/project/2 200 32ms +[2026-01-05T21:48:01.034Z] [INFO] GET /api/stats/dashboard?projectId=2 200 37ms +[2026-01-05T21:48:01.042Z] [INFO] GET /api/labels/2 200 7ms +[2026-01-05T21:48:01.054Z] [INFO] GET /api/reminders?project_id=2 200 8ms +[2026-01-05T21:48:01.060Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T21:48:01.101Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 6ms +[2026-01-05T21:48:01.145Z] [INFO] GET /api/notifications 200 11ms +[2026-01-05T21:48:01.182Z] [INFO] GET /api/knowledge/categories 200 6ms +[2026-01-05T21:48:02.652Z] [INFO] GET /sw.js 200 2ms +[2026-01-05T21:48:02.699Z] [INFO] GET /css/variables.css 200 8ms +[2026-01-05T21:48:02.702Z] [INFO] GET /index.html 200 6ms +[2026-01-05T21:48:02.704Z] [INFO] GET / 200 7ms +[2026-01-05T21:48:02.729Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T21:48:02.766Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T21:48:02.768Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T21:48:02.772Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T21:48:02.804Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T21:48:02.816Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T21:48:02.835Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T21:48:02.845Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-05T21:48:02.851Z] [INFO] GET /js/api.js 200 2ms +[2026-01-05T21:48:02.877Z] [INFO] GET /js/auth.js 200 2ms +[2026-01-05T21:48:02.891Z] [INFO] GET /js/store.js 200 3ms +[2026-01-05T21:48:02.893Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-05T21:48:02.909Z] [INFO] GET /js/offline.js 200 2ms +[2026-01-05T21:48:02.926Z] [INFO] GET /js/board.js 200 3ms +[2026-01-05T21:48:02.927Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T21:48:02.947Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-05T21:48:02.963Z] [INFO] GET /js/list.js 200 4ms +[2026-01-05T21:48:02.965Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-05T21:48:02.979Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T21:48:02.999Z] [INFO] GET /js/admin.js 200 6ms +[2026-01-05T21:48:03.014Z] [INFO] GET /js/tour.js 200 8ms +[2026-01-05T21:48:03.016Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T21:48:03.034Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T21:48:03.048Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T21:48:03.055Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T21:48:03.067Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T21:48:03.089Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T21:48:03.098Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T21:48:03.101Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-05T21:48:03.114Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T21:48:03.120Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T21:48:03.129Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T21:48:03.133Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T21:48:03.156Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T21:48:03.164Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T21:48:03.176Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T21:48:04.836Z] [INFO] POST /api/auth/refresh 200 15ms +[2026-01-05T21:48:06.047Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T21:48:07.504Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T21:48:10.102Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 8ms +[2026-01-05T21:48:10.635Z] [INFO] readCLAUDEmd: File does not exist: /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-05T21:48:10.635Z] [INFO] Trying fallback path for TaskMate: /app/taskmate-source +[2026-01-05T21:48:10.635Z] [INFO] readCLAUDEmd: Checking path /app/taskmate-source/CLAUDE.md +[2026-01-05T21:48:10.635Z] [INFO] readCLAUDEmd: Checking path /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-05T21:48:10.636Z] [INFO] readCLAUDEmd: Successfully read 14396 characters from /app/taskmate-source/CLAUDE.md +[2026-01-05T21:48:10.638Z] [INFO] GET /api/coding/directories 304 9ms +[2026-01-05T21:48:10.677Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T21:48:10.678Z] [INFO] Git directory exists: true +[2026-01-05T21:48:10.678Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-05T21:48:10.780Z] [INFO] GET /api/coding/directories/3/status 200 112ms +[2026-01-05T21:48:10.679Z] [INFO] Git directory exists: true +[2026-01-05T21:48:11.635Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T21:48:12.010Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-05T21:48:14.337Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T21:48:20.286Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T21:48:22.965Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T21:48:24.880Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T21:48:26.217Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T21:50:06.680Z] [INFO] GET /api/tasks/6 200 19ms +[2026-01-05T21:50:06.739Z] [INFO] POST /api/auth/refresh 200 4ms +[2026-01-05T21:50:06.772Z] [INFO] GET /api/subtasks/6 304 7ms +[2026-01-05T21:50:06.813Z] [INFO] GET /api/links/6 304 7ms +[2026-01-05T21:50:06.819Z] [INFO] GET /api/tasks/6/history 404 11ms +[2026-01-05T21:50:06.823Z] [INFO] GET /api/comments/6 304 15ms +[2026-01-05T21:50:06.829Z] [INFO] GET /api/files/6 304 5ms +[2026-01-05T21:50:06.870Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzY0OTgwNiwiZXhwIjoxNzY3NjUwNzA2fQ.WbChVVd4lC_LZtAuDgj8v55cEhdawfuqzcH6i3UoB9U 200 12ms +[2026-01-05T21:50:08.003Z] [INFO] POST /api/auth/refresh 200 21ms +[2026-01-05T21:50:11.361Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T21:50:11.364Z] [INFO] PUT /api/tasks/6 200 10ms +[2026-01-05T21:50:12.336Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T21:50:16.537Z] [INFO] GET /api/tasks/6 200 17ms +[2026-01-05T21:50:16.576Z] [INFO] GET /api/links/6 304 6ms +[2026-01-05T21:50:16.582Z] [INFO] GET /api/subtasks/6 304 10ms +[2026-01-05T21:50:16.590Z] [INFO] GET /api/comments/6 304 5ms +[2026-01-05T21:50:16.595Z] [INFO] GET /api/tasks/6/history 404 4ms +[2026-01-05T21:50:16.600Z] [INFO] GET /api/files/6 304 3ms +[2026-01-05T21:50:16.639Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzY0OTgxMiwiZXhwIjoxNzY3NjUwNzEyfQ.o5QKXumlskWXVouVcmXx74ZsjJtYUc1fZq4fZNFCoYg 200 7ms +[2026-01-05T21:50:17.541Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T21:50:25.296Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T21:50:25.301Z] [INFO] PUT /api/tasks/6 200 12ms +[2026-01-05T21:50:26.295Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T21:50:29.104Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T21:50:37.937Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T21:52:58.907Z] [INFO] GET / 200 4ms +[2026-01-05T21:52:58.977Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (mg1c5PjbWJBBa_ClAAAB) +[2026-01-05T21:52:58.984Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T21:52:59.010Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T21:52:59.036Z] [INFO] GET /css/components.css 200 3ms +[2026-01-05T21:52:59.043Z] [INFO] GET /css/board.css 200 2ms +[2026-01-05T21:52:59.048Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-05T21:52:59.050Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T21:52:59.053Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T21:52:59.055Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T21:52:59.065Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T21:52:59.094Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-05T21:52:59.103Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-05T21:52:59.107Z] [INFO] GET /css/coding.css 200 9ms +[2026-01-05T21:52:59.113Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T21:52:59.115Z] [INFO] GET /css/reminders.css 200 4ms +[2026-01-05T21:52:59.117Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-05T21:52:59.124Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-05T21:52:59.139Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T21:52:59.214Z] [INFO] GET /js/store.js 200 3ms +[2026-01-05T21:52:59.217Z] [INFO] GET /js/api.js 200 5ms +[2026-01-05T21:52:59.219Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-05T21:52:59.221Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-05T21:52:59.223Z] [INFO] GET /js/offline.js 200 5ms +[2026-01-05T21:52:59.227Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T21:52:59.243Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T21:52:59.249Z] [INFO] GET /js/calendar.js 200 1ms +[2026-01-05T21:52:59.274Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T21:52:59.279Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T21:52:59.290Z] [INFO] GET /js/undo.js 200 8ms +[2026-01-05T21:52:59.293Z] [INFO] GET /js/proposals.js 200 8ms +[2026-01-05T21:52:59.294Z] [INFO] GET /js/admin.js 200 5ms +[2026-01-05T21:52:59.318Z] [INFO] GET /js/notifications.js 200 6ms +[2026-01-05T21:52:59.326Z] [INFO] GET /js/gitea.js 200 5ms +[2026-01-05T21:52:59.329Z] [INFO] GET /js/knowledge.js 200 6ms +[2026-01-05T21:52:59.332Z] [INFO] GET /js/coding.js 200 7ms +[2026-01-05T21:52:59.334Z] [INFO] GET /js/mobile.js 200 6ms +[2026-01-05T21:52:59.336Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-05T21:52:59.355Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T21:52:59.400Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T21:52:59.407Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T21:52:59.408Z] [INFO] GET /assets/icons/task.svg 304 6ms +[2026-01-05T21:52:59.445Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T21:52:59.480Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (m2PhXIhuxoXYIhVdAAAD) +[2026-01-05T21:52:59.489Z] [INFO] GET /api/projects 304 6ms +[2026-01-05T21:52:59.529Z] [INFO] GET /api/stats/dashboard?projectId=2 304 6ms +[2026-01-05T21:52:59.549Z] [INFO] GET /api/tasks/project/2 200 20ms +[2026-01-05T21:52:59.555Z] [INFO] GET /api/columns/2 304 25ms +[2026-01-05T21:52:59.563Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-05T21:52:59.565Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T21:52:59.571Z] [INFO] GET /api/reminders?project_id=2 304 5ms +[2026-01-05T21:52:59.611Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-05T21:52:59.647Z] [INFO] GET /api/notifications 304 6ms +[2026-01-05T21:52:59.689Z] [INFO] GET /api/knowledge/categories 304 8ms +[2026-01-05T21:53:02.315Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T21:53:03.115Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T21:53:06.406Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T21:53:07.992Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T21:53:15.404Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T21:53:16.951Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T21:53:21.619Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T21:53:24.113Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T21:53:33.988Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T21:53:41.748Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T21:53:44.579Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T21:53:44.607Z] [INFO] GET / 200 5ms +[2026-01-05T21:53:46.748Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T21:53:48.634Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T21:53:50.278Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T21:54:27.225Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T21:54:29.009Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T21:54:31.469Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T21:54:41.024Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T21:54:41.054Z] [INFO] GET /css/base.css 200 4ms +[2026-01-05T21:54:41.091Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T21:54:41.093Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T21:54:41.096Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T21:54:41.105Z] [INFO] GET /css/list.css 200 6ms +[2026-01-05T21:54:41.107Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T21:54:41.109Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-05T21:54:41.155Z] [INFO] GET /css/proposals.css 200 6ms +[2026-01-05T21:54:41.161Z] [INFO] GET /css/notifications.css 200 10ms +[2026-01-05T21:54:41.162Z] [INFO] GET /css/gitea.css 200 9ms +[2026-01-05T21:54:41.166Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-05T21:54:41.169Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-05T21:54:41.173Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-05T21:54:41.188Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T21:54:41.191Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T21:54:41.850Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T21:54:44.039Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T21:54:45.743Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T21:54:49.068Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T21:54:59.432Z] [INFO] POST /api/auth/refresh 200 17ms +[2026-01-05T21:55:00.980Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T21:56:15.397Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T21:56:17.297Z] [INFO] POST /api/auth/refresh 200 15ms +[2026-01-05T21:56:18.388Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T21:56:19.541Z] [INFO] POST /api/auth/refresh 200 15ms +[2026-01-05T21:56:21.444Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T21:56:25.687Z] [INFO] POST /api/auth/refresh 200 4ms +[2026-01-05T21:56:27.645Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-05T21:56:28.645Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T21:56:29.784Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T21:56:30.923Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T21:56:33.929Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T21:56:34.455Z] [INFO] GET /api/tasks/6 200 20ms +[2026-01-05T21:56:34.501Z] [INFO] GET /api/subtasks/6 304 15ms +[2026-01-05T21:56:34.533Z] [INFO] GET /api/links/6 304 9ms +[2026-01-05T21:56:34.565Z] [INFO] GET /api/files/6 304 7ms +[2026-01-05T21:56:34.574Z] [INFO] GET /api/comments/6 304 7ms +[2026-01-05T21:56:34.577Z] [INFO] GET /api/tasks/6/history 404 8ms +[2026-01-05T21:56:34.603Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzY1MDE5MywiZXhwIjoxNzY3NjUxMDkzfQ.IWyMXsqQrs1xz20RidD1s99V-SbbEXQT9y5S94-PERY 200 11ms +[2026-01-05T21:56:35.451Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T21:56:35.633Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T21:56:35.636Z] [INFO] PUT /api/tasks/6 200 9ms +[2026-01-05T21:56:36.634Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T21:56:38.630Z] [INFO] GET /api/tasks/6 200 10ms +[2026-01-05T21:56:38.676Z] [INFO] GET /api/files/6 304 8ms +[2026-01-05T21:56:38.678Z] [INFO] GET /api/subtasks/6 304 6ms +[2026-01-05T21:56:38.684Z] [INFO] GET /api/comments/6 304 12ms +[2026-01-05T21:56:38.691Z] [INFO] GET /api/links/6 304 5ms +[2026-01-05T21:56:38.700Z] [INFO] GET /api/tasks/6/history 404 4ms +[2026-01-05T21:56:38.733Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzY1MDE5NiwiZXhwIjoxNzY3NjUxMDk2fQ.tiB6fbnW3mjek6BnGbPRct3NIU1A2a6I1xlMlPeOPYU 200 11ms +[2026-01-05T21:56:39.651Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T21:56:41.293Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T21:56:41.296Z] [INFO] PUT /api/tasks/6 200 10ms +[2026-01-05T21:56:43.086Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T21:56:43.130Z] [INFO] GET /api/knowledge/entries?categoryId=15 200 13ms +[2026-01-05T21:56:44.134Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T21:56:46.362Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T21:56:48.792Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T21:56:58.046Z] [INFO] GET /api/tasks/26 200 6ms +[2026-01-05T21:56:58.083Z] [INFO] GET /api/subtasks/26 200 5ms +[2026-01-05T21:56:58.090Z] [INFO] GET /api/tasks/26/history 404 5ms +[2026-01-05T21:56:58.097Z] [INFO] GET /api/comments/26 200 6ms +[2026-01-05T21:56:58.103Z] [INFO] GET /api/links/26 200 11ms +[2026-01-05T21:56:58.112Z] [INFO] GET /api/files/26 200 6ms +[2026-01-05T21:56:59.052Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T21:57:00.043Z] [INFO] Aufgabe aktualisiert: CodeMate (ID: 26) +[2026-01-05T21:57:00.045Z] [INFO] PUT /api/tasks/26 200 8ms +[2026-01-05T21:57:01.039Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T21:57:20.960Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T21:57:24.426Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T21:58:03.120Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T22:00:03.664Z] [INFO] GET / 200 2ms +[2026-01-05T22:00:03.731Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (m2PhXIhuxoXYIhVdAAAD) +[2026-01-05T22:00:03.739Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T22:00:03.775Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T22:00:03.810Z] [INFO] GET /css/components.css 200 4ms +[2026-01-05T22:00:03.820Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T22:00:03.822Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-05T22:00:03.828Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T22:00:03.830Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-05T22:00:03.834Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T22:00:03.841Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T22:00:03.880Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-05T22:00:03.885Z] [INFO] GET /css/gitea.css 200 8ms +[2026-01-05T22:00:03.888Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-05T22:00:03.890Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T22:00:03.891Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-05T22:00:03.921Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T22:00:03.922Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T22:00:03.923Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T22:00:03.999Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-05T22:00:04.003Z] [INFO] GET /js/store.js 200 6ms +[2026-01-05T22:00:04.005Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-05T22:00:04.007Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-05T22:00:04.009Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T22:00:04.011Z] [INFO] GET /js/api.js 200 3ms +[2026-01-05T22:00:04.040Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-05T22:00:04.046Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-05T22:00:04.047Z] [INFO] GET /js/list.js 200 4ms +[2026-01-05T22:00:04.049Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-05T22:00:04.056Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T22:00:04.073Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T22:00:04.083Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T22:00:04.084Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T22:00:04.086Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T22:00:04.090Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T22:00:04.099Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T22:00:04.102Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-05T22:00:04.114Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-05T22:00:04.119Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T22:00:04.159Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T22:00:04.172Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T22:00:04.174Z] [INFO] GET /assets/icons/task.svg 200 7ms +[2026-01-05T22:00:04.219Z] [INFO] GET /api/auth/users 304 9ms +[2026-01-05T22:00:04.244Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (UvGKId8AQyrXBghsAAAF) +[2026-01-05T22:00:04.254Z] [INFO] GET /api/projects 304 4ms +[2026-01-05T22:00:04.295Z] [INFO] GET /api/stats/dashboard?projectId=2 304 6ms +[2026-01-05T22:00:04.299Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-05T22:00:04.320Z] [INFO] GET /api/tasks/project/2 200 20ms +[2026-01-05T22:00:04.322Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T22:00:04.327Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T22:00:04.333Z] [INFO] GET /api/reminders?project_id=2 304 4ms +[2026-01-05T22:00:04.385Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-05T22:00:04.419Z] [INFO] GET /api/notifications 304 4ms +[2026-01-05T22:00:04.455Z] [INFO] GET /api/knowledge/categories 304 5ms +[2026-01-05T22:00:06.887Z] [INFO] POST /api/auth/refresh 200 4ms +[2026-01-05T22:00:08.203Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T22:00:10.316Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T22:00:13.826Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T22:00:17.560Z] [INFO] GET /css/variables.css 200 1ms +[2026-01-05T22:00:17.569Z] [INFO] GET /css/base.css 200 4ms +[2026-01-05T22:00:17.571Z] [INFO] GET /css/components.css 200 4ms +[2026-01-05T22:00:17.573Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T22:00:17.574Z] [INFO] GET /css/board.css 200 4ms +[2026-01-05T22:00:17.577Z] [INFO] GET /css/calendar.css 200 1ms +[2026-01-05T22:00:17.597Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T22:00:17.602Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T22:00:17.629Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T22:00:17.635Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T22:00:17.636Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T22:00:17.639Z] [INFO] GET /css/coding.css 200 1ms +[2026-01-05T22:00:17.642Z] [INFO] GET /css/knowledge.css 200 1ms +[2026-01-05T22:00:17.656Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-05T22:00:17.661Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T22:00:17.669Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T22:00:18.381Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T22:00:20.195Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T22:00:46.101Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T22:00:47.197Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T22:01:22.794Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T22:01:24.692Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T22:01:28.116Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T22:01:30.140Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T22:03:03.127Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T22:08:03.128Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T22:08:41.337Z] [INFO] GET / 200 7ms +[2026-01-05T22:08:41.400Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (UvGKId8AQyrXBghsAAAF) +[2026-01-05T22:08:41.409Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T22:08:41.438Z] [INFO] GET /css/base.css 200 5ms +[2026-01-05T22:08:41.478Z] [INFO] GET /css/components.css 200 12ms +[2026-01-05T22:08:41.479Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T22:08:41.481Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T22:08:41.487Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T22:08:41.490Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-05T22:08:41.491Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T22:08:41.512Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T22:08:41.537Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T22:08:41.543Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T22:08:41.545Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-05T22:08:41.547Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-05T22:08:41.560Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-05T22:08:41.562Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T22:08:41.572Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T22:08:41.583Z] [INFO] GET /js/app.js 200 7ms +[2026-01-05T22:08:41.588Z] [INFO] GET /js/reminders.js 200 10ms +[2026-01-05T22:08:41.632Z] [INFO] GET /js/api.js 200 4ms +[2026-01-05T22:08:41.635Z] [INFO] GET /js/store.js 200 6ms +[2026-01-05T22:08:41.640Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-05T22:08:41.643Z] [INFO] GET /js/board.js 200 5ms +[2026-01-05T22:08:41.644Z] [INFO] GET /js/sync.js 200 3ms +[2026-01-05T22:08:41.646Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-05T22:08:41.667Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-05T22:08:41.674Z] [INFO] GET /js/calendar.js 200 8ms +[2026-01-05T22:08:41.681Z] [INFO] GET /js/undo.js 200 6ms +[2026-01-05T22:08:41.684Z] [INFO] GET /js/list.js 200 11ms +[2026-01-05T22:08:41.687Z] [INFO] GET /js/shortcuts.js 200 11ms +[2026-01-05T22:08:41.693Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T22:08:41.700Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T22:08:41.709Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-05T22:08:41.714Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T22:08:41.715Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T22:08:41.726Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T22:08:41.729Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T22:08:41.747Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T22:08:41.791Z] [INFO] POST /api/auth/refresh 200 15ms +[2026-01-05T22:08:41.796Z] [INFO] GET /api/auth/users 304 3ms +[2026-01-05T22:08:41.798Z] [INFO] GET /assets/icons/task.svg 200 7ms +[2026-01-05T22:08:41.841Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T22:08:41.866Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (U9I2PyN9Wuo_bDwaAAAH) +[2026-01-05T22:08:41.877Z] [INFO] GET /api/projects 304 6ms +[2026-01-05T22:08:41.917Z] [INFO] GET /api/columns/2 304 8ms +[2026-01-05T22:08:41.921Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T22:08:41.927Z] [INFO] GET /api/labels/2 304 9ms +[2026-01-05T22:08:41.965Z] [INFO] GET /api/tasks/project/2 304 37ms +[2026-01-05T22:08:41.970Z] [INFO] GET /api/stats/dashboard?projectId=2 304 40ms +[2026-01-05T22:08:41.975Z] [INFO] GET /api/reminders?project_id=2 304 3ms +[2026-01-05T22:08:42.015Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-05T22:08:42.054Z] [INFO] GET /api/notifications 304 7ms +[2026-01-05T22:08:42.096Z] [INFO] GET /api/knowledge/categories 304 7ms +[2026-01-05T22:08:42.578Z] [INFO] GET / 200 4ms +[2026-01-05T22:08:42.633Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (U9I2PyN9Wuo_bDwaAAAH) +[2026-01-05T22:08:42.657Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-05T22:08:42.661Z] [INFO] GET /css/board.css 200 10ms +[2026-01-05T22:08:42.664Z] [INFO] GET /css/calendar.css 200 9ms +[2026-01-05T22:08:42.666Z] [INFO] GET /css/components.css 200 7ms +[2026-01-05T22:08:42.668Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-05T22:08:42.669Z] [INFO] GET /css/base.css 200 4ms +[2026-01-05T22:08:42.700Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T22:08:42.702Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T22:08:42.707Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T22:08:42.715Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T22:08:42.716Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T22:08:42.730Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-05T22:08:42.731Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-05T22:08:42.734Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-05T22:08:42.739Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T22:08:42.744Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-05T22:08:42.761Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T22:08:42.763Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-05T22:08:42.798Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T22:08:42.802Z] [INFO] GET /js/api.js 200 6ms +[2026-01-05T22:08:42.804Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-05T22:08:42.821Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-05T22:08:42.822Z] [INFO] GET /js/sync.js 200 2ms +[2026-01-05T22:08:42.823Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-05T22:08:42.830Z] [INFO] GET /js/board.js 200 2ms +[2026-01-05T22:08:42.835Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T22:08:42.836Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T22:08:42.861Z] [INFO] GET /js/shortcuts.js 200 6ms +[2026-01-05T22:08:42.862Z] [INFO] GET /js/undo.js 200 6ms +[2026-01-05T22:08:42.865Z] [INFO] GET /js/list.js 200 7ms +[2026-01-05T22:08:42.872Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T22:08:42.881Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T22:08:42.890Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T22:08:42.891Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T22:08:42.895Z] [INFO] GET /js/coding.js 200 1ms +[2026-01-05T22:08:42.896Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T22:08:42.902Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T22:08:42.961Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T22:08:42.965Z] [INFO] GET /api/auth/users 304 3ms +[2026-01-05T22:08:42.967Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-05T22:08:43.001Z] [INFO] GET /api/auth/users 304 3ms +[2026-01-05T22:08:43.040Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (z5bNZC_NdvBN3DXwAAAJ) +[2026-01-05T22:08:43.050Z] [INFO] GET /api/projects 304 6ms +[2026-01-05T22:08:43.091Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T22:08:43.101Z] [INFO] GET /api/stats/dashboard?projectId=2 304 8ms +[2026-01-05T22:08:43.106Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-05T22:08:43.121Z] [INFO] GET /api/tasks/project/2 304 14ms +[2026-01-05T22:08:43.124Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-05T22:08:43.129Z] [INFO] GET /api/reminders?project_id=2 304 4ms +[2026-01-05T22:08:43.167Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 4ms +[2026-01-05T22:08:43.204Z] [INFO] GET /api/notifications 304 7ms +[2026-01-05T22:08:43.274Z] [INFO] GET /api/knowledge/categories 304 8ms +[2026-01-05T22:08:45.892Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T22:08:50.937Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T22:08:52.296Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T22:08:56.201Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T22:08:57.766Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T22:09:04.567Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T22:09:07.693Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T22:09:15.882Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T22:09:20.275Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T22:09:22.873Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T22:09:27.021Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (z5bNZC_NdvBN3DXwAAAJ) +[2026-01-05T22:09:37.900Z] [INFO] GET / 200 4ms +[2026-01-05T22:09:37.973Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T22:09:37.996Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T22:09:38.026Z] [INFO] GET /css/components.css 200 2ms +[2026-01-05T22:09:38.034Z] [INFO] GET /css/board.css 200 2ms +[2026-01-05T22:09:38.039Z] [INFO] GET /css/modal.css 200 1ms +[2026-01-05T22:09:38.044Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T22:09:38.045Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T22:09:38.046Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T22:09:38.060Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-05T22:09:38.089Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-05T22:09:38.090Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T22:09:38.095Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T22:09:38.096Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T22:09:38.099Z] [INFO] GET /css/reminders.css 200 1ms +[2026-01-05T22:09:38.104Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T22:09:38.122Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T22:09:38.129Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T22:09:38.134Z] [INFO] GET /js/reminders.js 200 6ms +[2026-01-05T22:09:38.177Z] [INFO] GET /js/api.js 200 5ms +[2026-01-05T22:09:38.180Z] [INFO] GET /js/utils.js 200 6ms +[2026-01-05T22:09:38.184Z] [INFO] GET /js/store.js 200 3ms +[2026-01-05T22:09:38.188Z] [INFO] GET /js/sync.js 200 1ms +[2026-01-05T22:09:38.191Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-05T22:09:38.194Z] [INFO] GET /js/offline.js 200 1ms +[2026-01-05T22:09:38.208Z] [INFO] GET /js/board.js 200 3ms +[2026-01-05T22:09:38.221Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T22:09:38.224Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-05T22:09:38.225Z] [INFO] GET /js/list.js 200 5ms +[2026-01-05T22:09:38.227Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-05T22:09:38.228Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-05T22:09:38.261Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-05T22:09:38.266Z] [INFO] GET /js/notifications.js 200 9ms +[2026-01-05T22:09:38.273Z] [INFO] GET /js/gitea.js 200 13ms +[2026-01-05T22:09:38.276Z] [INFO] GET /js/admin.js 200 12ms +[2026-01-05T22:09:38.282Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T22:09:38.283Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T22:09:38.291Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-05T22:09:38.343Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T22:09:38.347Z] [INFO] GET /assets/icons/task.svg 200 6ms +[2026-01-05T22:09:38.395Z] [INFO] GET /css/variables.css 200 10ms +[2026-01-05T22:09:38.397Z] [INFO] GET / 200 13ms +[2026-01-05T22:09:38.402Z] [INFO] GET /index.html 200 14ms +[2026-01-05T22:09:38.427Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T22:09:38.434Z] [INFO] GET /css/components.css 200 3ms +[2026-01-05T22:09:38.440Z] [INFO] GET /css/board.css 200 2ms +[2026-01-05T22:09:38.461Z] [INFO] GET /css/modal.css 200 2ms +[2026-01-05T22:09:38.466Z] [INFO] GET /css/calendar.css 200 1ms +[2026-01-05T22:09:38.475Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T22:09:38.493Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T22:09:38.499Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T22:09:38.509Z] [INFO] GET /js/api.js 200 2ms +[2026-01-05T22:09:38.526Z] [INFO] GET /js/auth.js 200 2ms +[2026-01-05T22:09:38.532Z] [INFO] GET /js/store.js 200 2ms +[2026-01-05T22:09:38.543Z] [INFO] GET /js/sync.js 200 2ms +[2026-01-05T22:09:38.556Z] [INFO] GET /js/offline.js 200 1ms +[2026-01-05T22:09:38.564Z] [INFO] GET /js/board.js 200 2ms +[2026-01-05T22:09:38.585Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T22:09:38.591Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-05T22:09:38.607Z] [INFO] GET /js/list.js 200 1ms +[2026-01-05T22:09:38.617Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T22:09:38.619Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-05T22:09:38.640Z] [INFO] GET /js/tour.js 200 3ms +[2026-01-05T22:09:38.646Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T22:09:38.650Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-05T22:09:38.675Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T22:09:38.681Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T22:09:38.684Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T22:09:38.707Z] [INFO] GET /js/coding.js 200 1ms +[2026-01-05T22:09:38.716Z] [INFO] GET /css/list.css 200 1ms +[2026-01-05T22:09:38.717Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T22:09:38.741Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T22:09:38.764Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-05T22:09:38.767Z] [INFO] GET /css/admin.css 200 6ms +[2026-01-05T22:09:38.772Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-05T22:09:38.801Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T22:09:38.802Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T22:09:38.805Z] [INFO] GET /css/coding.css 200 1ms +[2026-01-05T22:09:43.250Z] [WARN] Account gesperrt nach 5 Fehlversuchen: admin +[2026-01-05T22:09:43.250Z] [WARN] Login fehlgeschlagen: Falsches Passwort - admin (Versuch 6) +[2026-01-05T22:09:43.251Z] [INFO] POST /api/auth/login 401 432ms +[2026-01-05T22:09:47.479Z] [WARN] Login blockiert: Account gesperrt - admin +[2026-01-05T22:09:47.480Z] [INFO] POST /api/auth/login 423 1ms +[2026-01-05T22:09:59.093Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T22:09:59.094Z] [INFO] POST /api/auth/login 200 436ms +[2026-01-05T22:09:59.149Z] [INFO] GET / 200 5ms +[2026-01-05T22:09:59.217Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T22:09:59.227Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T22:09:59.229Z] [INFO] GET /css/base.css 200 5ms +[2026-01-05T22:09:59.232Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-05T22:09:59.235Z] [INFO] GET /css/components.css 200 7ms +[2026-01-05T22:09:59.237Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-05T22:09:59.243Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T22:09:59.265Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T22:09:59.273Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T22:09:59.278Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-05T22:09:59.293Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T22:09:59.295Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T22:09:59.300Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-05T22:09:59.301Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T22:09:59.306Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T22:09:59.309Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T22:09:59.328Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T22:09:59.332Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-05T22:09:59.368Z] [INFO] GET /js/api.js 200 4ms +[2026-01-05T22:09:59.371Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T22:09:59.374Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-05T22:09:59.390Z] [INFO] GET /js/offline.js 200 5ms +[2026-01-05T22:09:59.393Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-05T22:09:59.396Z] [INFO] GET /js/sync.js 200 7ms +[2026-01-05T22:09:59.403Z] [INFO] GET /js/board.js 200 2ms +[2026-01-05T22:09:59.408Z] [INFO] GET /js/task-modal.js 200 6ms +[2026-01-05T22:09:59.427Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T22:09:59.432Z] [INFO] GET /js/calendar.js 200 7ms +[2026-01-05T22:09:59.434Z] [INFO] GET /js/undo.js 200 5ms +[2026-01-05T22:09:59.436Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-05T22:09:59.462Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T22:09:59.471Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-05T22:09:59.474Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T22:09:59.476Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-05T22:09:59.477Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T22:09:59.481Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T22:09:59.498Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T22:09:59.554Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T22:09:59.559Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-05T22:09:59.565Z] [INFO] GET /api/auth/users 200 7ms +[2026-01-05T22:09:59.610Z] [INFO] GET /api/auth/users 304 9ms +[2026-01-05T22:09:59.662Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (GyJUNRe85AOA_FvzAAAL) +[2026-01-05T22:09:59.669Z] [INFO] GET /api/projects 200 5ms +[2026-01-05T22:09:59.714Z] [INFO] GET /api/labels/2 200 8ms +[2026-01-05T22:09:59.722Z] [INFO] GET /api/columns/2 200 7ms +[2026-01-05T22:09:59.738Z] [INFO] GET /api/tasks/project/2 200 15ms +[2026-01-05T22:09:59.742Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T22:09:59.747Z] [INFO] GET /api/stats/dashboard?projectId=2 200 4ms +[2026-01-05T22:09:59.751Z] [INFO] GET /api/reminders?project_id=2 200 4ms +[2026-01-05T22:09:59.802Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 8ms +[2026-01-05T22:09:59.835Z] [INFO] GET /api/notifications 200 4ms +[2026-01-05T22:09:59.874Z] [INFO] GET /api/knowledge/categories 200 4ms +[2026-01-05T22:10:01.374Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T22:11:56.629Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-05T22:11:56.631Z] [INFO] POST /api/auth/logout 200 9ms +[2026-01-05T22:11:56.634Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-05T22:11:56.635Z] [INFO] POST /api/auth/logout 200 2ms +[2026-01-05T22:11:56.666Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (GyJUNRe85AOA_FvzAAAL) +[2026-01-05T22:12:12.938Z] [WARN] Login blockiert: Account gesperrt - admin +[2026-01-05T22:12:12.940Z] [INFO] POST /api/auth/login 423 3ms +[2026-01-05T22:13:03.151Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T22:13:15.944Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-05T22:13:16.030Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-05T22:13:16.661Z] [INFO] Admin-Passwort wird aus .env aktualisiert +[2026-01-05T22:13:17.108Z] [INFO] Admin-Passwort erfolgreich aktualisiert +[2026-01-05T22:13:17.108Z] [INFO] Datenbank initialisiert +[2026-01-05T22:13:17.113Z] [INFO] Server läuft auf Port 3001 +[2026-01-05T22:13:17.114Z] [INFO] Umgebung: development +[2026-01-05T22:13:17.114Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-05T22:13:17.114Z] [INFO] Automatische Backups aktiviert +[2026-01-05T22:13:17.115Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T22:13:17.116Z] [INFO] Reminder Service gestartet - prüft alle 5 Minuten +[2026-01-05T22:14:17.140Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-05T22-14-17-122Z.db.enc +[2026-01-05T22:14:17.141Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-05T22-14-17-122Z.db.enc +[2026-01-05T22:14:17.142Z] [INFO] Backup erstellt: backup_2026-01-05T22-14-17-122Z.db +[2026-01-05T22:14:17.156Z] [INFO] Datei sicher gelöscht: backup_2026-01-04T00-30-19-469Z.db.enc +[2026-01-05T22:14:17.157Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-04T00-30-19-469Z.db.enc +[2026-01-05T22:14:17.159Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-05T22:16:59.085Z] [INFO] GET / 200 23ms +[2026-01-05T22:16:59.155Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-05T22:16:59.182Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T22:16:59.224Z] [INFO] GET /css/calendar.css 200 9ms +[2026-01-05T22:16:59.236Z] [INFO] GET /css/board.css 200 18ms +[2026-01-05T22:16:59.237Z] [INFO] GET /css/components.css 200 17ms +[2026-01-05T22:16:59.239Z] [INFO] GET /css/modal.css 200 18ms +[2026-01-05T22:16:59.243Z] [INFO] GET /css/list.css 200 13ms +[2026-01-05T22:16:59.244Z] [INFO] GET /css/admin.css 200 11ms +[2026-01-05T22:16:59.278Z] [INFO] GET /css/proposals.css 200 10ms +[2026-01-05T22:16:59.285Z] [INFO] GET /css/notifications.css 200 9ms +[2026-01-05T22:16:59.289Z] [INFO] GET /css/gitea.css 200 8ms +[2026-01-05T22:16:59.291Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-05T22:16:59.293Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-05T22:16:59.297Z] [INFO] GET /css/reminders.css 200 1ms +[2026-01-05T22:16:59.308Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T22:16:59.316Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T22:16:59.333Z] [INFO] GET /js/reminders.js 200 4ms +[2026-01-05T22:16:59.334Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T22:16:59.402Z] [INFO] GET /js/api.js 200 7ms +[2026-01-05T22:16:59.406Z] [INFO] GET /js/store.js 200 8ms +[2026-01-05T22:16:59.409Z] [INFO] GET /js/offline.js 200 9ms +[2026-01-05T22:16:59.412Z] [INFO] GET /js/board.js 200 8ms +[2026-01-05T22:16:59.413Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-05T22:16:59.417Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-05T22:16:59.436Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-05T22:16:59.444Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-05T22:16:59.454Z] [INFO] GET /js/list.js 200 12ms +[2026-01-05T22:16:59.459Z] [INFO] GET /js/undo.js 200 7ms +[2026-01-05T22:16:59.462Z] [INFO] GET /js/shortcuts.js 200 6ms +[2026-01-05T22:16:59.466Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T22:16:59.470Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T22:16:59.480Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T22:16:59.488Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T22:16:59.504Z] [INFO] GET /js/knowledge.js 200 9ms +[2026-01-05T22:16:59.509Z] [INFO] GET /js/coding.js 200 9ms +[2026-01-05T22:16:59.511Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-05T22:16:59.510Z] [INFO] GET /js/mobile.js 200 8ms +[2026-01-05T22:16:59.564Z] [INFO] GET /assets/icons/task.svg 304 15ms +[2026-01-05T22:17:04.616Z] [WARN] Login blockiert: Account gesperrt - admin +[2026-01-05T22:17:04.626Z] [INFO] POST /api/auth/login 423 13ms +[2026-01-05T22:17:07.164Z] [INFO] GET / 200 6ms +[2026-01-05T22:17:07.243Z] [INFO] GET /css/variables.css 200 8ms +[2026-01-05T22:17:07.248Z] [INFO] GET /css/modal.css 200 10ms +[2026-01-05T22:17:07.252Z] [INFO] GET /css/calendar.css 200 11ms +[2026-01-05T22:17:07.255Z] [INFO] GET /css/board.css 200 9ms +[2026-01-05T22:17:07.257Z] [INFO] GET /css/base.css 200 7ms +[2026-01-05T22:17:07.259Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T22:17:07.276Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T22:17:07.293Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T22:17:07.306Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-05T22:17:07.308Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-05T22:17:07.315Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-05T22:17:07.317Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T22:17:07.319Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T22:17:07.323Z] [INFO] GET /css/reminders.css 200 1ms +[2026-01-05T22:17:07.338Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T22:17:07.339Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T22:17:07.350Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T22:17:07.362Z] [INFO] GET /js/reminders.js 200 1ms +[2026-01-05T22:17:07.400Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T22:17:07.402Z] [INFO] GET /js/api.js 200 5ms +[2026-01-05T22:17:07.410Z] [INFO] GET /js/utils.js 200 11ms +[2026-01-05T22:17:07.417Z] [INFO] GET /js/auth.js 200 5ms +[2026-01-05T22:17:07.422Z] [INFO] GET /js/sync.js 200 8ms +[2026-01-05T22:17:07.428Z] [INFO] GET /js/offline.js 200 12ms +[2026-01-05T22:17:07.437Z] [INFO] GET /js/board.js 200 3ms +[2026-01-05T22:17:07.443Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-05T22:17:07.447Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T22:17:07.455Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T22:17:07.457Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T22:17:07.461Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-05T22:17:07.476Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T22:17:07.486Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T22:17:07.496Z] [INFO] GET /js/gitea.js 200 7ms +[2026-01-05T22:17:07.498Z] [INFO] GET /js/proposals.js 200 8ms +[2026-01-05T22:17:07.500Z] [INFO] GET /js/knowledge.js 200 8ms +[2026-01-05T22:17:07.504Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T22:17:07.508Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T22:17:07.552Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T22:17:08.387Z] [INFO] GET / 200 5ms +[2026-01-05T22:17:08.469Z] [INFO] GET /css/components.css 200 4ms +[2026-01-05T22:17:08.470Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-05T22:17:08.474Z] [INFO] GET /css/base.css 200 7ms +[2026-01-05T22:17:08.476Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-05T22:17:08.476Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T22:17:08.477Z] [INFO] GET /css/board.css 200 4ms +[2026-01-05T22:17:08.503Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T22:17:08.509Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T22:17:08.541Z] [INFO] GET /css/knowledge.css 200 7ms +[2026-01-05T22:17:08.545Z] [INFO] GET /css/gitea.css 200 9ms +[2026-01-05T22:17:08.550Z] [INFO] GET /css/proposals.css 200 11ms +[2026-01-05T22:17:08.554Z] [INFO] GET /css/reminders.css 200 10ms +[2026-01-05T22:17:08.555Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-05T22:17:08.556Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T22:17:08.571Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T22:17:08.574Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-05T22:17:08.585Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T22:17:08.590Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-05T22:17:08.669Z] [INFO] GET /js/api.js 200 17ms +[2026-01-05T22:17:08.667Z] [INFO] GET /js/sync.js 200 12ms +[2026-01-05T22:17:08.672Z] [INFO] GET /js/offline.js 200 13ms +[2026-01-05T22:17:08.676Z] [INFO] GET /js/store.js 200 11ms +[2026-01-05T22:17:08.678Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-05T22:17:08.679Z] [INFO] GET /js/board.js 200 5ms +[2026-01-05T22:17:08.699Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T22:17:08.708Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-05T22:17:08.711Z] [INFO] GET /js/list.js 200 6ms +[2026-01-05T22:17:08.713Z] [INFO] GET /js/shortcuts.js 200 6ms +[2026-01-05T22:17:08.715Z] [INFO] GET /js/undo.js 200 5ms +[2026-01-05T22:17:08.746Z] [INFO] GET /js/proposals.js 200 8ms +[2026-01-05T22:17:08.752Z] [INFO] GET /js/knowledge.js 200 8ms +[2026-01-05T22:17:08.755Z] [INFO] GET /js/notifications.js 200 7ms +[2026-01-05T22:17:08.758Z] [INFO] GET /js/admin.js 200 8ms +[2026-01-05T22:17:08.761Z] [INFO] GET /js/gitea.js 200 7ms +[2026-01-05T22:17:08.762Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T22:17:08.778Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T22:17:08.787Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T22:17:08.827Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T22:17:09.070Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T22:17:12.228Z] [WARN] Login blockiert: Account gesperrt - admin +[2026-01-05T22:17:12.230Z] [INFO] POST /api/auth/login 423 4ms +[2026-01-05T22:18:17.147Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T22:20:28.006Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-05T22:20:28.067Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-05T22:20:28.623Z] [INFO] Admin-Passwort bereits korrekt +[2026-01-05T22:20:28.623Z] [INFO] Datenbank initialisiert +[2026-01-05T22:20:28.626Z] [INFO] Server läuft auf Port 3001 +[2026-01-05T22:20:28.626Z] [INFO] Umgebung: development +[2026-01-05T22:20:28.626Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-05T22:20:28.626Z] [INFO] Automatische Backups aktiviert +[2026-01-05T22:20:28.627Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T22:20:28.627Z] [INFO] Reminder Service gestartet - prüft alle 5 Minuten +[2026-01-05T22:20:39.361Z] [INFO] POST /api/health 404 15ms +[2026-01-05T22:21:14.632Z] [INFO] GET / 200 19ms +[2026-01-05T22:21:14.726Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-05T22:21:14.753Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T22:21:14.796Z] [INFO] GET /css/board.css 200 13ms +[2026-01-05T22:21:14.797Z] [INFO] GET /css/components.css 200 12ms +[2026-01-05T22:21:14.799Z] [INFO] GET /css/modal.css 200 13ms +[2026-01-05T22:21:14.803Z] [INFO] GET /css/calendar.css 200 13ms +[2026-01-05T22:21:14.806Z] [INFO] GET /css/list.css 200 12ms +[2026-01-05T22:21:14.807Z] [INFO] GET /css/admin.css 200 6ms +[2026-01-05T22:21:14.826Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T22:21:14.844Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-05T22:21:14.847Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-05T22:21:14.856Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-05T22:21:14.859Z] [INFO] GET /css/responsive.css 200 5ms +[2026-01-05T22:21:14.861Z] [INFO] GET /css/reminders.css 200 4ms +[2026-01-05T22:21:14.862Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-05T22:21:14.879Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T22:21:14.897Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T22:21:14.898Z] [INFO] GET /js/reminders.js 200 4ms +[2026-01-05T22:21:14.949Z] [INFO] GET /js/api.js 200 4ms +[2026-01-05T22:21:14.950Z] [INFO] GET /js/store.js 200 4ms +[2026-01-05T22:21:14.952Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-05T22:21:14.957Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-05T22:21:14.958Z] [INFO] GET /js/sync.js 200 3ms +[2026-01-05T22:21:14.961Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-05T22:21:14.981Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T22:21:14.987Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T22:21:14.998Z] [INFO] GET /js/shortcuts.js 200 8ms +[2026-01-05T22:21:15.000Z] [INFO] GET /js/list.js 200 7ms +[2026-01-05T22:21:15.002Z] [INFO] GET /js/undo.js 200 5ms +[2026-01-05T22:21:15.006Z] [INFO] GET /js/board.js 200 2ms +[2026-01-05T22:21:15.014Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T22:21:15.030Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T22:21:15.038Z] [INFO] GET /js/notifications.js 200 6ms +[2026-01-05T22:21:15.041Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T22:21:15.043Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T22:21:15.046Z] [INFO] GET /js/knowledge.js 200 6ms +[2026-01-05T22:21:15.049Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T22:21:15.117Z] [INFO] GET /assets/icons/task.svg 304 4ms +[2026-01-05T22:21:19.904Z] [INFO] Login erfolgreich: admin +[2026-01-05T22:21:19.906Z] [INFO] POST /api/auth/login 200 469ms +[2026-01-05T22:21:19.945Z] [INFO] GET / 200 5ms +[2026-01-05T22:21:20.015Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T22:21:20.020Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-05T22:21:20.023Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T22:21:20.026Z] [INFO] GET /css/base.css 200 7ms +[2026-01-05T22:21:20.027Z] [INFO] GET /css/board.css 200 4ms +[2026-01-05T22:21:20.028Z] [INFO] GET /css/components.css 200 3ms +[2026-01-05T22:21:20.051Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T22:21:20.058Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T22:21:20.084Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-05T22:21:20.087Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-05T22:21:20.090Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-05T22:21:20.094Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T22:21:20.097Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-05T22:21:20.099Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-05T22:21:20.116Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T22:21:20.116Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T22:21:20.120Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T22:21:20.126Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-05T22:21:20.166Z] [INFO] GET /js/store.js 200 4ms +[2026-01-05T22:21:20.175Z] [INFO] GET /js/utils.js 200 11ms +[2026-01-05T22:21:20.180Z] [INFO] GET /js/api.js 200 15ms +[2026-01-05T22:21:20.195Z] [INFO] GET /js/auth.js 200 10ms +[2026-01-05T22:21:20.199Z] [INFO] GET /js/sync.js 200 12ms +[2026-01-05T22:21:20.206Z] [INFO] GET /js/offline.js 200 16ms +[2026-01-05T22:21:20.214Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T22:21:20.216Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-05T22:21:20.223Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T22:21:20.227Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T22:21:20.232Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T22:21:20.234Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T22:21:20.257Z] [INFO] GET /js/admin.js 200 5ms +[2026-01-05T22:21:20.260Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T22:21:20.265Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T22:21:20.281Z] [INFO] GET /js/coding.js 200 11ms +[2026-01-05T22:21:20.282Z] [INFO] GET /js/gitea.js 200 9ms +[2026-01-05T22:21:20.284Z] [INFO] GET /js/knowledge.js 200 7ms +[2026-01-05T22:21:20.296Z] [INFO] GET /js/mobile.js 200 6ms +[2026-01-05T22:21:20.357Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T22:21:20.371Z] [INFO] GET /api/auth/users 304 11ms +[2026-01-05T22:21:20.375Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T22:21:20.411Z] [INFO] GET /api/admin/users 200 7ms +[2026-01-05T22:21:20.447Z] [INFO] GET /api/admin/upload-settings 200 6ms +[2026-01-05T22:21:21.930Z] [INFO] GET /sw.js 200 2ms +[2026-01-05T22:21:28.642Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-05T22-21-28-627Z.db.enc +[2026-01-05T22:21:28.642Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-05T22-21-28-627Z.db.enc +[2026-01-05T22:21:28.643Z] [INFO] Backup erstellt: backup_2026-01-05T22-21-28-627Z.db +[2026-01-05T22:21:28.659Z] [INFO] Datei sicher gelöscht: backup_2026-01-04T00-32-33-823Z.db.enc +[2026-01-05T22:21:28.659Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-04T00-32-33-823Z.db.enc +[2026-01-05T22:21:28.661Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-05T22:21:33.307Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T22:21:35.259Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T22:23:09.129Z] [INFO] Logout: admin +[2026-01-05T22:23:09.131Z] [INFO] POST /api/auth/logout 200 8ms +[2026-01-05T22:23:09.170Z] [INFO] GET / 200 4ms +[2026-01-05T22:23:09.246Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T22:23:09.274Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T22:23:09.305Z] [INFO] GET /css/components.css 200 3ms +[2026-01-05T22:23:09.312Z] [INFO] GET /css/board.css 200 3ms +[2026-01-05T22:23:09.314Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-05T22:23:09.323Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T22:23:09.331Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T22:23:09.333Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T22:23:09.356Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T22:23:09.372Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T22:23:09.396Z] [INFO] GET /css/gitea.css 200 8ms +[2026-01-05T22:23:09.400Z] [INFO] GET /css/coding.css 200 9ms +[2026-01-05T22:23:09.403Z] [INFO] GET /css/reminders.css 200 10ms +[2026-01-05T22:23:09.405Z] [INFO] GET /css/knowledge.css 200 7ms +[2026-01-05T22:23:09.411Z] [INFO] GET /css/responsive.css 200 7ms +[2026-01-05T22:23:09.416Z] [INFO] GET /css/mobile.css 200 9ms +[2026-01-05T22:23:09.426Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T22:23:09.434Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-05T22:23:09.477Z] [INFO] GET /js/api.js 200 7ms +[2026-01-05T22:23:09.482Z] [INFO] GET /js/store.js 200 9ms +[2026-01-05T22:23:09.485Z] [INFO] GET /js/offline.js 200 10ms +[2026-01-05T22:23:09.488Z] [INFO] GET /js/board.js 200 9ms +[2026-01-05T22:23:09.490Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-05T22:23:09.492Z] [INFO] GET /js/auth.js 200 5ms +[2026-01-05T22:23:09.518Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-05T22:23:09.525Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T22:23:09.527Z] [INFO] GET /js/list.js 200 4ms +[2026-01-05T22:23:09.532Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T22:23:09.532Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T22:23:09.545Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T22:23:09.559Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T22:23:09.565Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T22:23:09.568Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T22:23:09.577Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T22:23:09.579Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T22:23:09.585Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T22:23:09.592Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-05T22:23:09.645Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-05T22:23:11.156Z] [INFO] GET /sw.js 200 2ms +[2026-01-05T22:23:15.234Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T22:23:15.235Z] [INFO] POST /api/auth/login 200 441ms +[2026-01-05T22:23:15.272Z] [INFO] GET / 200 2ms +[2026-01-05T22:23:15.354Z] [INFO] GET /css/components.css 200 12ms +[2026-01-05T22:23:15.357Z] [INFO] GET /css/base.css 200 12ms +[2026-01-05T22:23:15.362Z] [INFO] GET /css/variables.css 200 12ms +[2026-01-05T22:23:15.365Z] [INFO] GET /css/calendar.css 200 12ms +[2026-01-05T22:23:15.368Z] [INFO] GET /css/board.css 200 8ms +[2026-01-05T22:23:15.369Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-05T22:23:15.388Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T22:23:15.392Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T22:23:15.412Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T22:23:15.431Z] [INFO] GET /css/notifications.css 200 10ms +[2026-01-05T22:23:15.433Z] [INFO] GET /css/knowledge.css 200 10ms +[2026-01-05T22:23:15.435Z] [INFO] GET /css/gitea.css 200 8ms +[2026-01-05T22:23:15.437Z] [INFO] GET /css/coding.css 200 8ms +[2026-01-05T22:23:15.438Z] [INFO] GET /css/reminders.css 200 4ms +[2026-01-05T22:23:15.472Z] [INFO] GET /css/responsive.css 200 9ms +[2026-01-05T22:23:15.473Z] [INFO] GET /css/mobile.css 200 9ms +[2026-01-05T22:23:15.476Z] [INFO] GET /js/app.js 200 7ms +[2026-01-05T22:23:15.477Z] [INFO] GET /js/reminders.js 200 7ms +[2026-01-05T22:23:15.512Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-05T22:23:15.515Z] [INFO] GET /js/api.js 200 5ms +[2026-01-05T22:23:15.521Z] [INFO] GET /js/store.js 200 3ms +[2026-01-05T22:23:15.544Z] [INFO] GET /js/board.js 200 4ms +[2026-01-05T22:23:15.543Z] [INFO] GET /js/sync.js 200 3ms +[2026-01-05T22:23:15.552Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-05T22:23:15.555Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-05T22:23:15.558Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T22:23:15.568Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T22:23:15.576Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T22:23:15.585Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T22:23:15.589Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T22:23:15.597Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-05T22:23:15.598Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T22:23:15.602Z] [INFO] GET /js/notifications.js 200 1ms +[2026-01-05T22:23:15.615Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T22:23:15.616Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-05T22:23:15.621Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T22:23:15.625Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-05T22:23:15.683Z] [INFO] GET /api/auth/users 304 8ms +[2026-01-05T22:23:15.691Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T22:23:15.693Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-05T22:23:15.727Z] [INFO] GET /api/auth/users 304 8ms +[2026-01-05T22:23:15.771Z] [INFO] GET /api/projects 304 6ms +[2026-01-05T22:23:15.785Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (MfoNCyYiSotllLLpAAAB) +[2026-01-05T22:23:15.815Z] [INFO] GET /api/labels/2 304 10ms +[2026-01-05T22:23:15.833Z] [INFO] GET /api/tasks/project/2 304 27ms +[2026-01-05T22:23:15.841Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-05T22:23:15.845Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-05T22:23:15.850Z] [INFO] GET /api/reminders?project_id=2 304 4ms +[2026-01-05T22:23:15.858Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T22:23:15.894Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-05T22:23:15.939Z] [INFO] GET /api/notifications 304 11ms +[2026-01-05T22:23:15.980Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-05T22:23:17.443Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T22:23:19.179Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T22:23:20.894Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T22:23:21.980Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T22:25:09.482Z] [INFO] GET / 200 9ms +[2026-01-05T22:25:09.556Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (MfoNCyYiSotllLLpAAAB) +[2026-01-05T22:25:09.561Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T22:25:09.592Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T22:25:09.635Z] [INFO] GET /css/board.css 200 9ms +[2026-01-05T22:25:09.636Z] [INFO] GET /css/components.css 200 8ms +[2026-01-05T22:25:09.637Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-05T22:25:09.640Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-05T22:25:09.643Z] [INFO] GET /css/admin.css 200 9ms +[2026-01-05T22:25:09.644Z] [INFO] GET /css/list.css 200 5ms +[2026-01-05T22:25:09.681Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-05T22:25:09.686Z] [INFO] GET /css/notifications.css 200 8ms +[2026-01-05T22:25:09.699Z] [INFO] GET /css/knowledge.css 200 8ms +[2026-01-05T22:25:09.702Z] [INFO] GET /css/gitea.css 200 7ms +[2026-01-05T22:25:09.704Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-05T22:25:09.705Z] [INFO] GET /css/reminders.css 200 4ms +[2026-01-05T22:25:09.715Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T22:25:09.734Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T22:25:09.737Z] [INFO] GET /js/app.js 200 6ms +[2026-01-05T22:25:09.754Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-05T22:25:09.923Z] [INFO] GET /js/api.js 200 7ms +[2026-01-05T22:25:09.930Z] [INFO] GET /js/auth.js 200 11ms +[2026-01-05T22:25:09.935Z] [INFO] GET /js/offline.js 200 10ms +[2026-01-05T22:25:09.937Z] [INFO] GET /js/store.js 200 16ms +[2026-01-05T22:25:09.938Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-05T22:25:09.939Z] [INFO] GET /js/board.js 200 5ms +[2026-01-05T22:25:09.961Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T22:25:09.970Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-05T22:25:09.972Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-05T22:25:09.974Z] [INFO] GET /js/list.js 200 6ms +[2026-01-05T22:25:09.976Z] [INFO] GET /js/undo.js 200 5ms +[2026-01-05T22:25:09.991Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T22:25:09.998Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T22:25:10.011Z] [INFO] GET /js/knowledge.js 200 7ms +[2026-01-05T22:25:10.014Z] [INFO] GET /js/gitea.js 200 7ms +[2026-01-05T22:25:10.013Z] [INFO] GET /js/notifications.js 200 8ms +[2026-01-05T22:25:10.021Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T22:25:10.033Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-05T22:25:10.035Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-05T22:25:10.087Z] [INFO] POST /api/auth/refresh 200 17ms +[2026-01-05T22:25:10.091Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T22:25:10.096Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T22:25:10.135Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T22:25:10.169Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (45aDVYp57xe7Ie_RAAAD) +[2026-01-05T22:25:10.179Z] [INFO] GET /api/projects 304 5ms +[2026-01-05T22:25:10.212Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T22:25:10.224Z] [INFO] GET /api/stats/dashboard?projectId=2 304 10ms +[2026-01-05T22:25:10.232Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-05T22:25:10.250Z] [INFO] GET /api/tasks/project/2 304 17ms +[2026-01-05T22:25:10.255Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T22:25:10.261Z] [INFO] GET /api/reminders?project_id=2 304 3ms +[2026-01-05T22:25:10.301Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-05T22:25:10.341Z] [INFO] GET /api/notifications 304 9ms +[2026-01-05T22:25:10.381Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-05T22:25:12.620Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T22:25:15.158Z] [INFO] GET /css/board.css 200 7ms +[2026-01-05T22:25:15.161Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-05T22:25:15.164Z] [INFO] GET /css/components.css 200 8ms +[2026-01-05T22:25:15.170Z] [INFO] GET /css/base.css 200 10ms +[2026-01-05T22:25:15.173Z] [INFO] GET /css/variables.css 200 10ms +[2026-01-05T22:25:15.176Z] [INFO] GET /css/modal.css 200 9ms +[2026-01-05T22:25:15.197Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T22:25:15.205Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-05T22:25:15.219Z] [INFO] GET /css/notifications.css 200 7ms +[2026-01-05T22:25:15.221Z] [INFO] GET /css/proposals.css 200 8ms +[2026-01-05T22:25:15.223Z] [INFO] GET /css/coding.css 200 1ms +[2026-01-05T22:25:15.227Z] [INFO] GET /css/knowledge.css 200 1ms +[2026-01-05T22:25:15.230Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T22:25:15.237Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-05T22:25:15.252Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T22:25:15.254Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-05T22:25:15.980Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T22:25:17.442Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T22:25:19.488Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T22:25:28.629Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T22:26:47.414Z] [INFO] GET / 200 6ms +[2026-01-05T22:26:47.482Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (45aDVYp57xe7Ie_RAAAD) +[2026-01-05T22:26:47.493Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T22:26:47.523Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T22:26:47.563Z] [INFO] GET /css/components.css 200 9ms +[2026-01-05T22:26:47.564Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T22:26:47.565Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-05T22:26:47.570Z] [INFO] GET /css/list.css 200 1ms +[2026-01-05T22:26:47.571Z] [INFO] GET /css/calendar.css 200 2ms +[2026-01-05T22:26:47.576Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-05T22:26:47.595Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T22:26:47.632Z] [INFO] GET /css/notifications.css 200 12ms +[2026-01-05T22:26:47.635Z] [INFO] GET /css/gitea.css 200 12ms +[2026-01-05T22:26:47.639Z] [INFO] GET /css/coding.css 200 13ms +[2026-01-05T22:26:47.640Z] [INFO] GET /css/reminders.css 200 12ms +[2026-01-05T22:26:47.642Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-05T22:26:47.643Z] [INFO] GET /css/responsive.css 200 6ms +[2026-01-05T22:26:47.664Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T22:26:47.675Z] [INFO] GET /js/reminders.js 200 6ms +[2026-01-05T22:26:47.676Z] [INFO] GET /js/app.js 200 6ms +[2026-01-05T22:26:47.724Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-05T22:26:47.733Z] [INFO] GET /js/api.js 200 10ms +[2026-01-05T22:26:47.737Z] [INFO] GET /js/store.js 200 9ms +[2026-01-05T22:26:47.742Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-05T22:26:47.743Z] [INFO] GET /js/sync.js 200 3ms +[2026-01-05T22:26:47.764Z] [INFO] GET /js/offline.js 200 9ms +[2026-01-05T22:26:47.776Z] [INFO] GET /js/board.js 200 6ms +[2026-01-05T22:26:47.777Z] [INFO] GET /js/task-modal.js 200 6ms +[2026-01-05T22:26:47.779Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-05T22:26:47.781Z] [INFO] GET /js/list.js 200 6ms +[2026-01-05T22:26:47.793Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T22:26:47.805Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-05T22:26:47.809Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T22:26:47.811Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T22:26:47.813Z] [INFO] GET /js/notifications.js 200 1ms +[2026-01-05T22:26:47.821Z] [INFO] GET /js/gitea.js 200 1ms +[2026-01-05T22:26:47.832Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T22:26:47.836Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T22:26:47.840Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T22:26:47.884Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T22:26:47.889Z] [INFO] GET /api/auth/users 200 3ms +[2026-01-05T22:26:47.893Z] [INFO] GET /assets/icons/task.svg 200 2ms +[2026-01-05T22:26:47.931Z] [INFO] GET /api/auth/users 200 7ms +[2026-01-05T22:26:47.957Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (Ni7AiEO-HXWbOs2TAAAF) +[2026-01-05T22:26:47.969Z] [INFO] GET /api/projects 200 9ms +[2026-01-05T22:26:48.005Z] [INFO] GET /api/labels/2 200 5ms +[2026-01-05T22:26:48.010Z] [INFO] GET /api/stats/dashboard?projectId=2 200 5ms +[2026-01-05T22:26:48.028Z] [INFO] GET /api/tasks/project/2 200 18ms +[2026-01-05T22:26:48.029Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T22:26:48.034Z] [INFO] GET /api/columns/2 200 3ms +[2026-01-05T22:26:48.044Z] [INFO] GET /api/reminders?project_id=2 200 4ms +[2026-01-05T22:26:48.084Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 2ms +[2026-01-05T22:26:48.125Z] [INFO] GET /api/notifications 200 9ms +[2026-01-05T22:26:48.165Z] [INFO] GET /api/knowledge/categories 200 7ms +[2026-01-05T22:26:50.315Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T22:28:49.550Z] [INFO] GET / 200 4ms +[2026-01-05T22:28:49.636Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (Ni7AiEO-HXWbOs2TAAAF) +[2026-01-05T22:28:49.642Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T22:28:49.674Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T22:28:49.707Z] [INFO] GET /css/components.css 200 2ms +[2026-01-05T22:28:49.715Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-05T22:28:49.719Z] [INFO] GET /css/admin.css 200 7ms +[2026-01-05T22:28:49.723Z] [INFO] GET /css/board.css 200 10ms +[2026-01-05T22:28:49.724Z] [INFO] GET /css/list.css 200 11ms +[2026-01-05T22:28:49.727Z] [INFO] GET /css/calendar.css 200 11ms +[2026-01-05T22:28:49.751Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T22:28:49.766Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T22:28:49.771Z] [INFO] GET /css/notifications.css 200 7ms +[2026-01-05T22:28:49.776Z] [INFO] GET /css/coding.css 200 8ms +[2026-01-05T22:28:49.779Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-05T22:28:49.784Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-05T22:28:49.784Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T22:28:49.801Z] [INFO] GET /css/mobile.css 200 5ms +[2026-01-05T22:28:49.810Z] [INFO] GET /js/app.js 200 5ms +[2026-01-05T22:28:49.812Z] [INFO] GET /js/reminders.js 200 4ms +[2026-01-05T22:28:49.890Z] [INFO] GET /js/api.js 200 5ms +[2026-01-05T22:28:49.894Z] [INFO] GET /js/sync.js 200 7ms +[2026-01-05T22:28:49.896Z] [INFO] GET /js/store.js 200 7ms +[2026-01-05T22:28:49.897Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-05T22:28:49.899Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-05T22:28:49.926Z] [INFO] GET /js/board.js 200 6ms +[2026-01-05T22:28:49.928Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-05T22:28:49.931Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-05T22:28:49.934Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-05T22:28:49.936Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T22:28:49.968Z] [INFO] GET /js/admin.js 200 6ms +[2026-01-05T22:28:49.970Z] [INFO] GET /js/undo.js 200 6ms +[2026-01-05T22:28:49.972Z] [INFO] GET /js/proposals.js 200 7ms +[2026-01-05T22:28:49.975Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-05T22:28:49.977Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T22:28:49.991Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T22:28:49.997Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T22:28:50.004Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T22:28:50.005Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T22:28:50.055Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T22:28:50.063Z] [INFO] GET /api/auth/users 200 5ms +[2026-01-05T22:28:50.065Z] [INFO] GET /assets/icons/task.svg 200 8ms +[2026-01-05T22:28:50.129Z] [INFO] GET /api/auth/users 200 6ms +[2026-01-05T22:28:50.163Z] [INFO] GET /api/projects 200 6ms +[2026-01-05T22:28:50.170Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (29niXzUEqYGO8tGAAAAH) +[2026-01-05T22:28:50.193Z] [INFO] GET /api/columns/2 200 3ms +[2026-01-05T22:28:50.201Z] [INFO] GET /api/stats/dashboard?projectId=2 200 5ms +[2026-01-05T22:28:50.229Z] [INFO] GET /api/tasks/project/2 200 26ms +[2026-01-05T22:28:50.237Z] [INFO] GET /api/labels/2 200 7ms +[2026-01-05T22:28:50.242Z] [INFO] GET /api/reminders?project_id=2 200 4ms +[2026-01-05T22:28:50.244Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T22:28:50.291Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 6ms +[2026-01-05T22:28:50.326Z] [INFO] GET /api/notifications 200 4ms +[2026-01-05T22:28:50.368Z] [INFO] GET /api/knowledge/categories 200 7ms +[2026-01-05T22:28:52.104Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T22:28:53.917Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T22:28:56.071Z] [INFO] GET / 200 3ms +[2026-01-05T22:28:56.132Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (29niXzUEqYGO8tGAAAAH) +[2026-01-05T22:28:56.158Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-05T22:28:56.162Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T22:28:56.167Z] [INFO] GET /css/modal.css 200 10ms +[2026-01-05T22:28:56.169Z] [INFO] GET /css/board.css 200 9ms +[2026-01-05T22:28:56.171Z] [INFO] GET /css/base.css 200 6ms +[2026-01-05T22:28:56.172Z] [INFO] GET /css/components.css 200 4ms +[2026-01-05T22:28:56.189Z] [INFO] GET /css/list.css 200 1ms +[2026-01-05T22:28:56.202Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T22:28:56.217Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T22:28:56.222Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T22:28:56.227Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T22:28:56.233Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-05T22:28:56.235Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T22:28:56.238Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-05T22:28:56.246Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T22:28:56.250Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T22:28:56.277Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-05T22:28:56.284Z] [INFO] GET /js/app.js 200 10ms +[2026-01-05T22:28:56.371Z] [INFO] GET /js/store.js 200 6ms +[2026-01-05T22:28:56.375Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-05T22:28:56.378Z] [INFO] GET /js/sync.js 200 8ms +[2026-01-05T22:28:56.381Z] [INFO] GET /js/api.js 200 7ms +[2026-01-05T22:28:56.383Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-05T22:28:56.424Z] [INFO] GET /js/board.js 200 23ms +[2026-01-05T22:28:56.432Z] [INFO] GET /js/task-modal.js 200 22ms +[2026-01-05T22:28:56.456Z] [INFO] GET /js/calendar.js 200 33ms +[2026-01-05T22:28:56.460Z] [INFO] GET /js/list.js 200 25ms +[2026-01-05T22:28:56.461Z] [INFO] GET /js/shortcuts.js 200 16ms +[2026-01-05T22:28:56.465Z] [INFO] GET /js/undo.js 200 7ms +[2026-01-05T22:28:56.466Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T22:28:56.468Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-05T22:28:56.490Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T22:28:56.498Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T22:28:56.500Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-05T22:28:56.504Z] [INFO] GET /js/gitea.js 200 7ms +[2026-01-05T22:28:56.507Z] [INFO] GET /js/mobile.js 200 8ms +[2026-01-05T22:28:56.522Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T22:28:56.581Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T22:28:56.590Z] [INFO] GET /api/auth/users 200 6ms +[2026-01-05T22:28:56.594Z] [INFO] GET /assets/icons/task.svg 200 11ms +[2026-01-05T22:28:56.658Z] [INFO] GET /api/auth/users 200 7ms +[2026-01-05T22:28:56.689Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (ZwPTNa4Cxx4nVOMKAAAJ) +[2026-01-05T22:28:56.703Z] [INFO] GET /api/projects 200 9ms +[2026-01-05T22:28:56.744Z] [INFO] GET /api/stats/dashboard?projectId=2 200 5ms +[2026-01-05T22:28:56.749Z] [INFO] GET /api/columns/2 200 5ms +[2026-01-05T22:28:56.751Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T22:28:56.757Z] [INFO] GET /api/labels/2 200 5ms +[2026-01-05T22:28:56.778Z] [INFO] GET /api/tasks/project/2 200 15ms +[2026-01-05T22:28:56.782Z] [INFO] GET /api/reminders?project_id=2 200 2ms +[2026-01-05T22:28:56.831Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 10ms +[2026-01-05T22:28:56.869Z] [INFO] GET /api/notifications 200 7ms +[2026-01-05T22:28:56.906Z] [INFO] GET /api/knowledge/categories 200 5ms +[2026-01-05T22:28:58.327Z] [INFO] POST /api/auth/refresh 200 4ms +[2026-01-05T22:29:06.381Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T22:29:08.563Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T22:29:28.349Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T22:30:28.647Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T22:31:00.833Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T22:31:01.710Z] [INFO] GET / 200 4ms +[2026-01-05T22:31:01.766Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (ZwPTNa4Cxx4nVOMKAAAJ) +[2026-01-05T22:31:01.784Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T22:31:01.813Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T22:31:01.845Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-05T22:31:01.848Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T22:31:01.850Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T22:31:01.854Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-05T22:31:01.856Z] [INFO] GET /css/list.css 200 3ms +[2026-01-05T22:31:01.857Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T22:31:01.880Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-05T22:31:01.898Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T22:31:01.908Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T22:31:01.910Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T22:31:01.912Z] [INFO] GET /css/reminders.css 200 5ms +[2026-01-05T22:31:01.914Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T22:31:01.916Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T22:31:01.931Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T22:31:01.943Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T22:31:01.946Z] [INFO] GET /js/reminders.js 200 4ms +[2026-01-05T22:31:01.996Z] [INFO] GET /js/store.js 200 11ms +[2026-01-05T22:31:01.999Z] [INFO] GET /js/api.js 200 8ms +[2026-01-05T22:31:02.003Z] [INFO] GET /js/utils.js 200 9ms +[2026-01-05T22:31:02.008Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-05T22:31:02.012Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-05T22:31:02.025Z] [INFO] GET /js/offline.js 200 2ms +[2026-01-05T22:31:02.033Z] [INFO] GET /js/board.js 200 3ms +[2026-01-05T22:31:02.044Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-05T22:31:02.046Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-05T22:31:02.051Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T22:31:02.057Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T22:31:02.058Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T22:31:02.062Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-05T22:31:02.076Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T22:31:02.080Z] [INFO] GET /js/notifications.js 200 1ms +[2026-01-05T22:31:02.085Z] [INFO] GET /js/gitea.js 200 1ms +[2026-01-05T22:31:02.089Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T22:31:02.094Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T22:31:02.108Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T22:31:02.158Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T22:31:02.165Z] [INFO] GET /api/auth/users 200 5ms +[2026-01-05T22:31:02.167Z] [INFO] GET /assets/icons/task.svg 200 8ms +[2026-01-05T22:31:02.228Z] [INFO] GET /api/auth/users 200 5ms +[2026-01-05T22:31:02.256Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (0Fv7fDGlhvHSjyoKAAAL) +[2026-01-05T22:31:02.266Z] [INFO] GET /api/projects 200 7ms +[2026-01-05T22:31:02.301Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T22:31:02.325Z] [INFO] GET /api/tasks/project/2 200 27ms +[2026-01-05T22:31:02.332Z] [INFO] GET /api/labels/2 200 5ms +[2026-01-05T22:31:02.337Z] [INFO] GET /api/columns/2 200 5ms +[2026-01-05T22:31:02.341Z] [INFO] GET /api/stats/dashboard?projectId=2 200 4ms +[2026-01-05T22:31:02.345Z] [INFO] GET /api/reminders?project_id=2 200 2ms +[2026-01-05T22:31:02.391Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 11ms +[2026-01-05T22:31:02.429Z] [INFO] GET /api/notifications 200 9ms +[2026-01-05T22:31:02.467Z] [INFO] GET /api/knowledge/categories 200 9ms +[2026-01-05T22:31:04.064Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 9ms +[2026-01-05T22:31:05.523Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T22:31:07.522Z] [INFO] POST /api/auth/refresh 200 15ms +[2026-01-05T22:31:09.763Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T22:32:48.413Z] [INFO] GET / 200 7ms +[2026-01-05T22:32:48.469Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (0Fv7fDGlhvHSjyoKAAAL) +[2026-01-05T22:32:48.487Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T22:32:48.521Z] [INFO] GET /css/base.css 200 6ms +[2026-01-05T22:32:48.556Z] [INFO] GET /css/components.css 200 2ms +[2026-01-05T22:32:48.561Z] [INFO] GET /css/board.css 200 1ms +[2026-01-05T22:32:48.568Z] [INFO] GET /css/modal.css 200 1ms +[2026-01-05T22:32:48.579Z] [INFO] GET /css/calendar.css 200 2ms +[2026-01-05T22:32:48.584Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T22:32:48.590Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T22:32:48.596Z] [INFO] GET /css/admin.css 200 8ms +[2026-01-05T22:32:48.613Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T22:32:48.624Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T22:32:48.626Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-05T22:32:48.638Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-05T22:32:48.639Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T22:32:48.640Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T22:32:48.645Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-05T22:32:48.656Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T22:32:48.667Z] [INFO] GET /js/reminders.js 200 5ms +[2026-01-05T22:32:48.703Z] [INFO] GET /js/api.js 200 6ms +[2026-01-05T22:32:48.710Z] [INFO] GET /js/utils.js 200 9ms +[2026-01-05T22:32:48.713Z] [INFO] GET /js/store.js 200 8ms +[2026-01-05T22:32:48.719Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-05T22:32:48.719Z] [INFO] GET /js/sync.js 200 2ms +[2026-01-05T22:32:48.736Z] [INFO] GET /js/offline.js 200 2ms +[2026-01-05T22:32:48.741Z] [INFO] GET /js/board.js 200 2ms +[2026-01-05T22:32:48.742Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T22:32:48.753Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-05T22:32:48.758Z] [INFO] GET /js/list.js 200 7ms +[2026-01-05T22:32:48.763Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T22:32:48.771Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-05T22:32:48.780Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T22:32:48.790Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T22:32:48.792Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T22:32:48.796Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T22:32:48.801Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-05T22:32:48.804Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-05T22:32:48.811Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T22:32:48.861Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T22:32:48.872Z] [INFO] GET /api/auth/users 200 5ms +[2026-01-05T22:32:48.877Z] [INFO] GET /assets/icons/task.svg 200 12ms +[2026-01-05T22:32:48.927Z] [INFO] GET /api/auth/users 200 5ms +[2026-01-05T22:32:48.966Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (zGHDJ2_KcNcUZEFAAAAN) +[2026-01-05T22:32:48.977Z] [INFO] GET /api/projects 200 8ms +[2026-01-05T22:32:49.019Z] [INFO] GET /api/columns/2 200 7ms +[2026-01-05T22:32:49.028Z] [INFO] GET /api/stats/dashboard?projectId=2 200 7ms +[2026-01-05T22:32:49.044Z] [INFO] GET /api/tasks/project/2 200 22ms +[2026-01-05T22:32:49.048Z] [INFO] GET /api/labels/2 200 19ms +[2026-01-05T22:32:49.057Z] [INFO] GET /api/reminders?project_id=2 200 5ms +[2026-01-05T22:32:49.062Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T22:32:49.103Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 7ms +[2026-01-05T22:32:49.144Z] [INFO] GET /api/notifications 200 8ms +[2026-01-05T22:32:49.185Z] [INFO] GET /api/knowledge/categories 200 6ms +[2026-01-05T22:32:51.797Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T22:32:54.248Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T22:32:56.397Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T22:35:28.652Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T22:38:40.812Z] [INFO] POST /api/auth/refresh 200 26ms +[2026-01-05T22:38:42.157Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T22:38:45.082Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T22:38:47.428Z] [INFO] GET / 200 8ms +[2026-01-05T22:38:47.492Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (zGHDJ2_KcNcUZEFAAAAN) +[2026-01-05T22:38:47.514Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-05T22:38:47.545Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T22:38:47.577Z] [INFO] GET /css/components.css 200 4ms +[2026-01-05T22:38:47.591Z] [INFO] GET /css/calendar.css 200 9ms +[2026-01-05T22:38:47.592Z] [INFO] GET /css/board.css 200 9ms +[2026-01-05T22:38:47.594Z] [INFO] GET /css/modal.css 200 9ms +[2026-01-05T22:38:47.601Z] [INFO] GET /css/list.css 200 13ms +[2026-01-05T22:38:47.603Z] [INFO] GET /css/admin.css 200 13ms +[2026-01-05T22:38:47.620Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T22:38:47.636Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T22:38:47.637Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-05T22:38:47.639Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T22:38:47.645Z] [INFO] GET /css/reminders.css 200 1ms +[2026-01-05T22:38:47.646Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T22:38:47.649Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T22:38:47.665Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T22:38:47.679Z] [INFO] GET /js/app.js 200 6ms +[2026-01-05T22:38:47.683Z] [INFO] GET /js/reminders.js 200 6ms +[2026-01-05T22:38:47.739Z] [INFO] GET /js/store.js 200 8ms +[2026-01-05T22:38:47.751Z] [INFO] GET /js/api.js 200 9ms +[2026-01-05T22:38:47.752Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-05T22:38:47.757Z] [INFO] GET /js/sync.js 200 9ms +[2026-01-05T22:38:47.761Z] [INFO] GET /js/auth.js 200 12ms +[2026-01-05T22:38:47.772Z] [INFO] GET /js/board.js 200 3ms +[2026-01-05T22:38:47.782Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T22:38:47.788Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T22:38:47.789Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T22:38:47.807Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T22:38:47.813Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T22:38:47.821Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-05T22:38:47.824Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T22:38:47.828Z] [INFO] GET /js/notifications.js 200 1ms +[2026-01-05T22:38:47.840Z] [INFO] GET /js/gitea.js 200 5ms +[2026-01-05T22:38:47.841Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T22:38:47.847Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T22:38:47.853Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T22:38:47.857Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T22:38:47.902Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T22:38:47.908Z] [INFO] GET /api/auth/users 200 4ms +[2026-01-05T22:38:47.914Z] [INFO] GET /assets/icons/task.svg 200 4ms +[2026-01-05T22:38:47.983Z] [INFO] GET /api/auth/users 200 7ms +[2026-01-05T22:38:48.013Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (AwpLmFPFcmEMWp7YAAAP) +[2026-01-05T22:38:48.021Z] [INFO] GET /api/projects 200 5ms +[2026-01-05T22:38:48.053Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T22:38:48.063Z] [INFO] GET /api/stats/dashboard?projectId=2 200 8ms +[2026-01-05T22:38:48.069Z] [INFO] GET /api/labels/2 200 5ms +[2026-01-05T22:38:48.074Z] [INFO] GET /api/columns/2 200 4ms +[2026-01-05T22:38:48.093Z] [INFO] GET /api/tasks/project/2 200 18ms +[2026-01-05T22:38:48.101Z] [INFO] GET /api/reminders?project_id=2 200 3ms +[2026-01-05T22:38:48.155Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 9ms +[2026-01-05T22:38:48.196Z] [INFO] GET /api/notifications 200 9ms +[2026-01-05T22:38:48.244Z] [INFO] GET /api/knowledge/categories 200 9ms +[2026-01-05T22:38:52.689Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T22:38:54.332Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T22:38:56.464Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T22:38:58.716Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T22:39:00.012Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T22:39:03.373Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T22:39:46.785Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T22:39:49.847Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T22:39:53.643Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T22:40:28.654Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T22:44:40.866Z] [INFO] GET / 200 15ms +[2026-01-05T22:44:40.932Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (AwpLmFPFcmEMWp7YAAAP) +[2026-01-05T22:44:40.940Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T22:44:40.969Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T22:44:41.006Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T22:44:41.004Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T22:44:41.013Z] [INFO] GET /css/modal.css 200 2ms +[2026-01-05T22:44:41.022Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T22:44:41.030Z] [INFO] GET /css/list.css 200 7ms +[2026-01-05T22:44:41.035Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-05T22:44:41.038Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T22:44:41.061Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T22:44:41.072Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T22:44:41.074Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T22:44:41.078Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-05T22:44:41.079Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-05T22:44:41.084Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-05T22:44:41.089Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T22:44:41.111Z] [INFO] GET /js/app.js 200 7ms +[2026-01-05T22:44:41.113Z] [INFO] GET /js/reminders.js 200 4ms +[2026-01-05T22:44:41.181Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T22:44:41.188Z] [INFO] GET /js/api.js 200 10ms +[2026-01-05T22:44:41.195Z] [INFO] GET /js/sync.js 200 11ms +[2026-01-05T22:44:41.196Z] [INFO] GET /js/auth.js 200 10ms +[2026-01-05T22:44:41.198Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T22:44:41.200Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-05T22:44:41.211Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T22:44:41.220Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T22:44:41.225Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T22:44:41.232Z] [INFO] GET /js/undo.js 200 5ms +[2026-01-05T22:44:41.234Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T22:44:41.239Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T22:44:41.254Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T22:44:41.257Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-05T22:44:41.260Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T22:44:41.265Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T22:44:41.270Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T22:44:41.272Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T22:44:41.280Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T22:44:41.335Z] [INFO] POST /api/auth/refresh 200 19ms +[2026-01-05T22:44:41.345Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T22:44:41.348Z] [INFO] GET /assets/icons/task.svg 304 8ms +[2026-01-05T22:44:41.401Z] [INFO] GET /api/auth/users 304 8ms +[2026-01-05T22:44:41.423Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (K4FjZlLgqUWIRPY3AAAR) +[2026-01-05T22:44:41.432Z] [INFO] GET /api/projects 304 4ms +[2026-01-05T22:44:41.471Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T22:44:41.479Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-05T22:44:41.486Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-05T22:44:41.495Z] [INFO] GET /api/labels/2 304 7ms +[2026-01-05T22:44:41.520Z] [INFO] GET /api/tasks/project/2 304 23ms +[2026-01-05T22:44:41.527Z] [INFO] GET /api/reminders?project_id=2 304 5ms +[2026-01-05T22:44:41.568Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 3ms +[2026-01-05T22:44:41.608Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T22:44:41.647Z] [INFO] GET /api/knowledge/categories 304 8ms +[2026-01-05T22:44:44.695Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T22:44:45.810Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T22:44:47.060Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T22:44:48.991Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T22:44:54.097Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T22:44:56.559Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T22:45:28.657Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T22:45:51.859Z] [INFO] GET / 200 5ms +[2026-01-05T22:45:51.928Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (K4FjZlLgqUWIRPY3AAAR) +[2026-01-05T22:45:51.932Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T22:45:51.941Z] [INFO] GET /css/base.css 200 5ms +[2026-01-05T22:45:51.942Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T22:45:51.944Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T22:45:51.946Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-05T22:45:51.947Z] [INFO] GET /css/board.css 200 4ms +[2026-01-05T22:45:51.957Z] [INFO] GET /css/list.css 200 1ms +[2026-01-05T22:45:51.967Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T22:45:51.990Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T22:45:51.997Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T22:45:52.001Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-05T22:45:52.003Z] [INFO] GET /css/reminders.css 200 4ms +[2026-01-05T22:45:52.004Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T22:45:52.006Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-05T22:45:52.023Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T22:45:52.030Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T22:45:52.040Z] [INFO] GET /js/app.js 200 6ms +[2026-01-05T22:45:52.044Z] [INFO] GET /js/reminders.js 200 6ms +[2026-01-05T22:45:52.112Z] [INFO] GET /js/api.js 200 11ms +[2026-01-05T22:45:52.114Z] [INFO] GET /js/store.js 200 10ms +[2026-01-05T22:45:52.117Z] [INFO] GET /js/offline.js 200 8ms +[2026-01-05T22:45:52.119Z] [INFO] GET /js/sync.js 200 8ms +[2026-01-05T22:45:52.121Z] [INFO] GET /js/auth.js 200 5ms +[2026-01-05T22:45:52.122Z] [INFO] GET /js/board.js 200 4ms +[2026-01-05T22:45:52.144Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T22:45:52.145Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T22:45:52.152Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T22:45:52.154Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T22:45:52.154Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T22:45:52.176Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T22:45:52.188Z] [INFO] GET /js/proposals.js 200 10ms +[2026-01-05T22:45:52.189Z] [INFO] GET /js/notifications.js 200 9ms +[2026-01-05T22:45:52.192Z] [INFO] GET /js/knowledge.js 200 6ms +[2026-01-05T22:45:52.194Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-05T22:45:52.196Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-05T22:45:52.206Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T22:45:52.217Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T22:45:52.262Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T22:45:52.269Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T22:45:52.271Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T22:45:52.310Z] [INFO] GET /api/auth/users 304 9ms +[2026-01-05T22:45:52.346Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (098NXKXt7xUKY4Z9AAAT) +[2026-01-05T22:45:52.351Z] [INFO] GET /api/projects 304 4ms +[2026-01-05T22:45:52.375Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T22:45:52.383Z] [INFO] GET /api/stats/dashboard?projectId=2 304 6ms +[2026-01-05T22:45:52.390Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-05T22:45:52.406Z] [INFO] GET /api/tasks/project/2 304 15ms +[2026-01-05T22:45:52.410Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-05T22:45:52.414Z] [INFO] GET /api/reminders?project_id=2 304 3ms +[2026-01-05T22:45:52.449Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 4ms +[2026-01-05T22:45:52.484Z] [INFO] GET /api/notifications 304 5ms +[2026-01-05T22:45:52.518Z] [INFO] GET /api/knowledge/categories 304 5ms +[2026-01-05T22:46:21.206Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T22:46:24.964Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (098NXKXt7xUKY4Z9AAAT) +[2026-01-05T22:46:33.715Z] [INFO] GET / 200 4ms +[2026-01-05T22:46:33.852Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T22:46:33.882Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T22:46:33.909Z] [INFO] GET /css/components.css 200 2ms +[2026-01-05T22:46:33.919Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-05T22:46:33.921Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T22:46:33.948Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T22:46:33.952Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T22:46:33.954Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T22:46:33.962Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T22:46:33.968Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T22:46:33.983Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T22:46:33.991Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-05T22:46:33.996Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T22:46:34.002Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-05T22:46:34.003Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T22:46:34.007Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-05T22:46:34.025Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T22:46:34.035Z] [INFO] GET /js/reminders.js 200 5ms +[2026-01-05T22:46:34.074Z] [INFO] GET /js/store.js 200 6ms +[2026-01-05T22:46:34.079Z] [INFO] GET /js/utils.js 200 8ms +[2026-01-05T22:46:34.082Z] [INFO] GET /js/api.js 200 9ms +[2026-01-05T22:46:34.088Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-05T22:46:34.090Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-05T22:46:34.091Z] [INFO] GET /js/sync.js 200 2ms +[2026-01-05T22:46:34.108Z] [INFO] GET /js/board.js 200 3ms +[2026-01-05T22:46:34.116Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-05T22:46:34.121Z] [INFO] GET /js/calendar.js 200 7ms +[2026-01-05T22:46:34.124Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T22:46:34.125Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T22:46:34.129Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T22:46:34.152Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T22:46:34.158Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T22:46:34.160Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T22:46:34.164Z] [INFO] GET /js/gitea.js 200 5ms +[2026-01-05T22:46:34.170Z] [INFO] GET /js/knowledge.js 200 5ms +[2026-01-05T22:46:34.173Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-05T22:46:34.179Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T22:46:34.228Z] [INFO] GET /assets/icons/task.svg 200 5ms +[2026-01-05T22:46:34.235Z] [INFO] GET /sw.js 200 2ms +[2026-01-05T22:46:34.287Z] [INFO] GET /index.html 200 12ms +[2026-01-05T22:46:34.289Z] [INFO] GET / 200 11ms +[2026-01-05T22:46:34.291Z] [INFO] GET /css/variables.css 200 11ms +[2026-01-05T22:46:34.324Z] [INFO] GET /css/base.css 200 5ms +[2026-01-05T22:46:34.326Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T22:46:34.329Z] [INFO] GET /css/board.css 200 4ms +[2026-01-05T22:46:34.356Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-05T22:46:34.361Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T22:46:34.365Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T22:46:34.391Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T22:46:34.400Z] [INFO] GET /js/utils.js 200 6ms +[2026-01-05T22:46:34.403Z] [INFO] GET /js/api.js 200 2ms +[2026-01-05T22:46:34.421Z] [INFO] GET /js/auth.js 200 2ms +[2026-01-05T22:46:34.436Z] [INFO] GET /js/store.js 200 3ms +[2026-01-05T22:46:34.438Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-05T22:46:34.452Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-05T22:46:34.502Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-05T22:46:34.503Z] [INFO] GET /js/board.js 200 5ms +[2026-01-05T22:46:34.506Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-05T22:46:34.564Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-05T22:46:34.570Z] [INFO] GET /js/undo.js 200 9ms +[2026-01-05T22:46:34.573Z] [INFO] GET /js/list.js 200 10ms +[2026-01-05T22:46:34.596Z] [INFO] GET /js/tour.js 200 3ms +[2026-01-05T22:46:34.605Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-05T22:46:34.606Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T22:46:34.625Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T22:46:34.639Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T22:46:34.642Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-05T22:46:34.658Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-05T22:46:34.670Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-05T22:46:34.675Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T22:46:34.689Z] [INFO] GET /css/list.css 200 5ms +[2026-01-05T22:46:34.706Z] [INFO] GET /css/mobile.css 200 5ms +[2026-01-05T22:46:34.712Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T22:46:34.720Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T22:46:34.740Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T22:46:34.747Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T22:46:34.753Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T22:46:34.772Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T22:46:34.782Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-05T22:46:41.431Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-05T22:46:41.433Z] [INFO] POST /api/auth/login 200 568ms +[2026-01-05T22:46:41.469Z] [INFO] GET / 200 2ms +[2026-01-05T22:46:41.581Z] [INFO] GET /css/board.css 200 8ms +[2026-01-05T22:46:41.583Z] [INFO] GET /css/modal.css 200 9ms +[2026-01-05T22:46:41.587Z] [INFO] GET /css/base.css 200 10ms +[2026-01-05T22:46:41.591Z] [INFO] GET /css/variables.css 200 12ms +[2026-01-05T22:46:41.593Z] [INFO] GET /css/components.css 200 7ms +[2026-01-05T22:46:41.595Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-05T22:46:41.621Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T22:46:41.623Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-05T22:46:41.645Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T22:46:41.646Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-05T22:46:41.653Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T22:46:41.657Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-05T22:46:41.663Z] [INFO] GET /css/knowledge.css 200 8ms +[2026-01-05T22:46:41.665Z] [INFO] GET /css/reminders.css 200 7ms +[2026-01-05T22:46:41.679Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T22:46:41.681Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T22:46:41.689Z] [INFO] GET /js/app.js 200 5ms +[2026-01-05T22:46:41.694Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-05T22:46:41.733Z] [INFO] GET /js/api.js 200 5ms +[2026-01-05T22:46:41.734Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-05T22:46:41.736Z] [INFO] GET /js/store.js 200 6ms +[2026-01-05T22:46:41.744Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-05T22:46:41.747Z] [INFO] GET /js/auth.js 200 5ms +[2026-01-05T22:46:41.749Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-05T22:46:41.767Z] [INFO] GET /js/board.js 200 2ms +[2026-01-05T22:46:41.778Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T22:46:41.788Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-05T22:46:41.789Z] [INFO] GET /js/list.js 200 5ms +[2026-01-05T22:46:41.802Z] [INFO] GET /js/shortcuts.js 200 7ms +[2026-01-05T22:46:41.806Z] [INFO] GET /js/undo.js 200 7ms +[2026-01-05T22:46:41.827Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-05T22:46:41.829Z] [INFO] GET /js/admin.js 200 5ms +[2026-01-05T22:46:41.837Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-05T22:46:41.840Z] [INFO] GET /js/knowledge.js 200 6ms +[2026-01-05T22:46:41.844Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T22:46:41.860Z] [INFO] GET /js/coding.js 200 7ms +[2026-01-05T22:46:41.866Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T22:46:41.904Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T22:46:41.924Z] [INFO] GET /api/auth/users 200 5ms +[2026-01-05T22:46:41.927Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T22:46:41.962Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T22:46:41.996Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (OXINw4vZleo0a5lmAAAV) +[2026-01-05T22:46:42.004Z] [INFO] GET /api/projects 200 6ms +[2026-01-05T22:46:42.064Z] [INFO] GET /api/tasks/project/2 200 25ms +[2026-01-05T22:46:42.069Z] [INFO] GET /api/reminders?project_id=2 200 4ms +[2026-01-05T22:46:42.076Z] [INFO] GET /api/labels/2 200 7ms +[2026-01-05T22:46:42.081Z] [INFO] GET /api/stats/dashboard?projectId=2 200 11ms +[2026-01-05T22:46:42.082Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T22:46:42.087Z] [INFO] GET /api/columns/2 200 4ms +[2026-01-05T22:46:42.134Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 5ms +[2026-01-05T22:46:42.172Z] [INFO] GET /api/notifications 200 6ms +[2026-01-05T22:46:42.211Z] [INFO] GET /api/knowledge/categories 200 6ms +[2026-01-05T22:46:43.726Z] [INFO] GET /sw.js 200 3ms +[2026-01-05T22:46:44.839Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T22:46:47.023Z] [INFO] GET / 200 4ms +[2026-01-05T22:46:47.083Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (OXINw4vZleo0a5lmAAAV) +[2026-01-05T22:46:47.103Z] [INFO] GET /css/modal.css 200 9ms +[2026-01-05T22:46:47.105Z] [INFO] GET /css/board.css 200 9ms +[2026-01-05T22:46:47.106Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-05T22:46:47.110Z] [INFO] GET /css/variables.css 200 9ms +[2026-01-05T22:46:47.113Z] [INFO] GET /css/base.css 200 9ms +[2026-01-05T22:46:47.116Z] [INFO] GET /css/components.css 200 8ms +[2026-01-05T22:46:47.151Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T22:46:47.152Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T22:46:47.163Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-05T22:46:47.165Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T22:46:47.171Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T22:46:47.178Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-05T22:46:47.185Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-05T22:46:47.188Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-05T22:46:47.197Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T22:46:47.199Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T22:46:47.214Z] [INFO] GET /js/app.js 200 4ms +[2026-01-05T22:46:47.218Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-05T22:46:47.249Z] [INFO] GET /js/api.js 200 3ms +[2026-01-05T22:46:47.254Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-05T22:46:47.257Z] [INFO] GET /js/store.js 200 4ms +[2026-01-05T22:46:47.321Z] [INFO] GET /js/auth.js 200 37ms +[2026-01-05T22:46:47.322Z] [INFO] GET /js/offline.js 200 32ms +[2026-01-05T22:46:47.338Z] [INFO] GET /js/task-modal.js 200 31ms +[2026-01-05T22:46:47.342Z] [INFO] GET /js/sync.js 200 28ms +[2026-01-05T22:46:47.347Z] [INFO] GET /js/board.js 200 12ms +[2026-01-05T22:46:47.350Z] [INFO] GET /js/calendar.js 200 10ms +[2026-01-05T22:46:47.356Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T22:46:47.358Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T22:46:47.372Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T22:46:47.391Z] [INFO] GET /js/admin.js 200 6ms +[2026-01-05T22:46:47.394Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-05T22:46:47.399Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T22:46:47.400Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T22:46:47.403Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T22:46:47.412Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T22:46:47.420Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T22:46:47.463Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T22:46:47.472Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T22:46:47.475Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-05T22:46:47.514Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T22:46:47.577Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (I1AaIJztMe2adUtuAAAX) +[2026-01-05T22:46:47.586Z] [INFO] GET /api/projects 304 7ms +[2026-01-05T22:46:47.647Z] [INFO] GET /api/tasks/project/2 304 26ms +[2026-01-05T22:46:47.651Z] [INFO] GET /api/stats/dashboard?projectId=2 304 28ms +[2026-01-05T22:46:47.655Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T22:46:47.658Z] [INFO] GET /api/columns/2 304 2ms +[2026-01-05T22:46:47.662Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-05T22:46:47.667Z] [INFO] GET /api/reminders?project_id=2 304 4ms +[2026-01-05T22:46:47.711Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-05T22:46:47.747Z] [INFO] GET /api/notifications 304 7ms +[2026-01-05T22:46:47.787Z] [INFO] GET /api/knowledge/categories 304 4ms +[2026-01-05T22:46:50.879Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T22:46:51.193Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-05T22:46:52.928Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T22:46:56.550Z] [INFO] POST /api/auth/refresh 200 18ms +[2026-01-05T22:47:20.176Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T22:47:22.527Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T22:47:25.892Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T22:47:35.549Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T22:47:39.000Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T22:47:45.107Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T22:47:49.460Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T22:47:55.656Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T22:47:57.990Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T22:47:59.842Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T22:48:04.573Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T22:48:09.352Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T22:48:14.112Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T22:48:17.397Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T22:48:17.620Z] [DEBUG] Benachrichtigungstermine erstellt für Reminder 1 +[2026-01-05T22:48:17.623Z] [INFO] POST /api/reminders 201 14ms +[2026-01-05T22:48:17.666Z] [INFO] GET /api/reminders?project_id=2 200 9ms +[2026-01-05T22:48:17.709Z] [INFO] GET /api/columns/2 304 9ms +[2026-01-05T22:48:17.758Z] [INFO] GET /api/tasks/project/2 304 19ms +[2026-01-05T22:48:17.777Z] [INFO] GET /api/labels/2 304 7ms +[2026-01-05T22:48:17.788Z] [INFO] GET /api/reminders?project_id=2 304 8ms +[2026-01-05T22:48:18.614Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T22:48:22.483Z] [INFO] GET / 200 6ms +[2026-01-05T22:48:22.559Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (I1AaIJztMe2adUtuAAAX) +[2026-01-05T22:48:22.569Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T22:48:22.579Z] [INFO] GET /css/base.css 200 7ms +[2026-01-05T22:48:22.580Z] [INFO] GET /css/components.css 200 3ms +[2026-01-05T22:48:22.581Z] [INFO] GET /css/board.css 200 3ms +[2026-01-05T22:48:22.597Z] [INFO] GET /css/modal.css 200 1ms +[2026-01-05T22:48:22.605Z] [INFO] GET /css/calendar.css 200 1ms +[2026-01-05T22:48:22.628Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T22:48:22.635Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T22:48:22.638Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-05T22:48:22.640Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-05T22:48:22.642Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-05T22:48:22.658Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T22:48:22.661Z] [INFO] GET /css/knowledge.css 200 1ms +[2026-01-05T22:48:22.671Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-05T22:48:22.672Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-05T22:48:22.679Z] [INFO] GET /css/reminders.css 200 1ms +[2026-01-05T22:48:22.688Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T22:48:22.697Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-05T22:48:22.739Z] [INFO] GET /js/api.js 200 5ms +[2026-01-05T22:48:22.742Z] [INFO] GET /js/store.js 200 6ms +[2026-01-05T22:48:22.746Z] [INFO] GET /js/utils.js 200 8ms +[2026-01-05T22:48:22.753Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-05T22:48:22.754Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-05T22:48:22.757Z] [INFO] GET /js/offline.js 200 5ms +[2026-01-05T22:48:22.776Z] [INFO] GET /js/board.js 200 3ms +[2026-01-05T22:48:22.783Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-05T22:48:22.791Z] [INFO] GET /js/list.js 200 9ms +[2026-01-05T22:48:22.794Z] [INFO] GET /js/calendar.js 200 10ms +[2026-01-05T22:48:22.799Z] [INFO] GET /js/shortcuts.js 200 11ms +[2026-01-05T22:48:22.802Z] [INFO] GET /js/undo.js 200 5ms +[2026-01-05T22:48:22.821Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T22:48:22.835Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T22:48:22.836Z] [INFO] GET /js/gitea.js 200 5ms +[2026-01-05T22:48:22.839Z] [INFO] GET /js/notifications.js 200 6ms +[2026-01-05T22:48:22.850Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T22:48:22.854Z] [INFO] GET /js/knowledge.js 200 7ms +[2026-01-05T22:48:22.859Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T22:48:22.894Z] [INFO] POST /api/auth/refresh 200 3ms +[2026-01-05T22:48:22.904Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T22:48:22.910Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-05T22:48:22.942Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-05T22:48:22.971Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (JTFfbNu6QRuz5bN2AAAZ) +[2026-01-05T22:48:22.977Z] [INFO] GET /api/projects 304 4ms +[2026-01-05T22:48:23.019Z] [INFO] GET /api/labels/2 304 7ms +[2026-01-05T22:48:23.028Z] [INFO] GET /api/stats/dashboard?projectId=2 304 8ms +[2026-01-05T22:48:23.058Z] [INFO] GET /api/tasks/project/2 304 29ms +[2026-01-05T22:48:23.062Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-05T22:48:23.063Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T22:48:23.069Z] [INFO] GET /api/reminders?project_id=2 304 3ms +[2026-01-05T22:48:23.128Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-05T22:48:23.164Z] [INFO] GET /api/notifications 304 6ms +[2026-01-05T22:48:23.206Z] [INFO] GET /api/knowledge/categories 304 8ms +[2026-01-05T22:48:24.655Z] [INFO] GET /sw.js 200 4ms +[2026-01-05T22:48:26.365Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 3ms +[2026-01-05T22:48:27.836Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T22:48:30.983Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T22:48:31.987Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T22:48:36.607Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T22:48:38.448Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T22:48:41.293Z] [INFO] POST /api/auth/refresh 200 4ms +[2026-01-05T22:48:43.229Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T22:48:45.456Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T22:48:48.017Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T22:48:51.860Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T22:48:56.175Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T22:48:57.220Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T22:48:59.441Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T22:49:01.128Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T22:50:28.658Z] [INFO] 1 fällige Erinnerung(en) gefunden +[2026-01-05T22:50:28.667Z] [INFO] Benachrichtigung erstellt: reminder:due für User 1 +[2026-01-05T22:50:28.667Z] [INFO] Reminder-Benachrichtigung gesendet: "Test-Erinnerung" (1 Tage vorher) +[2026-01-05T22:55:06.915Z] [INFO] PUT /api/notifications/9/read 200 36ms +[2026-01-05T22:55:28.659Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T22:56:53.749Z] [INFO] GET / 200 8ms +[2026-01-05T22:56:53.806Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (JTFfbNu6QRuz5bN2AAAZ) +[2026-01-05T22:56:53.816Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T22:56:53.848Z] [INFO] GET /css/base.css 200 4ms +[2026-01-05T22:56:53.887Z] [INFO] GET /css/components.css 200 11ms +[2026-01-05T22:56:53.892Z] [INFO] GET /css/board.css 200 9ms +[2026-01-05T22:56:53.893Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-05T22:56:53.898Z] [INFO] GET /css/calendar.css 200 9ms +[2026-01-05T22:56:53.898Z] [INFO] GET /css/list.css 200 7ms +[2026-01-05T22:56:53.900Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-05T22:56:53.928Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T22:56:53.934Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T22:56:53.939Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T22:56:53.943Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-05T22:56:53.958Z] [INFO] GET /css/reminders.css 200 4ms +[2026-01-05T22:56:53.961Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-05T22:56:53.967Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T22:56:53.972Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T22:56:53.978Z] [INFO] GET /js/app.js 200 5ms +[2026-01-05T22:56:53.990Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-05T22:56:54.036Z] [INFO] GET /js/api.js 200 7ms +[2026-01-05T22:56:54.039Z] [INFO] GET /js/store.js 200 7ms +[2026-01-05T22:56:54.042Z] [INFO] GET /js/utils.js 200 8ms +[2026-01-05T22:56:54.049Z] [INFO] GET /js/auth.js 200 12ms +[2026-01-05T22:56:54.055Z] [INFO] GET /js/offline.js 200 15ms +[2026-01-05T22:56:54.058Z] [INFO] GET /js/sync.js 200 13ms +[2026-01-05T22:56:54.069Z] [INFO] GET /js/board.js 200 3ms +[2026-01-05T22:56:54.075Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-05T22:56:54.082Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T22:56:54.086Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T22:56:54.088Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T22:56:54.090Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T22:56:54.109Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T22:56:54.121Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T22:56:54.123Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T22:56:54.126Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-05T22:56:54.129Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T22:56:54.133Z] [INFO] GET /js/coding.js 200 1ms +[2026-01-05T22:56:54.150Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T22:56:54.196Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T22:56:54.206Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T22:56:54.208Z] [INFO] GET /assets/icons/task.svg 304 6ms +[2026-01-05T22:56:54.250Z] [INFO] GET /api/auth/users 304 8ms +[2026-01-05T22:56:54.291Z] [INFO] GET /api/projects 304 10ms +[2026-01-05T22:56:54.302Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (-EDOR6hA1JgF2UK-AAAb) +[2026-01-05T22:56:54.325Z] [INFO] GET /api/stats/dashboard?projectId=2 304 6ms +[2026-01-05T22:56:54.344Z] [INFO] GET /api/tasks/project/2 304 17ms +[2026-01-05T22:56:54.348Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-05T22:56:54.353Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-05T22:56:54.360Z] [INFO] GET /api/reminders?project_id=2 304 6ms +[2026-01-05T22:56:54.376Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T22:56:54.408Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-05T22:56:54.450Z] [INFO] GET /api/notifications 200 9ms +[2026-01-05T22:56:54.507Z] [INFO] GET /api/knowledge/categories 304 7ms +[2026-01-05T22:56:56.120Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T22:56:59.489Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T22:57:01.819Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T22:57:02.943Z] [INFO] POST /api/auth/refresh 200 17ms +[2026-01-05T22:57:08.333Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T22:57:10.761Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T22:57:19.289Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T22:57:20.541Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T22:57:21.614Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T22:57:24.437Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T22:57:29.010Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T22:57:30.493Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T22:59:31.389Z] [INFO] GET / 200 103ms +[2026-01-05T22:59:31.903Z] [INFO] GET /.well-known/security.txt 200 113ms +[2026-01-05T22:59:37.236Z] [INFO] GET /assets/icons/task.svg 200 111ms +[2026-01-05T22:59:40.287Z] [INFO] GET /assets/icons/task.svg 200 104ms +[2026-01-05T22:59:44.177Z] [INFO] GET /favicon.ico 200 112ms +[2026-01-05T22:59:46.374Z] [INFO] GET /favicon.ico 200 103ms +[2026-01-05T23:00:28.673Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T23:01:40.082Z] [INFO] GET / 200 7ms +[2026-01-05T23:01:40.140Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (-EDOR6hA1JgF2UK-AAAb) +[2026-01-05T23:01:40.150Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T23:01:40.188Z] [INFO] GET /css/base.css 200 5ms +[2026-01-05T23:01:40.215Z] [INFO] GET /css/components.css 200 4ms +[2026-01-05T23:01:40.218Z] [INFO] GET /css/board.css 200 5ms +[2026-01-05T23:01:40.224Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-05T23:01:40.229Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-05T23:01:40.230Z] [INFO] GET /css/admin.css 200 7ms +[2026-01-05T23:01:40.231Z] [INFO] GET /css/list.css 200 6ms +[2026-01-05T23:01:40.257Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T23:01:40.271Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-05T23:01:40.273Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-05T23:01:40.284Z] [INFO] GET /css/coding.css 200 9ms +[2026-01-05T23:01:40.287Z] [INFO] GET /css/knowledge.css 200 10ms +[2026-01-05T23:01:40.291Z] [INFO] GET /css/reminders.css 200 10ms +[2026-01-05T23:01:40.294Z] [INFO] GET /css/responsive.css 200 5ms +[2026-01-05T23:01:40.307Z] [INFO] GET /css/mobile.css 200 7ms +[2026-01-05T23:01:40.312Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T23:01:40.317Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-05T23:01:40.386Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T23:01:40.388Z] [INFO] GET /js/sync.js 200 11ms +[2026-01-05T23:01:40.392Z] [INFO] GET /js/auth.js 200 9ms +[2026-01-05T23:01:40.395Z] [INFO] GET /js/api.js 200 10ms +[2026-01-05T23:01:40.397Z] [INFO] GET /js/board.js 200 7ms +[2026-01-05T23:01:40.399Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-05T23:01:40.415Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T23:01:40.421Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T23:01:40.423Z] [INFO] GET /js/list.js 200 3ms +[2026-01-05T23:01:40.425Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T23:01:40.430Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-05T23:01:40.447Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T23:01:40.454Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T23:01:40.456Z] [INFO] GET /js/notifications.js 200 6ms +[2026-01-05T23:01:40.461Z] [INFO] GET /js/gitea.js 200 8ms +[2026-01-05T23:01:40.462Z] [INFO] GET /js/knowledge.js 200 7ms +[2026-01-05T23:01:40.464Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-05T23:01:40.479Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T23:01:40.487Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-05T23:01:40.565Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-05T23:01:40.569Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-05T23:01:40.573Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T23:01:40.606Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T23:01:40.648Z] [INFO] GET /api/projects 304 10ms +[2026-01-05T23:01:40.660Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (pxobbFlkvC8moHnuAAAd) +[2026-01-05T23:01:40.683Z] [INFO] GET /api/columns/2 304 7ms +[2026-01-05T23:01:40.691Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-05T23:01:40.712Z] [INFO] GET /api/tasks/project/2 304 19ms +[2026-01-05T23:01:40.715Z] [INFO] GET /api/labels/2 304 21ms +[2026-01-05T23:01:40.723Z] [INFO] GET /api/reminders?project_id=2 304 7ms +[2026-01-05T23:01:40.726Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T23:01:40.767Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-05T23:01:40.802Z] [INFO] GET /api/notifications 304 4ms +[2026-01-05T23:01:40.844Z] [INFO] GET /api/knowledge/categories 304 4ms +[2026-01-05T23:01:42.850Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T23:01:45.519Z] [INFO] GET / 200 4ms +[2026-01-05T23:01:45.585Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (pxobbFlkvC8moHnuAAAd) +[2026-01-05T23:01:45.596Z] [INFO] GET /css/components.css 200 2ms +[2026-01-05T23:01:45.598Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T23:01:45.599Z] [INFO] GET /css/board.css 200 4ms +[2026-01-05T23:01:45.609Z] [INFO] GET /css/base.css 200 7ms +[2026-01-05T23:01:45.617Z] [INFO] GET /css/modal.css 200 13ms +[2026-01-05T23:01:45.620Z] [INFO] GET /css/calendar.css 200 14ms +[2026-01-05T23:01:45.627Z] [INFO] GET /css/list.css 200 2ms +[2026-01-05T23:01:45.637Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-05T23:01:45.661Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T23:01:45.668Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-05T23:01:45.677Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-05T23:01:45.687Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T23:01:45.694Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-05T23:01:45.696Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-05T23:01:45.728Z] [INFO] GET /css/responsive.css 200 8ms +[2026-01-05T23:01:45.729Z] [INFO] GET /css/mobile.css 200 8ms +[2026-01-05T23:01:45.736Z] [INFO] GET /js/app.js 200 3ms +[2026-01-05T23:01:45.737Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-05T23:01:45.788Z] [INFO] GET /js/store.js 200 4ms +[2026-01-05T23:01:45.792Z] [INFO] GET /js/api.js 200 6ms +[2026-01-05T23:01:45.795Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-05T23:01:45.801Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-05T23:01:45.802Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-05T23:01:45.804Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-05T23:01:45.827Z] [INFO] GET /js/board.js 200 8ms +[2026-01-05T23:01:45.832Z] [INFO] GET /js/task-modal.js 200 8ms +[2026-01-05T23:01:45.835Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-05T23:01:45.838Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T23:01:45.839Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T23:01:45.847Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T23:01:45.855Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-05T23:01:45.870Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-05T23:01:45.872Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-05T23:01:45.881Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T23:01:45.892Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T23:01:45.894Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-05T23:01:45.897Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-05T23:01:45.973Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T23:01:45.980Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T23:01:45.982Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-05T23:01:46.023Z] [INFO] GET /api/auth/users 304 8ms +[2026-01-05T23:01:46.052Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (XYpMwq28xe2R5kBaAAAf) +[2026-01-05T23:01:46.063Z] [INFO] GET /api/projects 304 6ms +[2026-01-05T23:01:46.103Z] [INFO] GET /api/stats/dashboard?projectId=2 304 7ms +[2026-01-05T23:01:46.125Z] [INFO] GET /api/tasks/project/2 304 20ms +[2026-01-05T23:01:46.129Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T23:01:46.147Z] [INFO] GET /api/columns/2 304 13ms +[2026-01-05T23:01:46.152Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-05T23:01:46.156Z] [INFO] GET /api/reminders?project_id=2 304 3ms +[2026-01-05T23:01:46.194Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-05T23:01:46.229Z] [INFO] GET /api/notifications 304 5ms +[2026-01-05T23:01:46.269Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-05T23:01:49.541Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T23:02:16.538Z] [INFO] GET /robots.txt 200 102ms +[2026-01-05T23:02:22.536Z] [INFO] GET /assets/icons/task.svg 200 102ms +[2026-01-05T23:03:48.598Z] [INFO] GET / 200 9ms +[2026-01-05T23:03:48.659Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (XYpMwq28xe2R5kBaAAAf) +[2026-01-05T23:03:48.669Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-05T23:03:48.704Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T23:03:48.736Z] [INFO] GET /css/board.css 200 4ms +[2026-01-05T23:03:48.737Z] [INFO] GET /css/components.css 200 5ms +[2026-01-05T23:03:48.739Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T23:03:48.741Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-05T23:03:48.743Z] [INFO] GET /css/list.css 200 5ms +[2026-01-05T23:03:48.744Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T23:03:48.766Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-05T23:03:48.791Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-05T23:03:48.797Z] [INFO] GET /css/knowledge.css 200 9ms +[2026-01-05T23:03:48.800Z] [INFO] GET /css/gitea.css 200 10ms +[2026-01-05T23:03:48.802Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-05T23:03:48.804Z] [INFO] GET /css/reminders.css 200 5ms +[2026-01-05T23:03:48.806Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-05T23:03:48.826Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T23:03:48.836Z] [INFO] GET /js/app.js 200 6ms +[2026-01-05T23:03:48.839Z] [INFO] GET /js/reminders.js 200 5ms +[2026-01-05T23:03:48.888Z] [INFO] GET /js/store.js 200 5ms +[2026-01-05T23:03:48.889Z] [INFO] GET /js/api.js 200 5ms +[2026-01-05T23:03:48.893Z] [INFO] GET /js/utils.js 200 7ms +[2026-01-05T23:03:48.900Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-05T23:03:48.902Z] [INFO] GET /js/auth.js 200 5ms +[2026-01-05T23:03:48.904Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-05T23:03:48.921Z] [INFO] GET /js/board.js 200 4ms +[2026-01-05T23:03:48.924Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-05T23:03:48.928Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-05T23:03:48.934Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-05T23:03:48.968Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T23:03:48.976Z] [INFO] GET /js/admin.js 200 5ms +[2026-01-05T23:03:48.979Z] [INFO] GET /js/list.js 200 5ms +[2026-01-05T23:03:48.980Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T23:03:48.983Z] [INFO] GET /js/notifications.js 200 6ms +[2026-01-05T23:03:48.999Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T23:03:49.001Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T23:03:49.005Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T23:03:49.025Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-05T23:03:49.065Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T23:03:49.072Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T23:03:49.074Z] [INFO] GET /assets/icons/task.svg 304 6ms +[2026-01-05T23:03:49.107Z] [INFO] GET /api/auth/users 304 3ms +[2026-01-05T23:03:49.143Z] [INFO] GET /api/projects 304 8ms +[2026-01-05T23:03:49.151Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (KgvTkhKmygoF9NtNAAAh) +[2026-01-05T23:03:49.188Z] [INFO] GET /api/reminders?project_id=2 304 9ms +[2026-01-05T23:03:49.195Z] [INFO] GET /api/labels/2 304 6ms +[2026-01-05T23:03:49.199Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-05T23:03:49.213Z] [INFO] GET /api/tasks/project/2 304 13ms +[2026-01-05T23:03:49.218Z] [INFO] GET /api/stats/dashboard?projectId=2 304 4ms +[2026-01-05T23:03:49.221Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T23:03:49.261Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-05T23:03:49.302Z] [INFO] GET /api/notifications 304 9ms +[2026-01-05T23:03:49.341Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-05T23:03:51.667Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T23:05:11.136Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T23:05:15.518Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T23:05:28.687Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T23:08:24.920Z] [INFO] GET / 200 15ms +[2026-01-05T23:08:24.983Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (KgvTkhKmygoF9NtNAAAh) +[2026-01-05T23:08:24.990Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-05T23:08:25.021Z] [INFO] GET /css/base.css 200 2ms +[2026-01-05T23:08:25.055Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-05T23:08:25.058Z] [INFO] GET /css/board.css 200 6ms +[2026-01-05T23:08:25.060Z] [INFO] GET /css/components.css 200 6ms +[2026-01-05T23:08:25.064Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-05T23:08:25.065Z] [INFO] GET /css/admin.css 200 6ms +[2026-01-05T23:08:25.067Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T23:08:25.089Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-05T23:08:25.102Z] [INFO] GET /css/gitea.css 200 1ms +[2026-01-05T23:08:25.104Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-05T23:08:25.110Z] [INFO] GET /css/coding.css 200 1ms +[2026-01-05T23:08:25.122Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-05T23:08:25.132Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-05T23:08:25.134Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-05T23:08:25.137Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-05T23:08:25.138Z] [INFO] GET /js/app.js 200 2ms +[2026-01-05T23:08:25.158Z] [INFO] GET /js/reminders.js 200 1ms +[2026-01-05T23:08:25.212Z] [INFO] GET /js/store.js 200 6ms +[2026-01-05T23:08:25.218Z] [INFO] GET /js/api.js 200 9ms +[2026-01-05T23:08:25.222Z] [INFO] GET /js/auth.js 200 11ms +[2026-01-05T23:08:25.225Z] [INFO] GET /js/board.js 200 9ms +[2026-01-05T23:08:25.227Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-05T23:08:25.229Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-05T23:08:25.243Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-05T23:08:25.247Z] [INFO] GET /js/calendar.js 200 1ms +[2026-01-05T23:08:25.253Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T23:08:25.262Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-05T23:08:25.265Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T23:08:25.274Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-05T23:08:25.277Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-05T23:08:25.282Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-05T23:08:25.287Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T23:08:25.290Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-05T23:08:25.295Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T23:08:25.309Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-05T23:08:25.313Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-05T23:08:25.360Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T23:08:25.366Z] [INFO] GET /assets/icons/task.svg 304 4ms +[2026-01-05T23:08:25.371Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-05T23:08:25.413Z] [INFO] GET /api/auth/users 304 9ms +[2026-01-05T23:08:25.443Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (13aUf85K3daqdmNCAAAj) +[2026-01-05T23:08:25.454Z] [INFO] GET /api/projects 304 8ms +[2026-01-05T23:08:25.490Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T23:08:25.510Z] [INFO] GET /api/tasks/project/2 304 18ms +[2026-01-05T23:08:25.515Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-05T23:08:25.520Z] [INFO] GET /api/stats/dashboard?projectId=2 304 3ms +[2026-01-05T23:08:25.524Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-05T23:08:25.529Z] [INFO] GET /api/reminders?project_id=2 304 3ms +[2026-01-05T23:08:25.568Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-05T23:08:25.601Z] [INFO] GET /api/notifications 304 5ms +[2026-01-05T23:08:25.636Z] [INFO] GET /api/knowledge/categories 304 5ms +[2026-01-05T23:08:27.929Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-05T23:08:33.626Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T23:10:28.686Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T23:11:07.906Z] [INFO] GET / 200 4ms +[2026-01-05T23:11:07.966Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (13aUf85K3daqdmNCAAAj) +[2026-01-05T23:11:07.980Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-05T23:11:08.011Z] [INFO] GET /css/base.css 200 3ms +[2026-01-05T23:11:08.049Z] [INFO] GET /css/components.css 200 9ms +[2026-01-05T23:11:08.053Z] [INFO] GET /css/modal.css 200 11ms +[2026-01-05T23:11:08.056Z] [INFO] GET /css/board.css 200 11ms +[2026-01-05T23:11:08.065Z] [INFO] GET /css/calendar.css 200 10ms +[2026-01-05T23:11:08.067Z] [INFO] GET /css/list.css 200 4ms +[2026-01-05T23:11:08.070Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-05T23:11:08.087Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-05T23:11:08.111Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-05T23:11:08.115Z] [INFO] GET /css/gitea.css 200 7ms +[2026-01-05T23:11:08.121Z] [INFO] GET /css/knowledge.css 200 8ms +[2026-01-05T23:11:08.123Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-05T23:11:08.125Z] [INFO] GET /css/responsive.css 200 6ms +[2026-01-05T23:11:08.127Z] [INFO] GET /css/reminders.css 200 5ms +[2026-01-05T23:11:08.144Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-05T23:11:08.154Z] [INFO] GET /js/app.js 200 6ms +[2026-01-05T23:11:08.159Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-05T23:11:08.212Z] [INFO] GET /js/store.js 200 6ms +[2026-01-05T23:11:08.216Z] [INFO] GET /js/api.js 200 7ms +[2026-01-05T23:11:08.221Z] [INFO] GET /js/board.js 200 8ms +[2026-01-05T23:11:08.222Z] [INFO] GET /js/offline.js 200 8ms +[2026-01-05T23:11:08.223Z] [INFO] GET /js/auth.js 200 5ms +[2026-01-05T23:11:08.224Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-05T23:11:08.245Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-05T23:11:08.246Z] [INFO] GET /js/task-modal.js 200 6ms +[2026-01-05T23:11:08.253Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-05T23:11:08.256Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-05T23:11:08.257Z] [INFO] GET /js/list.js 200 2ms +[2026-01-05T23:11:08.275Z] [INFO] GET /js/admin.js 200 5ms +[2026-01-05T23:11:08.278Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-05T23:11:08.281Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-05T23:11:08.285Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-05T23:11:08.286Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-05T23:11:08.290Z] [INFO] GET /js/knowledge.js 200 1ms +[2026-01-05T23:11:08.315Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-05T23:11:08.318Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-05T23:11:08.367Z] [INFO] POST /api/auth/refresh 200 17ms +[2026-01-05T23:11:08.374Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-05T23:11:08.376Z] [INFO] GET /assets/icons/task.svg 304 7ms +[2026-01-05T23:11:08.410Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-05T23:11:08.445Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (w5_UctQZtLgrngPoAAAl) +[2026-01-05T23:11:08.452Z] [INFO] GET /api/projects 304 5ms +[2026-01-05T23:11:08.488Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-05T23:11:08.510Z] [INFO] GET /api/tasks/project/2 304 21ms +[2026-01-05T23:11:08.516Z] [INFO] GET /api/labels/2 304 26ms +[2026-01-05T23:11:08.520Z] [INFO] GET /api/stats/dashboard?projectId=2 304 8ms +[2026-01-05T23:11:08.521Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-05T23:11:08.544Z] [INFO] GET /api/reminders?project_id=2 304 6ms +[2026-01-05T23:11:08.593Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-05T23:11:08.631Z] [INFO] GET /api/notifications 304 8ms +[2026-01-05T23:11:08.667Z] [INFO] GET /api/knowledge/categories 304 5ms +[2026-01-05T23:11:10.480Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T23:11:12.246Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T23:11:14.284Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-05T23:11:18.102Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T23:11:21.254Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-05T23:11:22.281Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-05T23:11:23.340Z] [INFO] DELETE /api/notifications/9 200 17ms +[2026-01-05T23:11:24.733Z] [INFO] DELETE /api/notifications/8 200 14ms +[2026-01-05T23:11:26.523Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T23:11:33.006Z] [INFO] GET /api/tasks/6 200 31ms +[2026-01-05T23:11:33.047Z] [INFO] GET /api/comments/6 200 5ms +[2026-01-05T23:11:33.052Z] [INFO] GET /api/tasks/6/history 404 10ms +[2026-01-05T23:11:33.061Z] [INFO] GET /api/files/6 200 8ms +[2026-01-05T23:11:33.066Z] [INFO] GET /api/links/6 200 5ms +[2026-01-05T23:11:33.071Z] [INFO] GET /api/subtasks/6 200 4ms +[2026-01-05T23:11:33.098Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzY1NDY4NiwiZXhwIjoxNzY3NjU1NTg2fQ.YnJ1C1lyKRgSddVMGmSMfvEBIPQOxpFtikTMKcUIs5U 200 9ms +[2026-01-05T23:11:33.986Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-05T23:11:38.396Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T23:11:39.652Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T23:11:56.728Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-05T23:11:58.164Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-05T23:11:58.327Z] [INFO] PUT /api/subtasks/52 200 4ms +[2026-01-05T23:11:59.342Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-05T23:11:59.976Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T23:11:59.981Z] [INFO] PUT /api/tasks/6 200 14ms +[2026-01-05T23:12:00.039Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-05T23:12:00.044Z] [INFO] PUT /api/tasks/6 200 15ms +[2026-01-05T23:12:00.883Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-05T23:12:04.597Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (w5_UctQZtLgrngPoAAAl) +[2026-01-05T23:15:28.695Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T23:20:28.700Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T23:25:28.725Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T23:30:28.754Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T23:33:44.291Z] [INFO] GET / 200 4ms +[2026-01-05T23:34:36.379Z] [INFO] GET /robots.txt 200 4ms +[2026-01-05T23:35:28.781Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T23:40:28.810Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T23:45:28.814Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T23:50:28.814Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-05T23:55:28.842Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T00:00:28.861Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T00:05:28.891Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T00:10:28.896Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T00:15:28.916Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T00:20:28.914Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T00:25:28.932Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T00:30:28.955Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T00:35:28.955Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T00:37:57.337Z] [INFO] GET / 200 6ms +[2026-01-06T00:37:57.906Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-06T00:37:58.207Z] [INFO] GET /css/base.css 200 3ms +[2026-01-06T00:37:58.514Z] [INFO] GET /css/components.css 200 10ms +[2026-01-06T00:37:58.890Z] [INFO] GET /css/board.css 200 5ms +[2026-01-06T00:37:58.908Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-06T00:37:58.950Z] [INFO] GET /css/calendar.css 200 2ms +[2026-01-06T00:37:59.032Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T00:37:59.343Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-06T00:37:59.421Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-06T00:37:59.517Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-06T00:37:59.518Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-06T00:37:59.558Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-06T00:37:59.654Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-06T00:37:59.856Z] [INFO] GET /css/reminders.css 200 4ms +[2026-01-06T00:37:59.879Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-06T00:37:59.937Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-06T00:37:59.996Z] [INFO] GET /js/app.js 200 3ms +[2026-01-06T00:38:00.220Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-06T00:38:00.636Z] [INFO] GET /js/store.js 200 6ms +[2026-01-06T00:38:00.639Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-06T00:38:00.642Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-06T00:38:00.645Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-06T00:38:00.647Z] [INFO] GET /js/api.js 200 3ms +[2026-01-06T00:38:00.703Z] [INFO] GET /js/board.js 200 8ms +[2026-01-06T00:38:00.995Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-06T00:38:01.558Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-06T00:38:01.617Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-06T00:38:01.624Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-06T00:38:01.628Z] [INFO] GET /js/undo.js 200 7ms +[2026-01-06T00:38:01.631Z] [INFO] GET /js/list.js 200 9ms +[2026-01-06T00:38:01.632Z] [INFO] GET /js/admin.js 200 6ms +[2026-01-06T00:38:01.984Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-06T00:38:01.986Z] [INFO] GET /js/gitea.js 200 5ms +[2026-01-06T00:38:02.263Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-06T00:38:02.286Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-06T00:38:02.358Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T00:38:02.359Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-06T00:38:03.121Z] [INFO] GET /sw.js 200 3ms +[2026-01-06T00:38:03.496Z] [INFO] GET /index.html 200 5ms +[2026-01-06T00:38:03.502Z] [INFO] GET / 200 9ms +[2026-01-06T00:38:03.512Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-06T00:38:03.885Z] [INFO] GET /css/base.css 200 6ms +[2026-01-06T00:38:04.071Z] [INFO] GET /css/components.css 200 6ms +[2026-01-06T00:38:04.073Z] [INFO] GET /css/board.css 200 7ms +[2026-01-06T00:38:04.247Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-06T00:38:04.543Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-06T00:38:04.637Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-06T00:38:04.802Z] [INFO] GET /js/app.js 200 3ms +[2026-01-06T00:38:05.012Z] [INFO] GET /js/utils.js 200 7ms +[2026-01-06T00:38:05.254Z] [INFO] GET /js/api.js 200 4ms +[2026-01-06T00:38:05.543Z] [INFO] GET /js/auth.js 200 2ms +[2026-01-06T00:38:05.648Z] [INFO] GET /js/store.js 200 3ms +[2026-01-06T00:38:06.013Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-06T00:38:06.285Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-06T00:38:06.347Z] [INFO] GET /js/board.js 200 3ms +[2026-01-06T00:38:06.365Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-06T00:38:06.982Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-06T00:38:07.105Z] [INFO] GET /js/list.js 200 3ms +[2026-01-06T00:38:07.109Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-06T00:38:07.460Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-06T00:38:07.614Z] [INFO] GET /js/tour.js 200 3ms +[2026-01-06T00:38:07.831Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-06T00:38:07.835Z] [INFO] GET /js/admin.js 200 6ms +[2026-01-06T00:38:08.024Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-06T00:38:08.431Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-06T00:38:08.433Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-06T00:38:08.552Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-06T00:38:08.993Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-06T00:38:09.264Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-06T00:38:09.532Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T00:38:09.638Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-06T00:38:09.825Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T00:38:10.088Z] [INFO] GET /css/proposals.css 200 7ms +[2026-01-06T00:38:10.091Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-06T00:38:10.178Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-06T00:38:10.510Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-06T00:38:10.514Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-06T00:38:10.857Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-06T00:40:28.958Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T00:45:28.966Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T00:50:28.969Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T00:55:28.993Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T01:00:29.009Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T01:05:29.015Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T01:10:29.035Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T01:15:29.058Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T01:20:29.062Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T01:22:06.781Z] [INFO] POST / 200 6ms +[2026-01-06T01:22:06.851Z] [INFO] POST /_next 200 4ms +[2026-01-06T01:22:06.897Z] [INFO] POST /api 200 5ms +[2026-01-06T01:22:06.948Z] [INFO] POST /_next/server 200 10ms +[2026-01-06T01:22:06.996Z] [INFO] POST /app 200 4ms +[2026-01-06T01:22:07.040Z] [INFO] POST /api/route 404 3ms +[2026-01-06T01:25:29.084Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T01:30:29.097Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T01:35:29.106Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T01:40:29.129Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T01:45:29.154Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T01:50:29.156Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T01:55:29.170Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T01:56:51.459Z] [INFO] POST / 200 19ms +[2026-01-06T02:00:29.195Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T02:05:29.219Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T02:05:38.049Z] [INFO] GET /robots.txt 200 9ms +[2026-01-06T02:05:53.647Z] [INFO] GET /robots.txt 200 7ms +[2026-01-06T02:05:54.127Z] [INFO] GET /assets/icons/js/css/assets/icons/task.svg 200 6ms +[2026-01-06T02:10:29.229Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T02:15:29.247Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T02:20:29.248Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T02:24:17.923Z] [INFO] POST / 200 20ms +[2026-01-06T02:25:29.270Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T02:30:29.277Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T02:35:29.297Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T02:40:29.319Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T02:44:54.487Z] [INFO] POST / 200 1102ms +[2026-01-06T02:45:29.334Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T02:50:29.337Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T02:55:29.356Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T03:00:29.454Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T03:05:29.498Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T03:10:29.418Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T03:15:29.437Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T03:20:29.439Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T03:25:29.453Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T03:30:29.470Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T03:35:29.484Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T03:40:29.497Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T03:45:29.520Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T03:50:29.519Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T03:55:29.535Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T04:00:29.555Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T04:05:29.562Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T04:10:29.582Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T04:15:29.595Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T04:20:29.598Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T04:25:29.605Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T04:29:53.469Z] [INFO] POST / 200 99ms +[2026-01-06T04:30:29.622Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T04:35:29.633Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T04:40:29.641Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T04:45:29.656Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T04:48:43.335Z] [INFO] GET / 200 13ms +[2026-01-06T04:50:29.660Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T04:55:29.664Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T05:00:29.682Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T05:05:29.699Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T05:10:29.716Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T05:15:29.734Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T05:20:29.737Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T05:25:29.752Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T05:30:29.769Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T05:35:29.786Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T05:40:29.790Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T05:45:29.805Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T05:50:29.808Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T05:55:29.826Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T06:00:29.835Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T06:05:29.850Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T06:10:29.864Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T06:15:29.880Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T06:20:29.883Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T06:25:29.897Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T06:30:29.912Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T06:35:29.919Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T06:40:29.921Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T06:42:37.047Z] [INFO] POST / 200 19ms +[2026-01-06T06:45:29.921Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T06:50:29.926Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T06:55:29.930Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T07:00:29.943Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T07:05:29.948Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T07:10:29.958Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T07:15:29.959Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T07:20:29.962Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T07:25:29.979Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T07:30:29.982Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T07:35:29.996Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T07:40:30.004Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T07:45:30.013Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T07:50:30.015Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T07:55:30.027Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T07:57:22.894Z] [INFO] GET / 200 3ms +[2026-01-06T07:57:22.964Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-06T07:57:22.996Z] [INFO] GET /css/base.css 200 4ms +[2026-01-06T07:57:23.043Z] [INFO] GET /css/modal.css 200 17ms +[2026-01-06T07:57:23.044Z] [INFO] GET /css/components.css 200 17ms +[2026-01-06T07:57:23.048Z] [INFO] GET /css/board.css 200 17ms +[2026-01-06T07:57:23.053Z] [INFO] GET /css/admin.css 200 12ms +[2026-01-06T07:57:23.054Z] [INFO] GET /css/calendar.css 200 9ms +[2026-01-06T07:57:23.055Z] [INFO] GET /css/list.css 200 5ms +[2026-01-06T07:57:23.086Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-06T07:57:23.088Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-06T07:57:23.096Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-06T07:57:23.098Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-06T07:57:23.110Z] [INFO] GET /css/knowledge.css 200 7ms +[2026-01-06T07:57:23.113Z] [INFO] GET /css/reminders.css 200 9ms +[2026-01-06T07:57:23.125Z] [INFO] GET /css/responsive.css 200 5ms +[2026-01-06T07:57:23.161Z] [INFO] GET /css/mobile.css 200 38ms +[2026-01-06T07:57:23.182Z] [INFO] GET /js/app.js 200 16ms +[2026-01-06T07:57:23.185Z] [INFO] GET /js/reminders.js 200 9ms +[2026-01-06T07:57:23.243Z] [INFO] GET /js/store.js 200 10ms +[2026-01-06T07:57:23.246Z] [INFO] GET /js/utils.js 200 12ms +[2026-01-06T07:57:23.249Z] [INFO] GET /js/api.js 200 12ms +[2026-01-06T07:57:23.257Z] [INFO] GET /js/auth.js 200 16ms +[2026-01-06T07:57:23.262Z] [INFO] GET /js/sync.js 200 15ms +[2026-01-06T07:57:23.265Z] [INFO] GET /js/offline.js 200 12ms +[2026-01-06T07:57:23.270Z] [INFO] GET /js/board.js 200 3ms +[2026-01-06T07:57:23.275Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-06T07:57:23.277Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-06T07:57:23.294Z] [INFO] GET /js/list.js 200 9ms +[2026-01-06T07:57:23.297Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-06T07:57:23.302Z] [INFO] GET /js/undo.js 200 6ms +[2026-01-06T07:57:23.304Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-06T07:57:23.306Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-06T07:57:23.328Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-06T07:57:23.330Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-06T07:57:23.333Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-06T07:57:23.334Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-06T07:57:23.337Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-06T07:57:23.414Z] [INFO] GET /assets/icons/task.svg 200 23ms +[2026-01-06T07:57:23.417Z] [INFO] GET /sw.js 200 14ms +[2026-01-06T07:57:23.462Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-06T07:57:23.465Z] [INFO] GET / 200 6ms +[2026-01-06T07:57:23.468Z] [INFO] GET /index.html 200 8ms +[2026-01-06T07:57:23.494Z] [INFO] GET /css/base.css 200 3ms +[2026-01-06T07:57:23.504Z] [INFO] GET /css/components.css 200 2ms +[2026-01-06T07:57:23.516Z] [INFO] GET /css/board.css 200 2ms +[2026-01-06T07:57:23.525Z] [INFO] GET /css/modal.css 200 2ms +[2026-01-06T07:57:23.538Z] [INFO] GET /css/calendar.css 200 2ms +[2026-01-06T07:57:23.559Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-06T07:57:23.569Z] [INFO] GET /js/app.js 200 3ms +[2026-01-06T07:57:23.573Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-06T07:57:23.590Z] [INFO] GET /js/api.js 200 3ms +[2026-01-06T07:57:23.604Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-06T07:57:23.606Z] [INFO] GET /js/store.js 200 5ms +[2026-01-06T07:57:23.630Z] [INFO] GET /js/sync.js 200 3ms +[2026-01-06T07:57:23.635Z] [INFO] GET /js/board.js 200 3ms +[2026-01-06T07:57:23.647Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-06T07:57:23.678Z] [INFO] GET /js/calendar.js 200 15ms +[2026-01-06T07:57:23.680Z] [INFO] GET /js/task-modal.js 200 15ms +[2026-01-06T07:57:23.686Z] [INFO] GET /js/list.js 200 2ms +[2026-01-06T07:57:23.703Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-06T07:57:23.715Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-06T07:57:23.719Z] [INFO] GET /js/tour.js 200 2ms +[2026-01-06T07:57:23.736Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T07:57:23.745Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-06T07:57:23.755Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-06T07:57:23.767Z] [INFO] GET /js/gitea.js 200 1ms +[2026-01-06T07:57:23.775Z] [INFO] GET /js/knowledge.js 200 1ms +[2026-01-06T07:57:23.788Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-06T07:57:23.800Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T07:57:23.817Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-06T07:57:23.823Z] [INFO] GET /css/list.css 200 4ms +[2026-01-06T07:57:23.832Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-06T07:57:23.862Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-06T07:57:23.863Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T07:57:23.867Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-06T07:57:23.904Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-06T07:57:23.910Z] [INFO] GET /css/coding.css 200 9ms +[2026-01-06T07:57:23.914Z] [INFO] GET /css/gitea.css 200 11ms +[2026-01-06T07:57:23.938Z] [INFO] GET /css/reminders.css 200 4ms +[2026-01-06T07:57:28.870Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-06T07:57:28.876Z] [INFO] POST /api/auth/login 200 546ms +[2026-01-06T07:57:28.915Z] [INFO] GET / 200 3ms +[2026-01-06T07:57:28.983Z] [INFO] GET /css/variables.css 200 9ms +[2026-01-06T07:57:28.984Z] [INFO] GET /css/board.css 200 8ms +[2026-01-06T07:57:28.987Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-06T07:57:28.990Z] [INFO] GET /css/modal.css 200 9ms +[2026-01-06T07:57:28.992Z] [INFO] GET /css/base.css 200 6ms +[2026-01-06T07:57:28.993Z] [INFO] GET /css/components.css 200 5ms +[2026-01-06T07:57:29.010Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T07:57:29.023Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-06T07:57:29.039Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-06T07:57:29.041Z] [INFO] GET /css/gitea.css 200 7ms +[2026-01-06T07:57:29.047Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-06T07:57:29.049Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-06T07:57:29.051Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-06T07:57:29.054Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-06T07:57:29.066Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-06T07:57:29.069Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-06T07:57:29.079Z] [INFO] GET /js/app.js 200 4ms +[2026-01-06T07:57:29.081Z] [INFO] GET /js/reminders.js 200 5ms +[2026-01-06T07:57:29.181Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-06T07:57:29.190Z] [INFO] GET /js/store.js 200 13ms +[2026-01-06T07:57:29.194Z] [INFO] GET /js/offline.js 200 14ms +[2026-01-06T07:57:29.200Z] [INFO] GET /js/api.js 200 13ms +[2026-01-06T07:57:29.204Z] [INFO] GET /js/auth.js 200 12ms +[2026-01-06T07:57:29.206Z] [INFO] GET /js/board.js 200 9ms +[2026-01-06T07:57:29.214Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-06T07:57:29.225Z] [INFO] GET /js/list.js 200 2ms +[2026-01-06T07:57:29.228Z] [INFO] GET /js/calendar.js 200 1ms +[2026-01-06T07:57:29.233Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-06T07:57:29.261Z] [INFO] GET /js/undo.js 200 9ms +[2026-01-06T07:57:29.268Z] [INFO] GET /js/notifications.js 200 11ms +[2026-01-06T07:57:29.270Z] [INFO] GET /js/admin.js 200 7ms +[2026-01-06T07:57:29.271Z] [INFO] GET /js/gitea.js 200 7ms +[2026-01-06T07:57:29.276Z] [INFO] GET /js/proposals.js 200 8ms +[2026-01-06T07:57:29.278Z] [INFO] GET /js/knowledge.js 200 7ms +[2026-01-06T07:57:29.290Z] [INFO] GET /js/coding.js 200 1ms +[2026-01-06T07:57:29.294Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-06T07:57:29.299Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-06T07:57:29.360Z] [INFO] POST /api/auth/refresh 200 22ms +[2026-01-06T07:57:29.364Z] [INFO] GET /assets/icons/task.svg 304 27ms +[2026-01-06T07:57:29.370Z] [INFO] GET /api/auth/users 200 9ms +[2026-01-06T07:57:29.415Z] [INFO] GET /api/auth/users 304 11ms +[2026-01-06T07:57:29.456Z] [INFO] GET /api/projects 200 9ms +[2026-01-06T07:57:29.490Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (CX4gDmWK7YnrmW_ZAAAn) +[2026-01-06T07:57:29.525Z] [INFO] GET /api/tasks/project/2 200 27ms +[2026-01-06T07:57:29.536Z] [INFO] GET /api/stats/dashboard?projectId=2 200 7ms +[2026-01-06T07:57:29.540Z] [INFO] GET /api/columns/2 200 3ms +[2026-01-06T07:57:29.545Z] [INFO] GET /api/labels/2 200 4ms +[2026-01-06T07:57:29.557Z] [INFO] GET /api/reminders?project_id=2 200 11ms +[2026-01-06T07:57:29.571Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T07:57:29.618Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 7ms +[2026-01-06T07:57:29.655Z] [INFO] GET /api/notifications 200 5ms +[2026-01-06T07:57:29.697Z] [INFO] GET /api/knowledge/categories 200 8ms +[2026-01-06T07:57:31.181Z] [INFO] GET /sw.js 200 2ms +[2026-01-06T07:57:31.811Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T07:57:35.083Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T07:57:36.935Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T07:57:40.772Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T07:57:50.815Z] [INFO] readCLAUDEmd: Checking path /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-06T07:57:50.823Z] [INFO] readCLAUDEmd: File does not exist: /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-06T07:57:50.823Z] [INFO] Trying fallback path for TaskMate: /app/taskmate-source +[2026-01-06T07:57:50.823Z] [INFO] readCLAUDEmd: Checking path /app/taskmate-source/CLAUDE.md +[2026-01-06T07:57:50.825Z] [INFO] readCLAUDEmd: Successfully read 14396 characters from /app/taskmate-source/CLAUDE.md +[2026-01-06T07:57:50.827Z] [INFO] GET /api/coding/directories 200 35ms +[2026-01-06T07:57:50.891Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-06T07:57:50.892Z] [INFO] Git directory exists: true +[2026-01-06T07:57:50.894Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-06T07:57:50.894Z] [INFO] Git directory exists: true +[2026-01-06T07:57:51.021Z] [INFO] GET /api/coding/directories/3/status 200 139ms +[2026-01-06T07:57:51.798Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T07:57:53.002Z] [INFO] POST /api/auth/refresh 200 4ms +[2026-01-06T07:57:54.138Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T07:57:56.044Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T07:58:17.146Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T08:00:30.033Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T08:01:45.344Z] [INFO] POST /api/auth/refresh 200 16ms +[2026-01-06T08:01:47.985Z] [INFO] POST /api/auth/refresh 200 17ms +[2026-01-06T08:05:30.036Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T08:10:30.039Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T08:15:30.044Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T08:16:48.560Z] [INFO] POST /api/auth/logout 401 9ms +[2026-01-06T08:16:48.595Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (CX4gDmWK7YnrmW_ZAAAn) +[2026-01-06T08:20:30.047Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T08:25:30.052Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T08:30:30.060Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T08:35:30.066Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T08:40:30.074Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T08:45:30.081Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T08:50:30.082Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T08:55:30.092Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T09:00:30.105Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T09:05:30.111Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T09:10:30.118Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T09:10:45.940Z] [INFO] POST / 200 19ms +[2026-01-06T09:15:30.128Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T09:20:30.131Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T09:25:30.138Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T09:30:30.145Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T09:35:30.154Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T09:40:30.159Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T09:45:30.162Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T09:50:30.166Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T09:55:30.173Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T10:00:30.179Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T10:05:30.181Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T10:07:30.335Z] [INFO] GET / 200 9ms +[2026-01-06T10:07:30.407Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-06T10:07:30.443Z] [INFO] GET /css/base.css 200 5ms +[2026-01-06T10:07:30.475Z] [INFO] GET /css/components.css 200 9ms +[2026-01-06T10:07:30.489Z] [INFO] GET /css/calendar.css 200 14ms +[2026-01-06T10:07:30.492Z] [INFO] GET /css/board.css 200 15ms +[2026-01-06T10:07:30.494Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-06T10:07:30.497Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-06T10:07:30.498Z] [INFO] GET /css/list.css 200 7ms +[2026-01-06T10:07:30.535Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-06T10:07:30.537Z] [INFO] GET /css/proposals.css 200 8ms +[2026-01-06T10:07:30.539Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-06T10:07:30.544Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-06T10:07:30.548Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-06T10:07:30.550Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-06T10:07:30.565Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-06T10:07:30.577Z] [INFO] GET /css/mobile.css 200 10ms +[2026-01-06T10:07:30.588Z] [INFO] GET /js/app.js 200 10ms +[2026-01-06T10:07:30.590Z] [INFO] GET /js/reminders.js 200 7ms +[2026-01-06T10:07:30.633Z] [INFO] GET /js/store.js 200 4ms +[2026-01-06T10:07:30.634Z] [INFO] GET /js/api.js 200 4ms +[2026-01-06T10:07:30.640Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-06T10:07:30.653Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-06T10:07:30.654Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-06T10:07:30.655Z] [INFO] GET /js/auth.js 200 5ms +[2026-01-06T10:07:30.665Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-06T10:07:30.670Z] [INFO] GET /js/board.js 200 9ms +[2026-01-06T10:07:30.674Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-06T10:07:30.689Z] [INFO] GET /js/list.js 200 4ms +[2026-01-06T10:07:30.692Z] [INFO] GET /js/shortcuts.js 200 6ms +[2026-01-06T10:07:30.693Z] [INFO] GET /js/undo.js 200 6ms +[2026-01-06T10:07:30.702Z] [INFO] GET /js/admin.js 200 6ms +[2026-01-06T10:07:30.710Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-06T10:07:30.722Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-06T10:07:30.730Z] [INFO] GET /js/knowledge.js 200 5ms +[2026-01-06T10:07:30.731Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-06T10:07:30.739Z] [INFO] GET /js/mobile.js 200 6ms +[2026-01-06T10:07:30.739Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-06T10:07:30.806Z] [INFO] GET /assets/icons/task.svg 304 4ms +[2026-01-06T10:07:35.696Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-06T10:07:35.698Z] [INFO] POST /api/auth/login 200 447ms +[2026-01-06T10:07:35.747Z] [INFO] GET / 200 10ms +[2026-01-06T10:07:35.822Z] [INFO] GET /css/components.css 200 3ms +[2026-01-06T10:07:35.825Z] [INFO] GET /css/board.css 200 5ms +[2026-01-06T10:07:35.827Z] [INFO] GET /css/base.css 200 6ms +[2026-01-06T10:07:35.830Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-06T10:07:35.831Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-06T10:07:35.833Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-06T10:07:35.864Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T10:07:35.865Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-06T10:07:35.872Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-06T10:07:35.885Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-06T10:07:35.896Z] [INFO] GET /css/gitea.css 200 7ms +[2026-01-06T10:07:35.908Z] [INFO] GET /css/coding.css 200 16ms +[2026-01-06T10:07:35.911Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-06T10:07:35.917Z] [INFO] GET /css/responsive.css 200 7ms +[2026-01-06T10:07:35.922Z] [INFO] GET /css/reminders.css 200 9ms +[2026-01-06T10:07:35.925Z] [INFO] GET /css/mobile.css 200 7ms +[2026-01-06T10:07:35.929Z] [INFO] GET /js/app.js 200 2ms +[2026-01-06T10:07:35.936Z] [INFO] GET /js/reminders.js 200 1ms +[2026-01-06T10:07:35.980Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-06T10:07:35.982Z] [INFO] GET /js/api.js 200 6ms +[2026-01-06T10:07:35.984Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-06T10:07:35.985Z] [INFO] GET /js/store.js 200 7ms +[2026-01-06T10:07:35.995Z] [INFO] GET /js/offline.js 200 8ms +[2026-01-06T10:07:35.995Z] [INFO] GET /js/sync.js 200 7ms +[2026-01-06T10:07:36.009Z] [INFO] GET /js/board.js 200 4ms +[2026-01-06T10:07:36.015Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-06T10:07:36.016Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-06T10:07:36.023Z] [INFO] GET /js/list.js 200 1ms +[2026-01-06T10:07:36.028Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-06T10:07:36.046Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-06T10:07:36.050Z] [INFO] GET /js/admin.js 200 6ms +[2026-01-06T10:07:36.061Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-06T10:07:36.068Z] [INFO] GET /js/gitea.js 200 5ms +[2026-01-06T10:07:36.072Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-06T10:07:36.078Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-06T10:07:36.084Z] [INFO] GET /js/coding.js 200 7ms +[2026-01-06T10:07:36.086Z] [INFO] GET /js/mobile.js 200 7ms +[2026-01-06T10:07:36.134Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-06T10:07:37.669Z] [INFO] GET /sw.js 200 2ms +[2026-01-06T10:07:37.710Z] [INFO] GET / 200 4ms +[2026-01-06T10:07:37.715Z] [INFO] GET /index.html 200 7ms +[2026-01-06T10:07:37.720Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-06T10:07:37.756Z] [INFO] GET /css/base.css 200 3ms +[2026-01-06T10:07:37.769Z] [INFO] GET /css/components.css 200 1ms +[2026-01-06T10:07:37.785Z] [INFO] GET /css/board.css 200 2ms +[2026-01-06T10:07:37.802Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-06T10:07:37.805Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-06T10:07:37.824Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-06T10:07:37.840Z] [INFO] GET /js/app.js 200 4ms +[2026-01-06T10:07:37.865Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-06T10:07:37.871Z] [INFO] GET /js/api.js 200 3ms +[2026-01-06T10:07:37.888Z] [INFO] GET /js/auth.js 200 2ms +[2026-01-06T10:07:37.896Z] [INFO] GET /js/store.js 200 1ms +[2026-01-06T10:07:37.918Z] [INFO] GET /js/sync.js 200 1ms +[2026-01-06T10:07:37.928Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-06T10:07:37.930Z] [INFO] GET /js/board.js 200 4ms +[2026-01-06T10:07:37.949Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-06T10:07:37.964Z] [INFO] GET /js/list.js 200 4ms +[2026-01-06T10:07:37.968Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-06T10:07:37.980Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-06T10:07:38.000Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-06T10:07:38.012Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-06T10:07:38.015Z] [INFO] GET /js/tour.js 200 5ms +[2026-01-06T10:07:38.033Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-06T10:07:38.042Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-06T10:07:38.056Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-06T10:07:38.072Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-06T10:07:38.084Z] [INFO] GET /js/coding.js 200 1ms +[2026-01-06T10:07:38.103Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-06T10:07:38.116Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T10:07:38.128Z] [INFO] GET /js/mobile.js 200 6ms +[2026-01-06T10:07:38.149Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-06T10:07:38.155Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T10:07:38.160Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-06T10:07:38.180Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-06T10:07:38.184Z] [INFO] GET /css/gitea.css 200 1ms +[2026-01-06T10:07:38.191Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-06T10:07:38.213Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-06T10:07:38.219Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-06T10:07:38.985Z] [INFO] GET / 200 3ms +[2026-01-06T10:07:39.077Z] [INFO] GET /css/variables.css 200 13ms +[2026-01-06T10:07:39.079Z] [INFO] GET /css/base.css 200 14ms +[2026-01-06T10:07:39.081Z] [INFO] GET /css/components.css 200 7ms +[2026-01-06T10:07:39.085Z] [INFO] GET /css/modal.css 200 9ms +[2026-01-06T10:07:39.087Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-06T10:07:39.088Z] [INFO] GET /css/board.css 200 5ms +[2026-01-06T10:07:39.113Z] [INFO] GET /css/list.css 200 5ms +[2026-01-06T10:07:39.115Z] [INFO] GET /css/admin.css 200 6ms +[2026-01-06T10:07:39.137Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-06T10:07:39.137Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-06T10:07:39.142Z] [INFO] GET /css/coding.css 200 1ms +[2026-01-06T10:07:39.156Z] [INFO] GET /css/knowledge.css 200 9ms +[2026-01-06T10:07:39.159Z] [INFO] GET /css/reminders.css 200 11ms +[2026-01-06T10:07:39.161Z] [INFO] GET /css/gitea.css 200 10ms +[2026-01-06T10:07:39.173Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-06T10:07:39.175Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-06T10:07:39.189Z] [INFO] GET /js/app.js 200 3ms +[2026-01-06T10:07:39.195Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-06T10:07:39.248Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-06T10:07:39.251Z] [INFO] GET /js/store.js 200 5ms +[2026-01-06T10:07:39.257Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-06T10:07:39.264Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-06T10:07:39.267Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-06T10:07:39.271Z] [INFO] GET /js/api.js 200 9ms +[2026-01-06T10:07:39.289Z] [INFO] GET /js/board.js 200 10ms +[2026-01-06T10:07:39.295Z] [INFO] GET /js/task-modal.js 200 15ms +[2026-01-06T10:07:39.299Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-06T10:07:39.301Z] [INFO] GET /js/list.js 200 4ms +[2026-01-06T10:07:39.304Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-06T10:07:39.307Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-06T10:07:39.325Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T10:07:39.333Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-06T10:07:39.339Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-06T10:07:39.342Z] [INFO] GET /js/knowledge.js 200 1ms +[2026-01-06T10:07:39.348Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-06T10:07:39.357Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-06T10:07:39.358Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-06T10:07:39.393Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-06T10:07:43.601Z] [INFO] Login erfolgreich: admin +[2026-01-06T10:07:43.602Z] [INFO] POST /api/auth/login 200 455ms +[2026-01-06T10:07:43.642Z] [INFO] GET / 200 4ms +[2026-01-06T10:07:43.715Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-06T10:07:43.717Z] [INFO] GET /css/base.css 200 4ms +[2026-01-06T10:07:43.731Z] [INFO] GET /css/components.css 200 9ms +[2026-01-06T10:07:43.733Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-06T10:07:43.734Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-06T10:07:43.735Z] [INFO] GET /css/board.css 200 6ms +[2026-01-06T10:07:43.745Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T10:07:43.750Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-06T10:07:43.776Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-06T10:07:43.777Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-06T10:07:43.802Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-06T10:07:43.806Z] [INFO] GET /css/reminders.css 200 6ms +[2026-01-06T10:07:43.810Z] [INFO] GET /css/knowledge.css 200 7ms +[2026-01-06T10:07:43.819Z] [INFO] GET /css/mobile.css 200 11ms +[2026-01-06T10:07:43.820Z] [INFO] GET /css/responsive.css 200 9ms +[2026-01-06T10:07:43.822Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-06T10:07:43.830Z] [INFO] GET /js/app.js 200 2ms +[2026-01-06T10:07:43.841Z] [INFO] GET /js/reminders.js 200 1ms +[2026-01-06T10:07:43.879Z] [INFO] GET /js/store.js 200 3ms +[2026-01-06T10:07:43.881Z] [INFO] GET /js/api.js 200 4ms +[2026-01-06T10:07:43.886Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-06T10:07:43.894Z] [INFO] GET /js/offline.js 200 2ms +[2026-01-06T10:07:43.895Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-06T10:07:43.897Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-06T10:07:43.910Z] [INFO] GET /js/board.js 200 4ms +[2026-01-06T10:07:43.916Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-06T10:07:43.926Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-06T10:07:43.929Z] [INFO] GET /js/list.js 200 5ms +[2026-01-06T10:07:43.936Z] [INFO] GET /js/shortcuts.js 200 6ms +[2026-01-06T10:07:43.943Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-06T10:07:43.962Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-06T10:07:43.972Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-06T10:07:43.975Z] [INFO] GET /js/notifications.js 200 7ms +[2026-01-06T10:07:43.977Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-06T10:07:43.982Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-06T10:07:43.988Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-06T10:07:43.997Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-06T10:07:44.055Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-06T10:07:45.584Z] [INFO] GET /sw.js 200 2ms +[2026-01-06T10:08:07.000Z] [INFO] GET /css/base.css 200 5ms +[2026-01-06T10:08:07.000Z] [INFO] GET /css/board.css 200 5ms +[2026-01-06T10:08:07.002Z] [INFO] GET / 200 8ms +[2026-01-06T10:08:07.003Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-06T10:08:07.005Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-06T10:08:07.006Z] [INFO] GET /css/components.css 200 5ms +[2026-01-06T10:08:07.040Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-06T10:08:07.046Z] [INFO] GET /css/list.css 200 3ms +[2026-01-06T10:08:07.066Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-06T10:08:07.072Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-06T10:08:07.074Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-06T10:08:07.080Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-06T10:08:07.085Z] [INFO] GET /css/coding.css 200 1ms +[2026-01-06T10:08:07.093Z] [INFO] GET /css/knowledge.css 200 1ms +[2026-01-06T10:08:07.106Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-06T10:08:07.109Z] [INFO] GET /css/reminders.css 200 5ms +[2026-01-06T10:08:07.113Z] [INFO] GET /css/mobile.css 200 5ms +[2026-01-06T10:08:09.765Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-06T10:08:09.766Z] [INFO] POST /api/auth/login 200 466ms +[2026-01-06T10:08:09.809Z] [INFO] GET / 200 3ms +[2026-01-06T10:08:09.896Z] [INFO] GET /css/variables.css 200 7ms +[2026-01-06T10:08:09.899Z] [INFO] GET /css/board.css 200 6ms +[2026-01-06T10:08:09.901Z] [INFO] GET /css/base.css 200 6ms +[2026-01-06T10:08:09.909Z] [INFO] GET /css/components.css 200 11ms +[2026-01-06T10:08:09.911Z] [INFO] GET /css/modal.css 200 11ms +[2026-01-06T10:08:09.912Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-06T10:08:09.927Z] [INFO] GET /css/list.css 200 1ms +[2026-01-06T10:08:09.934Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-06T10:08:09.961Z] [INFO] GET /css/proposals.css 200 6ms +[2026-01-06T10:08:09.963Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-06T10:08:09.964Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-06T10:08:09.970Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-06T10:08:09.971Z] [INFO] GET /css/coding.css 200 4ms +[2026-01-06T10:08:09.984Z] [INFO] GET /css/reminders.css 200 1ms +[2026-01-06T10:08:10.005Z] [INFO] GET /css/responsive.css 200 8ms +[2026-01-06T10:08:10.008Z] [INFO] GET /css/mobile.css 200 6ms +[2026-01-06T10:08:10.026Z] [INFO] GET /js/app.js 200 16ms +[2026-01-06T10:08:10.028Z] [INFO] GET /js/reminders.js 200 13ms +[2026-01-06T10:08:10.074Z] [INFO] GET /js/utils.js 200 8ms +[2026-01-06T10:08:10.078Z] [INFO] GET /js/api.js 200 9ms +[2026-01-06T10:08:10.079Z] [INFO] GET /js/store.js 200 6ms +[2026-01-06T10:08:10.085Z] [INFO] GET /js/sync.js 200 9ms +[2026-01-06T10:08:10.087Z] [INFO] GET /js/auth.js 200 5ms +[2026-01-06T10:08:10.102Z] [INFO] GET /js/offline.js 200 1ms +[2026-01-06T10:08:10.112Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-06T10:08:10.119Z] [INFO] GET /js/board.js 200 4ms +[2026-01-06T10:08:10.123Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-06T10:08:10.137Z] [INFO] GET /js/shortcuts.js 200 6ms +[2026-01-06T10:08:10.140Z] [INFO] GET /js/list.js 200 7ms +[2026-01-06T10:08:10.143Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-06T10:08:10.154Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T10:08:10.173Z] [INFO] GET /js/gitea.js 200 7ms +[2026-01-06T10:08:10.176Z] [INFO] GET /js/proposals.js 200 8ms +[2026-01-06T10:08:10.182Z] [INFO] GET /js/notifications.js 200 8ms +[2026-01-06T10:08:10.184Z] [INFO] GET /js/knowledge.js 200 5ms +[2026-01-06T10:08:10.186Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-06T10:08:10.191Z] [INFO] GET /js/coding.js 200 1ms +[2026-01-06T10:08:10.254Z] [INFO] GET /assets/icons/task.svg 200 5ms +[2026-01-06T10:08:11.874Z] [INFO] GET /sw.js 200 4ms +[2026-01-06T10:10:30.187Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T10:15:30.195Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T10:20:30.195Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T10:25:30.200Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T10:30:30.206Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T10:35:30.211Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T10:40:30.215Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T10:45:30.220Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T10:47:07.038Z] [INFO] GET / 200 8ms +[2026-01-06T10:47:07.096Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-06T10:47:07.122Z] [INFO] GET /css/base.css 200 3ms +[2026-01-06T10:47:07.157Z] [INFO] GET /css/components.css 200 4ms +[2026-01-06T10:47:07.193Z] [INFO] GET /css/board.css 200 5ms +[2026-01-06T10:47:07.195Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-06T10:47:07.197Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-06T10:47:07.201Z] [INFO] GET /css/list.css 200 5ms +[2026-01-06T10:47:07.203Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-06T10:47:07.204Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-06T10:47:07.225Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-06T10:47:07.255Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-06T10:47:07.258Z] [INFO] GET /css/gitea.css 200 10ms +[2026-01-06T10:47:07.263Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-06T10:47:07.265Z] [INFO] GET /css/responsive.css 200 5ms +[2026-01-06T10:47:07.268Z] [INFO] GET /css/mobile.css 200 6ms +[2026-01-06T10:47:07.271Z] [INFO] GET /css/reminders.css 200 10ms +[2026-01-06T10:47:07.303Z] [INFO] GET /js/app.js 200 2ms +[2026-01-06T10:47:07.306Z] [INFO] GET /js/reminders.js 200 1ms +[2026-01-06T10:47:07.428Z] [INFO] GET /js/store.js 200 29ms +[2026-01-06T10:47:07.430Z] [INFO] GET /js/sync.js 200 29ms +[2026-01-06T10:47:07.432Z] [INFO] GET /js/offline.js 200 29ms +[2026-01-06T10:47:07.456Z] [INFO] GET /js/api.js 200 54ms +[2026-01-06T10:47:07.462Z] [INFO] GET /js/auth.js 200 59ms +[2026-01-06T10:47:07.540Z] [INFO] GET /js/board.js 200 45ms +[2026-01-06T10:47:07.547Z] [INFO] GET /js/task-modal.js 200 43ms +[2026-01-06T10:47:07.554Z] [INFO] GET /js/calendar.js 200 31ms +[2026-01-06T10:47:07.558Z] [INFO] GET /js/list.js 200 24ms +[2026-01-06T10:47:07.560Z] [INFO] GET /js/shortcuts.js 200 14ms +[2026-01-06T10:47:07.597Z] [INFO] GET /js/undo.js 200 11ms +[2026-01-06T10:47:07.598Z] [INFO] GET /js/admin.js 200 9ms +[2026-01-06T10:47:07.603Z] [INFO] GET /js/proposals.js 200 10ms +[2026-01-06T10:47:07.608Z] [INFO] GET /js/notifications.js 200 7ms +[2026-01-06T10:47:07.611Z] [INFO] GET /js/gitea.js 200 5ms +[2026-01-06T10:47:07.617Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-06T10:47:07.636Z] [INFO] GET /js/coding.js 200 7ms +[2026-01-06T10:47:07.637Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-06T10:47:07.639Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-06T10:47:07.693Z] [INFO] GET /assets/icons/task.svg 200 5ms +[2026-01-06T10:47:07.705Z] [INFO] GET /api/auth/users 401 13ms +[2026-01-06T10:47:13.200Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-06T10:47:13.200Z] [INFO] POST /api/auth/login 200 449ms +[2026-01-06T10:47:13.242Z] [INFO] GET / 200 3ms +[2026-01-06T10:47:13.341Z] [INFO] GET /css/variables.css 200 7ms +[2026-01-06T10:47:13.342Z] [INFO] GET /css/board.css 200 7ms +[2026-01-06T10:47:13.343Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-06T10:47:13.344Z] [INFO] GET /css/base.css 200 8ms +[2026-01-06T10:47:13.345Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-06T10:47:13.346Z] [INFO] GET /css/components.css 200 7ms +[2026-01-06T10:47:13.377Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T10:47:13.383Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T10:47:13.410Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-06T10:47:13.416Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-06T10:47:13.418Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-06T10:47:13.427Z] [INFO] GET /css/reminders.css 200 4ms +[2026-01-06T10:47:13.429Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-06T10:47:13.431Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-06T10:47:13.442Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-06T10:47:13.450Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-06T10:47:13.466Z] [INFO] GET /js/app.js 200 6ms +[2026-01-06T10:47:13.469Z] [INFO] GET /js/reminders.js 200 7ms +[2026-01-06T10:47:13.536Z] [INFO] GET /js/store.js 200 5ms +[2026-01-06T10:47:13.545Z] [INFO] GET /js/sync.js 200 12ms +[2026-01-06T10:47:13.551Z] [INFO] GET /js/api.js 200 17ms +[2026-01-06T10:47:13.556Z] [INFO] GET /js/auth.js 200 16ms +[2026-01-06T10:47:13.560Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-06T10:47:13.577Z] [INFO] GET /js/board.js 200 3ms +[2026-01-06T10:47:13.583Z] [INFO] GET /js/task-modal.js 200 1ms +[2026-01-06T10:47:13.589Z] [INFO] GET /js/calendar.js 200 1ms +[2026-01-06T10:47:13.610Z] [INFO] GET /js/list.js 200 2ms +[2026-01-06T10:47:13.611Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-06T10:47:13.614Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-06T10:47:13.638Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-06T10:47:13.644Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-06T10:47:13.646Z] [INFO] GET /js/gitea.js 200 5ms +[2026-01-06T10:47:13.649Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-06T10:47:13.650Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-06T10:47:13.651Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-06T10:47:13.669Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-06T10:47:13.678Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-06T10:47:13.729Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-06T10:47:13.736Z] [INFO] GET /api/auth/users 200 6ms +[2026-01-06T10:47:13.739Z] [INFO] GET /assets/icons/task.svg 200 8ms +[2026-01-06T10:47:13.778Z] [INFO] GET /api/auth/users 200 3ms +[2026-01-06T10:47:13.817Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (4Ioi06-y9wb8yakwAAAp) +[2026-01-06T10:47:13.824Z] [INFO] GET /api/projects 200 4ms +[2026-01-06T10:47:13.861Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T10:47:13.866Z] [INFO] GET /api/columns/2 200 4ms +[2026-01-06T10:47:13.872Z] [INFO] GET /api/stats/dashboard?projectId=2 200 4ms +[2026-01-06T10:47:13.887Z] [INFO] GET /api/tasks/project/2 200 15ms +[2026-01-06T10:47:13.892Z] [INFO] GET /api/labels/2 200 5ms +[2026-01-06T10:47:13.895Z] [INFO] GET /api/reminders?project_id=2 200 3ms +[2026-01-06T10:47:13.937Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 6ms +[2026-01-06T10:47:13.977Z] [INFO] GET /api/notifications 200 7ms +[2026-01-06T10:47:14.012Z] [INFO] GET /api/knowledge/categories 200 4ms +[2026-01-06T10:47:15.481Z] [INFO] GET /sw.js 200 2ms +[2026-01-06T10:47:19.503Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T10:47:28.499Z] [INFO] GET /api/reminders/1 200 9ms +[2026-01-06T10:47:28.747Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-06T10:47:30.707Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T10:47:30.966Z] [DEBUG] Benachrichtigungstermine erstellt für Reminder 1 +[2026-01-06T10:47:30.968Z] [INFO] PUT /api/reminders/1 200 9ms +[2026-01-06T10:47:31.023Z] [INFO] GET /api/reminders/1 200 8ms +[2026-01-06T10:47:31.080Z] [INFO] GET /api/labels/2 304 7ms +[2026-01-06T10:47:31.101Z] [INFO] GET /api/tasks/project/2 304 27ms +[2026-01-06T10:47:31.107Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-06T10:47:31.113Z] [INFO] GET /api/reminders?project_id=2 200 5ms +[2026-01-06T10:47:31.962Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-06T10:47:33.119Z] [INFO] GET /api/reminders/1 304 4ms +[2026-01-06T10:47:33.428Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T10:47:35.073Z] [INFO] GET /api/reminders/1 304 8ms +[2026-01-06T10:47:35.280Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T10:47:40.384Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T10:47:41.963Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-06T10:47:42.418Z] [INFO] GET /api/reminders/1 304 8ms +[2026-01-06T10:47:43.818Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T10:47:56.585Z] [INFO] GET /api/reminders/1 304 3ms +[2026-01-06T10:48:28.057Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T10:48:31.433Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T10:48:35.383Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T10:48:38.505Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T10:48:42.675Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T10:48:45.798Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T10:48:46.094Z] [DEBUG] Benachrichtigungstermine erstellt für Reminder 1 +[2026-01-06T10:48:46.095Z] [INFO] PUT /api/reminders/1 200 4ms +[2026-01-06T10:48:46.134Z] [INFO] GET /api/reminders/1 200 6ms +[2026-01-06T10:48:46.194Z] [INFO] GET /api/columns/2 304 8ms +[2026-01-06T10:48:46.232Z] [INFO] GET /api/reminders?project_id=2 200 7ms +[2026-01-06T10:48:46.315Z] [INFO] GET /api/tasks/project/2 304 33ms +[2026-01-06T10:48:46.320Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-06T10:48:47.093Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-06T10:48:48.844Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T10:48:48.881Z] [INFO] GET /api/reminders/1 304 6ms +[2026-01-06T10:48:49.893Z] [INFO] GET /api/reminders/1 304 13ms +[2026-01-06T10:48:50.051Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T10:48:55.551Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-06T10:48:55.913Z] [DEBUG] Benachrichtigungstermine erstellt für Reminder 1 +[2026-01-06T10:48:55.916Z] [INFO] PUT /api/reminders/1 200 9ms +[2026-01-06T10:48:55.954Z] [INFO] GET /api/reminders/1 200 7ms +[2026-01-06T10:48:56.004Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-06T10:48:56.022Z] [INFO] GET /api/tasks/project/2 304 17ms +[2026-01-06T10:48:56.029Z] [INFO] GET /api/reminders?project_id=2 200 6ms +[2026-01-06T10:48:56.032Z] [INFO] GET /api/labels/2 304 6ms +[2026-01-06T10:48:57.758Z] [INFO] GET /api/reminders/1 304 8ms +[2026-01-06T10:48:57.917Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T10:49:39.284Z] [INFO] GET /api/tasks/6 200 12ms +[2026-01-06T10:49:39.332Z] [INFO] GET /api/subtasks/6 200 7ms +[2026-01-06T10:49:39.338Z] [INFO] GET /api/links/6 200 4ms +[2026-01-06T10:49:39.342Z] [INFO] GET /api/files/6 200 8ms +[2026-01-06T10:49:39.346Z] [INFO] GET /api/comments/6 200 3ms +[2026-01-06T10:49:39.366Z] [INFO] GET /api/tasks/6/history 404 5ms +[2026-01-06T10:49:39.392Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzY5NjUzNywiZXhwIjoxNzY3Njk3NDM3fQ.6mre9oviC92QkE-kUI3WHAjX3Q_6dDPfLMTwXnomK8s 200 14ms +[2026-01-06T10:49:40.282Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T10:50:30.222Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T10:50:46.969Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-06T10:50:46.971Z] [INFO] PUT /api/tasks/6 200 7ms +[2026-01-06T10:50:47.955Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T10:50:51.250Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-06T10:50:53.109Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-06T10:50:53.214Z] [INFO] GET /api/reminders/1 304 3ms +[2026-01-06T10:50:57.051Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T10:51:01.531Z] [INFO] POST /api/auth/refresh 200 4ms +[2026-01-06T10:51:02.351Z] [DEBUG] Benachrichtigungstermine erstellt für Reminder 1 +[2026-01-06T10:51:02.353Z] [INFO] PUT /api/reminders/1 200 5ms +[2026-01-06T10:51:02.408Z] [INFO] GET /api/reminders/1 200 4ms +[2026-01-06T10:51:02.446Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-06T10:51:02.497Z] [INFO] GET /api/tasks/project/2 200 24ms +[2026-01-06T10:51:02.513Z] [INFO] GET /api/labels/2 304 7ms +[2026-01-06T10:51:02.536Z] [INFO] GET /api/reminders?project_id=2 200 10ms +[2026-01-06T10:51:03.364Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-06T10:51:04.035Z] [INFO] GET / 200 3ms +[2026-01-06T10:51:04.098Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (4Ioi06-y9wb8yakwAAAp) +[2026-01-06T10:51:04.105Z] [INFO] GET /css/base.css 200 1ms +[2026-01-06T10:51:04.110Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-06T10:51:04.112Z] [INFO] GET /css/board.css 200 2ms +[2026-01-06T10:51:04.114Z] [INFO] GET /css/components.css 200 3ms +[2026-01-06T10:51:04.135Z] [INFO] GET /css/modal.css 200 1ms +[2026-01-06T10:51:04.144Z] [INFO] GET /css/calendar.css 200 1ms +[2026-01-06T10:51:04.166Z] [INFO] GET /css/list.css 200 1ms +[2026-01-06T10:51:04.176Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-06T10:51:04.178Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-06T10:51:04.186Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-06T10:51:04.198Z] [INFO] GET /css/gitea.css 200 1ms +[2026-01-06T10:51:04.207Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-06T10:51:04.209Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-06T10:51:04.210Z] [INFO] GET /css/reminders.css 200 4ms +[2026-01-06T10:51:04.210Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-06T10:51:04.228Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-06T10:51:04.236Z] [INFO] GET /js/app.js 200 1ms +[2026-01-06T10:51:04.242Z] [INFO] GET /js/reminders.js 200 1ms +[2026-01-06T10:51:04.283Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-06T10:51:04.284Z] [INFO] GET /js/api.js 200 3ms +[2026-01-06T10:51:04.285Z] [INFO] GET /js/store.js 200 3ms +[2026-01-06T10:51:04.298Z] [INFO] GET /js/offline.js 200 2ms +[2026-01-06T10:51:04.300Z] [INFO] GET /js/sync.js 200 3ms +[2026-01-06T10:51:04.301Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-06T10:51:04.314Z] [INFO] GET /js/board.js 200 1ms +[2026-01-06T10:51:04.315Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-06T10:51:04.329Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-06T10:51:04.330Z] [INFO] GET /js/list.js 200 2ms +[2026-01-06T10:51:04.335Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-06T10:51:04.348Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-06T10:51:04.365Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T10:51:04.370Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-06T10:51:04.378Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-06T10:51:04.382Z] [INFO] GET /js/gitea.js 200 1ms +[2026-01-06T10:51:04.426Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T10:51:04.428Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-06T10:51:04.432Z] [INFO] GET /js/coding.js 200 7ms +[2026-01-06T10:51:04.468Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-06T10:51:04.478Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-06T10:51:04.485Z] [INFO] GET /api/auth/users 304 3ms +[2026-01-06T10:51:04.530Z] [INFO] GET /api/auth/users 304 10ms +[2026-01-06T10:51:04.579Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (WDb8LYSW2cbqpXiQAAAr) +[2026-01-06T10:51:04.592Z] [INFO] GET /api/projects 304 6ms +[2026-01-06T10:51:04.640Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-06T10:51:04.663Z] [INFO] GET /api/tasks/project/2 304 22ms +[2026-01-06T10:51:04.664Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T10:51:04.670Z] [INFO] GET /api/stats/dashboard?projectId=2 304 4ms +[2026-01-06T10:51:04.674Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-06T10:51:04.678Z] [INFO] GET /api/reminders?project_id=2 304 3ms +[2026-01-06T10:51:04.717Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 3ms +[2026-01-06T10:51:04.756Z] [INFO] GET /api/notifications 304 5ms +[2026-01-06T10:51:04.792Z] [INFO] GET /api/knowledge/categories 304 3ms +[2026-01-06T10:51:06.262Z] [INFO] GET /sw.js 200 1ms +[2026-01-06T10:51:08.030Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T10:51:08.138Z] [INFO] GET /api/reminders/1 304 4ms +[2026-01-06T10:51:11.101Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T10:51:11.244Z] [DEBUG] Benachrichtigungstermine erstellt für Reminder 1 +[2026-01-06T10:51:11.246Z] [INFO] PUT /api/reminders/1 200 9ms +[2026-01-06T10:51:11.282Z] [INFO] GET /api/reminders/1 200 7ms +[2026-01-06T10:51:11.340Z] [INFO] GET /api/labels/2 304 8ms +[2026-01-06T10:51:11.345Z] [INFO] GET /api/columns/2 304 12ms +[2026-01-06T10:51:11.362Z] [INFO] GET /api/tasks/project/2 304 16ms +[2026-01-06T10:51:11.368Z] [INFO] GET /api/reminders?project_id=2 200 3ms +[2026-01-06T10:51:12.160Z] [INFO] GET / 200 3ms +[2026-01-06T10:51:12.213Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (WDb8LYSW2cbqpXiQAAAr) +[2026-01-06T10:51:12.224Z] [INFO] GET /css/base.css 200 1ms +[2026-01-06T10:51:12.224Z] [INFO] GET /css/variables.css 200 1ms +[2026-01-06T10:51:12.233Z] [INFO] GET /css/modal.css 200 2ms +[2026-01-06T10:51:12.234Z] [INFO] GET /css/components.css 200 2ms +[2026-01-06T10:51:12.235Z] [INFO] GET /css/board.css 200 3ms +[2026-01-06T10:51:12.239Z] [INFO] GET /css/calendar.css 200 2ms +[2026-01-06T10:51:12.259Z] [INFO] GET /css/list.css 200 4ms +[2026-01-06T10:51:12.266Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-06T10:51:12.289Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-06T10:51:12.298Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-06T10:51:12.300Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-06T10:51:12.307Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-06T10:51:12.311Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-06T10:51:12.336Z] [INFO] GET /css/responsive.css 200 5ms +[2026-01-06T10:51:12.341Z] [INFO] GET /css/reminders.css 200 8ms +[2026-01-06T10:51:12.344Z] [INFO] GET /css/mobile.css 200 9ms +[2026-01-06T10:51:12.350Z] [INFO] GET /js/app.js 200 2ms +[2026-01-06T10:51:12.366Z] [INFO] GET /js/reminders.js 200 1ms +[2026-01-06T10:51:12.412Z] [INFO] GET /js/board.js 200 4ms +[2026-01-06T10:51:12.425Z] [INFO] GET /js/api.js 200 9ms +[2026-01-06T10:51:12.429Z] [INFO] GET /js/auth.js 200 12ms +[2026-01-06T10:51:12.432Z] [INFO] GET /js/store.js 200 13ms +[2026-01-06T10:51:12.434Z] [INFO] GET /js/sync.js 200 12ms +[2026-01-06T10:51:12.435Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-06T10:51:12.460Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-06T10:51:12.465Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-06T10:51:12.468Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-06T10:51:12.472Z] [INFO] GET /js/list.js 200 5ms +[2026-01-06T10:51:12.476Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-06T10:51:12.478Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-06T10:51:12.490Z] [INFO] GET /js/notifications.js 200 1ms +[2026-01-06T10:51:12.503Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-06T10:51:12.506Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-06T10:51:12.513Z] [INFO] GET /js/knowledge.js 200 5ms +[2026-01-06T10:51:12.517Z] [INFO] GET /js/mobile.js 200 7ms +[2026-01-06T10:51:12.518Z] [INFO] GET /js/coding.js 200 7ms +[2026-01-06T10:51:12.521Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-06T10:51:12.585Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-06T10:51:12.592Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-06T10:51:12.594Z] [INFO] GET /api/auth/users 304 3ms +[2026-01-06T10:51:12.635Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-06T10:51:12.664Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (OyYoV-uv_-i5njstAAAt) +[2026-01-06T10:51:12.668Z] [INFO] GET /api/projects 304 2ms +[2026-01-06T10:51:12.701Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T10:51:12.712Z] [INFO] GET /api/stats/dashboard?projectId=2 304 9ms +[2026-01-06T10:51:12.730Z] [INFO] GET /api/tasks/project/2 304 16ms +[2026-01-06T10:51:12.734Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-06T10:51:12.737Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-06T10:51:12.741Z] [INFO] GET /api/reminders?project_id=2 304 3ms +[2026-01-06T10:51:12.784Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-06T10:51:12.825Z] [INFO] GET /api/notifications 304 4ms +[2026-01-06T10:51:12.862Z] [INFO] GET /api/knowledge/categories 304 5ms +[2026-01-06T10:51:14.318Z] [INFO] GET /sw.js 200 2ms +[2026-01-06T10:51:16.051Z] [INFO] GET / 200 3ms +[2026-01-06T10:51:16.127Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (OyYoV-uv_-i5njstAAAt) +[2026-01-06T10:51:16.133Z] [INFO] GET /css/variables.css 200 1ms +[2026-01-06T10:51:16.142Z] [INFO] GET /css/components.css 200 6ms +[2026-01-06T10:51:16.143Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-06T10:51:16.144Z] [INFO] GET /css/board.css 200 6ms +[2026-01-06T10:51:16.145Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-06T10:51:16.147Z] [INFO] GET /css/base.css 200 7ms +[2026-01-06T10:51:16.168Z] [INFO] GET /css/list.css 200 3ms +[2026-01-06T10:51:16.201Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-06T10:51:16.203Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-06T10:51:16.209Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-06T10:51:16.215Z] [INFO] GET /css/notifications.css 200 8ms +[2026-01-06T10:51:16.216Z] [INFO] GET /css/knowledge.css 200 8ms +[2026-01-06T10:51:16.217Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-06T10:51:16.234Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-06T10:51:16.235Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-06T10:51:16.241Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-06T10:51:16.250Z] [INFO] GET /js/app.js 200 2ms +[2026-01-06T10:51:16.252Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-06T10:51:16.330Z] [INFO] GET /js/store.js 200 6ms +[2026-01-06T10:51:16.336Z] [INFO] GET /js/board.js 200 10ms +[2026-01-06T10:51:16.338Z] [INFO] GET /js/offline.js 200 10ms +[2026-01-06T10:51:16.341Z] [INFO] GET /js/api.js 200 7ms +[2026-01-06T10:51:16.342Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-06T10:51:16.343Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-06T10:51:16.359Z] [INFO] GET /js/task-modal.js 200 1ms +[2026-01-06T10:51:16.367Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-06T10:51:16.374Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-06T10:51:16.376Z] [INFO] GET /js/list.js 200 4ms +[2026-01-06T10:51:16.379Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-06T10:51:16.388Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-06T10:51:16.399Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-06T10:51:16.409Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-06T10:51:16.415Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-06T10:51:16.422Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-06T10:51:16.430Z] [INFO] GET /js/knowledge.js 200 1ms +[2026-01-06T10:51:16.443Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-06T10:51:16.450Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-06T10:51:16.504Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-06T10:51:16.509Z] [INFO] GET /api/auth/users 200 4ms +[2026-01-06T10:51:16.570Z] [INFO] GET /api/auth/users 200 8ms +[2026-01-06T10:51:16.591Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-06T10:51:16.604Z] [INFO] GET /api/projects 304 4ms +[2026-01-06T10:51:16.608Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (Wz7QeN7wjBg8fYg7AAAv) +[2026-01-06T10:51:16.656Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-06T10:51:16.658Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T10:51:16.680Z] [INFO] GET /api/tasks/project/2 304 21ms +[2026-01-06T10:51:16.684Z] [INFO] GET /api/stats/dashboard?projectId=2 304 23ms +[2026-01-06T10:51:16.687Z] [INFO] GET /api/labels/2 304 6ms +[2026-01-06T10:51:16.723Z] [INFO] GET /api/reminders?project_id=2 304 8ms +[2026-01-06T10:51:16.792Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 8ms +[2026-01-06T10:51:16.855Z] [INFO] GET /api/notifications 304 7ms +[2026-01-06T10:51:16.902Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-06T10:51:20.505Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-06T10:51:20.507Z] [INFO] POST /api/auth/logout 200 9ms +[2026-01-06T10:51:20.513Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-06T10:51:20.514Z] [INFO] POST /api/auth/logout 200 4ms +[2026-01-06T10:51:20.546Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (Wz7QeN7wjBg8fYg7AAAv) +[2026-01-06T10:51:25.253Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-06T10:51:25.254Z] [INFO] POST /api/auth/login 200 438ms +[2026-01-06T10:51:25.300Z] [INFO] GET / 200 6ms +[2026-01-06T10:51:25.386Z] [INFO] GET /css/base.css 200 6ms +[2026-01-06T10:51:25.387Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-06T10:51:25.390Z] [INFO] GET /css/modal.css 200 9ms +[2026-01-06T10:51:25.392Z] [INFO] GET /css/components.css 200 9ms +[2026-01-06T10:51:25.395Z] [INFO] GET /css/calendar.css 200 10ms +[2026-01-06T10:51:25.397Z] [INFO] GET /css/board.css 200 8ms +[2026-01-06T10:51:25.427Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T10:51:25.448Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T10:51:25.454Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-06T10:51:25.463Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-06T10:51:25.497Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-06T10:51:25.506Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-06T10:51:25.507Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-06T10:51:25.509Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-06T10:51:25.527Z] [INFO] GET /css/reminders.css 200 1ms +[2026-01-06T10:51:25.531Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-06T10:51:25.535Z] [INFO] GET /js/reminders.js 200 1ms +[2026-01-06T10:51:25.554Z] [INFO] GET /js/app.js 200 2ms +[2026-01-06T10:51:25.571Z] [INFO] GET /js/api.js 200 2ms +[2026-01-06T10:51:25.573Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-06T10:51:25.574Z] [INFO] GET /js/store.js 200 3ms +[2026-01-06T10:51:25.643Z] [INFO] GET /js/calendar.js 200 7ms +[2026-01-06T10:51:25.645Z] [INFO] GET /js/board.js 200 5ms +[2026-01-06T10:51:25.646Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-06T10:51:25.648Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-06T10:51:25.649Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-06T10:51:25.651Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-06T10:51:25.673Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-06T10:51:25.681Z] [INFO] GET /js/list.js 200 2ms +[2026-01-06T10:51:25.682Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-06T10:51:25.701Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-06T10:51:25.709Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-06T10:51:25.710Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-06T10:51:25.711Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-06T10:51:25.719Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-06T10:51:25.726Z] [INFO] GET /js/coding.js 200 1ms +[2026-01-06T10:51:25.732Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T10:51:25.775Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T10:51:25.782Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-06T10:51:25.794Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-06T10:51:25.833Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-06T10:51:25.887Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (uKDK7akCRcoa-9WgAAAx) +[2026-01-06T10:51:25.897Z] [INFO] GET /api/projects 304 7ms +[2026-01-06T10:51:25.933Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T10:51:25.940Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-06T10:51:25.946Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-06T10:51:25.966Z] [INFO] GET /api/tasks/project/2 304 19ms +[2026-01-06T10:51:25.969Z] [INFO] GET /api/labels/2 304 22ms +[2026-01-06T10:51:25.982Z] [INFO] GET /api/reminders?project_id=2 304 8ms +[2026-01-06T10:51:26.024Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-06T10:51:26.068Z] [INFO] GET /api/notifications 304 9ms +[2026-01-06T10:51:26.108Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-06T10:51:27.548Z] [INFO] GET /sw.js 200 3ms +[2026-01-06T10:51:29.313Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T10:51:29.339Z] [INFO] GET /api/reminders/1 304 3ms +[2026-01-06T10:51:32.169Z] [DEBUG] Benachrichtigungstermine erstellt für Reminder 1 +[2026-01-06T10:51:32.172Z] [INFO] PUT /api/reminders/1 200 9ms +[2026-01-06T10:51:32.211Z] [INFO] GET /api/reminders/1 200 9ms +[2026-01-06T10:51:32.268Z] [INFO] GET /api/tasks/project/2 304 23ms +[2026-01-06T10:51:32.272Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-06T10:51:32.275Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-06T10:51:32.283Z] [INFO] GET /api/reminders?project_id=2 200 3ms +[2026-01-06T10:51:33.175Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-06T10:51:34.959Z] [INFO] GET / 200 4ms +[2026-01-06T10:51:35.016Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (uKDK7akCRcoa-9WgAAAx) +[2026-01-06T10:51:35.038Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-06T10:51:35.041Z] [INFO] GET /css/board.css 200 7ms +[2026-01-06T10:51:35.045Z] [INFO] GET /css/components.css 200 10ms +[2026-01-06T10:51:35.050Z] [INFO] GET /css/calendar.css 200 12ms +[2026-01-06T10:51:35.051Z] [INFO] GET /css/base.css 200 9ms +[2026-01-06T10:51:35.052Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-06T10:51:35.076Z] [INFO] GET /css/list.css 200 3ms +[2026-01-06T10:51:35.087Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-06T10:51:35.098Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-06T10:51:35.107Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-06T10:51:35.119Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-06T10:51:35.121Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-06T10:51:35.125Z] [INFO] GET /css/knowledge.css 200 7ms +[2026-01-06T10:51:35.131Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-06T10:51:35.145Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-06T10:51:35.147Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-06T10:51:35.152Z] [INFO] GET /js/app.js 200 2ms +[2026-01-06T10:51:35.184Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-06T10:51:35.224Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-06T10:51:35.225Z] [INFO] GET /js/store.js 200 4ms +[2026-01-06T10:51:35.226Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-06T10:51:35.230Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-06T10:51:35.231Z] [INFO] GET /js/api.js 200 5ms +[2026-01-06T10:51:35.234Z] [INFO] GET /js/board.js 200 2ms +[2026-01-06T10:51:35.268Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-06T10:51:35.269Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-06T10:51:35.271Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-06T10:51:35.280Z] [INFO] GET /js/list.js 200 3ms +[2026-01-06T10:51:35.283Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-06T10:51:35.301Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-06T10:51:35.305Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T10:51:35.308Z] [INFO] GET /js/notifications.js 200 1ms +[2026-01-06T10:51:35.319Z] [INFO] GET /js/knowledge.js 200 5ms +[2026-01-06T10:51:35.321Z] [INFO] GET /js/gitea.js 200 7ms +[2026-01-06T10:51:35.327Z] [INFO] GET /js/coding.js 200 1ms +[2026-01-06T10:51:35.336Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T10:51:35.337Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-06T10:51:35.440Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T10:51:35.445Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-06T10:51:35.447Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-06T10:51:35.484Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-06T10:51:35.561Z] [INFO] GET /api/projects 304 7ms +[2026-01-06T10:51:35.565Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (rQIVFMwjjV3zTi3LAAAz) +[2026-01-06T10:51:35.603Z] [INFO] GET /api/labels/2 304 8ms +[2026-01-06T10:51:35.610Z] [INFO] GET /api/stats/dashboard?projectId=2 304 6ms +[2026-01-06T10:51:35.624Z] [INFO] GET /api/tasks/project/2 304 19ms +[2026-01-06T10:51:35.627Z] [INFO] GET /api/columns/2 304 21ms +[2026-01-06T10:51:35.631Z] [INFO] GET /api/reminders?project_id=2 304 3ms +[2026-01-06T10:51:35.642Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T10:51:35.671Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 3ms +[2026-01-06T10:51:35.716Z] [INFO] GET /api/notifications 304 16ms +[2026-01-06T10:51:35.751Z] [INFO] GET /api/knowledge/categories 304 3ms +[2026-01-06T10:51:37.210Z] [INFO] GET /sw.js 200 3ms +[2026-01-06T10:51:39.458Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T10:51:40.596Z] [INFO] GET /api/reminders/1 304 7ms +[2026-01-06T10:51:45.800Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-06T10:51:47.879Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T10:51:49.116Z] [DEBUG] Benachrichtigungstermine erstellt für Reminder 1 +[2026-01-06T10:51:49.118Z] [INFO] PUT /api/reminders/1 200 8ms +[2026-01-06T10:51:49.154Z] [INFO] GET /api/reminders/1 200 6ms +[2026-01-06T10:51:49.191Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-06T10:51:49.208Z] [INFO] GET /api/tasks/project/2 304 17ms +[2026-01-06T10:51:49.213Z] [INFO] GET /api/reminders?project_id=2 200 4ms +[2026-01-06T10:51:49.215Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-06T10:51:50.129Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T10:51:53.916Z] [INFO] GET /api/reminders/1 304 7ms +[2026-01-06T10:51:54.180Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T10:52:02.088Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T10:55:30.239Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T11:00:30.231Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T11:05:21.550Z] [INFO] GET / 200 23ms +[2026-01-06T11:05:21.634Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (rQIVFMwjjV3zTi3LAAAz) +[2026-01-06T11:05:21.645Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-06T11:05:21.686Z] [INFO] GET /css/base.css 200 5ms +[2026-01-06T11:05:21.707Z] [INFO] GET /css/components.css 200 7ms +[2026-01-06T11:05:21.709Z] [INFO] GET /css/board.css 200 7ms +[2026-01-06T11:05:21.712Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-06T11:05:21.719Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-06T11:05:21.734Z] [INFO] GET /css/list.css 200 4ms +[2026-01-06T11:05:21.745Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-06T11:05:21.758Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-06T11:05:21.760Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-06T11:05:21.771Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-06T11:05:21.773Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-06T11:05:21.775Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-06T11:05:21.790Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-06T11:05:21.796Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-06T11:05:21.821Z] [INFO] GET /css/mobile.css 200 21ms +[2026-01-06T11:05:21.825Z] [INFO] GET /js/app.js 200 5ms +[2026-01-06T11:05:21.839Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-06T11:05:21.908Z] [INFO] GET /js/store.js 200 6ms +[2026-01-06T11:05:21.911Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-06T11:05:21.912Z] [INFO] GET /js/api.js 200 8ms +[2026-01-06T11:05:21.917Z] [INFO] GET /js/offline.js 200 11ms +[2026-01-06T11:05:21.918Z] [INFO] GET /js/auth.js 200 11ms +[2026-01-06T11:05:21.919Z] [INFO] GET /js/board.js 200 12ms +[2026-01-06T11:05:21.946Z] [INFO] GET /js/task-modal.js 200 8ms +[2026-01-06T11:05:21.948Z] [INFO] GET /js/list.js 200 8ms +[2026-01-06T11:05:21.949Z] [INFO] GET /js/calendar.js 200 8ms +[2026-01-06T11:05:21.953Z] [INFO] GET /js/shortcuts.js 200 8ms +[2026-01-06T11:05:21.956Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-06T11:05:21.978Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-06T11:05:21.982Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-06T11:05:21.992Z] [INFO] GET /js/notifications.js 200 11ms +[2026-01-06T11:05:21.996Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-06T11:05:21.998Z] [INFO] GET /js/knowledge.js 200 7ms +[2026-01-06T11:05:22.005Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-06T11:05:22.015Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T11:05:22.020Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-06T11:05:22.093Z] [INFO] POST /api/auth/refresh 200 31ms +[2026-01-06T11:05:22.105Z] [INFO] GET /api/auth/users 304 9ms +[2026-01-06T11:05:22.109Z] [INFO] GET /assets/icons/task.svg 200 14ms +[2026-01-06T11:05:22.142Z] [INFO] GET /api/auth/users 304 2ms +[2026-01-06T11:05:22.173Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (Uwe93_tfFocnojE3AAA1) +[2026-01-06T11:05:22.181Z] [INFO] GET /api/projects 304 5ms +[2026-01-06T11:05:22.225Z] [INFO] GET /api/columns/2 304 11ms +[2026-01-06T11:05:22.251Z] [INFO] GET /api/tasks/project/2 304 35ms +[2026-01-06T11:05:22.262Z] [INFO] GET /api/labels/2 304 10ms +[2026-01-06T11:05:22.266Z] [INFO] GET /api/stats/dashboard?projectId=2 304 8ms +[2026-01-06T11:05:22.268Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T11:05:22.277Z] [INFO] GET /api/reminders?project_id=2 304 4ms +[2026-01-06T11:05:22.320Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-06T11:05:22.357Z] [INFO] GET /api/notifications 304 7ms +[2026-01-06T11:05:22.393Z] [INFO] GET /api/knowledge/categories 304 4ms +[2026-01-06T11:05:24.468Z] [INFO] GET /api/reminders/1 304 7ms +[2026-01-06T11:05:24.480Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T11:05:30.232Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T11:05:33.130Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T11:05:34.653Z] [INFO] DELETE /api/reminders/1 200 28ms +[2026-01-06T11:05:34.686Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-06T11:05:34.701Z] [INFO] GET /api/tasks/project/2 304 14ms +[2026-01-06T11:05:34.708Z] [INFO] GET /api/labels/2 304 2ms +[2026-01-06T11:05:34.712Z] [INFO] GET /api/reminders?project_id=2 200 3ms +[2026-01-06T11:05:34.743Z] [INFO] GET /api/reminders?project_id=2 304 4ms +[2026-01-06T11:05:34.793Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-06T11:05:34.798Z] [INFO] GET /api/reminders?project_id=2 304 9ms +[2026-01-06T11:05:34.812Z] [INFO] GET /api/tasks/project/2 304 13ms +[2026-01-06T11:05:34.815Z] [INFO] GET /api/labels/2 304 2ms +[2026-01-06T11:05:35.638Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T11:05:40.470Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T11:05:41.456Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T11:05:42.676Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T11:05:48.085Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T11:05:50.422Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T11:05:51.735Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T11:05:52.894Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T11:05:57.124Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T11:05:58.579Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-06T11:06:01.340Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-06T11:06:05.426Z] [INFO] POST /api/auth/refresh 200 3ms +[2026-01-06T11:06:07.332Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T11:06:08.430Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T11:06:10.564Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T11:06:10.817Z] [DEBUG] Benachrichtigungstermine erstellt für Reminder 2 +[2026-01-06T11:06:10.818Z] [INFO] POST /api/reminders 201 6ms +[2026-01-06T11:06:10.855Z] [INFO] GET /api/reminders?project_id=2 200 6ms +[2026-01-06T11:06:10.897Z] [INFO] GET /api/columns/2 304 7ms +[2026-01-06T11:06:10.915Z] [INFO] GET /api/tasks/project/2 304 17ms +[2026-01-06T11:06:10.918Z] [INFO] GET /api/reminders?project_id=2 304 17ms +[2026-01-06T11:06:10.923Z] [INFO] GET /api/labels/2 304 2ms +[2026-01-06T11:06:11.829Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T11:06:12.929Z] [INFO] GET / 200 3ms +[2026-01-06T11:06:12.994Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (Uwe93_tfFocnojE3AAA1) +[2026-01-06T11:06:13.006Z] [INFO] GET /css/base.css 200 3ms +[2026-01-06T11:06:13.009Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-06T11:06:13.011Z] [INFO] GET /css/components.css 200 5ms +[2026-01-06T11:06:13.013Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-06T11:06:13.015Z] [INFO] GET /css/board.css 200 5ms +[2026-01-06T11:06:13.016Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-06T11:06:13.043Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-06T11:06:13.048Z] [INFO] GET /css/list.css 200 8ms +[2026-01-06T11:06:13.105Z] [INFO] GET /css/proposals.css 200 27ms +[2026-01-06T11:06:13.114Z] [INFO] GET /css/notifications.css 200 31ms +[2026-01-06T11:06:13.128Z] [INFO] GET /css/coding.css 200 25ms +[2026-01-06T11:06:13.126Z] [INFO] GET /css/gitea.css 200 34ms +[2026-01-06T11:06:13.143Z] [INFO] GET /css/knowledge.css 200 31ms +[2026-01-06T11:06:13.144Z] [INFO] GET /css/reminders.css 200 24ms +[2026-01-06T11:06:13.165Z] [INFO] GET /css/responsive.css 200 18ms +[2026-01-06T11:06:13.173Z] [INFO] GET /css/mobile.css 200 14ms +[2026-01-06T11:06:13.191Z] [INFO] GET /js/app.js 200 16ms +[2026-01-06T11:06:13.198Z] [INFO] GET /js/reminders.js 200 13ms +[2026-01-06T11:06:13.250Z] [INFO] GET /js/utils.js 200 20ms +[2026-01-06T11:06:13.270Z] [INFO] GET /js/api.js 200 30ms +[2026-01-06T11:06:13.278Z] [INFO] GET /js/store.js 200 34ms +[2026-01-06T11:06:13.323Z] [INFO] GET /js/sync.js 200 39ms +[2026-01-06T11:06:13.332Z] [INFO] GET /js/auth.js 200 19ms +[2026-01-06T11:06:13.336Z] [INFO] GET /js/offline.js 200 17ms +[2026-01-06T11:06:13.339Z] [INFO] GET /js/board.js 200 13ms +[2026-01-06T11:06:13.340Z] [INFO] GET /js/task-modal.js 200 12ms +[2026-01-06T11:06:13.342Z] [INFO] GET /js/calendar.js 200 7ms +[2026-01-06T11:06:13.349Z] [INFO] GET /js/list.js 200 1ms +[2026-01-06T11:06:13.363Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-06T11:06:13.367Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-06T11:06:13.372Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-06T11:06:13.373Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-06T11:06:13.397Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-06T11:06:13.403Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-06T11:06:13.406Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-06T11:06:13.408Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-06T11:06:13.414Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-06T11:06:13.476Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-06T11:06:13.479Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-06T11:06:13.483Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-06T11:06:13.520Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-06T11:06:13.551Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (gTHIVhMEMhsqyWtCAAA3) +[2026-01-06T11:06:13.555Z] [INFO] GET /api/projects 304 7ms +[2026-01-06T11:06:13.595Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T11:06:13.601Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-06T11:06:13.610Z] [INFO] GET /api/stats/dashboard?projectId=2 304 4ms +[2026-01-06T11:06:13.629Z] [INFO] GET /api/tasks/project/2 304 19ms +[2026-01-06T11:06:13.633Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-06T11:06:13.638Z] [INFO] GET /api/reminders?project_id=2 304 3ms +[2026-01-06T11:06:13.688Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 8ms +[2026-01-06T11:06:13.726Z] [INFO] GET /api/notifications 304 7ms +[2026-01-06T11:06:13.763Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-06T11:06:15.244Z] [INFO] GET /sw.js 200 3ms +[2026-01-06T11:06:15.283Z] [INFO] GET / 200 4ms +[2026-01-06T11:06:15.286Z] [INFO] GET /index.html 200 5ms +[2026-01-06T11:06:15.300Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-06T11:06:15.333Z] [INFO] GET /css/base.css 200 2ms +[2026-01-06T11:06:15.351Z] [INFO] GET /css/components.css 200 3ms +[2026-01-06T11:06:15.358Z] [INFO] GET /css/board.css 200 2ms +[2026-01-06T11:06:15.368Z] [INFO] GET /css/modal.css 200 2ms +[2026-01-06T11:06:15.385Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-06T11:06:15.389Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-06T11:06:15.420Z] [INFO] GET /js/app.js 200 2ms +[2026-01-06T11:06:15.428Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-06T11:06:15.431Z] [INFO] GET /js/api.js 200 4ms +[2026-01-06T11:06:15.462Z] [INFO] GET /js/auth.js 200 2ms +[2026-01-06T11:06:15.491Z] [INFO] GET /js/store.js 200 4ms +[2026-01-06T11:06:15.495Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-06T11:06:15.498Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-06T11:06:15.521Z] [INFO] GET /js/board.js 200 1ms +[2026-01-06T11:06:15.526Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-06T11:06:15.529Z] [INFO] GET /js/calendar.js 200 1ms +[2026-01-06T11:06:15.554Z] [INFO] GET /js/list.js 200 3ms +[2026-01-06T11:06:15.558Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-06T11:06:15.563Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-06T11:06:15.588Z] [INFO] GET /js/tour.js 200 2ms +[2026-01-06T11:06:15.590Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-06T11:06:15.594Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-06T11:06:15.622Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-06T11:06:15.623Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-06T11:06:15.627Z] [INFO] GET /js/knowledge.js 200 1ms +[2026-01-06T11:06:15.652Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-06T11:06:15.657Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-06T11:06:15.668Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-06T11:06:15.683Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T11:06:15.687Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-06T11:06:15.700Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T11:06:15.718Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-06T11:06:15.724Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-06T11:06:15.734Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-06T11:06:15.757Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-06T11:06:15.760Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-06T11:06:15.764Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-06T11:06:17.675Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T11:06:19.387Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T11:06:21.180Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-06T11:06:26.668Z] [INFO] GET /api/reminders/2 200 5ms +[2026-01-06T11:10:30.237Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T11:14:11.203Z] [INFO] GET / 200 6ms +[2026-01-06T11:14:11.276Z] [INFO] GET / 200 4ms +[2026-01-06T11:14:11.467Z] [INFO] GET /css/base.css 200 2ms +[2026-01-06T11:14:11.468Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-06T11:14:11.537Z] [INFO] GET /css/board.css 200 4ms +[2026-01-06T11:14:11.539Z] [INFO] GET /css/components.css 200 4ms +[2026-01-06T11:14:11.548Z] [INFO] GET /css/modal.css 200 2ms +[2026-01-06T11:14:11.562Z] [INFO] GET /css/calendar.css 200 2ms +[2026-01-06T11:14:11.574Z] [INFO] GET /css/list.css 200 1ms +[2026-01-06T11:14:11.575Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-06T11:14:11.602Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-06T11:14:11.604Z] [INFO] GET /css/proposals.css 200 6ms +[2026-01-06T11:14:11.642Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-06T11:14:11.652Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-06T11:14:11.654Z] [INFO] GET /css/coding.css 200 1ms +[2026-01-06T11:14:11.666Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-06T11:14:11.665Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-06T11:14:11.700Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-06T11:14:11.705Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-06T11:14:11.707Z] [INFO] GET /js/app.js 200 2ms +[2026-01-06T11:14:11.816Z] [INFO] GET /js/store.js 200 7ms +[2026-01-06T11:14:11.820Z] [INFO] GET /js/api.js 200 9ms +[2026-01-06T11:14:11.821Z] [INFO] GET /js/sync.js 200 9ms +[2026-01-06T11:14:11.824Z] [INFO] GET /js/board.js 200 6ms +[2026-01-06T11:14:11.826Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-06T11:14:11.828Z] [INFO] GET /js/offline.js 200 5ms +[2026-01-06T11:14:11.871Z] [INFO] GET /js/task-modal.js 200 1ms +[2026-01-06T11:14:11.888Z] [INFO] GET /js/list.js 200 3ms +[2026-01-06T11:14:11.889Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-06T11:14:11.890Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-06T11:14:11.929Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-06T11:14:11.930Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T11:14:11.944Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-06T11:14:11.945Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-06T11:14:11.964Z] [INFO] GET /js/gitea.js 200 1ms +[2026-01-06T11:14:11.983Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-06T11:14:11.982Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-06T11:14:11.995Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T11:14:12.008Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-06T11:14:12.094Z] [INFO] GET /assets/icons/task.svg 200 6ms +[2026-01-06T11:14:13.666Z] [INFO] GET /sw.js 200 6ms +[2026-01-06T11:14:13.855Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-06T11:14:13.855Z] [INFO] GET /index.html 200 5ms +[2026-01-06T11:14:13.857Z] [INFO] GET / 200 6ms +[2026-01-06T11:14:13.910Z] [INFO] GET /css/base.css 200 2ms +[2026-01-06T11:14:13.952Z] [INFO] GET /css/components.css 200 2ms +[2026-01-06T11:14:13.961Z] [INFO] GET /css/board.css 200 1ms +[2026-01-06T11:14:13.975Z] [INFO] GET /css/modal.css 200 1ms +[2026-01-06T11:14:14.006Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-06T11:14:14.012Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-06T11:14:14.072Z] [INFO] GET /js/app.js 200 5ms +[2026-01-06T11:14:14.076Z] [INFO] GET /js/api.js 200 7ms +[2026-01-06T11:14:14.079Z] [INFO] GET /js/utils.js 200 8ms +[2026-01-06T11:14:14.136Z] [INFO] GET /js/store.js 200 4ms +[2026-01-06T11:14:14.139Z] [INFO] GET /js/auth.js 200 5ms +[2026-01-06T11:14:14.172Z] [INFO] GET /js/sync.js 200 2ms +[2026-01-06T11:14:14.197Z] [INFO] GET /js/board.js 200 7ms +[2026-01-06T11:14:14.198Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-06T11:14:14.225Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-06T11:14:14.249Z] [INFO] GET /js/list.js 200 2ms +[2026-01-06T11:14:14.249Z] [INFO] GET /js/calendar.js 200 1ms +[2026-01-06T11:14:14.304Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-06T11:14:14.305Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-06T11:14:14.310Z] [INFO] GET /js/tour.js 200 1ms +[2026-01-06T11:14:14.363Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-06T11:14:14.364Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-06T11:14:14.366Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-06T11:14:14.422Z] [INFO] GET /js/knowledge.js 200 7ms +[2026-01-06T11:14:14.424Z] [INFO] GET /js/gitea.js 200 5ms +[2026-01-06T11:14:14.430Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-06T11:14:14.478Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T11:14:14.487Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-06T11:14:14.522Z] [INFO] GET /css/list.css 200 1ms +[2026-01-06T11:14:14.529Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-06T11:14:14.545Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T11:14:14.582Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-06T11:14:14.584Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-06T11:14:14.599Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-06T11:14:14.635Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-06T11:14:14.636Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-06T11:14:14.653Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-06T11:14:43.689Z] [WARN] Login fehlgeschlagen: Falsches Passwort - momohomma@googlemail.com (Versuch 1) +[2026-01-06T11:14:43.693Z] [INFO] POST /api/auth/login 401 456ms +[2026-01-06T11:15:30.239Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T11:20:30.242Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T11:21:20.673Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-06T11:21:20.675Z] [INFO] POST /api/auth/logout 200 14ms +[2026-01-06T11:21:20.703Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (gTHIVhMEMhsqyWtCAAA3) +[2026-01-06T11:25:30.249Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T11:27:48.582Z] [INFO] POST / 200 16ms +[2026-01-06T11:30:30.250Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T11:31:28.338Z] [INFO] GET / 200 3ms +[2026-01-06T11:31:28.417Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-06T11:31:28.447Z] [INFO] GET /css/base.css 200 2ms +[2026-01-06T11:31:28.479Z] [INFO] GET /css/components.css 200 2ms +[2026-01-06T11:31:28.484Z] [INFO] GET /css/board.css 200 3ms +[2026-01-06T11:31:28.486Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-06T11:31:28.504Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-06T11:31:28.516Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T11:31:28.519Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-06T11:31:28.530Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-06T11:31:28.559Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-06T11:31:28.561Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-06T11:31:28.566Z] [INFO] GET /css/coding.css 200 8ms +[2026-01-06T11:31:28.568Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-06T11:31:28.570Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-06T11:31:28.575Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-06T11:31:28.595Z] [INFO] GET /css/mobile.css 200 8ms +[2026-01-06T11:31:28.600Z] [INFO] GET /js/app.js 200 3ms +[2026-01-06T11:31:28.605Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-06T11:31:28.673Z] [INFO] GET /js/board.js 200 6ms +[2026-01-06T11:31:28.675Z] [INFO] GET /js/api.js 200 7ms +[2026-01-06T11:31:28.679Z] [INFO] GET /js/auth.js 200 9ms +[2026-01-06T11:31:28.684Z] [INFO] GET /js/store.js 200 12ms +[2026-01-06T11:31:28.686Z] [INFO] GET /js/offline.js 200 8ms +[2026-01-06T11:31:28.687Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-06T11:31:28.708Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-06T11:31:28.718Z] [INFO] GET /js/calendar.js 200 8ms +[2026-01-06T11:31:28.720Z] [INFO] GET /js/list.js 200 4ms +[2026-01-06T11:31:28.722Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-06T11:31:28.723Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-06T11:31:28.726Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T11:31:28.749Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-06T11:31:28.750Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-06T11:31:28.754Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-06T11:31:28.766Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-06T11:31:28.773Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-06T11:31:28.775Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-06T11:31:28.784Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-06T11:31:28.830Z] [INFO] GET /assets/icons/task.svg 200 4ms +[2026-01-06T11:31:35.123Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-06T11:31:35.124Z] [INFO] POST /api/auth/login 200 460ms +[2026-01-06T11:31:35.169Z] [INFO] GET / 200 9ms +[2026-01-06T11:31:35.256Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-06T11:31:35.258Z] [INFO] GET /css/board.css 200 8ms +[2026-01-06T11:31:35.260Z] [INFO] GET /css/components.css 200 9ms +[2026-01-06T11:31:35.261Z] [INFO] GET /css/base.css 200 9ms +[2026-01-06T11:31:35.265Z] [INFO] GET /css/modal.css 200 10ms +[2026-01-06T11:31:35.267Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-06T11:31:35.288Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T11:31:35.295Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T11:31:35.318Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-06T11:31:35.322Z] [INFO] GET /css/gitea.css 200 8ms +[2026-01-06T11:31:35.323Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-06T11:31:35.328Z] [INFO] GET /css/knowledge.css 200 8ms +[2026-01-06T11:31:35.335Z] [INFO] GET /css/proposals.css 200 8ms +[2026-01-06T11:31:35.337Z] [INFO] GET /css/reminders.css 200 4ms +[2026-01-06T11:31:35.348Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-06T11:31:35.352Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-06T11:31:35.354Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-06T11:31:35.359Z] [INFO] GET /js/app.js 200 2ms +[2026-01-06T11:31:35.404Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-06T11:31:35.408Z] [INFO] GET /js/api.js 200 6ms +[2026-01-06T11:31:35.410Z] [INFO] GET /js/store.js 200 8ms +[2026-01-06T11:31:35.419Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-06T11:31:35.422Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-06T11:31:35.423Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-06T11:31:35.434Z] [INFO] GET /js/board.js 200 2ms +[2026-01-06T11:31:35.438Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-06T11:31:35.452Z] [INFO] GET /js/list.js 200 3ms +[2026-01-06T11:31:35.454Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-06T11:31:35.455Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-06T11:31:35.460Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-06T11:31:35.468Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T11:31:35.481Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-06T11:31:35.503Z] [INFO] GET /js/knowledge.js 200 11ms +[2026-01-06T11:31:35.507Z] [INFO] GET /js/notifications.js 200 7ms +[2026-01-06T11:31:35.509Z] [INFO] GET /js/gitea.js 200 8ms +[2026-01-06T11:31:35.512Z] [INFO] GET /js/coding.js 200 7ms +[2026-01-06T11:31:35.519Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-06T11:31:35.580Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T11:31:35.586Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-06T11:31:35.588Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-06T11:31:35.626Z] [INFO] GET /api/auth/users 401 7ms +[2026-01-06T11:31:35.657Z] [INFO] GET /api/proposals?sort=date&archived=0 401 2ms +[2026-01-06T11:31:35.690Z] [INFO] GET /api/notifications 401 2ms +[2026-01-06T11:31:35.719Z] [INFO] GET /api/knowledge/categories 401 1ms +[2026-01-06T11:31:37.278Z] [INFO] GET /sw.js 200 3ms +[2026-01-06T11:31:37.316Z] [INFO] GET / 200 6ms +[2026-01-06T11:31:37.319Z] [INFO] GET /index.html 200 7ms +[2026-01-06T11:31:37.325Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-06T11:31:37.356Z] [INFO] GET /css/base.css 200 2ms +[2026-01-06T11:31:37.372Z] [INFO] GET /css/components.css 200 2ms +[2026-01-06T11:31:37.376Z] [INFO] GET /css/board.css 200 2ms +[2026-01-06T11:31:37.388Z] [INFO] GET /css/modal.css 200 1ms +[2026-01-06T11:31:37.401Z] [INFO] GET /css/calendar.css 200 2ms +[2026-01-06T11:31:37.408Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-06T11:31:37.436Z] [INFO] GET /js/app.js 200 4ms +[2026-01-06T11:31:37.442Z] [INFO] GET /js/api.js 200 4ms +[2026-01-06T11:31:37.446Z] [INFO] GET /js/utils.js 200 6ms +[2026-01-06T11:31:37.477Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-06T11:31:37.488Z] [INFO] GET /js/store.js 200 1ms +[2026-01-06T11:31:37.492Z] [INFO] GET /js/sync.js 200 1ms +[2026-01-06T11:31:37.505Z] [INFO] GET /js/offline.js 200 1ms +[2026-01-06T11:31:37.518Z] [INFO] GET /js/board.js 200 1ms +[2026-01-06T11:31:37.522Z] [INFO] GET /js/task-modal.js 200 1ms +[2026-01-06T11:31:37.551Z] [INFO] GET /js/list.js 200 4ms +[2026-01-06T11:31:37.565Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-06T11:31:37.569Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-06T11:31:37.592Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-06T11:31:37.596Z] [INFO] GET /js/tour.js 200 1ms +[2026-01-06T11:31:37.600Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-06T11:31:37.619Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-06T11:31:37.624Z] [INFO] GET /js/notifications.js 200 1ms +[2026-01-06T11:31:37.628Z] [INFO] GET /js/gitea.js 200 1ms +[2026-01-06T11:31:37.652Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-06T11:31:37.675Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-06T11:31:37.685Z] [INFO] GET /js/reminders.js 200 6ms +[2026-01-06T11:31:37.686Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-06T11:31:37.706Z] [INFO] GET /css/list.css 200 1ms +[2026-01-06T11:31:37.718Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-06T11:31:37.720Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-06T11:31:37.740Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-06T11:31:37.752Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-06T11:31:37.754Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-06T11:31:37.773Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-06T11:31:37.781Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-06T11:31:37.786Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-06T11:34:52.886Z] [INFO] GET /api/projects 401 6ms +[2026-01-06T11:34:57.824Z] [INFO] GET /api/projects 401 2ms +[2026-01-06T11:35:30.255Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T11:39:04.501Z] [INFO] GET / 200 5ms +[2026-01-06T11:39:04.567Z] [INFO] GET /css/variables.css 200 1ms +[2026-01-06T11:39:04.600Z] [INFO] GET /css/base.css 200 3ms +[2026-01-06T11:39:04.632Z] [INFO] GET /css/board.css 200 9ms +[2026-01-06T11:39:04.633Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-06T11:39:04.636Z] [INFO] GET /css/components.css 200 8ms +[2026-01-06T11:39:04.639Z] [INFO] GET /css/list.css 200 4ms +[2026-01-06T11:39:04.640Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-06T11:39:04.647Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T11:39:04.662Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-06T11:39:04.689Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-06T11:39:04.691Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-06T11:39:04.697Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-06T11:39:04.699Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-06T11:39:04.704Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-06T11:39:04.705Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-06T11:39:04.723Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-06T11:39:04.734Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-06T11:39:04.736Z] [INFO] GET /js/app.js 200 6ms +[2026-01-06T11:39:04.778Z] [INFO] GET /js/store.js 200 3ms +[2026-01-06T11:39:04.780Z] [INFO] GET /js/api.js 200 4ms +[2026-01-06T11:39:04.784Z] [INFO] GET /js/utils.js 200 7ms +[2026-01-06T11:39:04.800Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-06T11:39:04.809Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-06T11:39:04.811Z] [INFO] GET /js/offline.js 200 5ms +[2026-01-06T11:39:04.814Z] [INFO] GET /js/board.js 200 7ms +[2026-01-06T11:39:04.817Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-06T11:39:04.819Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-06T11:39:04.829Z] [INFO] GET /js/list.js 200 2ms +[2026-01-06T11:39:04.837Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-06T11:39:04.841Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-06T11:39:04.844Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-06T11:39:04.861Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-06T11:39:04.872Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-06T11:39:04.875Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-06T11:39:04.878Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-06T11:39:04.885Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T11:39:04.886Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-06T11:39:04.950Z] [INFO] GET /assets/icons/task.svg 200 2ms +[2026-01-06T11:39:09.997Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-06T11:39:09.999Z] [INFO] POST /api/auth/login 200 492ms +[2026-01-06T11:39:10.040Z] [INFO] GET / 200 5ms +[2026-01-06T11:39:10.125Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-06T11:39:10.127Z] [INFO] GET /css/board.css 200 4ms +[2026-01-06T11:39:10.129Z] [INFO] GET /css/components.css 200 5ms +[2026-01-06T11:39:10.130Z] [INFO] GET /css/base.css 200 6ms +[2026-01-06T11:39:10.137Z] [INFO] GET /css/calendar.css 200 11ms +[2026-01-06T11:39:10.144Z] [INFO] GET /css/modal.css 200 15ms +[2026-01-06T11:39:10.158Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T11:39:10.163Z] [INFO] GET /css/list.css 200 6ms +[2026-01-06T11:39:10.184Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-06T11:39:10.188Z] [INFO] GET /css/notifications.css 200 6ms +[2026-01-06T11:39:10.196Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-06T11:39:10.199Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-06T11:39:10.201Z] [INFO] GET /css/reminders.css 200 6ms +[2026-01-06T11:39:10.202Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-06T11:39:10.215Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-06T11:39:10.220Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-06T11:39:10.229Z] [INFO] GET /js/app.js 200 2ms +[2026-01-06T11:39:10.253Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-06T11:39:10.290Z] [INFO] GET /js/utils.js 200 6ms +[2026-01-06T11:39:10.294Z] [INFO] GET /js/api.js 200 8ms +[2026-01-06T11:39:10.297Z] [INFO] GET /js/store.js 200 10ms +[2026-01-06T11:39:10.300Z] [INFO] GET /js/auth.js 200 8ms +[2026-01-06T11:39:10.303Z] [INFO] GET /js/sync.js 200 7ms +[2026-01-06T11:39:10.303Z] [INFO] GET /js/offline.js 200 5ms +[2026-01-06T11:39:10.318Z] [INFO] GET /js/board.js 200 1ms +[2026-01-06T11:39:10.330Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-06T11:39:10.331Z] [INFO] GET /js/list.js 200 2ms +[2026-01-06T11:39:10.334Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-06T11:39:10.335Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-06T11:39:10.337Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-06T11:39:10.372Z] [INFO] GET /js/gitea.js 200 9ms +[2026-01-06T11:39:10.375Z] [INFO] GET /js/notifications.js 200 9ms +[2026-01-06T11:39:10.378Z] [INFO] GET /js/admin.js 200 10ms +[2026-01-06T11:39:10.380Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-06T11:39:10.382Z] [INFO] GET /js/knowledge.js 200 5ms +[2026-01-06T11:39:10.392Z] [INFO] GET /js/coding.js 200 1ms +[2026-01-06T11:39:10.406Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T11:39:10.458Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T11:39:10.462Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-06T11:39:10.467Z] [INFO] GET /api/auth/users 200 6ms +[2026-01-06T11:39:10.503Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-06T11:39:10.542Z] [INFO] GET /api/projects 200 14ms +[2026-01-06T11:39:10.550Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (jDTfCTqi9FI5zTbeAAA7) +[2026-01-06T11:39:10.586Z] [INFO] GET /api/stats/dashboard?projectId=2 200 10ms +[2026-01-06T11:39:10.589Z] [INFO] GET /api/columns/2 200 12ms +[2026-01-06T11:39:10.592Z] [INFO] GET /api/reminders?project_id=2 200 14ms +[2026-01-06T11:39:10.596Z] [INFO] GET /api/labels/2 200 18ms +[2026-01-06T11:39:10.609Z] [INFO] GET /api/tasks/project/2 200 12ms +[2026-01-06T11:39:10.614Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T11:39:10.670Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 7ms +[2026-01-06T11:39:10.709Z] [INFO] GET /api/notifications 200 8ms +[2026-01-06T11:39:10.741Z] [INFO] GET /api/knowledge/categories 200 2ms +[2026-01-06T11:39:12.213Z] [INFO] GET /sw.js 200 2ms +[2026-01-06T11:39:12.960Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T11:39:14.256Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T11:39:14.372Z] [INFO] GET /api/reminders/2 200 8ms +[2026-01-06T11:39:20.906Z] [DEBUG] Benachrichtigungstermine erstellt für Reminder 2 +[2026-01-06T11:39:20.907Z] [INFO] PUT /api/reminders/2 200 6ms +[2026-01-06T11:39:20.946Z] [INFO] GET /api/reminders/2 200 10ms +[2026-01-06T11:39:20.985Z] [INFO] GET /api/reminders?project_id=2 200 8ms +[2026-01-06T11:39:20.994Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-06T11:39:21.011Z] [INFO] GET /api/tasks/project/2 304 16ms +[2026-01-06T11:39:21.015Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-06T11:39:21.913Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T11:39:22.955Z] [INFO] GET /api/reminders/2 304 10ms +[2026-01-06T11:39:24.111Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T11:39:27.499Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-06T11:39:30.904Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T11:39:31.047Z] [INFO] GET /api/reminders/2 304 6ms +[2026-01-06T11:39:38.720Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T11:40:09.006Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T11:40:09.801Z] [INFO] GET /api/reminders/2 304 5ms +[2026-01-06T11:40:11.778Z] [DEBUG] Benachrichtigungstermine erstellt für Reminder 2 +[2026-01-06T11:40:11.779Z] [INFO] PUT /api/reminders/2 200 8ms +[2026-01-06T11:40:11.815Z] [INFO] GET /api/reminders/2 200 5ms +[2026-01-06T11:40:11.854Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-06T11:40:11.857Z] [INFO] GET /api/reminders?project_id=2 200 7ms +[2026-01-06T11:40:11.860Z] [INFO] GET /api/columns/2 304 9ms +[2026-01-06T11:40:11.875Z] [INFO] GET /api/tasks/project/2 304 24ms +[2026-01-06T11:40:12.778Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T11:40:13.618Z] [INFO] GET / 200 4ms +[2026-01-06T11:40:13.682Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (jDTfCTqi9FI5zTbeAAA7) +[2026-01-06T11:40:13.689Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-06T11:40:13.692Z] [INFO] GET /css/board.css 200 4ms +[2026-01-06T11:40:13.693Z] [INFO] GET /css/base.css 200 3ms +[2026-01-06T11:40:13.694Z] [INFO] GET /css/components.css 200 3ms +[2026-01-06T11:40:13.696Z] [INFO] GET /css/modal.css 200 1ms +[2026-01-06T11:40:13.705Z] [INFO] GET /css/calendar.css 200 1ms +[2026-01-06T11:40:13.724Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T11:40:13.728Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T11:40:13.757Z] [INFO] GET /css/proposals.css 200 7ms +[2026-01-06T11:40:13.760Z] [INFO] GET /css/notifications.css 200 7ms +[2026-01-06T11:40:13.763Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-06T11:40:13.766Z] [INFO] GET /css/gitea.css 200 7ms +[2026-01-06T11:40:13.768Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-06T11:40:13.771Z] [INFO] GET /css/reminders.css 200 1ms +[2026-01-06T11:40:13.788Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-06T11:40:13.789Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-06T11:40:13.796Z] [INFO] GET /js/app.js 200 2ms +[2026-01-06T11:40:13.797Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-06T11:40:13.843Z] [INFO] GET /js/store.js 200 4ms +[2026-01-06T11:40:13.844Z] [INFO] GET /js/api.js 200 3ms +[2026-01-06T11:40:13.846Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-06T11:40:13.886Z] [INFO] GET /js/sync.js 200 16ms +[2026-01-06T11:40:13.891Z] [INFO] GET /js/board.js 200 19ms +[2026-01-06T11:40:13.900Z] [INFO] GET /js/offline.js 200 18ms +[2026-01-06T11:40:13.903Z] [INFO] GET /js/auth.js 200 14ms +[2026-01-06T11:40:13.906Z] [INFO] GET /js/task-modal.js 200 10ms +[2026-01-06T11:40:13.915Z] [INFO] GET /js/calendar.js 200 8ms +[2026-01-06T11:40:13.936Z] [INFO] GET /js/list.js 200 14ms +[2026-01-06T11:40:13.939Z] [INFO] GET /js/shortcuts.js 200 16ms +[2026-01-06T11:40:13.949Z] [INFO] GET /js/undo.js 200 6ms +[2026-01-06T11:40:13.952Z] [INFO] GET /js/admin.js 200 6ms +[2026-01-06T11:40:13.957Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-06T11:40:13.966Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-06T11:40:13.967Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-06T11:40:13.968Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-06T11:40:13.980Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-06T11:40:13.985Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-06T11:40:14.030Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T11:40:14.033Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-06T11:40:14.038Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-06T11:40:14.085Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-06T11:40:14.108Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (iqqU-ULRmXef2O9VAAA9) +[2026-01-06T11:40:14.115Z] [INFO] GET /api/projects 304 4ms +[2026-01-06T11:40:14.153Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-06T11:40:14.155Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T11:40:14.163Z] [INFO] GET /api/stats/dashboard?projectId=2 304 7ms +[2026-01-06T11:40:14.181Z] [INFO] GET /api/tasks/project/2 304 17ms +[2026-01-06T11:40:14.184Z] [INFO] GET /api/labels/2 304 19ms +[2026-01-06T11:40:14.188Z] [INFO] GET /api/reminders?project_id=2 304 2ms +[2026-01-06T11:40:14.228Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 8ms +[2026-01-06T11:40:14.264Z] [INFO] GET /api/notifications 304 6ms +[2026-01-06T11:40:14.301Z] [INFO] GET /api/knowledge/categories 304 8ms +[2026-01-06T11:40:15.755Z] [INFO] GET /sw.js 200 2ms +[2026-01-06T11:40:18.143Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-06T11:40:19.151Z] [INFO] GET /api/reminders/2 304 7ms +[2026-01-06T11:40:24.815Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T11:40:29.345Z] [INFO] GET /api/reminders/2 304 7ms +[2026-01-06T11:40:29.750Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T11:40:30.254Z] [INFO] 1 fällige Erinnerung(en) gefunden +[2026-01-06T11:40:30.259Z] [INFO] Benachrichtigung erstellt: reminder:due für User 1 +[2026-01-06T11:40:30.260Z] [INFO] Reminder-Benachrichtigung gesendet: "Testerinnerung" (2 Tage vorher) +[2026-01-06T11:40:31.597Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T11:40:33.420Z] [INFO] PUT /api/notifications/10/read 200 9ms +[2026-01-06T11:40:34.007Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T11:40:48.045Z] [INFO] GET /api/reminders/2 304 9ms +[2026-01-06T11:40:50.841Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T11:40:57.463Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-06T11:41:02.769Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T11:41:16.841Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T11:44:35.785Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T11:45:30.255Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T11:50:16.441Z] [INFO] GET /api/reminders/2 200 10ms +[2026-01-06T11:50:17.932Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T11:50:30.258Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T11:50:44.538Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T11:50:49.256Z] [INFO] GET / 200 2ms +[2026-01-06T11:50:49.310Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (iqqU-ULRmXef2O9VAAA9) +[2026-01-06T11:50:49.324Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-06T11:50:49.351Z] [INFO] GET /css/base.css 200 2ms +[2026-01-06T11:50:49.401Z] [INFO] GET /css/calendar.css 200 10ms +[2026-01-06T11:50:49.402Z] [INFO] GET /css/components.css 200 9ms +[2026-01-06T11:50:49.403Z] [INFO] GET /css/board.css 200 10ms +[2026-01-06T11:50:49.404Z] [INFO] GET /css/modal.css 200 10ms +[2026-01-06T11:50:49.405Z] [INFO] GET /css/list.css 200 6ms +[2026-01-06T11:50:49.407Z] [INFO] GET /css/admin.css 200 6ms +[2026-01-06T11:50:49.434Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-06T11:50:49.443Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-06T11:50:49.445Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-06T11:50:49.451Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-06T11:50:49.456Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-06T11:50:49.461Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-06T11:50:49.467Z] [INFO] GET /css/reminders.css 200 7ms +[2026-01-06T11:50:49.476Z] [INFO] GET /css/mobile.css 200 5ms +[2026-01-06T11:50:49.482Z] [INFO] GET /js/app.js 200 2ms +[2026-01-06T11:50:49.486Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-06T11:50:49.557Z] [INFO] GET /js/store.js 200 3ms +[2026-01-06T11:50:49.564Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-06T11:50:49.566Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-06T11:50:49.569Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-06T11:50:49.570Z] [INFO] GET /js/offline.js 200 5ms +[2026-01-06T11:50:49.572Z] [INFO] GET /js/api.js 200 4ms +[2026-01-06T11:50:49.587Z] [INFO] GET /js/board.js 200 4ms +[2026-01-06T11:50:49.591Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-06T11:50:49.598Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-06T11:50:49.599Z] [INFO] GET /js/list.js 200 3ms +[2026-01-06T11:50:49.603Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-06T11:50:49.612Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-06T11:50:49.621Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T11:50:49.629Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-06T11:50:49.632Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-06T11:50:49.650Z] [INFO] GET /js/knowledge.js 200 5ms +[2026-01-06T11:50:49.651Z] [INFO] GET /js/gitea.js 200 5ms +[2026-01-06T11:50:49.655Z] [INFO] GET /js/coding.js 200 8ms +[2026-01-06T11:50:49.657Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-06T11:50:49.724Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-06T11:50:49.730Z] [INFO] GET /api/auth/users 200 5ms +[2026-01-06T11:50:49.739Z] [INFO] GET /assets/icons/task.svg 200 4ms +[2026-01-06T11:50:49.772Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-06T11:50:49.801Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (9BZCVFn5r6XlXeXzAAA_) +[2026-01-06T11:50:49.809Z] [INFO] GET /api/projects 200 7ms +[2026-01-06T11:50:49.846Z] [INFO] GET /api/columns/2 200 6ms +[2026-01-06T11:50:49.850Z] [INFO] GET /api/stats/dashboard?projectId=2 200 8ms +[2026-01-06T11:50:49.869Z] [INFO] GET /api/tasks/project/2 200 27ms +[2026-01-06T11:50:49.874Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T11:50:49.877Z] [INFO] GET /api/labels/2 200 35ms +[2026-01-06T11:50:49.883Z] [INFO] GET /api/reminders?project_id=2 200 3ms +[2026-01-06T11:50:49.929Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 6ms +[2026-01-06T11:50:49.966Z] [INFO] GET /api/notifications 200 5ms +[2026-01-06T11:50:50.001Z] [INFO] GET /api/knowledge/categories 200 5ms +[2026-01-06T11:50:52.305Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T11:50:52.356Z] [INFO] GET /api/reminders/2 304 6ms +[2026-01-06T11:51:00.975Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T11:51:04.455Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T11:51:06.646Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T11:51:26.637Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (9BZCVFn5r6XlXeXzAAA_) +[2026-01-06T11:51:27.694Z] [INFO] GET / 200 4ms +[2026-01-06T11:51:27.789Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-06T11:51:27.796Z] [INFO] GET /css/components.css 200 5ms +[2026-01-06T11:51:27.800Z] [INFO] GET /css/base.css 200 8ms +[2026-01-06T11:51:27.805Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-06T11:51:27.806Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-06T11:51:27.807Z] [INFO] GET /css/board.css 200 4ms +[2026-01-06T11:51:27.814Z] [INFO] GET /css/list.css 200 1ms +[2026-01-06T11:51:27.844Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-06T11:51:27.857Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-06T11:51:27.859Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-06T11:51:27.889Z] [INFO] GET /css/gitea.css 200 14ms +[2026-01-06T11:51:27.891Z] [INFO] GET /css/coding.css 200 15ms +[2026-01-06T11:51:27.894Z] [INFO] GET /css/knowledge.css 200 15ms +[2026-01-06T11:51:27.898Z] [INFO] GET /css/reminders.css 200 15ms +[2026-01-06T11:51:27.900Z] [INFO] GET /css/responsive.css 200 10ms +[2026-01-06T11:51:27.907Z] [INFO] GET /css/mobile.css 200 8ms +[2026-01-06T11:51:27.924Z] [INFO] GET /js/app.js 200 4ms +[2026-01-06T11:51:27.942Z] [INFO] GET /js/reminders.js 200 14ms +[2026-01-06T11:51:27.994Z] [INFO] GET /js/store.js 200 2ms +[2026-01-06T11:51:27.995Z] [INFO] GET /js/api.js 200 2ms +[2026-01-06T11:51:28.013Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-06T11:51:28.015Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-06T11:51:28.017Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-06T11:51:28.018Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-06T11:51:28.024Z] [INFO] GET /js/board.js 200 1ms +[2026-01-06T11:51:28.025Z] [INFO] GET /js/task-modal.js 200 1ms +[2026-01-06T11:51:28.043Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-06T11:51:28.049Z] [INFO] GET /js/list.js 200 3ms +[2026-01-06T11:51:28.050Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-06T11:51:28.051Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-06T11:51:28.055Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T11:51:28.057Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-06T11:51:28.085Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-06T11:51:28.087Z] [INFO] GET /js/knowledge.js 200 6ms +[2026-01-06T11:51:28.091Z] [INFO] GET /js/gitea.js 200 8ms +[2026-01-06T11:51:28.093Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-06T11:51:28.095Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-06T11:51:28.166Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T11:51:28.176Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-06T11:51:28.177Z] [INFO] GET /assets/icons/task.svg 304 10ms +[2026-01-06T11:51:28.228Z] [INFO] GET /api/auth/users 304 8ms +[2026-01-06T11:51:28.268Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (eE5BSL-faZn8tpahAABB) +[2026-01-06T11:51:28.276Z] [INFO] GET /api/projects 304 6ms +[2026-01-06T11:51:28.322Z] [INFO] GET /api/stats/dashboard?projectId=2 304 10ms +[2026-01-06T11:51:28.329Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-06T11:51:28.336Z] [INFO] GET /api/labels/2 304 6ms +[2026-01-06T11:51:28.353Z] [INFO] GET /api/tasks/project/2 304 15ms +[2026-01-06T11:51:28.358Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T11:51:28.362Z] [INFO] GET /api/reminders?project_id=2 304 3ms +[2026-01-06T11:51:28.406Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 4ms +[2026-01-06T11:51:28.457Z] [INFO] GET /api/notifications 304 4ms +[2026-01-06T11:51:28.496Z] [INFO] GET /api/knowledge/categories 304 7ms +[2026-01-06T11:51:29.948Z] [INFO] GET /sw.js 200 2ms +[2026-01-06T11:51:29.991Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-06T11:51:29.993Z] [INFO] GET /index.html 200 10ms +[2026-01-06T11:51:29.994Z] [INFO] GET / 200 10ms +[2026-01-06T11:51:30.035Z] [INFO] GET /css/base.css 200 2ms +[2026-01-06T11:51:30.058Z] [INFO] GET /css/components.css 200 9ms +[2026-01-06T11:51:30.061Z] [INFO] GET /css/board.css 200 7ms +[2026-01-06T11:51:30.066Z] [INFO] GET /css/modal.css 200 2ms +[2026-01-06T11:51:30.093Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-06T11:51:30.094Z] [INFO] GET /css/calendar.css 200 2ms +[2026-01-06T11:51:30.123Z] [INFO] GET /js/api.js 200 2ms +[2026-01-06T11:51:30.127Z] [INFO] GET /js/app.js 200 3ms +[2026-01-06T11:51:30.130Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-06T11:51:30.152Z] [INFO] GET /js/auth.js 200 1ms +[2026-01-06T11:51:30.160Z] [INFO] GET /js/store.js 200 2ms +[2026-01-06T11:51:30.187Z] [INFO] GET /js/offline.js 200 2ms +[2026-01-06T11:51:30.192Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-06T11:51:30.195Z] [INFO] GET /js/board.js 200 2ms +[2026-01-06T11:51:30.223Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-06T11:51:30.227Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-06T11:51:30.256Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-06T11:51:30.258Z] [INFO] GET /js/list.js 200 3ms +[2026-01-06T11:51:30.260Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-06T11:51:30.291Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T11:51:30.292Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-06T11:51:30.293Z] [INFO] GET /js/tour.js 200 3ms +[2026-01-06T11:51:30.331Z] [INFO] GET /js/knowledge.js 200 7ms +[2026-01-06T11:51:30.334Z] [INFO] GET /js/gitea.js 200 9ms +[2026-01-06T11:51:30.337Z] [INFO] GET /js/notifications.js 200 8ms +[2026-01-06T11:51:30.366Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-06T11:51:30.374Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T11:51:30.399Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T11:51:30.404Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-06T11:51:30.406Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-06T11:51:30.435Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T11:51:30.457Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-06T11:51:30.459Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-06T11:51:30.468Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-06T11:51:30.491Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-06T11:51:30.497Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-06T11:51:30.501Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-06T11:51:30.943Z] [INFO] GET /api/reminders/2 304 10ms +[2026-01-06T11:51:31.109Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T11:51:32.703Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T11:51:34.016Z] [INFO] DELETE /api/reminders/2 200 8ms +[2026-01-06T11:51:34.054Z] [INFO] GET /api/columns/2 304 7ms +[2026-01-06T11:51:34.060Z] [INFO] GET /api/reminders?project_id=2 200 4ms +[2026-01-06T11:51:34.077Z] [INFO] GET /api/tasks/project/2 304 16ms +[2026-01-06T11:51:34.081Z] [INFO] GET /api/labels/2 304 20ms +[2026-01-06T11:51:34.099Z] [INFO] GET /api/reminders?project_id=2 304 8ms +[2026-01-06T11:51:34.155Z] [INFO] GET /api/tasks/project/2 304 22ms +[2026-01-06T11:51:34.159Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-06T11:51:34.164Z] [INFO] GET /api/reminders?project_id=2 304 4ms +[2026-01-06T11:51:34.168Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-06T11:51:34.998Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T11:51:37.293Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T11:51:38.406Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T11:51:41.438Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-06T11:53:19.933Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-06T11:53:19.973Z] [DEBUG] Benachrichtigungstermine erstellt für Reminder 3 +[2026-01-06T11:53:19.979Z] [INFO] POST /api/reminders 201 14ms +[2026-01-06T11:53:20.021Z] [INFO] GET /api/reminders?project_id=2 200 10ms +[2026-01-06T11:53:20.060Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-06T11:53:20.103Z] [INFO] GET /api/tasks/project/2 304 19ms +[2026-01-06T11:53:20.119Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-06T11:53:20.127Z] [INFO] GET /api/reminders?project_id=2 304 3ms +[2026-01-06T11:53:20.863Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T11:53:25.977Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T11:53:27.799Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T11:54:00.642Z] [INFO] GET / 200 2ms +[2026-01-06T11:54:00.711Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (eE5BSL-faZn8tpahAABB) +[2026-01-06T11:54:00.724Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-06T11:54:00.730Z] [INFO] GET /css/components.css 200 3ms +[2026-01-06T11:54:00.731Z] [INFO] GET /css/base.css 200 3ms +[2026-01-06T11:54:00.738Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-06T11:54:00.740Z] [INFO] GET /css/board.css 200 4ms +[2026-01-06T11:54:00.761Z] [INFO] GET /css/list.css 200 3ms +[2026-01-06T11:54:00.762Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-06T11:54:00.784Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T11:54:00.792Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-06T11:54:00.794Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-06T11:54:00.796Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-06T11:54:00.799Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-06T11:54:00.801Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-06T11:54:00.815Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-06T11:54:00.822Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-06T11:54:00.834Z] [INFO] GET /js/reminders.js 200 7ms +[2026-01-06T11:54:00.836Z] [INFO] GET /js/app.js 200 8ms +[2026-01-06T11:54:00.842Z] [INFO] GET /css/mobile.css 200 8ms +[2026-01-06T11:54:01.037Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-06T11:54:01.038Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-06T11:54:01.042Z] [INFO] GET /js/store.js 200 8ms +[2026-01-06T11:54:01.046Z] [INFO] GET /js/board.js 200 10ms +[2026-01-06T11:54:01.049Z] [INFO] GET /js/api.js 200 8ms +[2026-01-06T11:54:01.051Z] [INFO] GET /js/sync.js 200 8ms +[2026-01-06T11:54:01.072Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-06T11:54:01.073Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-06T11:54:01.075Z] [INFO] GET /js/list.js 200 3ms +[2026-01-06T11:54:01.081Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-06T11:54:01.081Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-06T11:54:01.113Z] [INFO] GET /js/admin.js 200 12ms +[2026-01-06T11:54:01.117Z] [INFO] GET /js/proposals.js 200 7ms +[2026-01-06T11:54:01.119Z] [INFO] GET /js/notifications.js 200 7ms +[2026-01-06T11:54:01.121Z] [INFO] GET /js/gitea.js 200 5ms +[2026-01-06T11:54:01.125Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-06T11:54:01.128Z] [INFO] GET /js/coding.js 200 1ms +[2026-01-06T11:54:01.155Z] [INFO] GET /js/mobile.js 200 10ms +[2026-01-06T11:54:01.158Z] [INFO] GET /js/utils.js 200 8ms +[2026-01-06T11:54:01.194Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-06T11:54:01.203Z] [INFO] GET /api/auth/users 304 2ms +[2026-01-06T11:54:01.201Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-06T11:54:01.241Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-06T11:54:01.266Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (qb4EjhuRO5OURIRJAABD) +[2026-01-06T11:54:01.284Z] [INFO] GET /api/projects 304 5ms +[2026-01-06T11:54:01.317Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T11:54:01.328Z] [INFO] GET /api/stats/dashboard?projectId=2 304 9ms +[2026-01-06T11:54:01.349Z] [INFO] GET /api/tasks/project/2 304 20ms +[2026-01-06T11:54:01.352Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-06T11:54:01.355Z] [INFO] GET /api/labels/2 304 2ms +[2026-01-06T11:54:01.358Z] [INFO] GET /api/reminders?project_id=2 304 2ms +[2026-01-06T11:54:01.401Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-06T11:54:01.439Z] [INFO] GET /api/notifications 304 9ms +[2026-01-06T11:54:01.474Z] [INFO] GET /api/knowledge/categories 304 4ms +[2026-01-06T11:54:03.639Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T11:54:09.745Z] [INFO] GET /api/reminders/3 200 8ms +[2026-01-06T11:54:14.954Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T11:54:16.337Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T11:54:37.575Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T11:54:42.988Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T11:54:44.050Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T11:54:44.155Z] [INFO] GET /api/tasks/6 200 19ms +[2026-01-06T11:54:44.194Z] [INFO] GET /api/subtasks/6 200 6ms +[2026-01-06T11:54:44.199Z] [INFO] GET /api/files/6 200 11ms +[2026-01-06T11:54:44.202Z] [INFO] GET /api/links/6 200 8ms +[2026-01-06T11:54:44.205Z] [INFO] GET /api/tasks/6/history 404 3ms +[2026-01-06T11:54:44.208Z] [INFO] GET /api/comments/6 200 3ms +[2026-01-06T11:54:44.245Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzcwMDQ4NCwiZXhwIjoxNzY3NzAxMzg0fQ.MsLF2-LoHfWqLZQwv8oQsx_YqKK1E4Cb7HsFZyidS2Q 200 12ms +[2026-01-06T11:54:45.141Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T11:54:46.673Z] [INFO] PUT /api/subtasks/52 200 9ms +[2026-01-06T11:54:46.726Z] [INFO] PUT /api/subtasks/52/position 200 18ms +[2026-01-06T11:54:47.681Z] [INFO] POST /api/auth/refresh 200 17ms +[2026-01-06T11:54:52.118Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-06T11:54:52.120Z] [INFO] PUT /api/tasks/6 200 17ms +[2026-01-06T11:54:53.105Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-06T11:55:07.307Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T11:55:22.383Z] [WARN] Login fehlgeschlagen: Falsches Passwort - momohomma@googlemail.com (Versuch 2) +[2026-01-06T11:55:22.384Z] [INFO] POST /api/auth/login 401 458ms +[2026-01-06T11:55:28.852Z] [INFO] GET /api/reminders/3 304 6ms +[2026-01-06T11:55:30.259Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T11:55:33.412Z] [INFO] GET / 200 3ms +[2026-01-06T11:55:33.471Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (qb4EjhuRO5OURIRJAABD) +[2026-01-06T11:55:33.483Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-06T11:55:33.493Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-06T11:55:33.495Z] [INFO] GET /css/base.css 200 5ms +[2026-01-06T11:55:33.497Z] [INFO] GET /css/components.css 200 5ms +[2026-01-06T11:55:33.498Z] [INFO] GET /css/board.css 200 4ms +[2026-01-06T11:55:33.515Z] [INFO] GET /css/calendar.css 200 1ms +[2026-01-06T11:55:33.523Z] [INFO] GET /css/list.css 200 1ms +[2026-01-06T11:55:33.543Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-06T11:55:33.546Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-06T11:55:33.550Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-06T11:55:33.555Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-06T11:55:33.557Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-06T11:55:33.558Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-06T11:55:33.573Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-06T11:55:33.576Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-06T11:55:33.580Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-06T11:55:33.592Z] [INFO] GET /js/app.js 200 4ms +[2026-01-06T11:55:33.601Z] [INFO] GET /js/reminders.js 200 1ms +[2026-01-06T11:55:33.634Z] [INFO] GET /js/store.js 200 2ms +[2026-01-06T11:55:33.635Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-06T11:55:33.636Z] [INFO] GET /js/api.js 200 3ms +[2026-01-06T11:55:33.654Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-06T11:55:33.658Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-06T11:55:33.661Z] [INFO] GET /js/sync.js 200 8ms +[2026-01-06T11:55:33.665Z] [INFO] GET /js/board.js 200 1ms +[2026-01-06T11:55:33.668Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-06T11:55:33.669Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-06T11:55:33.685Z] [INFO] GET /js/list.js 200 1ms +[2026-01-06T11:55:33.691Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-06T11:55:33.699Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-06T11:55:33.701Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-06T11:55:33.702Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-06T11:55:33.716Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-06T11:55:33.724Z] [INFO] GET /js/knowledge.js 200 5ms +[2026-01-06T11:55:33.726Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-06T11:55:33.729Z] [INFO] GET /js/coding.js 200 1ms +[2026-01-06T11:55:33.734Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-06T11:55:33.796Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T11:55:33.800Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-06T11:55:33.805Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-06T11:55:33.844Z] [INFO] GET /api/auth/users 304 7ms +[2026-01-06T11:55:33.896Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (nqLnhvRutX9wHLnLAABF) +[2026-01-06T11:55:33.905Z] [INFO] GET /api/projects 304 6ms +[2026-01-06T11:55:33.947Z] [INFO] GET /api/stats/dashboard?projectId=2 304 9ms +[2026-01-06T11:55:33.967Z] [INFO] GET /api/tasks/project/2 200 17ms +[2026-01-06T11:55:33.968Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T11:55:33.973Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-06T11:55:33.976Z] [INFO] GET /api/labels/2 304 2ms +[2026-01-06T11:55:33.980Z] [INFO] GET /api/reminders?project_id=2 304 3ms +[2026-01-06T11:55:34.023Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-06T11:55:34.055Z] [INFO] GET /api/notifications 304 6ms +[2026-01-06T11:55:34.095Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-06T11:55:36.676Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T11:56:08.307Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-06T11:56:08.309Z] [INFO] POST /api/auth/logout 200 9ms +[2026-01-06T11:56:08.314Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-06T11:56:08.315Z] [INFO] POST /api/auth/logout 200 4ms +[2026-01-06T11:56:08.341Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (nqLnhvRutX9wHLnLAABF) +[2026-01-06T11:56:13.458Z] [INFO] POST /api/auth/login 200 416ms +[2026-01-06T11:56:13.457Z] [INFO] Login erfolgreich: admin +[2026-01-06T11:56:13.498Z] [INFO] GET / 200 4ms +[2026-01-06T11:56:13.577Z] [INFO] GET /css/variables.css 200 7ms +[2026-01-06T11:56:13.579Z] [INFO] GET /css/base.css 200 8ms +[2026-01-06T11:56:13.583Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-06T11:56:13.585Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-06T11:56:13.587Z] [INFO] GET /css/board.css 200 5ms +[2026-01-06T11:56:13.588Z] [INFO] GET /css/components.css 200 4ms +[2026-01-06T11:56:13.604Z] [INFO] GET /css/list.css 200 1ms +[2026-01-06T11:56:13.610Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-06T11:56:13.636Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-06T11:56:13.637Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-06T11:56:13.640Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-06T11:56:13.643Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-06T11:56:13.645Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-06T11:56:13.651Z] [INFO] GET /css/reminders.css 200 1ms +[2026-01-06T11:56:13.663Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-06T11:56:13.672Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-06T11:56:13.678Z] [INFO] GET /js/app.js 200 3ms +[2026-01-06T11:56:13.693Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-06T11:56:13.733Z] [INFO] GET /js/utils.js 200 7ms +[2026-01-06T11:56:13.735Z] [INFO] GET /js/store.js 200 5ms +[2026-01-06T11:56:13.738Z] [INFO] GET /js/api.js 200 6ms +[2026-01-06T11:56:13.743Z] [INFO] GET /js/offline.js 200 2ms +[2026-01-06T11:56:13.745Z] [INFO] GET /js/auth.js 200 2ms +[2026-01-06T11:56:13.747Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-06T11:56:13.764Z] [INFO] GET /js/board.js 200 3ms +[2026-01-06T11:56:13.770Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-06T11:56:13.772Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-06T11:56:13.779Z] [INFO] GET /js/list.js 200 3ms +[2026-01-06T11:56:13.779Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-06T11:56:13.781Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-06T11:56:13.807Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-06T11:56:13.813Z] [INFO] GET /js/notifications.js 200 8ms +[2026-01-06T11:56:13.815Z] [INFO] GET /js/admin.js 200 5ms +[2026-01-06T11:56:13.819Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-06T11:56:13.821Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-06T11:56:13.829Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-06T11:56:13.840Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T11:56:13.883Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T11:56:13.889Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-06T11:56:13.892Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-06T11:56:13.929Z] [INFO] GET /api/admin/users 200 8ms +[2026-01-06T11:56:13.972Z] [INFO] GET /api/admin/upload-settings 200 9ms +[2026-01-06T11:56:15.444Z] [INFO] GET /sw.js 200 2ms +[2026-01-06T11:56:15.485Z] [INFO] GET / 200 9ms +[2026-01-06T11:56:15.487Z] [INFO] GET /css/variables.css 200 9ms +[2026-01-06T11:56:15.489Z] [INFO] GET /index.html 200 7ms +[2026-01-06T11:56:15.520Z] [INFO] GET /css/base.css 200 2ms +[2026-01-06T11:56:15.543Z] [INFO] GET /css/components.css 200 3ms +[2026-01-06T11:56:15.552Z] [INFO] GET /css/board.css 200 5ms +[2026-01-06T11:56:15.554Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-06T11:56:15.577Z] [INFO] GET /css/calendar.css 200 2ms +[2026-01-06T11:56:15.585Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-06T11:56:15.609Z] [INFO] GET /js/app.js 200 2ms +[2026-01-06T11:56:15.616Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-06T11:56:15.620Z] [INFO] GET /js/api.js 200 6ms +[2026-01-06T11:56:15.648Z] [INFO] GET /js/auth.js 200 2ms +[2026-01-06T11:56:15.652Z] [INFO] GET /js/store.js 200 2ms +[2026-01-06T11:56:15.678Z] [INFO] GET /js/sync.js 200 3ms +[2026-01-06T11:56:15.681Z] [INFO] GET /js/offline.js 200 1ms +[2026-01-06T11:56:15.707Z] [INFO] GET /js/board.js 200 2ms +[2026-01-06T11:56:15.712Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-06T11:56:15.723Z] [INFO] GET /js/calendar.js 200 1ms +[2026-01-06T11:56:15.766Z] [INFO] GET /js/list.js 200 4ms +[2026-01-06T11:56:15.767Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-06T11:56:15.770Z] [INFO] GET /js/undo.js 200 6ms +[2026-01-06T11:56:15.796Z] [INFO] GET /js/tour.js 200 1ms +[2026-01-06T11:56:15.797Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T11:56:15.801Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-06T11:56:15.827Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-06T11:56:15.829Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-06T11:56:15.832Z] [INFO] GET /js/knowledge.js 200 1ms +[2026-01-06T11:56:15.859Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-06T11:56:15.865Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-06T11:56:15.866Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T11:56:15.888Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T11:56:15.895Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-06T11:56:15.898Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T11:56:15.917Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-06T11:56:15.926Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-06T11:56:15.930Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-06T11:56:15.944Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-06T11:56:15.956Z] [INFO] GET /css/coding.css 200 1ms +[2026-01-06T11:56:15.961Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-06T11:56:17.276Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T11:56:18.534Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T11:56:20.579Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-06T11:56:28.707Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T11:56:31.739Z] [INFO] Admin admin hat Benutzer momohomma@googlemail.com bearbeitet +[2026-01-06T11:56:31.740Z] [INFO] PUT /api/admin/users/4 200 501ms +[2026-01-06T11:56:31.782Z] [INFO] GET /api/admin/users 304 8ms +[2026-01-06T11:56:32.250Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T11:57:10.023Z] [INFO] Logout: admin +[2026-01-06T11:57:10.024Z] [INFO] POST /api/auth/logout 200 5ms +[2026-01-06T11:57:10.065Z] [INFO] GET / 200 2ms +[2026-01-06T11:57:10.137Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-06T11:57:10.141Z] [INFO] GET /css/base.css 200 3ms +[2026-01-06T11:57:10.142Z] [INFO] GET /css/components.css 200 3ms +[2026-01-06T11:57:10.143Z] [INFO] GET /css/board.css 200 3ms +[2026-01-06T11:57:10.145Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-06T11:57:10.146Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-06T11:57:10.167Z] [INFO] GET /css/list.css 200 1ms +[2026-01-06T11:57:10.170Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-06T11:57:10.200Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-06T11:57:10.202Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-06T11:57:10.205Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-06T11:57:10.208Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-06T11:57:10.211Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-06T11:57:10.212Z] [INFO] GET /css/reminders.css 200 5ms +[2026-01-06T11:57:10.230Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-06T11:57:10.236Z] [INFO] GET /js/app.js 200 3ms +[2026-01-06T11:57:10.238Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-06T11:57:10.243Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-06T11:57:10.285Z] [INFO] GET /js/store.js 200 5ms +[2026-01-06T11:57:10.287Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-06T11:57:10.290Z] [INFO] GET /js/api.js 200 7ms +[2026-01-06T11:57:10.298Z] [INFO] GET /js/auth.js 200 5ms +[2026-01-06T11:57:10.300Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-06T11:57:10.301Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-06T11:57:10.316Z] [INFO] GET /js/board.js 200 2ms +[2026-01-06T11:57:10.317Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-06T11:57:10.329Z] [INFO] GET /js/list.js 200 2ms +[2026-01-06T11:57:10.330Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-06T11:57:10.333Z] [INFO] GET /js/calendar.js 200 1ms +[2026-01-06T11:57:10.342Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-06T11:57:10.360Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T11:57:10.365Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-06T11:57:10.371Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-06T11:57:10.377Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-06T11:57:10.379Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-06T11:57:10.384Z] [INFO] GET /js/knowledge.js 200 1ms +[2026-01-06T11:57:10.388Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-06T11:57:10.426Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-06T11:57:11.954Z] [INFO] GET /sw.js 200 3ms +[2026-01-06T11:57:15.339Z] [INFO] POST /api/auth/login 200 449ms +[2026-01-06T11:57:15.339Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-06T11:57:15.378Z] [INFO] GET / 200 3ms +[2026-01-06T11:57:15.444Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-06T11:57:15.447Z] [INFO] GET /css/calendar.css 200 2ms +[2026-01-06T11:57:15.453Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-06T11:57:15.455Z] [INFO] GET /css/board.css 200 4ms +[2026-01-06T11:57:15.457Z] [INFO] GET /css/base.css 200 5ms +[2026-01-06T11:57:15.459Z] [INFO] GET /css/components.css 200 4ms +[2026-01-06T11:57:15.482Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T11:57:15.487Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-06T11:57:15.508Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-06T11:57:15.508Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-06T11:57:15.520Z] [INFO] GET /css/proposals.css 200 6ms +[2026-01-06T11:57:15.523Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-06T11:57:15.525Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-06T11:57:15.527Z] [INFO] GET /css/reminders.css 200 5ms +[2026-01-06T11:57:15.540Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-06T11:57:15.539Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-06T11:57:15.556Z] [INFO] GET /js/app.js 200 3ms +[2026-01-06T11:57:15.559Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-06T11:57:15.592Z] [INFO] GET /js/utils.js 200 7ms +[2026-01-06T11:57:15.595Z] [INFO] GET /js/store.js 200 5ms +[2026-01-06T11:57:15.597Z] [INFO] GET /js/api.js 200 3ms +[2026-01-06T11:57:15.618Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-06T11:57:15.621Z] [INFO] GET /js/board.js 200 5ms +[2026-01-06T11:57:15.624Z] [INFO] GET /js/auth.js 200 5ms +[2026-01-06T11:57:15.625Z] [INFO] GET /js/offline.js 200 2ms +[2026-01-06T11:57:15.628Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-06T11:57:15.651Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-06T11:57:15.655Z] [INFO] GET /js/list.js 200 2ms +[2026-01-06T11:57:15.658Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-06T11:57:15.662Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-06T11:57:15.679Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-06T11:57:15.686Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-06T11:57:15.688Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-06T11:57:15.692Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-06T11:57:15.695Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-06T11:57:15.702Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-06T11:57:15.709Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-06T11:57:15.764Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T11:57:15.769Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-06T11:57:15.771Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-06T11:57:15.808Z] [INFO] GET /api/auth/users 304 8ms +[2026-01-06T11:57:15.837Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (3-UJEfEYcrKSGasxAABH) +[2026-01-06T11:57:15.846Z] [INFO] GET /api/projects 304 6ms +[2026-01-06T11:57:15.880Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T11:57:15.889Z] [INFO] GET /api/stats/dashboard?projectId=2 304 7ms +[2026-01-06T11:57:15.895Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-06T11:57:15.900Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-06T11:57:15.914Z] [INFO] GET /api/tasks/project/2 304 14ms +[2026-01-06T11:57:15.921Z] [INFO] GET /api/reminders?project_id=2 304 3ms +[2026-01-06T11:57:15.962Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-06T11:57:15.999Z] [INFO] GET /api/notifications 304 5ms +[2026-01-06T11:57:16.036Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-06T11:57:17.501Z] [INFO] GET /sw.js 200 3ms +[2026-01-06T11:57:18.174Z] [INFO] GET /api/reminders/3 304 6ms +[2026-01-06T11:57:18.380Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T11:57:21.414Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T11:57:35.342Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T11:57:36.959Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T11:57:37.195Z] [DEBUG] Benachrichtigungstermine erstellt für Reminder 3 +[2026-01-06T11:57:37.196Z] [INFO] PUT /api/reminders/3 200 11ms +[2026-01-06T11:57:37.238Z] [INFO] GET /api/reminders/3 200 9ms +[2026-01-06T11:57:37.275Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-06T11:57:37.326Z] [INFO] GET /api/tasks/project/2 304 24ms +[2026-01-06T11:57:37.334Z] [INFO] GET /api/labels/2 304 2ms +[2026-01-06T11:57:37.338Z] [INFO] GET /api/reminders?project_id=2 200 2ms +[2026-01-06T11:57:38.190Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-06T11:57:42.118Z] [INFO] GET /api/reminders/3 304 9ms +[2026-01-06T11:57:42.279Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T11:57:50.018Z] [INFO] POST /api/auth/refresh 200 4ms +[2026-01-06T11:58:20.998Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-06T12:00:30.262Z] [INFO] 1 fällige Erinnerung(en) gefunden +[2026-01-06T12:00:30.268Z] [INFO] Reminder-Benachrichtigung gesendet: "Testerinnerung" (2 Tage vorher) +[2026-01-06T12:00:30.267Z] [INFO] Benachrichtigung erstellt: reminder:due für User 1 +[2026-01-06T12:05:30.266Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T12:10:30.272Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T12:13:18.964Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-06T12:13:18.966Z] [INFO] POST /api/auth/logout 200 14ms +[2026-01-06T12:13:18.997Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (3-UJEfEYcrKSGasxAABH) +[2026-01-06T12:15:30.273Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T12:20:30.280Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T12:25:30.279Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T12:29:24.920Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-06T12:29:24.921Z] [INFO] POST /api/auth/login 200 461ms +[2026-01-06T12:29:24.963Z] [INFO] GET / 200 6ms +[2026-01-06T12:29:25.037Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-06T12:29:25.066Z] [INFO] GET /css/base.css 200 2ms +[2026-01-06T12:29:25.095Z] [INFO] GET /css/board.css 200 2ms +[2026-01-06T12:29:25.096Z] [INFO] GET /css/components.css 200 2ms +[2026-01-06T12:29:25.103Z] [INFO] GET /css/modal.css 200 1ms +[2026-01-06T12:29:25.107Z] [INFO] GET /css/calendar.css 200 1ms +[2026-01-06T12:29:25.108Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T12:29:25.115Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T12:29:25.127Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-06T12:29:25.148Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-06T12:29:25.158Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-06T12:29:25.159Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-06T12:29:25.166Z] [INFO] GET /css/reminders.css 200 5ms +[2026-01-06T12:29:25.169Z] [INFO] GET /css/knowledge.css 200 4ms +[2026-01-06T12:29:25.170Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-06T12:29:25.177Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-06T12:29:25.191Z] [INFO] GET /js/app.js 200 2ms +[2026-01-06T12:29:25.197Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-06T12:29:25.226Z] [INFO] GET /js/store.js 200 1ms +[2026-01-06T12:29:25.230Z] [INFO] GET /js/api.js 200 1ms +[2026-01-06T12:29:25.231Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-06T12:29:25.256Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-06T12:29:25.257Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-06T12:29:25.264Z] [INFO] GET /js/board.js 200 2ms +[2026-01-06T12:29:25.270Z] [INFO] GET /js/auth.js 200 2ms +[2026-01-06T12:29:25.272Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-06T12:29:25.273Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-06T12:29:25.287Z] [INFO] GET /js/list.js 200 2ms +[2026-01-06T12:29:25.287Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-06T12:29:25.302Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-06T12:29:25.305Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-06T12:29:25.319Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-06T12:29:25.320Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-06T12:29:25.323Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-06T12:29:25.329Z] [INFO] GET /js/coding.js 200 1ms +[2026-01-06T12:29:25.330Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-06T12:29:25.338Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-06T12:29:25.376Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T12:29:25.382Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-06T12:29:25.386Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-06T12:29:25.427Z] [INFO] GET /api/auth/users 304 8ms +[2026-01-06T12:29:25.458Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (JiAhWS_AxVsxkddfAABJ) +[2026-01-06T12:29:25.466Z] [INFO] GET /api/projects 304 6ms +[2026-01-06T12:29:25.496Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T12:29:25.511Z] [INFO] GET /api/stats/dashboard?projectId=2 304 9ms +[2026-01-06T12:29:25.532Z] [INFO] GET /api/tasks/project/2 304 17ms +[2026-01-06T12:29:25.537Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-06T12:29:25.541Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-06T12:29:25.546Z] [INFO] GET /api/reminders?project_id=2 304 3ms +[2026-01-06T12:29:25.596Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-06T12:29:25.631Z] [INFO] GET /api/notifications 200 4ms +[2026-01-06T12:29:25.693Z] [INFO] GET /api/knowledge/categories 304 8ms +[2026-01-06T12:29:27.156Z] [INFO] GET /sw.js 200 3ms +[2026-01-06T12:29:27.198Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-06T12:29:27.202Z] [INFO] GET / 200 7ms +[2026-01-06T12:29:27.203Z] [INFO] GET /index.html 200 6ms +[2026-01-06T12:29:27.229Z] [INFO] GET /css/base.css 200 1ms +[2026-01-06T12:29:27.263Z] [INFO] GET /css/components.css 200 4ms +[2026-01-06T12:29:27.265Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-06T12:29:27.268Z] [INFO] GET /css/board.css 200 6ms +[2026-01-06T12:29:27.299Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-06T12:29:27.306Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-06T12:29:27.321Z] [INFO] GET /js/app.js 200 2ms +[2026-01-06T12:29:27.329Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-06T12:29:27.336Z] [INFO] GET /js/api.js 200 1ms +[2026-01-06T12:29:27.358Z] [INFO] GET /js/auth.js 200 1ms +[2026-01-06T12:29:27.369Z] [INFO] GET /js/store.js 200 2ms +[2026-01-06T12:29:27.378Z] [INFO] GET /js/sync.js 200 1ms +[2026-01-06T12:29:27.400Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-06T12:29:27.405Z] [INFO] GET /js/board.js 200 2ms +[2026-01-06T12:29:27.424Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-06T12:29:27.431Z] [INFO] GET /js/calendar.js 200 1ms +[2026-01-06T12:29:27.436Z] [INFO] GET /js/list.js 200 2ms +[2026-01-06T12:29:27.455Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-06T12:29:27.467Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-06T12:29:27.472Z] [INFO] GET /js/tour.js 200 3ms +[2026-01-06T12:29:27.492Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-06T12:29:27.502Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-06T12:29:27.503Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-06T12:29:27.522Z] [INFO] GET /js/gitea.js 200 1ms +[2026-01-06T12:29:27.532Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-06T12:29:27.541Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-06T12:29:27.555Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T12:29:27.563Z] [INFO] GET /js/reminders.js 200 1ms +[2026-01-06T12:29:27.572Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T12:29:27.590Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-06T12:29:27.597Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-06T12:29:27.605Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-06T12:29:27.635Z] [INFO] GET /css/notifications.css 200 8ms +[2026-01-06T12:29:27.637Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-06T12:29:27.662Z] [INFO] GET /css/knowledge.css 200 13ms +[2026-01-06T12:29:27.681Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-06T12:29:27.682Z] [INFO] GET /css/reminders.css 200 5ms +[2026-01-06T12:29:28.152Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T12:29:28.486Z] [INFO] GET /api/reminders/3 304 6ms +[2026-01-06T12:29:34.036Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-06T12:29:36.417Z] [DEBUG] Benachrichtigungstermine erstellt für Reminder 3 +[2026-01-06T12:29:36.420Z] [INFO] PUT /api/reminders/3 200 13ms +[2026-01-06T12:29:36.458Z] [INFO] GET /api/reminders/3 200 7ms +[2026-01-06T12:29:36.500Z] [INFO] GET /api/labels/2 304 6ms +[2026-01-06T12:29:36.519Z] [INFO] GET /api/tasks/project/2 304 17ms +[2026-01-06T12:29:36.524Z] [INFO] GET /api/reminders?project_id=2 200 4ms +[2026-01-06T12:29:36.527Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-06T12:29:37.405Z] [INFO] POST /api/auth/refresh 200 3ms +[2026-01-06T12:29:40.378Z] [INFO] PUT /api/notifications/11/read 200 8ms +[2026-01-06T12:29:40.781Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T12:29:47.462Z] [INFO] GET /api/reminders/3 304 7ms +[2026-01-06T12:29:49.798Z] [INFO] DELETE /api/reminders/3 200 6ms +[2026-01-06T12:29:49.842Z] [INFO] GET /api/columns/2 304 8ms +[2026-01-06T12:29:49.849Z] [INFO] GET /api/reminders?project_id=2 200 5ms +[2026-01-06T12:29:49.865Z] [INFO] GET /api/tasks/project/2 304 15ms +[2026-01-06T12:29:49.869Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-06T12:29:49.890Z] [INFO] GET /api/reminders?project_id=2 304 9ms +[2026-01-06T12:29:49.928Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-06T12:29:49.950Z] [INFO] GET /api/tasks/project/2 304 25ms +[2026-01-06T12:29:49.956Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-06T12:29:49.960Z] [INFO] GET /api/reminders?project_id=2 304 8ms +[2026-01-06T12:29:50.813Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T12:29:53.693Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-06T12:29:54.171Z] [INFO] DELETE /api/notifications/11 200 11ms +[2026-01-06T12:29:54.617Z] [INFO] DELETE /api/notifications/10 200 10ms +[2026-01-06T12:29:58.254Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T12:30:30.280Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T12:31:02.735Z] [INFO] GET / 200 4ms +[2026-01-06T12:31:02.794Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (JiAhWS_AxVsxkddfAABJ) +[2026-01-06T12:31:02.804Z] [INFO] GET /css/variables.css 200 1ms +[2026-01-06T12:31:02.811Z] [INFO] GET /css/components.css 200 4ms +[2026-01-06T12:31:02.812Z] [INFO] GET /css/board.css 200 4ms +[2026-01-06T12:31:02.813Z] [INFO] GET /css/base.css 200 4ms +[2026-01-06T12:31:02.834Z] [INFO] GET /css/modal.css 200 1ms +[2026-01-06T12:31:02.839Z] [INFO] GET /css/calendar.css 200 2ms +[2026-01-06T12:31:02.866Z] [INFO] GET /css/list.css 200 6ms +[2026-01-06T12:31:02.869Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-06T12:31:02.873Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-06T12:31:02.875Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-06T12:31:02.878Z] [INFO] GET /css/gitea.css 200 7ms +[2026-01-06T12:31:02.901Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-06T12:31:02.903Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-06T12:31:02.906Z] [INFO] GET /css/reminders.css 200 7ms +[2026-01-06T12:31:02.909Z] [INFO] GET /css/responsive.css 200 7ms +[2026-01-06T12:31:02.910Z] [INFO] GET /css/mobile.css 200 5ms +[2026-01-06T12:31:02.940Z] [INFO] GET /js/reminders.js 200 4ms +[2026-01-06T12:31:02.942Z] [INFO] GET /js/app.js 200 5ms +[2026-01-06T12:31:03.023Z] [INFO] GET /js/auth.js 200 5ms +[2026-01-06T12:31:03.026Z] [INFO] GET /js/api.js 200 6ms +[2026-01-06T12:31:03.029Z] [INFO] GET /js/sync.js 200 7ms +[2026-01-06T12:31:03.032Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-06T12:31:03.035Z] [INFO] GET /js/store.js 200 7ms +[2026-01-06T12:31:03.037Z] [INFO] GET /js/board.js 200 7ms +[2026-01-06T12:31:03.056Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-06T12:31:03.062Z] [INFO] GET /js/calendar.js 200 7ms +[2026-01-06T12:31:03.066Z] [INFO] GET /js/list.js 200 3ms +[2026-01-06T12:31:03.069Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-06T12:31:03.071Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-06T12:31:03.087Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T12:31:03.095Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-06T12:31:03.096Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-06T12:31:03.099Z] [INFO] GET /js/gitea.js 200 1ms +[2026-01-06T12:31:03.100Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-06T12:31:03.103Z] [INFO] GET /js/coding.js 200 1ms +[2026-01-06T12:31:03.116Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T12:31:03.124Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-06T12:31:03.165Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T12:31:03.170Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-06T12:31:03.175Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-06T12:31:03.212Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-06T12:31:03.240Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (sZ06RwQLxgK5dVIrAABL) +[2026-01-06T12:31:03.250Z] [INFO] GET /api/projects 304 6ms +[2026-01-06T12:31:03.284Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T12:31:03.296Z] [INFO] GET /api/stats/dashboard?projectId=2 304 10ms +[2026-01-06T12:31:03.306Z] [INFO] GET /api/labels/2 304 7ms +[2026-01-06T12:31:03.327Z] [INFO] GET /api/tasks/project/2 304 20ms +[2026-01-06T12:31:03.338Z] [INFO] GET /api/columns/2 304 9ms +[2026-01-06T12:31:03.342Z] [INFO] GET /api/reminders?project_id=2 304 3ms +[2026-01-06T12:31:03.387Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 3ms +[2026-01-06T12:31:03.431Z] [INFO] GET /api/notifications 200 4ms +[2026-01-06T12:31:03.466Z] [INFO] GET /api/knowledge/categories 304 4ms +[2026-01-06T12:31:08.696Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T12:31:10.545Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T12:31:11.579Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T12:31:13.951Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-06T12:31:15.814Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T12:31:18.551Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-06T12:31:20.418Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T12:31:22.000Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T12:31:26.208Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-06T12:31:41.475Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T12:31:45.270Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (sZ06RwQLxgK5dVIrAABL) +[2026-01-06T12:35:30.283Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T12:40:30.285Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T12:45:30.287Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T12:50:30.293Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T12:55:30.291Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T13:00:30.292Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T13:05:30.292Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T13:08:29.119Z] [WARN] Login fehlgeschlagen: Falsches Passwort - momohomma@googlemail.com (Versuch 3) +[2026-01-06T13:08:29.121Z] [INFO] POST /api/auth/login 401 513ms +[2026-01-06T13:10:30.293Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T13:15:30.294Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T13:20:30.298Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T13:25:30.296Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T13:30:30.326Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T13:35:30.354Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T13:40:30.373Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T13:45:30.401Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T13:50:30.405Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T13:55:30.435Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T14:00:30.465Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T14:05:07.106Z] [INFO] POST / 200 18ms +[2026-01-06T14:05:30.480Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T14:10:30.489Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T14:15:30.490Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T14:20:30.494Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T14:25:30.513Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T14:30:30.544Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T14:35:30.560Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T14:40:30.569Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T14:45:30.591Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T14:50:30.596Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T14:55:30.617Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T15:00:22.102Z] [INFO] GET / 200 4ms +[2026-01-06T15:00:30.620Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T15:01:21.574Z] [INFO] GET / 200 5ms +[2026-01-06T15:05:30.627Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T15:10:30.653Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T15:15:30.680Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T15:20:30.684Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T15:25:30.699Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T15:30:30.717Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T15:35:30.733Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T15:40:30.738Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T15:45:30.763Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T15:50:30.768Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T15:55:30.784Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T16:00:30.804Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T16:05:30.819Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T16:10:30.845Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T16:15:30.859Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T16:20:30.861Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T16:22:55.135Z] [INFO] POST / 200 19ms +[2026-01-06T16:25:30.885Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T16:30:30.914Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T16:35:30.922Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T16:40:30.930Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T16:45:30.936Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T16:50:30.940Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T16:53:42.923Z] [INFO] GET / 200 2ms +[2026-01-06T16:53:43.864Z] [INFO] GET /wordpress/ 200 6ms +[2026-01-06T16:55:30.963Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T17:00:30.987Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T17:05:31.000Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T17:10:31.025Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T17:15:31.032Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T17:20:31.033Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T17:25:31.039Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T17:30:31.050Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T17:35:31.062Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T17:40:31.085Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T17:45:31.104Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T17:50:31.108Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T17:55:31.122Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T18:00:31.144Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T18:05:31.159Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T18:10:31.173Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T18:15:31.183Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T18:20:31.186Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T18:25:31.190Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T18:30:31.210Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T18:35:31.218Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T18:40:31.222Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T18:45:31.236Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T18:47:31.020Z] [INFO] POST / 200 19ms +[2026-01-06T18:50:31.240Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T18:55:31.252Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T19:00:31.264Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T19:05:31.283Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T19:10:31.285Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T19:15:31.292Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T19:20:31.292Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T19:25:31.310Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T19:30:31.313Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T19:35:31.321Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T19:39:06.320Z] [INFO] POST / 200 4ms +[2026-01-06T19:39:06.365Z] [INFO] POST /_next 200 3ms +[2026-01-06T19:39:06.417Z] [INFO] POST /api 200 6ms +[2026-01-06T19:39:06.466Z] [INFO] POST /_next/server 200 3ms +[2026-01-06T19:39:06.511Z] [INFO] POST /app 200 4ms +[2026-01-06T19:39:06.553Z] [INFO] POST /api/route 404 1ms +[2026-01-06T19:40:31.338Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T19:45:31.358Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T19:50:31.358Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T19:55:02.923Z] [INFO] HEAD / 200 2ms +[2026-01-06T19:55:03.643Z] [INFO] GET / 206 6ms +[2026-01-06T19:55:04.384Z] [INFO] HEAD /_next 200 3ms +[2026-01-06T19:55:05.374Z] [INFO] POST / 200 4ms +[2026-01-06T19:55:05.758Z] [INFO] POST /_next 200 4ms +[2026-01-06T19:55:31.374Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T20:00:31.390Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T20:05:31.405Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T20:10:31.408Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T20:12:05.892Z] [INFO] GET / 200 3ms +[2026-01-06T20:12:05.954Z] [INFO] GET /css/base.css 200 4ms +[2026-01-06T20:12:05.957Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-06T20:12:05.996Z] [INFO] GET /css/components.css 200 7ms +[2026-01-06T20:12:06.005Z] [INFO] GET /css/board.css 200 13ms +[2026-01-06T20:12:06.009Z] [INFO] GET /css/modal.css 200 15ms +[2026-01-06T20:12:06.011Z] [INFO] GET /css/admin.css 200 7ms +[2026-01-06T20:12:06.013Z] [INFO] GET /css/list.css 200 5ms +[2026-01-06T20:12:06.014Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-06T20:12:06.039Z] [INFO] GET /css/proposals.css 200 6ms +[2026-01-06T20:12:06.042Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-06T20:12:06.046Z] [INFO] GET /css/reminders.css 200 8ms +[2026-01-06T20:12:06.049Z] [INFO] GET /css/gitea.css 200 8ms +[2026-01-06T20:12:06.050Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-06T20:12:06.053Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-06T20:12:06.060Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-06T20:12:06.064Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-06T20:12:06.094Z] [INFO] GET /js/app.js 200 8ms +[2026-01-06T20:12:06.096Z] [INFO] GET /js/reminders.js 200 5ms +[2026-01-06T20:12:06.131Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-06T20:12:06.132Z] [INFO] GET /js/api.js 200 5ms +[2026-01-06T20:12:06.135Z] [INFO] GET /js/store.js 200 6ms +[2026-01-06T20:12:06.142Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-06T20:12:06.144Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-06T20:12:06.146Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-06T20:12:06.153Z] [INFO] GET /js/board.js 200 2ms +[2026-01-06T20:12:06.165Z] [INFO] GET /js/task-modal.js 200 7ms +[2026-01-06T20:12:06.174Z] [INFO] GET /js/list.js 200 6ms +[2026-01-06T20:12:06.175Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-06T20:12:06.177Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-06T20:12:06.180Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-06T20:12:06.195Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-06T20:12:06.206Z] [INFO] GET /js/admin.js 200 6ms +[2026-01-06T20:12:06.208Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-06T20:12:06.211Z] [INFO] GET /js/knowledge.js 200 7ms +[2026-01-06T20:12:06.212Z] [INFO] GET /js/notifications.js 200 9ms +[2026-01-06T20:12:06.215Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-06T20:12:06.222Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-06T20:12:06.450Z] [INFO] GET /api/auth/users 401 3ms +[2026-01-06T20:12:06.522Z] [INFO] GET /assets/icons/task.svg 200 5ms +[2026-01-06T20:12:08.159Z] [INFO] GET /sw.js 200 3ms +[2026-01-06T20:12:08.202Z] [INFO] GET / 200 6ms +[2026-01-06T20:12:08.204Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-06T20:12:08.208Z] [INFO] GET /index.html 200 8ms +[2026-01-06T20:12:08.239Z] [INFO] GET /sw.js 200 2ms +[2026-01-06T20:12:08.245Z] [INFO] GET /css/base.css 200 3ms +[2026-01-06T20:12:08.273Z] [INFO] GET /css/components.css 200 4ms +[2026-01-06T20:12:08.278Z] [INFO] GET /css/board.css 200 2ms +[2026-01-06T20:12:08.282Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-06T20:12:08.307Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-06T20:12:08.314Z] [INFO] GET /js/app.js 200 3ms +[2026-01-06T20:12:08.317Z] [INFO] GET /css/responsive.css 200 5ms +[2026-01-06T20:12:08.341Z] [INFO] GET /js/utils.js 200 8ms +[2026-01-06T20:12:08.372Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-06T20:12:08.377Z] [INFO] GET /js/api.js 200 10ms +[2026-01-06T20:12:08.380Z] [INFO] GET /js/store.js 200 10ms +[2026-01-06T20:12:08.396Z] [INFO] GET /js/sync.js 200 1ms +[2026-01-06T20:12:08.412Z] [INFO] GET /js/offline.js 200 2ms +[2026-01-06T20:12:08.415Z] [INFO] GET /js/board.js 200 2ms +[2026-01-06T20:12:08.420Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-06T20:12:08.437Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-06T20:12:08.447Z] [INFO] GET /js/list.js 200 3ms +[2026-01-06T20:12:08.452Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-06T20:12:08.511Z] [INFO] GET /js/undo.js 200 6ms +[2026-01-06T20:12:08.514Z] [INFO] GET /js/tour.js 200 6ms +[2026-01-06T20:12:08.516Z] [INFO] GET /js/admin.js 200 6ms +[2026-01-06T20:12:08.543Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-06T20:12:08.550Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-06T20:12:08.551Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-06T20:12:08.568Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-06T20:12:08.575Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-06T20:12:08.579Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T20:12:08.597Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-06T20:12:08.604Z] [INFO] GET /css/list.css 200 3ms +[2026-01-06T20:12:08.605Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-06T20:12:08.622Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T20:12:08.636Z] [INFO] GET /css/proposals.css 200 7ms +[2026-01-06T20:12:08.637Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-06T20:12:08.648Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-06T20:12:08.658Z] [INFO] GET /css/knowledge.css 200 1ms +[2026-01-06T20:12:08.663Z] [INFO] GET /css/coding.css 200 1ms +[2026-01-06T20:12:08.669Z] [INFO] GET /css/reminders.css 200 1ms +[2026-01-06T20:15:31.424Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T20:20:31.428Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T20:25:31.440Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T20:29:59.759Z] [INFO] GET / 200 7ms +[2026-01-06T20:29:59.819Z] [INFO] GET /css/variables.css 200 1ms +[2026-01-06T20:29:59.854Z] [INFO] GET /css/base.css 200 2ms +[2026-01-06T20:29:59.889Z] [INFO] GET /css/components.css 200 5ms +[2026-01-06T20:29:59.891Z] [INFO] GET /css/board.css 200 9ms +[2026-01-06T20:29:59.893Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-06T20:29:59.900Z] [INFO] GET /css/calendar.css 200 12ms +[2026-01-06T20:29:59.903Z] [INFO] GET /css/list.css 200 3ms +[2026-01-06T20:29:59.905Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-06T20:29:59.924Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-06T20:29:59.945Z] [INFO] GET /css/gitea.css 200 1ms +[2026-01-06T20:29:59.946Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-06T20:29:59.947Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-06T20:29:59.950Z] [INFO] GET /css/knowledge.css 200 1ms +[2026-01-06T20:29:59.970Z] [INFO] GET /css/reminders.css 200 4ms +[2026-01-06T20:29:59.972Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-06T20:29:59.985Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-06T20:29:59.986Z] [INFO] GET /js/app.js 200 6ms +[2026-01-06T20:29:59.989Z] [INFO] GET /js/reminders.js 200 5ms +[2026-01-06T20:30:00.035Z] [INFO] GET /js/store.js 200 2ms +[2026-01-06T20:30:00.036Z] [INFO] GET /js/api.js 200 2ms +[2026-01-06T20:30:00.045Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-06T20:30:00.053Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-06T20:30:00.056Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-06T20:30:00.058Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-06T20:30:00.064Z] [INFO] GET /js/board.js 200 2ms +[2026-01-06T20:30:00.070Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-06T20:30:00.076Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-06T20:30:00.078Z] [INFO] GET /js/list.js 200 3ms +[2026-01-06T20:30:00.086Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-06T20:30:00.094Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T20:30:00.101Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-06T20:30:00.105Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-06T20:30:00.106Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-06T20:30:00.118Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-06T20:30:00.125Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-06T20:30:00.127Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-06T20:30:00.132Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T20:30:00.212Z] [INFO] GET /sw.js 200 3ms +[2026-01-06T20:30:00.213Z] [INFO] GET /assets/icons/task.svg 200 5ms +[2026-01-06T20:30:00.251Z] [INFO] GET /index.html 200 2ms +[2026-01-06T20:30:00.253Z] [INFO] GET / 200 4ms +[2026-01-06T20:30:00.262Z] [INFO] GET /css/variables.css 200 1ms +[2026-01-06T20:30:00.289Z] [INFO] GET /css/base.css 200 2ms +[2026-01-06T20:30:00.296Z] [INFO] GET /css/components.css 200 3ms +[2026-01-06T20:30:00.298Z] [INFO] GET /css/board.css 200 4ms +[2026-01-06T20:30:00.322Z] [INFO] GET /css/modal.css 200 2ms +[2026-01-06T20:30:00.330Z] [INFO] GET /css/calendar.css 200 2ms +[2026-01-06T20:30:00.335Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-06T20:30:00.378Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-06T20:30:00.379Z] [INFO] GET /js/app.js 200 2ms +[2026-01-06T20:30:00.385Z] [INFO] GET /js/api.js 200 1ms +[2026-01-06T20:30:00.410Z] [INFO] GET /js/auth.js 200 2ms +[2026-01-06T20:30:00.417Z] [INFO] GET /js/store.js 200 3ms +[2026-01-06T20:30:00.419Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-06T20:30:00.443Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-06T20:30:00.449Z] [INFO] GET /js/board.js 200 3ms +[2026-01-06T20:30:00.453Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-06T20:30:00.474Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-06T20:30:00.482Z] [INFO] GET /js/list.js 200 3ms +[2026-01-06T20:30:00.487Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-06T20:30:00.513Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-06T20:30:00.521Z] [INFO] GET /js/tour.js 200 3ms +[2026-01-06T20:30:00.529Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T20:30:00.541Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-06T20:30:00.550Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-06T20:30:00.564Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-06T20:30:00.587Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-06T20:30:00.590Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-06T20:30:00.596Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-06T20:30:00.623Z] [INFO] GET /js/reminders.js 200 4ms +[2026-01-06T20:30:00.625Z] [INFO] GET /css/list.css 200 4ms +[2026-01-06T20:30:00.630Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-06T20:30:00.662Z] [INFO] GET /css/proposals.css 200 9ms +[2026-01-06T20:30:00.666Z] [INFO] GET /css/admin.css 200 8ms +[2026-01-06T20:30:00.668Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-06T20:30:00.696Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-06T20:30:00.699Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-06T20:30:00.713Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-06T20:30:00.731Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-06T20:30:10.344Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-06T20:30:10.347Z] [INFO] POST /api/auth/login 200 480ms +[2026-01-06T20:30:10.388Z] [INFO] GET / 200 4ms +[2026-01-06T20:30:10.468Z] [INFO] GET /css/variables.css 200 1ms +[2026-01-06T20:30:10.473Z] [INFO] GET /css/components.css 200 2ms +[2026-01-06T20:30:10.474Z] [INFO] GET /css/board.css 200 3ms +[2026-01-06T20:30:10.475Z] [INFO] GET /css/base.css 200 3ms +[2026-01-06T20:30:10.480Z] [INFO] GET /css/modal.css 200 1ms +[2026-01-06T20:30:10.481Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-06T20:30:10.499Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T20:30:10.507Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T20:30:10.532Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-06T20:30:10.533Z] [INFO] GET /css/proposals.css 200 5ms +[2026-01-06T20:30:10.541Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-06T20:30:10.542Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-06T20:30:10.542Z] [INFO] GET /css/reminders.css 200 4ms +[2026-01-06T20:30:10.545Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-06T20:30:10.566Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-06T20:30:10.570Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-06T20:30:10.578Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-06T20:30:10.582Z] [INFO] GET /js/app.js 200 5ms +[2026-01-06T20:30:10.610Z] [INFO] GET /js/store.js 200 1ms +[2026-01-06T20:30:10.615Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-06T20:30:10.614Z] [INFO] GET /js/api.js 200 1ms +[2026-01-06T20:30:10.655Z] [INFO] GET /js/auth.js 200 8ms +[2026-01-06T20:30:10.657Z] [INFO] GET /js/offline.js 200 9ms +[2026-01-06T20:30:10.660Z] [INFO] GET /js/board.js 200 9ms +[2026-01-06T20:30:10.661Z] [INFO] GET /js/task-modal.js 200 9ms +[2026-01-06T20:30:10.669Z] [INFO] GET /js/sync.js 200 2ms +[2026-01-06T20:30:10.671Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-06T20:30:10.687Z] [INFO] GET /js/list.js 200 2ms +[2026-01-06T20:30:10.688Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-06T20:30:10.693Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-06T20:30:10.703Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-06T20:30:10.716Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-06T20:30:10.724Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-06T20:30:10.728Z] [INFO] GET /js/gitea.js 200 7ms +[2026-01-06T20:30:10.731Z] [INFO] GET /js/knowledge.js 200 8ms +[2026-01-06T20:30:10.733Z] [INFO] GET /js/coding.js 200 7ms +[2026-01-06T20:30:10.739Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-06T20:30:10.797Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T20:30:10.803Z] [INFO] GET /api/auth/users 200 3ms +[2026-01-06T20:30:10.805Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2026-01-06T20:30:10.846Z] [INFO] GET /api/auth/users 304 9ms +[2026-01-06T20:30:10.884Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (iVCCUdjx1wgfN3lBAABN) +[2026-01-06T20:30:10.892Z] [INFO] GET /api/projects 200 4ms +[2026-01-06T20:30:10.936Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T20:30:10.941Z] [INFO] GET /api/columns/2 200 4ms +[2026-01-06T20:30:10.961Z] [INFO] GET /api/tasks/project/2 200 19ms +[2026-01-06T20:30:10.967Z] [INFO] GET /api/labels/2 200 5ms +[2026-01-06T20:30:10.971Z] [INFO] GET /api/stats/dashboard?projectId=2 200 8ms +[2026-01-06T20:30:10.980Z] [INFO] GET /api/reminders?project_id=2 200 4ms +[2026-01-06T20:30:11.029Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 5ms +[2026-01-06T20:30:11.068Z] [INFO] GET /api/notifications 200 7ms +[2026-01-06T20:30:11.107Z] [INFO] GET /api/knowledge/categories 200 7ms +[2026-01-06T20:30:12.583Z] [INFO] GET /sw.js 200 2ms +[2026-01-06T20:30:31.448Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T20:35:31.465Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T20:36:54.373Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-06T20:36:54.899Z] [INFO] readCLAUDEmd: Checking path /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-06T20:36:54.900Z] [INFO] readCLAUDEmd: File does not exist: /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-06T20:36:54.900Z] [INFO] Trying fallback path for TaskMate: /app/taskmate-source +[2026-01-06T20:36:54.901Z] [INFO] readCLAUDEmd: Checking path /app/taskmate-source/CLAUDE.md +[2026-01-06T20:36:54.902Z] [INFO] readCLAUDEmd: Successfully read 17738 characters from /app/taskmate-source/CLAUDE.md +[2026-01-06T20:36:54.903Z] [INFO] GET /api/coding/directories 200 9ms +[2026-01-06T20:36:54.968Z] [INFO] Git directory exists: true +[2026-01-06T20:36:54.969Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-06T20:36:55.078Z] [INFO] GET /api/coding/directories/3/status 200 114ms +[2026-01-06T20:36:54.969Z] [INFO] Git directory exists: true +[2026-01-06T20:36:54.968Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-06T20:36:55.915Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-06T20:36:57.013Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T20:36:59.017Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T20:37:12.769Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T20:37:12.825Z] [INFO] GET /api/tasks/6 200 12ms +[2026-01-06T20:37:12.872Z] [INFO] GET /api/subtasks/6 200 8ms +[2026-01-06T20:37:12.898Z] [INFO] GET /api/links/6 200 6ms +[2026-01-06T20:37:12.906Z] [INFO] GET /api/files/6 200 6ms +[2026-01-06T20:37:12.939Z] [INFO] GET /api/comments/6 200 11ms +[2026-01-06T20:37:12.947Z] [INFO] GET /api/tasks/6/history 404 5ms +[2026-01-06T20:37:12.975Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzczMTgzMiwiZXhwIjoxNzY3NzMyNzMyfQ.b1NWXKATdGAgGff5ncZ258eQztKx8T-SnC7uzJPivsI 200 9ms +[2026-01-06T20:37:13.816Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T20:37:16.103Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-06T20:37:16.105Z] [INFO] PUT /api/tasks/6 200 15ms +[2026-01-06T20:37:17.093Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-06T20:37:18.543Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T20:37:20.818Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T20:37:22.825Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T20:40:31.479Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T20:45:31.482Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T20:50:31.481Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T20:52:20.984Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-06T20:52:20.986Z] [INFO] POST /api/auth/logout 200 15ms +[2026-01-06T20:52:21.015Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (iVCCUdjx1wgfN3lBAABN) +[2026-01-06T20:55:31.492Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T20:56:38.249Z] [INFO] GET / 200 7ms +[2026-01-06T20:56:38.329Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-06T20:56:38.360Z] [INFO] GET /css/base.css 200 2ms +[2026-01-06T20:56:38.387Z] [INFO] GET /css/components.css 200 3ms +[2026-01-06T20:56:38.407Z] [INFO] GET /css/board.css 200 6ms +[2026-01-06T20:56:38.407Z] [INFO] GET /css/modal.css 200 2ms +[2026-01-06T20:56:38.414Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-06T20:56:38.415Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T20:56:38.417Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-06T20:56:38.421Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-06T20:56:38.448Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-06T20:56:38.467Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-06T20:56:38.478Z] [INFO] GET /css/knowledge.css 200 7ms +[2026-01-06T20:56:38.480Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-06T20:56:38.483Z] [INFO] GET /css/reminders.css 200 9ms +[2026-01-06T20:56:38.487Z] [INFO] GET /css/responsive.css 200 8ms +[2026-01-06T20:56:38.490Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-06T20:56:38.518Z] [INFO] GET /js/app.js 200 7ms +[2026-01-06T20:56:38.521Z] [INFO] GET /js/reminders.js 200 6ms +[2026-01-06T20:56:38.558Z] [INFO] GET /js/utils.js 200 5ms +[2026-01-06T20:56:38.560Z] [INFO] GET /js/store.js 200 5ms +[2026-01-06T20:56:38.563Z] [INFO] GET /js/api.js 200 7ms +[2026-01-06T20:56:38.579Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-06T20:56:38.582Z] [INFO] GET /js/auth.js 200 5ms +[2026-01-06T20:56:38.584Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-06T20:56:38.590Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-06T20:56:38.595Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-06T20:56:38.596Z] [INFO] GET /js/board.js 200 4ms +[2026-01-06T20:56:38.607Z] [INFO] GET /js/list.js 200 2ms +[2026-01-06T20:56:38.616Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-06T20:56:38.617Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-06T20:56:38.621Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T20:56:38.625Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-06T20:56:38.639Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-06T20:56:38.651Z] [INFO] GET /js/knowledge.js 200 6ms +[2026-01-06T20:56:38.654Z] [INFO] GET /js/gitea.js 200 7ms +[2026-01-06T20:56:38.658Z] [INFO] GET /js/mobile.js 200 6ms +[2026-01-06T20:56:38.662Z] [INFO] GET /js/coding.js 200 6ms +[2026-01-06T20:56:38.724Z] [INFO] GET /assets/icons/task.svg 200 5ms +[2026-01-06T20:56:43.406Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-06T20:56:43.407Z] [INFO] POST /api/auth/login 200 469ms +[2026-01-06T20:56:43.444Z] [INFO] GET / 200 3ms +[2026-01-06T20:56:43.520Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-06T20:56:43.523Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-06T20:56:43.525Z] [INFO] GET /css/components.css 200 6ms +[2026-01-06T20:56:43.527Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-06T20:56:43.530Z] [INFO] GET /css/base.css 200 6ms +[2026-01-06T20:56:43.532Z] [INFO] GET /css/board.css 200 4ms +[2026-01-06T20:56:43.551Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T20:56:43.560Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-06T20:56:43.580Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-06T20:56:43.584Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-06T20:56:43.586Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-06T20:56:43.589Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-06T20:56:43.590Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-06T20:56:43.593Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-06T20:56:43.610Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-06T20:56:43.615Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-06T20:56:43.616Z] [INFO] GET /js/app.js 200 2ms +[2026-01-06T20:56:43.627Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-06T20:56:43.661Z] [INFO] GET /js/api.js 200 3ms +[2026-01-06T20:56:43.662Z] [INFO] GET /js/store.js 200 3ms +[2026-01-06T20:56:43.664Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-06T20:56:43.677Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-06T20:56:43.679Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-06T20:56:43.681Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-06T20:56:43.696Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-06T20:56:43.699Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-06T20:56:43.704Z] [INFO] GET /js/board.js 200 2ms +[2026-01-06T20:56:43.710Z] [INFO] GET /js/shortcuts.js 200 1ms +[2026-01-06T20:56:43.713Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-06T20:56:43.716Z] [INFO] GET /js/list.js 200 6ms +[2026-01-06T20:56:43.737Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-06T20:56:43.742Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T20:56:43.744Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-06T20:56:43.762Z] [INFO] GET /js/knowledge.js 200 10ms +[2026-01-06T20:56:43.764Z] [INFO] GET /js/gitea.js 200 10ms +[2026-01-06T20:56:43.766Z] [INFO] GET /js/coding.js 200 7ms +[2026-01-06T20:56:43.770Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-06T20:56:43.830Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T20:56:43.835Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-06T20:56:43.840Z] [INFO] GET /api/auth/users 200 6ms +[2026-01-06T20:56:43.875Z] [INFO] GET /api/auth/users 304 3ms +[2026-01-06T20:56:43.905Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (rnWaFwJybqrbbEpNAABP) +[2026-01-06T20:56:43.911Z] [INFO] GET /api/projects 200 4ms +[2026-01-06T20:56:43.959Z] [INFO] GET /api/stats/dashboard?projectId=2 200 11ms +[2026-01-06T20:56:43.979Z] [INFO] GET /api/tasks/project/2 200 30ms +[2026-01-06T20:56:43.983Z] [INFO] GET /api/columns/2 200 4ms +[2026-01-06T20:56:43.985Z] [INFO] GET /api/labels/2 200 5ms +[2026-01-06T20:56:43.986Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T20:56:43.990Z] [INFO] GET /api/reminders?project_id=2 200 3ms +[2026-01-06T20:56:44.042Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 6ms +[2026-01-06T20:56:44.073Z] [INFO] GET /api/notifications 200 7ms +[2026-01-06T20:56:44.104Z] [INFO] GET /api/knowledge/categories 200 4ms +[2026-01-06T20:56:45.570Z] [INFO] GET /sw.js 200 4ms +[2026-01-06T21:00:31.493Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T21:05:02.945Z] [INFO] POST / 200 17ms +[2026-01-06T21:05:31.494Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T21:08:53.940Z] [INFO] SIGTERM empfangen, fahre herunter... +[2026-01-06T21:08:53.944Z] [INFO] Reminder Service gestoppt +[2026-01-06T21:09:08.235Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-06T21:09:08.341Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-06T21:09:08.878Z] [INFO] Admin-Passwort bereits korrekt +[2026-01-06T21:09:08.879Z] [INFO] Datenbank initialisiert +[2026-01-06T21:09:08.888Z] [INFO] Server läuft auf Port 3001 +[2026-01-06T21:09:08.891Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-06T21:09:08.890Z] [INFO] Umgebung: development +[2026-01-06T21:09:08.895Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T21:09:08.893Z] [INFO] Automatische Backups aktiviert +[2026-01-06T21:09:08.897Z] [INFO] Reminder Service gestartet - prüft alle 5 Minuten +[2026-01-06T21:09:12.237Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (MRuNm4ahB_3LNcoHAAAB) +[2026-01-06T21:09:12.295Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T21:10:08.916Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-06T21-10-08-895Z.db.enc +[2026-01-06T21:10:08.917Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-06T21-10-08-895Z.db.enc +[2026-01-06T21:10:08.942Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-06T21:10:08.918Z] [INFO] Backup erstellt: backup_2026-01-06T21-10-08-895Z.db +[2026-01-06T21:10:08.940Z] [INFO] Datei sicher gelöscht: backup_2026-01-04T00-52-34-063Z.db.enc +[2026-01-06T21:10:08.941Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-04T00-52-34-063Z.db.enc +[2026-01-06T21:11:59.331Z] [INFO] POST /api/auth/logout 401 7ms +[2026-01-06T21:11:59.368Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (MRuNm4ahB_3LNcoHAAAB) +[2026-01-06T21:14:08.914Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T21:17:37.979Z] [WARN] Login fehlgeschlagen: Falsches Passwort - momohomma@googlemail.com (Versuch 2) +[2026-01-06T21:17:37.981Z] [INFO] POST /api/auth/login 401 451ms +[2026-01-06T21:17:45.597Z] [WARN] Login fehlgeschlagen: Falsches Passwort - momohomma@googlemail.com (Versuch 3) +[2026-01-06T21:17:45.599Z] [INFO] POST /api/auth/login 401 471ms +[2026-01-06T21:17:53.183Z] [INFO] Login erfolgreich: admin +[2026-01-06T21:17:53.185Z] [INFO] POST /api/auth/login 200 437ms +[2026-01-06T21:17:53.237Z] [INFO] GET / 200 18ms +[2026-01-06T21:17:53.297Z] [INFO] GET /css/variables.css 200 7ms +[2026-01-06T21:17:53.299Z] [INFO] GET /css/base.css 200 5ms +[2026-01-06T21:17:53.334Z] [INFO] GET /css/components.css 200 13ms +[2026-01-06T21:17:53.338Z] [INFO] GET /css/board.css 200 15ms +[2026-01-06T21:17:53.345Z] [INFO] GET /css/modal.css 200 14ms +[2026-01-06T21:17:53.347Z] [INFO] GET /css/calendar.css 200 10ms +[2026-01-06T21:17:53.348Z] [INFO] GET /css/list.css 200 8ms +[2026-01-06T21:17:53.350Z] [INFO] GET /css/admin.css 200 9ms +[2026-01-06T21:17:53.374Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-06T21:17:53.379Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-06T21:17:53.383Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-06T21:17:53.385Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-06T21:17:53.386Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-06T21:17:53.412Z] [INFO] GET /css/responsive.css 200 6ms +[2026-01-06T21:17:53.416Z] [INFO] GET /css/reminders.css 200 8ms +[2026-01-06T21:17:53.420Z] [INFO] GET /css/contacts.css 200 10ms +[2026-01-06T21:17:53.425Z] [INFO] GET /css/mobile.css 200 10ms +[2026-01-06T21:17:53.427Z] [INFO] GET /js/app.js 200 4ms +[2026-01-06T21:17:53.433Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-06T21:17:53.440Z] [INFO] GET /js/contacts.js 200 2ms +[2026-01-06T21:17:53.467Z] [INFO] GET /js/utils.js 200 7ms +[2026-01-06T21:17:53.475Z] [INFO] GET /js/store.js 200 13ms +[2026-01-06T21:17:53.477Z] [INFO] GET /js/api.js 200 12ms +[2026-01-06T21:17:53.479Z] [INFO] GET /js/auth.js 200 9ms +[2026-01-06T21:17:53.481Z] [INFO] GET /js/offline.js 200 10ms +[2026-01-06T21:17:53.483Z] [INFO] GET /js/sync.js 200 10ms +[2026-01-06T21:17:53.492Z] [INFO] GET /js/board.js 200 4ms +[2026-01-06T21:17:53.501Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-06T21:17:53.511Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-06T21:17:53.514Z] [INFO] GET /js/shortcuts.js 200 6ms +[2026-01-06T21:17:53.516Z] [INFO] GET /js/list.js 200 9ms +[2026-01-06T21:17:53.518Z] [INFO] GET /js/undo.js 200 5ms +[2026-01-06T21:17:53.531Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-06T21:17:53.542Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-06T21:17:53.543Z] [INFO] GET /js/notifications.js 200 7ms +[2026-01-06T21:17:53.549Z] [INFO] GET /js/gitea.js 200 9ms +[2026-01-06T21:17:53.551Z] [INFO] GET /js/knowledge.js 200 7ms +[2026-01-06T21:17:53.554Z] [INFO] GET /js/coding.js 200 7ms +[2026-01-06T21:17:53.560Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T21:17:53.621Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T21:17:53.630Z] [INFO] GET /api/contacts 404 22ms +[2026-01-06T21:17:53.793Z] [INFO] GET /api/auth/users 200 5ms +[2026-01-06T21:17:53.871Z] [INFO] GET /api/admin/users 200 8ms +[2026-01-06T21:17:53.913Z] [INFO] GET /api/admin/upload-settings 200 5ms +[2026-01-06T21:17:54.395Z] [INFO] GET /assets/icons/task.svg 200 5ms +[2026-01-06T21:17:55.509Z] [INFO] GET /sw.js 200 2ms +[2026-01-06T21:17:55.544Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-06T21:17:55.549Z] [INFO] GET /index.html 200 8ms +[2026-01-06T21:17:55.550Z] [INFO] GET / 200 8ms +[2026-01-06T21:17:55.566Z] [INFO] GET /css/base.css 200 3ms +[2026-01-06T21:17:55.588Z] [INFO] GET /css/components.css 200 3ms +[2026-01-06T21:17:55.590Z] [INFO] GET /css/board.css 200 3ms +[2026-01-06T21:17:55.599Z] [INFO] GET /css/modal.css 200 7ms +[2026-01-06T21:17:55.617Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-06T21:17:55.625Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-06T21:17:55.632Z] [INFO] GET /js/app.js 200 2ms +[2026-01-06T21:17:55.643Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-06T21:17:55.646Z] [INFO] GET /js/api.js 200 1ms +[2026-01-06T21:17:55.670Z] [INFO] GET /js/auth.js 200 3ms +[2026-01-06T21:17:55.679Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-06T21:17:55.681Z] [INFO] GET /js/store.js 200 5ms +[2026-01-06T21:17:55.702Z] [INFO] GET /js/offline.js 200 2ms +[2026-01-06T21:17:55.704Z] [INFO] GET /js/board.js 200 3ms +[2026-01-06T21:17:55.706Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-06T21:17:55.739Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-06T21:17:55.744Z] [INFO] GET /js/list.js 200 7ms +[2026-01-06T21:17:55.747Z] [INFO] GET /js/shortcuts.js 200 7ms +[2026-01-06T21:17:55.770Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-06T21:17:55.778Z] [INFO] GET /js/tour.js 200 2ms +[2026-01-06T21:17:55.779Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T21:17:55.798Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-06T21:17:55.809Z] [INFO] GET /js/notifications.js 200 8ms +[2026-01-06T21:17:55.811Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-06T21:17:55.820Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-06T21:17:55.831Z] [INFO] GET /js/coding.js 200 1ms +[2026-01-06T21:17:55.843Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-06T21:17:55.847Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-06T21:17:55.854Z] [INFO] GET /js/contacts.js 200 2ms +[2026-01-06T21:17:55.872Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T21:17:55.873Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-06T21:17:55.875Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-06T21:17:55.898Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-06T21:17:55.902Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-06T21:17:55.903Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-06T21:17:55.919Z] [INFO] GET /css/knowledge.css 200 1ms +[2026-01-06T21:17:55.927Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-06T21:17:55.928Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-06T21:17:55.942Z] [INFO] GET /css/contacts.css 200 1ms +[2026-01-06T21:17:57.476Z] [INFO] POST /api/auth/refresh 200 15ms +[2026-01-06T21:17:58.802Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-06T21:18:02.486Z] [INFO] Logout: admin +[2026-01-06T21:18:02.488Z] [INFO] POST /api/auth/logout 200 5ms +[2026-01-06T21:18:02.515Z] [INFO] GET / 200 2ms +[2026-01-06T21:18:02.571Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-06T21:18:02.573Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-06T21:18:02.575Z] [INFO] GET /css/components.css 200 5ms +[2026-01-06T21:18:02.577Z] [INFO] GET /css/base.css 200 5ms +[2026-01-06T21:18:02.578Z] [INFO] GET /css/board.css 200 4ms +[2026-01-06T21:18:02.579Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-06T21:18:02.603Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T21:18:02.604Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T21:18:02.613Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-06T21:18:02.616Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-06T21:18:02.620Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-06T21:18:02.621Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-06T21:18:02.623Z] [INFO] GET /css/knowledge.css 200 1ms +[2026-01-06T21:18:02.627Z] [INFO] GET /css/reminders.css 200 1ms +[2026-01-06T21:18:02.632Z] [INFO] GET /css/contacts.css 200 1ms +[2026-01-06T21:18:02.635Z] [INFO] GET /css/responsive.css 200 1ms +[2026-01-06T21:18:02.642Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-06T21:18:02.649Z] [INFO] GET /js/app.js 200 5ms +[2026-01-06T21:18:02.652Z] [INFO] GET /js/reminders.js 200 5ms +[2026-01-06T21:18:02.672Z] [INFO] GET /js/contacts.js 200 4ms +[2026-01-06T21:18:02.693Z] [INFO] GET /js/store.js 200 3ms +[2026-01-06T21:18:02.697Z] [INFO] GET /js/api.js 200 5ms +[2026-01-06T21:18:02.703Z] [INFO] GET /js/auth.js 200 8ms +[2026-01-06T21:18:02.705Z] [INFO] GET /js/sync.js 200 10ms +[2026-01-06T21:18:02.707Z] [INFO] GET /js/offline.js 200 9ms +[2026-01-06T21:18:02.709Z] [INFO] GET /js/board.js 200 8ms +[2026-01-06T21:18:02.718Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-06T21:18:02.722Z] [INFO] GET /js/calendar.js 200 1ms +[2026-01-06T21:18:02.726Z] [INFO] GET /js/list.js 200 2ms +[2026-01-06T21:18:02.731Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-06T21:18:02.732Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-06T21:18:02.751Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T21:18:02.768Z] [INFO] GET /js/proposals.js 200 13ms +[2026-01-06T21:18:02.770Z] [INFO] GET /js/notifications.js 200 12ms +[2026-01-06T21:18:02.771Z] [INFO] GET /js/gitea.js 200 12ms +[2026-01-06T21:18:02.774Z] [INFO] GET /js/knowledge.js 200 14ms +[2026-01-06T21:18:02.777Z] [INFO] GET /js/coding.js 200 13ms +[2026-01-06T21:18:02.780Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T21:18:02.792Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-06T21:18:02.821Z] [INFO] GET /api/contacts 404 3ms +[2026-01-06T21:18:02.893Z] [INFO] GET /assets/icons/task.svg 304 4ms +[2026-01-06T21:18:04.458Z] [INFO] GET /sw.js 200 2ms +[2026-01-06T21:18:45.780Z] [INFO] GET / 200 3ms +[2026-01-06T21:18:45.856Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-06T21:18:45.889Z] [INFO] GET /css/base.css 200 2ms +[2026-01-06T21:18:45.928Z] [INFO] GET /css/components.css 200 3ms +[2026-01-06T21:18:45.931Z] [INFO] GET /css/board.css 200 5ms +[2026-01-06T21:18:45.938Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-06T21:18:45.940Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-06T21:18:45.948Z] [INFO] GET /css/list.css 200 0ms +[2026-01-06T21:18:45.971Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T21:18:45.980Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-06T21:18:45.997Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-06T21:18:46.004Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-06T21:18:46.004Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-06T21:18:46.008Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-06T21:18:46.009Z] [INFO] GET /css/reminders.css 200 6ms +[2026-01-06T21:18:46.027Z] [INFO] GET /css/contacts.css 200 2ms +[2026-01-06T21:18:46.038Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-06T21:18:46.039Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-06T21:18:46.060Z] [INFO] GET /js/app.js 200 4ms +[2026-01-06T21:18:46.063Z] [INFO] GET /js/contacts.js 200 2ms +[2026-01-06T21:18:46.064Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-06T21:18:46.125Z] [INFO] GET /js/api.js 200 9ms +[2026-01-06T21:18:46.127Z] [INFO] GET /js/utils.js 200 10ms +[2026-01-06T21:18:46.133Z] [INFO] GET /js/store.js 200 11ms +[2026-01-06T21:18:46.135Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-06T21:18:46.137Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-06T21:18:46.138Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-06T21:18:46.155Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-06T21:18:46.160Z] [INFO] GET /js/board.js 200 3ms +[2026-01-06T21:18:46.166Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-06T21:18:46.171Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-06T21:18:46.173Z] [INFO] GET /js/list.js 200 3ms +[2026-01-06T21:18:46.177Z] [INFO] GET /js/undo.js 200 6ms +[2026-01-06T21:18:46.204Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-06T21:18:46.236Z] [INFO] GET /js/notifications.js 200 6ms +[2026-01-06T21:18:46.238Z] [INFO] GET /js/admin.js 200 7ms +[2026-01-06T21:18:46.240Z] [INFO] GET /js/gitea.js 200 7ms +[2026-01-06T21:18:46.247Z] [INFO] GET /js/knowledge.js 200 5ms +[2026-01-06T21:18:46.252Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T21:18:46.255Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-06T21:18:46.313Z] [INFO] GET /api/contacts 404 1ms +[2026-01-06T21:18:46.321Z] [INFO] GET /assets/icons/task.svg 200 4ms +[2026-01-06T21:18:50.748Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-06T21:18:50.750Z] [INFO] POST /api/auth/login 200 461ms +[2026-01-06T21:18:50.787Z] [INFO] GET / 200 3ms +[2026-01-06T21:18:50.864Z] [INFO] GET /css/board.css 200 5ms +[2026-01-06T21:18:50.865Z] [INFO] GET /css/base.css 200 5ms +[2026-01-06T21:18:50.872Z] [INFO] GET /css/components.css 200 10ms +[2026-01-06T21:18:50.874Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-06T21:18:50.876Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-06T21:18:50.877Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-06T21:18:50.899Z] [INFO] GET /css/list.css 200 3ms +[2026-01-06T21:18:50.910Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-06T21:18:50.918Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-06T21:18:50.932Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-06T21:18:50.935Z] [INFO] GET /css/gitea.css 200 7ms +[2026-01-06T21:18:50.939Z] [INFO] GET /css/coding.css 200 10ms +[2026-01-06T21:18:50.945Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-06T21:18:50.961Z] [INFO] GET /css/contacts.css 200 1ms +[2026-01-06T21:18:50.968Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-06T21:18:50.970Z] [INFO] GET /js/app.js 200 4ms +[2026-01-06T21:18:50.971Z] [INFO] GET /css/reminders.css 200 4ms +[2026-01-06T21:18:50.974Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-06T21:18:50.974Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-06T21:18:50.998Z] [INFO] GET /js/contacts.js 200 2ms +[2026-01-06T21:18:51.046Z] [INFO] GET /js/store.js 200 6ms +[2026-01-06T21:18:51.050Z] [INFO] GET /js/sync.js 200 8ms +[2026-01-06T21:18:51.052Z] [INFO] GET /js/api.js 200 9ms +[2026-01-06T21:18:51.055Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-06T21:18:51.056Z] [INFO] GET /js/offline.js 200 2ms +[2026-01-06T21:18:51.059Z] [INFO] GET /js/board.js 200 2ms +[2026-01-06T21:18:51.078Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-06T21:18:51.085Z] [INFO] GET /js/list.js 200 2ms +[2026-01-06T21:18:51.088Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-06T21:18:51.092Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-06T21:18:51.102Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-06T21:18:51.118Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-06T21:18:51.120Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-06T21:18:51.123Z] [INFO] GET /js/notifications.js 200 1ms +[2026-01-06T21:18:51.133Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-06T21:18:51.132Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-06T21:18:51.146Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-06T21:18:51.151Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T21:18:51.152Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-06T21:18:51.189Z] [INFO] POST /api/auth/refresh 200 4ms +[2026-01-06T21:18:51.192Z] [INFO] GET /api/contacts 404 2ms +[2026-01-06T21:18:51.194Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-06T21:18:51.197Z] [INFO] GET /api/auth/users 304 3ms +[2026-01-06T21:18:51.232Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-06T21:18:51.277Z] [INFO] GET /api/projects 304 12ms +[2026-01-06T21:18:51.284Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (OxDyn2KIpVSIwZSUAAAD) +[2026-01-06T21:18:51.320Z] [INFO] GET /api/columns/2 304 9ms +[2026-01-06T21:18:51.345Z] [INFO] GET /api/tasks/project/2 200 24ms +[2026-01-06T21:18:51.361Z] [INFO] GET /api/labels/2 304 7ms +[2026-01-06T21:18:51.371Z] [INFO] GET /api/stats/dashboard?projectId=2 304 6ms +[2026-01-06T21:18:51.376Z] [INFO] GET /api/reminders?project_id=2 200 4ms +[2026-01-06T21:18:51.379Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T21:18:51.420Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 9ms +[2026-01-06T21:18:51.459Z] [INFO] GET /api/notifications 304 7ms +[2026-01-06T21:18:51.503Z] [INFO] GET /api/knowledge/categories 304 11ms +[2026-01-06T21:18:52.978Z] [INFO] GET /sw.js 200 3ms +[2026-01-06T21:18:53.017Z] [INFO] GET /index.html 200 5ms +[2026-01-06T21:18:53.018Z] [INFO] GET / 200 5ms +[2026-01-06T21:18:53.019Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-06T21:18:53.074Z] [INFO] GET /css/base.css 200 3ms +[2026-01-06T21:18:53.080Z] [INFO] GET /css/board.css 200 2ms +[2026-01-06T21:18:53.089Z] [INFO] GET /css/components.css 200 2ms +[2026-01-06T21:18:53.113Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-06T21:18:53.121Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-06T21:18:53.129Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-06T21:18:53.147Z] [INFO] GET /js/app.js 200 2ms +[2026-01-06T21:18:53.169Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-06T21:18:53.177Z] [INFO] GET /js/auth.js 200 2ms +[2026-01-06T21:18:53.180Z] [INFO] GET /js/api.js 200 1ms +[2026-01-06T21:18:53.198Z] [INFO] GET /js/store.js 200 1ms +[2026-01-06T21:18:53.212Z] [INFO] GET /js/sync.js 200 2ms +[2026-01-06T21:18:53.229Z] [INFO] GET /js/offline.js 200 2ms +[2026-01-06T21:18:53.244Z] [INFO] GET /js/board.js 200 4ms +[2026-01-06T21:18:53.246Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-06T21:18:53.258Z] [INFO] GET /js/calendar.js 200 1ms +[2026-01-06T21:18:53.275Z] [INFO] GET /api/contacts 404 1ms +[2026-01-06T21:18:53.278Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-06T21:18:53.279Z] [INFO] GET /js/list.js 200 2ms +[2026-01-06T21:18:53.310Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-06T21:18:53.314Z] [INFO] GET /js/tour.js 200 6ms +[2026-01-06T21:18:53.319Z] [INFO] GET /js/admin.js 200 3ms +[2026-01-06T21:18:53.347Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-06T21:18:53.352Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-06T21:18:53.360Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-06T21:18:53.378Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-06T21:18:53.389Z] [INFO] GET /js/coding.js 200 6ms +[2026-01-06T21:18:53.398Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-06T21:18:53.427Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-06T21:18:53.435Z] [INFO] GET /js/contacts.js 200 3ms +[2026-01-06T21:18:53.441Z] [INFO] GET /css/list.css 200 1ms +[2026-01-06T21:18:53.465Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-06T21:18:53.476Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-06T21:18:53.500Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-06T21:18:53.505Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-06T21:18:53.513Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-06T21:18:53.534Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-06T21:18:53.539Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-06T21:18:53.544Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-06T21:18:53.563Z] [INFO] GET /css/contacts.css 200 2ms +[2026-01-06T21:18:54.291Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T21:18:58.939Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T21:19:01.462Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T21:19:03.720Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (OxDyn2KIpVSIwZSUAAAD) +[2026-01-06T21:19:07.402Z] [INFO] GET / 200 3ms +[2026-01-06T21:19:07.476Z] [INFO] GET /css/variables.css 200 3ms +[2026-01-06T21:19:07.486Z] [INFO] GET /css/components.css 200 5ms +[2026-01-06T21:19:07.488Z] [INFO] GET /css/base.css 200 5ms +[2026-01-06T21:19:07.491Z] [INFO] GET /css/board.css 200 6ms +[2026-01-06T21:19:07.492Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-06T21:19:07.494Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-06T21:19:07.504Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T21:19:07.524Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-06T21:19:07.541Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-06T21:19:07.544Z] [INFO] GET /css/notifications.css 200 2ms +[2026-01-06T21:19:07.548Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-06T21:19:07.553Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-06T21:19:07.557Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-06T21:19:07.564Z] [INFO] GET /css/reminders.css 200 1ms +[2026-01-06T21:19:07.567Z] [INFO] GET /css/contacts.css 200 1ms +[2026-01-06T21:19:07.573Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-06T21:19:07.576Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-06T21:19:07.585Z] [INFO] GET /js/app.js 200 2ms +[2026-01-06T21:19:07.594Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-06T21:19:07.595Z] [INFO] GET /js/contacts.js 200 2ms +[2026-01-06T21:19:07.639Z] [INFO] GET /js/store.js 200 6ms +[2026-01-06T21:19:07.645Z] [INFO] GET /js/api.js 200 10ms +[2026-01-06T21:19:07.653Z] [INFO] GET /js/auth.js 200 15ms +[2026-01-06T21:19:07.659Z] [INFO] GET /js/board.js 200 16ms +[2026-01-06T21:19:07.663Z] [INFO] GET /js/sync.js 200 16ms +[2026-01-06T21:19:07.665Z] [INFO] GET /js/offline.js 200 15ms +[2026-01-06T21:19:07.668Z] [INFO] GET /js/task-modal.js 200 1ms +[2026-01-06T21:19:07.675Z] [INFO] GET /js/calendar.js 200 1ms +[2026-01-06T21:19:07.681Z] [INFO] GET /js/list.js 200 2ms +[2026-01-06T21:19:07.694Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-06T21:19:07.695Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-06T21:19:07.712Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-06T21:19:07.716Z] [INFO] GET /js/admin.js 200 6ms +[2026-01-06T21:19:07.718Z] [INFO] GET /js/notifications.js 200 4ms +[2026-01-06T21:19:07.726Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-06T21:19:07.728Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-06T21:19:07.730Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-06T21:19:07.742Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-06T21:19:07.745Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-06T21:19:07.817Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T21:19:07.820Z] [INFO] GET /api/contacts 404 1ms +[2026-01-06T21:19:07.824Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-06T21:19:07.828Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-06T21:19:07.861Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-06T21:19:07.899Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (ODaQnPBffnv4P3SYAAAF) +[2026-01-06T21:19:07.905Z] [INFO] GET /api/projects 304 4ms +[2026-01-06T21:19:07.936Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T21:19:07.947Z] [INFO] GET /api/stats/dashboard?projectId=2 304 8ms +[2026-01-06T21:19:07.952Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-06T21:19:07.959Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-06T21:19:07.979Z] [INFO] GET /api/tasks/project/2 304 20ms +[2026-01-06T21:19:07.985Z] [INFO] GET /api/reminders?project_id=2 304 3ms +[2026-01-06T21:19:08.043Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2026-01-06T21:19:08.085Z] [INFO] GET /api/notifications 304 9ms +[2026-01-06T21:19:08.131Z] [INFO] GET /api/knowledge/categories 304 6ms +[2026-01-06T21:19:08.914Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T21:19:09.590Z] [INFO] GET /api/contacts 404 2ms +[2026-01-06T21:19:09.612Z] [INFO] GET /sw.js 200 2ms +[2026-01-06T21:19:10.600Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T21:19:12.404Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T21:24:08.914Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T21:24:25.321Z] [INFO] GET / 200 4ms +[2026-01-06T21:24:25.382Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (ODaQnPBffnv4P3SYAAAF) +[2026-01-06T21:24:25.394Z] [INFO] GET /css/variables.css 200 1ms +[2026-01-06T21:24:25.425Z] [INFO] GET /css/base.css 200 2ms +[2026-01-06T21:24:25.457Z] [INFO] GET /css/components.css 200 2ms +[2026-01-06T21:24:25.463Z] [INFO] GET /css/board.css 200 1ms +[2026-01-06T21:24:25.472Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-06T21:24:25.474Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-06T21:24:25.476Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-06T21:24:25.477Z] [INFO] GET /css/list.css 200 6ms +[2026-01-06T21:24:25.481Z] [INFO] GET /css/proposals.css 200 1ms +[2026-01-06T21:24:25.515Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-06T21:24:25.517Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-06T21:24:25.523Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-06T21:24:25.527Z] [INFO] GET /css/knowledge.css 200 5ms +[2026-01-06T21:24:25.528Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-06T21:24:25.532Z] [INFO] GET /css/contacts.css 200 1ms +[2026-01-06T21:24:25.546Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-06T21:24:25.566Z] [INFO] GET /css/mobile.css 200 15ms +[2026-01-06T21:24:25.578Z] [INFO] GET /js/reminders.js 200 18ms +[2026-01-06T21:24:25.579Z] [INFO] GET /js/app.js 200 18ms +[2026-01-06T21:24:25.583Z] [INFO] GET /js/contacts.js 200 9ms +[2026-01-06T21:24:25.696Z] [INFO] GET /js/store.js 200 11ms +[2026-01-06T21:24:25.700Z] [INFO] GET /js/api.js 200 12ms +[2026-01-06T21:24:25.701Z] [INFO] GET /js/offline.js 200 12ms +[2026-01-06T21:24:25.706Z] [INFO] GET /js/auth.js 200 12ms +[2026-01-06T21:24:25.710Z] [INFO] GET /js/sync.js 200 11ms +[2026-01-06T21:24:25.712Z] [INFO] GET /js/board.js 200 9ms +[2026-01-06T21:24:25.728Z] [INFO] GET /js/task-modal.js 200 5ms +[2026-01-06T21:24:25.737Z] [INFO] GET /js/calendar.js 200 7ms +[2026-01-06T21:24:25.740Z] [INFO] GET /js/list.js 200 8ms +[2026-01-06T21:24:25.743Z] [INFO] GET /js/shortcuts.js 200 8ms +[2026-01-06T21:24:25.747Z] [INFO] GET /js/undo.js 200 3ms +[2026-01-06T21:24:25.780Z] [INFO] GET /js/admin.js 200 12ms +[2026-01-06T21:24:25.786Z] [INFO] GET /js/proposals.js 200 15ms +[2026-01-06T21:24:25.792Z] [INFO] GET /js/gitea.js 200 17ms +[2026-01-06T21:24:25.796Z] [INFO] GET /js/knowledge.js 200 13ms +[2026-01-06T21:24:25.799Z] [INFO] GET /js/notifications.js 200 10ms +[2026-01-06T21:24:25.803Z] [INFO] GET /js/coding.js 200 9ms +[2026-01-06T21:24:25.811Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T21:24:25.816Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-06T21:24:25.874Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T21:24:25.883Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-06T21:24:25.886Z] [INFO] GET /assets/icons/task.svg 200 9ms +[2026-01-06T21:24:25.928Z] [INFO] GET /api/auth/users 304 8ms +[2026-01-06T21:24:25.962Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (cLhRxOcS6TSIbs-GAAAH) +[2026-01-06T21:24:25.974Z] [INFO] GET /api/projects 304 7ms +[2026-01-06T21:24:26.011Z] [INFO] GET /api/columns/2 304 5ms +[2026-01-06T21:24:26.017Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-06T21:24:26.020Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T21:24:26.039Z] [INFO] GET /api/tasks/project/2 304 21ms +[2026-01-06T21:24:26.046Z] [INFO] GET /api/stats/dashboard?projectId=2 304 6ms +[2026-01-06T21:24:26.053Z] [INFO] GET /api/reminders?project_id=2 304 4ms +[2026-01-06T21:24:26.115Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-06T21:24:26.152Z] [INFO] GET /api/notifications 304 7ms +[2026-01-06T21:24:26.193Z] [INFO] GET /api/knowledge/categories 304 8ms +[2026-01-06T21:24:27.322Z] [INFO] GET /api/contacts 404 1ms +[2026-01-06T21:24:28.313Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T21:24:34.696Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-06T21:24:34.698Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-06T21:24:34.702Z] [INFO] GET /css/components.css 200 8ms +[2026-01-06T21:24:34.705Z] [INFO] GET /css/base.css 200 8ms +[2026-01-06T21:24:34.709Z] [INFO] GET /css/board.css 200 9ms +[2026-01-06T21:24:34.712Z] [INFO] GET /css/variables.css 200 8ms +[2026-01-06T21:24:34.741Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T21:24:34.743Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-06T21:24:34.755Z] [INFO] GET /css/proposals.css 200 6ms +[2026-01-06T21:24:34.759Z] [INFO] GET /css/notifications.css 200 5ms +[2026-01-06T21:24:34.767Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-06T21:24:34.771Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-06T21:24:34.777Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-06T21:24:34.781Z] [INFO] GET /css/knowledge.css 200 1ms +[2026-01-06T21:24:34.789Z] [INFO] GET /css/contacts.css 200 5ms +[2026-01-06T21:24:34.791Z] [INFO] GET /css/responsive.css 200 6ms +[2026-01-06T21:24:34.801Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-06T21:24:35.508Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T21:24:38.076Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-06T21:25:05.001Z] [INFO] SIGTERM empfangen, fahre herunter... +[2026-01-06T21:25:05.003Z] [INFO] Reminder Service gestoppt +[2026-01-06T21:25:17.258Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-06T21:25:17.304Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-06T21:25:17.821Z] [INFO] Admin-Passwort bereits korrekt +[2026-01-06T21:25:17.822Z] [INFO] Datenbank initialisiert +[2026-01-06T21:25:17.824Z] [INFO] Server läuft auf Port 3001 +[2026-01-06T21:25:17.825Z] [INFO] Umgebung: development +[2026-01-06T21:25:17.825Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-06T21:25:17.825Z] [INFO] Automatische Backups aktiviert +[2026-01-06T21:25:17.826Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T21:25:17.826Z] [INFO] Reminder Service gestartet - prüft alle 5 Minuten +[2026-01-06T21:25:20.650Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (Hmt4VowGc0k-BeZKAAAB) +[2026-01-06T21:25:20.695Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T21:26:17.854Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-06T21-26-17-833Z.db.enc +[2026-01-06T21:26:17.855Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-06T21-26-17-833Z.db.enc +[2026-01-06T21:26:17.857Z] [INFO] Backup erstellt: backup_2026-01-06T21-26-17-833Z.db +[2026-01-06T21:26:17.870Z] [INFO] Datei sicher gelöscht: backup_2026-01-04T00-57-40-325Z.db.enc +[2026-01-06T21:26:17.871Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-04T00-57-40-325Z.db.enc +[2026-01-06T21:26:17.873Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-06T21:26:25.317Z] [INFO] GET /api/contacts 404 12ms +[2026-01-06T21:26:45.418Z] [INFO] SIGTERM empfangen, fahre herunter... +[2026-01-06T21:26:45.420Z] [INFO] Reminder Service gestoppt +[2026-01-06T21:26:58.536Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-06T21:26:58.622Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-06T21:26:59.164Z] [INFO] Admin-Passwort bereits korrekt +[2026-01-06T21:26:59.165Z] [INFO] Datenbank initialisiert +[2026-01-06T21:26:59.169Z] [INFO] Server läuft auf Port 3001 +[2026-01-06T21:26:59.170Z] [INFO] Umgebung: development +[2026-01-06T21:26:59.170Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-06T21:26:59.171Z] [INFO] Automatische Backups aktiviert +[2026-01-06T21:26:59.172Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T21:26:59.172Z] [INFO] Reminder Service gestartet - prüft alle 5 Minuten +[2026-01-06T21:26:59.452Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (EL8G3tKEF4u4DRZcAAAB) +[2026-01-06T21:26:59.515Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T21:27:08.407Z] [INFO] GET /api/contacts 401 8ms +[2026-01-06T21:27:33.940Z] [INFO] GET / 200 19ms +[2026-01-06T21:27:34.022Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (EL8G3tKEF4u4DRZcAAAB) +[2026-01-06T21:27:34.030Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-06T21:27:34.046Z] [INFO] GET /css/base.css 200 3ms +[2026-01-06T21:27:34.049Z] [INFO] GET /css/components.css 200 7ms +[2026-01-06T21:27:34.061Z] [INFO] GET /css/board.css 200 2ms +[2026-01-06T21:27:34.085Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-06T21:27:34.096Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-06T21:27:34.108Z] [INFO] GET /css/list.css 200 7ms +[2026-01-06T21:27:34.111Z] [INFO] GET /css/admin.css 200 7ms +[2026-01-06T21:27:34.114Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-06T21:27:34.116Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-06T21:27:34.137Z] [INFO] GET /css/gitea.css 200 7ms +[2026-01-06T21:27:34.146Z] [INFO] GET /css/coding.css 200 12ms +[2026-01-06T21:27:34.149Z] [INFO] GET /css/knowledge.css 200 8ms +[2026-01-06T21:27:34.152Z] [INFO] GET /css/reminders.css 200 8ms +[2026-01-06T21:27:34.155Z] [INFO] GET /css/contacts.css 200 4ms +[2026-01-06T21:27:34.161Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-06T21:27:34.172Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-06T21:27:34.202Z] [INFO] GET /js/app.js 200 9ms +[2026-01-06T21:27:34.203Z] [INFO] GET /js/reminders.js 200 5ms +[2026-01-06T21:27:34.204Z] [INFO] GET /js/contacts.js 200 5ms +[2026-01-06T21:27:34.279Z] [INFO] GET /js/store.js 200 7ms +[2026-01-06T21:27:34.285Z] [INFO] GET /js/offline.js 200 9ms +[2026-01-06T21:27:34.292Z] [INFO] GET /js/api.js 200 14ms +[2026-01-06T21:27:34.296Z] [INFO] GET /js/auth.js 200 12ms +[2026-01-06T21:27:34.298Z] [INFO] GET /js/sync.js 200 10ms +[2026-01-06T21:27:34.311Z] [INFO] GET /js/board.js 200 2ms +[2026-01-06T21:27:34.315Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-06T21:27:34.332Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-06T21:27:34.334Z] [INFO] GET /js/list.js 200 5ms +[2026-01-06T21:27:34.346Z] [INFO] GET /js/shortcuts.js 200 4ms +[2026-01-06T21:27:34.348Z] [INFO] GET /js/admin.js 200 5ms +[2026-01-06T21:27:34.350Z] [INFO] GET /js/undo.js 200 5ms +[2026-01-06T21:27:34.367Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-06T21:27:34.369Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-06T21:27:34.374Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-06T21:27:34.381Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-06T21:27:34.385Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-06T21:27:34.389Z] [INFO] GET /js/mobile.js 200 7ms +[2026-01-06T21:27:34.401Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-06T21:27:34.495Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-06T21:27:34.507Z] [INFO] GET /api/auth/users 200 9ms +[2026-01-06T21:27:34.510Z] [INFO] GET /assets/icons/task.svg 200 62ms +[2026-01-06T21:27:34.545Z] [INFO] GET /api/auth/users 200 5ms +[2026-01-06T21:27:34.571Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (cycjgW5_OtD7ZxrTAAAD) +[2026-01-06T21:27:34.597Z] [INFO] GET /api/projects 200 12ms +[2026-01-06T21:27:34.630Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T21:27:34.650Z] [INFO] GET /api/stats/dashboard?projectId=2 200 7ms +[2026-01-06T21:27:34.656Z] [INFO] GET /api/columns/2 200 5ms +[2026-01-06T21:27:34.676Z] [INFO] GET /api/tasks/project/2 200 19ms +[2026-01-06T21:27:34.684Z] [INFO] GET /api/labels/2 200 4ms +[2026-01-06T21:27:34.691Z] [INFO] GET /api/reminders?project_id=2 200 4ms +[2026-01-06T21:27:34.734Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 5ms +[2026-01-06T21:27:34.775Z] [INFO] GET /api/notifications 200 7ms +[2026-01-06T21:27:34.820Z] [INFO] GET /api/knowledge/categories 200 11ms +[2026-01-06T21:27:35.621Z] [ERROR] Fehler beim Abrufen der Kontakte: {"error":"no such table: contacts"} +[2026-01-06T21:27:35.623Z] [INFO] GET /api/contacts 500 9ms +[2026-01-06T21:27:38.611Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-06T21:27:40.968Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T21:27:46.374Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T21:27:59.193Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-06T21-27-59-177Z.db.enc +[2026-01-06T21:27:59.194Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-06T21-27-59-177Z.db.enc +[2026-01-06T21:27:59.195Z] [INFO] Backup erstellt: backup_2026-01-06T21-27-59-177Z.db +[2026-01-06T21:27:59.218Z] [INFO] Datei sicher gelöscht: backup_2026-01-04T01-06-32-051Z.db.enc +[2026-01-06T21:27:59.219Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-04T01-06-32-051Z.db.enc +[2026-01-06T21:27:59.221Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-06T21:28:15.940Z] [INFO] Reminder Service gestoppt +[2026-01-06T21:28:15.939Z] [INFO] SIGTERM empfangen, fahre herunter... +[2026-01-06T21:28:28.640Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2026-01-06T21:28:28.691Z] [INFO] Datenbank-Tabellen erstellt +[2026-01-06T21:28:29.195Z] [INFO] Admin-Passwort bereits korrekt +[2026-01-06T21:28:29.195Z] [INFO] Datenbank initialisiert +[2026-01-06T21:28:29.201Z] [INFO] Server läuft auf Port 3001 +[2026-01-06T21:28:29.202Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2026-01-06T21:28:29.201Z] [INFO] Umgebung: development +[2026-01-06T21:28:29.202Z] [INFO] Automatische Backups aktiviert +[2026-01-06T21:28:29.203Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T21:28:29.204Z] [INFO] Reminder Service gestartet - prüft alle 5 Minuten +[2026-01-06T21:28:31.484Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (fwgOJpJQwDZHyP4OAAAB) +[2026-01-06T21:28:31.564Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T21:29:29.217Z] [INFO] Datei verschlüsselt: taskmate.db -> backup_2026-01-06T21-29-29-203Z.db.enc +[2026-01-06T21:29:29.218Z] [INFO] Verschlüsseltes Backup erstellt: backup_2026-01-06T21-29-29-203Z.db.enc +[2026-01-06T21:29:29.219Z] [INFO] Backup erstellt: backup_2026-01-06T21-29-29-203Z.db +[2026-01-06T21:29:29.233Z] [INFO] Datei sicher gelöscht: backup_2026-01-04T01-11-31-127Z.db.enc +[2026-01-06T21:29:29.234Z] [INFO] Altes Backup sicher gelöscht: backup_2026-01-04T01-11-31-127Z.db.enc +[2026-01-06T21:29:29.236Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2026-01-06T21:29:45.695Z] [INFO] POST /api/contacts 401 7ms +[2026-01-06T21:30:46.177Z] [INFO] GET / 200 10ms +[2026-01-06T21:30:46.263Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (fwgOJpJQwDZHyP4OAAAB) +[2026-01-06T21:30:46.272Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-06T21:30:46.309Z] [INFO] GET /css/base.css 200 5ms +[2026-01-06T21:30:46.341Z] [INFO] GET /css/components.css 200 4ms +[2026-01-06T21:30:46.348Z] [INFO] GET /css/board.css 200 4ms +[2026-01-06T21:30:46.351Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-06T21:30:46.355Z] [INFO] GET /css/calendar.css 200 8ms +[2026-01-06T21:30:46.357Z] [INFO] GET /css/list.css 200 4ms +[2026-01-06T21:30:46.375Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T21:30:46.382Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-06T21:30:46.419Z] [INFO] GET /css/gitea.css 200 10ms +[2026-01-06T21:30:46.424Z] [INFO] GET /css/notifications.css 200 12ms +[2026-01-06T21:30:46.428Z] [INFO] GET /css/knowledge.css 200 11ms +[2026-01-06T21:30:46.432Z] [INFO] GET /css/coding.css 200 10ms +[2026-01-06T21:30:46.433Z] [INFO] GET /css/reminders.css 200 7ms +[2026-01-06T21:30:46.435Z] [INFO] GET /css/contacts.css 200 5ms +[2026-01-06T21:30:46.457Z] [INFO] GET /css/responsive.css 200 4ms +[2026-01-06T21:30:46.463Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-06T21:30:46.501Z] [INFO] GET /js/contacts.js 200 5ms +[2026-01-06T21:30:46.503Z] [INFO] GET /js/reminders.js 200 4ms +[2026-01-06T21:30:46.505Z] [INFO] GET /js/app.js 200 6ms +[2026-01-06T21:30:46.583Z] [INFO] GET /js/auth.js 200 7ms +[2026-01-06T21:30:46.587Z] [INFO] GET /js/store.js 200 8ms +[2026-01-06T21:30:46.592Z] [INFO] GET /js/api.js 200 11ms +[2026-01-06T21:30:46.595Z] [INFO] GET /js/offline.js 200 10ms +[2026-01-06T21:30:46.597Z] [INFO] GET /js/sync.js 200 7ms +[2026-01-06T21:30:46.622Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-06T21:30:46.628Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-06T21:30:46.636Z] [INFO] GET /js/list.js 200 2ms +[2026-01-06T21:30:46.650Z] [INFO] GET /js/board.js 200 6ms +[2026-01-06T21:30:46.655Z] [INFO] GET /js/shortcuts.js 200 9ms +[2026-01-06T21:30:46.662Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-06T21:30:46.665Z] [INFO] GET /js/admin.js 200 5ms +[2026-01-06T21:30:46.685Z] [INFO] GET /js/proposals.js 200 6ms +[2026-01-06T21:30:46.687Z] [INFO] GET /js/gitea.js 200 6ms +[2026-01-06T21:30:46.698Z] [INFO] GET /js/notifications.js 200 6ms +[2026-01-06T21:30:46.701Z] [INFO] GET /js/knowledge.js 200 8ms +[2026-01-06T21:30:46.707Z] [INFO] GET /js/mobile.js 200 4ms +[2026-01-06T21:30:46.710Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-06T21:30:46.721Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-06T21:30:46.789Z] [INFO] POST /api/auth/refresh 200 21ms +[2026-01-06T21:30:46.795Z] [INFO] GET /api/auth/users 200 5ms +[2026-01-06T21:30:46.805Z] [INFO] GET /assets/icons/task.svg 200 7ms +[2026-01-06T21:30:46.843Z] [INFO] GET /api/auth/users 200 6ms +[2026-01-06T21:30:46.884Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (XhqaonxIdxo9s_VfAAAD) +[2026-01-06T21:30:46.893Z] [INFO] GET /api/projects 200 6ms +[2026-01-06T21:30:46.946Z] [INFO] GET /api/stats/dashboard?projectId=2 200 12ms +[2026-01-06T21:30:46.963Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T21:30:46.957Z] [INFO] GET /api/columns/2 200 8ms +[2026-01-06T21:30:46.971Z] [INFO] GET /api/labels/2 200 6ms +[2026-01-06T21:30:46.993Z] [INFO] GET /api/tasks/project/2 200 21ms +[2026-01-06T21:30:47.007Z] [INFO] GET /api/reminders?project_id=2 200 7ms +[2026-01-06T21:30:47.046Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 4ms +[2026-01-06T21:30:47.084Z] [INFO] GET /api/notifications 200 5ms +[2026-01-06T21:30:47.143Z] [INFO] GET /api/knowledge/categories 200 7ms +[2026-01-06T21:30:48.062Z] [INFO] GET /api/contacts 200 15ms +[2026-01-06T21:30:50.561Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T21:30:54.947Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T21:30:56.110Z] [INFO] GET / 200 5ms +[2026-01-06T21:30:56.179Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (XhqaonxIdxo9s_VfAAAD) +[2026-01-06T21:30:56.188Z] [INFO] GET /css/calendar.css 200 4ms +[2026-01-06T21:30:56.191Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-06T21:30:56.194Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-06T21:30:56.198Z] [INFO] GET /css/base.css 200 8ms +[2026-01-06T21:30:56.200Z] [INFO] GET /css/board.css 200 7ms +[2026-01-06T21:30:56.204Z] [INFO] GET /css/components.css 200 8ms +[2026-01-06T21:30:56.237Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T21:30:56.246Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-06T21:30:56.248Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-06T21:30:56.262Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-06T21:30:56.269Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-06T21:30:56.271Z] [INFO] GET /css/gitea.css 200 4ms +[2026-01-06T21:30:56.277Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-06T21:30:56.289Z] [INFO] GET /css/reminders.css 200 4ms +[2026-01-06T21:30:56.296Z] [INFO] GET /css/contacts.css 200 3ms +[2026-01-06T21:30:56.302Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-06T21:30:56.315Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-06T21:30:56.343Z] [INFO] GET /js/contacts.js 200 10ms +[2026-01-06T21:30:56.345Z] [INFO] GET /js/app.js 200 9ms +[2026-01-06T21:30:56.347Z] [INFO] GET /js/reminders.js 200 5ms +[2026-01-06T21:30:56.405Z] [INFO] GET /js/utils.js 200 6ms +[2026-01-06T21:30:56.407Z] [INFO] GET /js/api.js 200 5ms +[2026-01-06T21:30:56.412Z] [INFO] GET /js/store.js 200 8ms +[2026-01-06T21:30:56.416Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-06T21:30:56.417Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-06T21:30:56.419Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-06T21:30:56.439Z] [INFO] GET /js/board.js 200 4ms +[2026-01-06T21:30:56.446Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-06T21:30:56.448Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-06T21:30:56.451Z] [INFO] GET /js/list.js 200 2ms +[2026-01-06T21:30:56.454Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-06T21:30:56.456Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-06T21:30:56.476Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T21:30:56.486Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-06T21:30:56.487Z] [INFO] GET /js/proposals.js 200 5ms +[2026-01-06T21:30:56.490Z] [INFO] GET /js/gitea.js 200 5ms +[2026-01-06T21:30:56.494Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-06T21:30:56.498Z] [INFO] GET /js/coding.js 200 3ms +[2026-01-06T21:30:56.509Z] [INFO] GET /js/mobile.js 200 5ms +[2026-01-06T21:30:56.564Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T21:30:56.569Z] [INFO] GET /api/auth/users 304 3ms +[2026-01-06T21:30:56.573Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2026-01-06T21:30:56.613Z] [INFO] GET /api/auth/users 304 9ms +[2026-01-06T21:30:56.643Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (KJ3OEVhGSFaMLIV8AAAF) +[2026-01-06T21:30:56.656Z] [INFO] GET /api/projects 304 9ms +[2026-01-06T21:30:56.688Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T21:30:56.692Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-06T21:30:56.709Z] [INFO] GET /api/tasks/project/2 304 20ms +[2026-01-06T21:30:56.714Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-06T21:30:56.717Z] [INFO] GET /api/columns/2 304 3ms +[2026-01-06T21:30:56.721Z] [INFO] GET /api/reminders?project_id=2 304 2ms +[2026-01-06T21:30:56.773Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-06T21:30:56.819Z] [INFO] GET /api/notifications 304 9ms +[2026-01-06T21:30:56.862Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-06T21:30:58.726Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-06T21:30:58.727Z] [INFO] POST /api/auth/logout 200 6ms +[2026-01-06T21:30:58.729Z] [INFO] Logout: hendrik_gebhardt@gmx.de +[2026-01-06T21:30:58.730Z] [INFO] POST /api/auth/logout 200 2ms +[2026-01-06T21:30:58.757Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (KJ3OEVhGSFaMLIV8AAAF) +[2026-01-06T21:31:02.807Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-06T21:31:02.808Z] [INFO] POST /api/auth/login 200 459ms +[2026-01-06T21:31:02.846Z] [INFO] GET / 200 2ms +[2026-01-06T21:31:02.934Z] [INFO] GET /css/base.css 200 10ms +[2026-01-06T21:31:02.936Z] [INFO] GET /css/components.css 200 10ms +[2026-01-06T21:31:02.943Z] [INFO] GET /css/board.css 200 14ms +[2026-01-06T21:31:02.947Z] [INFO] GET /css/variables.css 200 16ms +[2026-01-06T21:31:02.949Z] [INFO] GET /css/calendar.css 200 10ms +[2026-01-06T21:31:02.950Z] [INFO] GET /css/modal.css 200 5ms +[2026-01-06T21:31:02.972Z] [INFO] GET /css/list.css 200 3ms +[2026-01-06T21:31:02.978Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-06T21:31:02.998Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-06T21:31:03.007Z] [INFO] GET /css/notifications.css 200 7ms +[2026-01-06T21:31:03.008Z] [INFO] GET /css/proposals.css 200 7ms +[2026-01-06T21:31:03.010Z] [INFO] GET /css/coding.css 200 5ms +[2026-01-06T21:31:03.012Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-06T21:31:03.014Z] [INFO] GET /css/reminders.css 200 1ms +[2026-01-06T21:31:03.028Z] [INFO] GET /css/contacts.css 200 1ms +[2026-01-06T21:31:03.037Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-06T21:31:03.042Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-06T21:31:03.044Z] [INFO] GET /js/contacts.js 200 3ms +[2026-01-06T21:31:03.048Z] [INFO] GET /js/app.js 200 6ms +[2026-01-06T21:31:03.050Z] [INFO] GET /js/reminders.js 200 4ms +[2026-01-06T21:31:03.096Z] [INFO] GET /js/store.js 200 3ms +[2026-01-06T21:31:03.111Z] [INFO] GET /js/api.js 200 5ms +[2026-01-06T21:31:03.113Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-06T21:31:03.119Z] [INFO] GET /js/utils.js 200 4ms +[2026-01-06T21:31:03.120Z] [INFO] GET /js/offline.js 200 4ms +[2026-01-06T21:31:03.122Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-06T21:31:03.126Z] [INFO] GET /js/board.js 200 1ms +[2026-01-06T21:31:03.142Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-06T21:31:03.144Z] [INFO] GET /js/task-modal.js 200 4ms +[2026-01-06T21:31:03.152Z] [INFO] GET /js/list.js 200 3ms +[2026-01-06T21:31:03.153Z] [INFO] GET /js/shortcuts.js 200 3ms +[2026-01-06T21:31:03.158Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-06T21:31:03.181Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-06T21:31:03.184Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-06T21:31:03.208Z] [INFO] GET /js/gitea.js 200 19ms +[2026-01-06T21:31:03.215Z] [INFO] GET /js/notifications.js 200 25ms +[2026-01-06T21:31:03.228Z] [INFO] GET /js/knowledge.js 200 36ms +[2026-01-06T21:31:03.232Z] [INFO] GET /js/coding.js 200 6ms +[2026-01-06T21:31:03.237Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T21:31:03.284Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-06T21:31:03.289Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-06T21:31:03.291Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-06T21:31:03.331Z] [INFO] GET /api/auth/users 304 6ms +[2026-01-06T21:31:03.360Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (5btzbMCwezFz4IkRAAAH) +[2026-01-06T21:31:03.374Z] [INFO] GET /api/projects 304 8ms +[2026-01-06T21:31:03.407Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T21:31:03.429Z] [INFO] GET /api/tasks/project/2 304 19ms +[2026-01-06T21:31:03.436Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2026-01-06T21:31:03.441Z] [INFO] GET /api/columns/2 304 4ms +[2026-01-06T21:31:03.444Z] [INFO] GET /api/labels/2 304 3ms +[2026-01-06T21:31:03.451Z] [INFO] GET /api/reminders?project_id=2 304 4ms +[2026-01-06T21:31:03.497Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2026-01-06T21:31:03.536Z] [INFO] GET /api/notifications 304 8ms +[2026-01-06T21:31:03.588Z] [INFO] GET /api/knowledge/categories 304 8ms +[2026-01-06T21:31:04.322Z] [INFO] GET /api/contacts 304 4ms +[2026-01-06T21:31:05.050Z] [INFO] GET /sw.js 200 3ms +[2026-01-06T21:31:06.343Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-06T21:31:07.238Z] [INFO] GET / 200 7ms +[2026-01-06T21:31:07.243Z] [INFO] GET /css/modal.css 200 6ms +[2026-01-06T21:31:07.246Z] [INFO] GET /css/board.css 200 6ms +[2026-01-06T21:31:07.247Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-06T21:31:07.248Z] [INFO] GET /css/components.css 200 6ms +[2026-01-06T21:31:07.250Z] [INFO] GET /css/base.css 200 5ms +[2026-01-06T21:31:07.286Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-06T21:31:07.290Z] [INFO] GET /css/list.css 200 7ms +[2026-01-06T21:31:07.303Z] [INFO] GET /css/admin.css 200 4ms +[2026-01-06T21:31:07.305Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-06T21:31:07.307Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-06T21:31:07.308Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-06T21:31:07.322Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-06T21:31:07.334Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-06T21:31:07.342Z] [INFO] GET /css/reminders.css 200 5ms +[2026-01-06T21:31:07.345Z] [INFO] GET /css/contacts.css 200 4ms +[2026-01-06T21:31:07.352Z] [INFO] GET /css/responsive.css 200 9ms +[2026-01-06T21:31:07.361Z] [INFO] GET /css/mobile.css 200 7ms +[2026-01-06T21:31:08.050Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T21:31:09.115Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T21:31:11.021Z] [INFO] POST /api/auth/refresh 200 6ms +[2026-01-06T21:31:14.405Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T21:33:07.276Z] [INFO] GET / 200 9ms +[2026-01-06T21:33:07.337Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (5btzbMCwezFz4IkRAAAH) +[2026-01-06T21:33:07.354Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-06T21:33:07.387Z] [INFO] GET /css/base.css 200 2ms +[2026-01-06T21:33:07.430Z] [INFO] GET /css/components.css 200 11ms +[2026-01-06T21:33:07.437Z] [INFO] GET /css/board.css 200 17ms +[2026-01-06T21:33:07.440Z] [INFO] GET /css/calendar.css 200 12ms +[2026-01-06T21:33:07.441Z] [INFO] GET /css/modal.css 200 16ms +[2026-01-06T21:33:07.442Z] [INFO] GET /css/list.css 200 10ms +[2026-01-06T21:33:07.443Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-06T21:33:07.470Z] [INFO] GET /css/proposals.css 200 3ms +[2026-01-06T21:33:07.480Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-06T21:33:07.482Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-06T21:33:07.487Z] [INFO] GET /css/coding.css 200 2ms +[2026-01-06T21:33:07.500Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-06T21:33:07.501Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-06T21:33:07.502Z] [INFO] GET /css/contacts.css 200 3ms +[2026-01-06T21:33:07.523Z] [INFO] GET /css/responsive.css 200 10ms +[2026-01-06T21:33:07.531Z] [INFO] GET /css/mobile.css 200 15ms +[2026-01-06T21:33:07.536Z] [INFO] GET /js/app.js 200 7ms +[2026-01-06T21:33:07.539Z] [INFO] GET /js/reminders.js 200 4ms +[2026-01-06T21:33:07.583Z] [INFO] GET /js/contacts.js 200 4ms +[2026-01-06T21:33:07.622Z] [INFO] GET /js/api.js 200 9ms +[2026-01-06T21:33:07.627Z] [INFO] GET /js/auth.js 200 10ms +[2026-01-06T21:33:07.629Z] [INFO] GET /js/sync.js 200 5ms +[2026-01-06T21:33:07.632Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-06T21:33:07.633Z] [INFO] GET /js/store.js 200 5ms +[2026-01-06T21:33:07.657Z] [INFO] GET /js/board.js 200 4ms +[2026-01-06T21:33:07.666Z] [INFO] GET /js/task-modal.js 200 6ms +[2026-01-06T21:33:07.667Z] [INFO] GET /js/calendar.js 200 6ms +[2026-01-06T21:33:07.670Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-06T21:33:07.672Z] [INFO] GET /js/list.js 200 9ms +[2026-01-06T21:33:07.694Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-06T21:33:07.701Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T21:33:07.717Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-06T21:33:07.719Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-06T21:33:07.724Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-06T21:33:07.738Z] [INFO] GET /js/knowledge.js 200 6ms +[2026-01-06T21:33:07.739Z] [INFO] GET /js/coding.js 200 5ms +[2026-01-06T21:33:07.744Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T21:33:07.754Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-06T21:33:07.797Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T21:33:07.802Z] [INFO] GET /api/auth/users 200 3ms +[2026-01-06T21:33:07.805Z] [INFO] GET /assets/icons/task.svg 200 2ms +[2026-01-06T21:33:07.847Z] [INFO] GET /api/auth/users 200 7ms +[2026-01-06T21:33:07.881Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (RsnQJpoQJ60p9S8wAAAJ) +[2026-01-06T21:33:07.892Z] [INFO] GET /api/projects 200 7ms +[2026-01-06T21:33:07.939Z] [INFO] GET /api/stats/dashboard?projectId=2 200 9ms +[2026-01-06T21:33:07.946Z] [INFO] GET /api/columns/2 200 6ms +[2026-01-06T21:33:07.968Z] [INFO] GET /api/tasks/project/2 200 21ms +[2026-01-06T21:33:07.970Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T21:33:07.974Z] [INFO] GET /api/labels/2 200 5ms +[2026-01-06T21:33:07.981Z] [INFO] GET /api/reminders?project_id=2 200 4ms +[2026-01-06T21:33:08.029Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 8ms +[2026-01-06T21:33:08.066Z] [INFO] GET /api/notifications 200 4ms +[2026-01-06T21:33:08.109Z] [INFO] GET /api/knowledge/categories 200 10ms +[2026-01-06T21:33:09.498Z] [INFO] GET / 200 4ms +[2026-01-06T21:33:09.554Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (RsnQJpoQJ60p9S8wAAAJ) +[2026-01-06T21:33:09.578Z] [INFO] GET /css/base.css 200 6ms +[2026-01-06T21:33:09.582Z] [INFO] GET /css/variables.css 200 8ms +[2026-01-06T21:33:09.586Z] [INFO] GET /css/calendar.css 200 10ms +[2026-01-06T21:33:09.590Z] [INFO] GET /css/modal.css 200 9ms +[2026-01-06T21:33:09.591Z] [INFO] GET /css/components.css 200 6ms +[2026-01-06T21:33:09.592Z] [INFO] GET /css/board.css 200 4ms +[2026-01-06T21:33:09.616Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T21:33:09.620Z] [INFO] GET /css/admin.css 200 1ms +[2026-01-06T21:33:09.647Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-06T21:33:09.648Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-06T21:33:09.649Z] [INFO] GET /css/notifications.css 200 4ms +[2026-01-06T21:33:09.654Z] [INFO] GET /css/knowledge.css 200 2ms +[2026-01-06T21:33:09.655Z] [INFO] GET /css/gitea.css 200 2ms +[2026-01-06T21:33:09.670Z] [INFO] GET /css/reminders.css 200 2ms +[2026-01-06T21:33:09.684Z] [INFO] GET /css/mobile.css 200 5ms +[2026-01-06T21:33:09.688Z] [INFO] GET /css/contacts.css 200 7ms +[2026-01-06T21:33:09.691Z] [INFO] GET /css/responsive.css 200 8ms +[2026-01-06T21:33:09.694Z] [INFO] GET /js/app.js 200 5ms +[2026-01-06T21:33:09.711Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-06T21:33:09.717Z] [INFO] GET /js/contacts.js 200 3ms +[2026-01-06T21:33:09.754Z] [INFO] GET /js/api.js 200 6ms +[2026-01-06T21:33:09.757Z] [INFO] GET /js/utils.js 200 7ms +[2026-01-06T21:33:09.759Z] [INFO] GET /js/sync.js 200 7ms +[2026-01-06T21:33:09.760Z] [INFO] GET /js/store.js 200 7ms +[2026-01-06T21:33:09.762Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-06T21:33:09.786Z] [INFO] GET /js/board.js 200 4ms +[2026-01-06T21:33:09.788Z] [INFO] GET /js/offline.js 200 6ms +[2026-01-06T21:33:09.794Z] [INFO] GET /js/task-modal.js 200 1ms +[2026-01-06T21:33:09.813Z] [INFO] GET /js/calendar.js 200 2ms +[2026-01-06T21:33:09.822Z] [INFO] GET /js/list.js 200 3ms +[2026-01-06T21:33:09.823Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-06T21:33:09.834Z] [INFO] GET /js/undo.js 200 1ms +[2026-01-06T21:33:09.838Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-06T21:33:09.844Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-06T21:33:09.856Z] [INFO] GET /js/gitea.js 200 5ms +[2026-01-06T21:33:09.857Z] [INFO] GET /js/notifications.js 200 5ms +[2026-01-06T21:33:09.862Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-06T21:33:09.866Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T21:33:09.866Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-06T21:33:09.934Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T21:33:09.941Z] [INFO] GET /api/auth/users 200 4ms +[2026-01-06T21:33:09.943Z] [INFO] GET /assets/icons/task.svg 200 6ms +[2026-01-06T21:33:09.986Z] [INFO] GET /api/auth/users 200 7ms +[2026-01-06T21:33:10.016Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (4Xg1BSpf1TeAc0PwAAAL) +[2026-01-06T21:33:10.029Z] [INFO] GET /api/projects 200 8ms +[2026-01-06T21:33:10.068Z] [INFO] GET /api/stats/dashboard?projectId=2 200 5ms +[2026-01-06T21:33:10.074Z] [INFO] GET /api/labels/2 200 5ms +[2026-01-06T21:33:10.090Z] [INFO] GET /api/tasks/project/2 200 16ms +[2026-01-06T21:33:10.091Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T21:33:10.095Z] [INFO] GET /api/columns/2 200 3ms +[2026-01-06T21:33:10.103Z] [INFO] GET /api/reminders?project_id=2 200 4ms +[2026-01-06T21:33:10.146Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 5ms +[2026-01-06T21:33:10.186Z] [INFO] GET /api/notifications 200 6ms +[2026-01-06T21:33:10.222Z] [INFO] GET /api/knowledge/categories 200 7ms +[2026-01-06T21:33:10.787Z] [INFO] GET /api/contacts 200 9ms +[2026-01-06T21:33:11.785Z] [INFO] POST /api/auth/refresh 200 5ms +[2026-01-06T21:33:14.007Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T21:33:15.666Z] [INFO] GET /api/contacts 200 4ms +[2026-01-06T21:33:17.282Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T21:33:29.205Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T21:34:06.847Z] [INFO] POST /api/auth/refresh 200 15ms +[2026-01-06T21:34:58.867Z] [INFO] GET / 200 5ms +[2026-01-06T21:34:58.921Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (4Xg1BSpf1TeAc0PwAAAL) +[2026-01-06T21:34:58.937Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-06T21:34:58.964Z] [INFO] GET /css/base.css 200 4ms +[2026-01-06T21:34:58.998Z] [INFO] GET /css/components.css 200 3ms +[2026-01-06T21:34:59.000Z] [INFO] GET /css/board.css 200 3ms +[2026-01-06T21:34:59.006Z] [INFO] GET /css/modal.css 200 3ms +[2026-01-06T21:34:59.007Z] [INFO] GET /css/calendar.css 200 3ms +[2026-01-06T21:34:59.009Z] [INFO] GET /css/list.css 200 5ms +[2026-01-06T21:34:59.011Z] [INFO] GET /css/admin.css 200 5ms +[2026-01-06T21:34:59.026Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-06T21:34:59.059Z] [INFO] GET /css/gitea.css 200 8ms +[2026-01-06T21:34:59.061Z] [INFO] GET /css/notifications.css 200 8ms +[2026-01-06T21:34:59.063Z] [INFO] GET /css/knowledge.css 200 8ms +[2026-01-06T21:34:59.066Z] [INFO] GET /css/coding.css 200 9ms +[2026-01-06T21:34:59.069Z] [INFO] GET /css/reminders.css 200 8ms +[2026-01-06T21:34:59.070Z] [INFO] GET /css/contacts.css 200 6ms +[2026-01-06T21:34:59.088Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-06T21:34:59.094Z] [INFO] GET /css/mobile.css 200 4ms +[2026-01-06T21:34:59.101Z] [INFO] GET /js/app.js 200 4ms +[2026-01-06T21:34:59.107Z] [INFO] GET /js/reminders.js 200 7ms +[2026-01-06T21:34:59.110Z] [INFO] GET /js/contacts.js 200 6ms +[2026-01-06T21:34:59.174Z] [INFO] GET /js/auth.js 200 6ms +[2026-01-06T21:34:59.175Z] [INFO] GET /js/store.js 200 5ms +[2026-01-06T21:34:59.177Z] [INFO] GET /js/api.js 200 5ms +[2026-01-06T21:34:59.180Z] [INFO] GET /js/sync.js 200 7ms +[2026-01-06T21:34:59.181Z] [INFO] GET /js/offline.js 200 5ms +[2026-01-06T21:34:59.183Z] [INFO] GET /js/board.js 200 5ms +[2026-01-06T21:34:59.203Z] [INFO] GET /js/task-modal.js 200 2ms +[2026-01-06T21:34:59.213Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-06T21:34:59.217Z] [INFO] GET /js/shortcuts.js 200 6ms +[2026-01-06T21:34:59.220Z] [INFO] GET /js/list.js 200 8ms +[2026-01-06T21:34:59.223Z] [INFO] GET /js/undo.js 200 8ms +[2026-01-06T21:34:59.242Z] [INFO] GET /js/admin.js 200 1ms +[2026-01-06T21:34:59.247Z] [INFO] GET /js/proposals.js 200 2ms +[2026-01-06T21:34:59.253Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-06T21:34:59.254Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-06T21:34:59.258Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-06T21:34:59.276Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-06T21:34:59.277Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T21:34:59.287Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-06T21:34:59.325Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T21:34:59.332Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2026-01-06T21:34:59.335Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-06T21:34:59.375Z] [INFO] GET /api/auth/users 304 8ms +[2026-01-06T21:34:59.401Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (iAQ2hHVYLhduTwJeAAAN) +[2026-01-06T21:34:59.408Z] [INFO] GET /api/projects 304 4ms +[2026-01-06T21:34:59.442Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T21:34:59.451Z] [INFO] GET /api/labels/2 304 7ms +[2026-01-06T21:34:59.458Z] [INFO] GET /api/columns/2 304 6ms +[2026-01-06T21:34:59.465Z] [INFO] GET /api/stats/dashboard?projectId=2 304 4ms +[2026-01-06T21:34:59.478Z] [INFO] GET /api/tasks/project/2 304 12ms +[2026-01-06T21:34:59.483Z] [INFO] GET /api/reminders?project_id=2 304 3ms +[2026-01-06T21:34:59.528Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 8ms +[2026-01-06T21:34:59.565Z] [INFO] GET /api/notifications 304 7ms +[2026-01-06T21:34:59.605Z] [INFO] GET /api/knowledge/categories 304 9ms +[2026-01-06T21:35:00.291Z] [INFO] GET /api/contacts 304 5ms +[2026-01-06T21:35:02.031Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T21:35:06.467Z] [INFO] POST /api/auth/refresh 200 16ms +[2026-01-06T21:35:09.929Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T21:38:16.860Z] [INFO] GET / 200 9ms +[2026-01-06T21:38:16.915Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (iAQ2hHVYLhduTwJeAAAN) +[2026-01-06T21:38:16.925Z] [INFO] GET /css/variables.css 200 2ms +[2026-01-06T21:38:16.952Z] [INFO] GET /css/base.css 200 2ms +[2026-01-06T21:38:16.982Z] [INFO] GET /css/components.css 200 3ms +[2026-01-06T21:38:17.015Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-06T21:38:17.017Z] [INFO] GET /css/board.css 200 5ms +[2026-01-06T21:38:17.026Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-06T21:38:17.032Z] [INFO] GET /css/list.css 200 7ms +[2026-01-06T21:38:17.033Z] [INFO] GET /css/admin.css 200 3ms +[2026-01-06T21:38:17.035Z] [INFO] GET /css/proposals.css 200 4ms +[2026-01-06T21:38:17.047Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-06T21:38:17.075Z] [INFO] GET /css/gitea.css 200 5ms +[2026-01-06T21:38:17.084Z] [INFO] GET /css/knowledge.css 200 7ms +[2026-01-06T21:38:17.088Z] [INFO] GET /css/coding.css 200 8ms +[2026-01-06T21:38:17.092Z] [INFO] GET /css/reminders.css 200 11ms +[2026-01-06T21:38:17.095Z] [INFO] GET /css/contacts.css 200 13ms +[2026-01-06T21:38:17.100Z] [INFO] GET /css/responsive.css 200 14ms +[2026-01-06T21:38:17.107Z] [INFO] GET /css/mobile.css 200 2ms +[2026-01-06T21:38:17.121Z] [INFO] GET /js/app.js 200 4ms +[2026-01-06T21:38:17.129Z] [INFO] GET /js/reminders.js 200 10ms +[2026-01-06T21:38:17.143Z] [INFO] GET /js/contacts.js 200 9ms +[2026-01-06T21:38:17.184Z] [INFO] GET /js/store.js 200 3ms +[2026-01-06T21:38:17.185Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-06T21:38:17.187Z] [INFO] GET /js/sync.js 200 4ms +[2026-01-06T21:38:17.188Z] [INFO] GET /js/api.js 200 4ms +[2026-01-06T21:38:17.190Z] [INFO] GET /js/board.js 200 4ms +[2026-01-06T21:38:17.191Z] [INFO] GET /js/auth.js 200 2ms +[2026-01-06T21:38:17.210Z] [INFO] GET /js/task-modal.js 200 1ms +[2026-01-06T21:38:17.216Z] [INFO] GET /js/calendar.js 200 3ms +[2026-01-06T21:38:17.219Z] [INFO] GET /js/list.js 200 4ms +[2026-01-06T21:38:17.220Z] [INFO] GET /js/shortcuts.js 200 2ms +[2026-01-06T21:38:17.221Z] [INFO] GET /js/undo.js 200 2ms +[2026-01-06T21:38:17.240Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T21:38:17.246Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-06T21:38:17.251Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-06T21:38:17.251Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-06T21:38:17.253Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-06T21:38:17.267Z] [INFO] GET /js/mobile.js 200 2ms +[2026-01-06T21:38:17.267Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-06T21:38:17.278Z] [INFO] GET /js/utils.js 200 3ms +[2026-01-06T21:38:17.324Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T21:38:17.332Z] [INFO] GET /api/auth/users 304 4ms +[2026-01-06T21:38:17.335Z] [INFO] GET /assets/icons/task.svg 200 8ms +[2026-01-06T21:38:17.367Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-06T21:38:17.407Z] [INFO] GET /api/projects 304 10ms +[2026-01-06T21:38:17.412Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (Ov-Zf0Tdn6gjE-Y9AAAP) +[2026-01-06T21:38:17.466Z] [INFO] GET /api/tasks/project/2 304 25ms +[2026-01-06T21:38:17.449Z] [INFO] GET /api/stats/dashboard?projectId=2 304 11ms +[2026-01-06T21:38:17.470Z] [INFO] GET /api/labels/2 304 4ms +[2026-01-06T21:38:17.478Z] [INFO] GET /api/reminders?project_id=2 304 7ms +[2026-01-06T21:38:17.482Z] [INFO] GET /api/columns/2 304 8ms +[2026-01-06T21:38:17.485Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T21:38:17.517Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2026-01-06T21:38:17.544Z] [INFO] GET /api/notifications 304 5ms +[2026-01-06T21:38:17.575Z] [INFO] GET /api/knowledge/categories 304 5ms +[2026-01-06T21:38:18.462Z] [INFO] GET /api/contacts 304 5ms +[2026-01-06T21:38:19.469Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-06T21:38:20.726Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T21:38:26.575Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T21:38:26.763Z] [INFO] GET /api/contacts 304 9ms +[2026-01-06T21:38:27.768Z] [INFO] POST /api/auth/refresh 200 15ms +[2026-01-06T21:38:29.206Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T21:38:46.663Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-06T21:39:41.911Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-06T21:39:44.310Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T21:40:16.758Z] [INFO] POST /api/auth/refresh 200 14ms +[2026-01-06T21:40:26.648Z] [INFO] GET /api/reminders/2 200 8ms +[2026-01-06T21:40:31.453Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T21:40:35.887Z] [DEBUG] Benachrichtigungstermine erstellt für Reminder 2 +[2026-01-06T21:40:35.889Z] [INFO] PUT /api/reminders/2 200 15ms +[2026-01-06T21:40:35.928Z] [INFO] GET /api/reminders/2 200 8ms +[2026-01-06T21:40:35.967Z] [INFO] GET /api/columns/2 304 9ms +[2026-01-06T21:40:36.021Z] [INFO] GET /api/tasks/project/2 304 28ms +[2026-01-06T21:40:36.027Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-06T21:40:36.032Z] [INFO] GET /api/reminders?project_id=2 200 4ms +[2026-01-06T21:40:36.043Z] [INFO] GET /api/contacts 304 5ms +[2026-01-06T21:40:36.888Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T21:40:38.593Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T21:40:40.129Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-06T21:40:48.238Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-06T21:40:51.270Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T21:40:52.018Z] [INFO] GET /api/reminders/2 304 7ms +[2026-01-06T21:40:58.976Z] [INFO] POST /api/auth/refresh 200 4ms +[2026-01-06T21:41:00.823Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T21:41:08.851Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T21:41:11.966Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T21:41:16.536Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T21:41:24.725Z] [INFO] GET /api/contacts 304 6ms +[2026-01-06T21:41:25.735Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T21:41:29.076Z] [INFO] POST /api/auth/refresh 200 13ms +[2026-01-06T21:41:49.242Z] [INFO] GET /api/tasks/6 200 11ms +[2026-01-06T21:41:49.295Z] [INFO] GET /api/subtasks/6 200 10ms +[2026-01-06T21:41:49.305Z] [INFO] GET /api/files/6 304 8ms +[2026-01-06T21:41:49.310Z] [INFO] GET /api/links/6 304 4ms +[2026-01-06T21:41:49.314Z] [INFO] GET /api/comments/6 304 8ms +[2026-01-06T21:41:49.343Z] [INFO] GET /api/tasks/6/history 404 15ms +[2026-01-06T21:41:49.363Z] [INFO] GET /api/files/preview/7?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJoZW5kcmlrX2dlYmhhcmR0QGdteC5kZSIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwidHlwZSI6ImFjY2VzcyIsImlhdCI6MTc2NzczNTY4OSwiZXhwIjoxNzY3NzM2NTg5fQ.uKTA311wLt5B2PeI7CKVhz2626IJymQ4J0YwexG051s 200 13ms +[2026-01-06T21:41:50.237Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T21:41:54.027Z] [INFO] PUT /api/subtasks/43 200 10ms +[2026-01-06T21:41:54.070Z] [INFO] PUT /api/subtasks/43/position 200 11ms +[2026-01-06T21:41:55.029Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T21:41:57.204Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2026-01-06T21:41:57.209Z] [INFO] PUT /api/tasks/6 200 14ms +[2026-01-06T21:41:57.216Z] [INFO] GET /api/contacts 304 5ms +[2026-01-06T21:41:58.182Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T21:41:58.388Z] [INFO] readCLAUDEmd: Checking path /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-06T21:41:58.389Z] [INFO] readCLAUDEmd: File does not exist: /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-06T21:41:58.389Z] [INFO] Trying fallback path for TaskMate: /app/taskmate-source +[2026-01-06T21:41:58.390Z] [INFO] readCLAUDEmd: Checking path /app/taskmate-source/CLAUDE.md +[2026-01-06T21:41:58.391Z] [INFO] readCLAUDEmd: Successfully read 17738 characters from /app/taskmate-source/CLAUDE.md +[2026-01-06T21:41:58.392Z] [INFO] GET /api/coding/directories 304 13ms +[2026-01-06T21:41:58.430Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-06T21:41:58.431Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-06T21:41:58.430Z] [INFO] Git directory exists: true +[2026-01-06T21:41:58.431Z] [INFO] Git directory exists: true +[2026-01-06T21:41:58.508Z] [INFO] GET /api/coding/directories/3/status 200 85ms +[2026-01-06T21:41:59.926Z] [INFO] POST /api/auth/refresh 200 10ms +[2026-01-06T21:42:01.249Z] [INFO] GET /api/knowledge/entries?categoryId=16 200 12ms +[2026-01-06T21:42:04.705Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T21:42:05.753Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T21:42:40.673Z] [INFO] Socket disconnected: hendrik_gebhardt@gmx.de (Ov-Zf0Tdn6gjE-Y9AAAP) +[2026-01-06T21:43:29.212Z] [INFO] 1 fällige Erinnerung(en) gefunden +[2026-01-06T21:43:29.220Z] [INFO] Benachrichtigung erstellt: reminder:due für User 1 +[2026-01-06T21:43:29.221Z] [INFO] Reminder-Benachrichtigung gesendet: "Testerinnerung" (2 Tage vorher) +[2026-01-06T21:44:20.698Z] [INFO] GET / 200 4ms +[2026-01-06T21:44:20.775Z] [INFO] GET /css/variables.css 200 5ms +[2026-01-06T21:44:20.812Z] [INFO] GET /css/base.css 200 5ms +[2026-01-06T21:44:20.838Z] [INFO] GET /css/components.css 200 2ms +[2026-01-06T21:44:20.840Z] [INFO] GET /css/board.css 200 2ms +[2026-01-06T21:44:20.849Z] [INFO] GET /css/calendar.css 200 6ms +[2026-01-06T21:44:20.851Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-06T21:44:20.854Z] [INFO] GET /css/list.css 200 9ms +[2026-01-06T21:44:20.856Z] [INFO] GET /css/admin.css 200 11ms +[2026-01-06T21:44:20.885Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-06T21:44:20.893Z] [INFO] GET /css/notifications.css 200 3ms +[2026-01-06T21:44:20.894Z] [INFO] GET /css/gitea.css 200 3ms +[2026-01-06T21:44:20.900Z] [INFO] GET /css/coding.css 200 3ms +[2026-01-06T21:44:20.901Z] [INFO] GET /css/knowledge.css 200 3ms +[2026-01-06T21:44:20.903Z] [INFO] GET /css/reminders.css 200 4ms +[2026-01-06T21:44:20.923Z] [INFO] GET /css/contacts.css 200 3ms +[2026-01-06T21:44:20.924Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-06T21:44:20.931Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-06T21:44:20.938Z] [INFO] GET /js/app.js 200 5ms +[2026-01-06T21:44:20.944Z] [INFO] GET /js/reminders.js 200 3ms +[2026-01-06T21:44:20.957Z] [INFO] GET /js/contacts.js 200 7ms +[2026-01-06T21:44:21.021Z] [INFO] GET /js/api.js 200 8ms +[2026-01-06T21:44:21.022Z] [INFO] GET /js/offline.js 200 7ms +[2026-01-06T21:44:21.026Z] [INFO] GET /js/auth.js 200 9ms +[2026-01-06T21:44:21.027Z] [INFO] GET /js/sync.js 200 8ms +[2026-01-06T21:44:21.030Z] [INFO] GET /js/board.js 200 6ms +[2026-01-06T21:44:21.031Z] [INFO] GET /js/store.js 200 7ms +[2026-01-06T21:44:21.071Z] [INFO] GET /js/task-modal.js 200 10ms +[2026-01-06T21:44:21.074Z] [INFO] GET /js/calendar.js 200 11ms +[2026-01-06T21:44:21.078Z] [INFO] GET /js/list.js 200 9ms +[2026-01-06T21:44:21.080Z] [INFO] GET /js/shortcuts.js 200 7ms +[2026-01-06T21:44:21.082Z] [INFO] GET /js/undo.js 200 6ms +[2026-01-06T21:44:21.085Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T21:44:21.109Z] [INFO] GET /js/gitea.js 200 4ms +[2026-01-06T21:44:21.111Z] [INFO] GET /js/proposals.js 200 4ms +[2026-01-06T21:44:21.116Z] [INFO] GET /js/knowledge.js 200 3ms +[2026-01-06T21:44:21.117Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-06T21:44:21.119Z] [INFO] GET /js/coding.js 200 4ms +[2026-01-06T21:44:21.125Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-06T21:44:21.141Z] [INFO] GET /js/utils.js 200 1ms +[2026-01-06T21:44:21.198Z] [INFO] GET /assets/icons/task.svg 200 9ms +[2026-01-06T21:44:21.207Z] [INFO] GET /sw.js 200 4ms +[2026-01-06T21:44:21.249Z] [INFO] GET /css/variables.css 200 4ms +[2026-01-06T21:44:21.251Z] [INFO] GET / 200 7ms +[2026-01-06T21:44:21.257Z] [INFO] GET /index.html 200 10ms +[2026-01-06T21:44:21.280Z] [INFO] GET /css/base.css 200 1ms +[2026-01-06T21:44:21.286Z] [INFO] GET /css/board.css 200 2ms +[2026-01-06T21:44:21.291Z] [INFO] GET /css/components.css 200 2ms +[2026-01-06T21:44:21.323Z] [INFO] GET /css/modal.css 200 8ms +[2026-01-06T21:44:21.330Z] [INFO] GET /css/calendar.css 200 5ms +[2026-01-06T21:44:21.336Z] [INFO] GET /css/responsive.css 200 3ms +[2026-01-06T21:44:21.360Z] [INFO] GET /js/app.js 200 4ms +[2026-01-06T21:44:21.364Z] [INFO] GET /js/utils.js 200 2ms +[2026-01-06T21:44:21.367Z] [INFO] GET /js/api.js 200 2ms +[2026-01-06T21:44:21.390Z] [INFO] GET /js/auth.js 200 2ms +[2026-01-06T21:44:21.395Z] [INFO] GET /js/store.js 200 2ms +[2026-01-06T21:44:21.398Z] [INFO] GET /js/sync.js 200 2ms +[2026-01-06T21:44:21.420Z] [INFO] GET /js/offline.js 200 3ms +[2026-01-06T21:44:21.425Z] [INFO] GET /js/board.js 200 2ms +[2026-01-06T21:44:21.433Z] [INFO] GET /js/task-modal.js 200 3ms +[2026-01-06T21:44:21.454Z] [INFO] GET /js/calendar.js 200 4ms +[2026-01-06T21:44:21.466Z] [INFO] GET /js/list.js 200 7ms +[2026-01-06T21:44:21.469Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-06T21:44:21.486Z] [INFO] GET /js/undo.js 200 4ms +[2026-01-06T21:44:21.498Z] [INFO] GET /js/tour.js 200 2ms +[2026-01-06T21:44:21.511Z] [INFO] GET /js/admin.js 200 2ms +[2026-01-06T21:44:21.514Z] [INFO] GET /js/proposals.js 200 1ms +[2026-01-06T21:44:21.530Z] [INFO] GET /js/notifications.js 200 3ms +[2026-01-06T21:44:21.545Z] [INFO] GET /js/knowledge.js 200 4ms +[2026-01-06T21:44:21.550Z] [INFO] GET /js/gitea.js 200 2ms +[2026-01-06T21:44:21.569Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-06T21:44:21.575Z] [INFO] GET /js/mobile.js 200 1ms +[2026-01-06T21:44:21.579Z] [INFO] GET /js/reminders.js 200 1ms +[2026-01-06T21:44:21.600Z] [INFO] GET /js/contacts.js 200 4ms +[2026-01-06T21:44:21.606Z] [INFO] GET /css/list.css 200 2ms +[2026-01-06T21:44:21.609Z] [INFO] GET /css/mobile.css 200 1ms +[2026-01-06T21:44:21.637Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-06T21:44:21.637Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T21:44:21.640Z] [INFO] GET /css/notifications.css 200 1ms +[2026-01-06T21:44:21.676Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-06T21:44:21.678Z] [INFO] GET /css/knowledge.css 200 6ms +[2026-01-06T21:44:21.680Z] [INFO] GET /css/coding.css 200 6ms +[2026-01-06T21:44:21.709Z] [INFO] GET /css/contacts.css 200 2ms +[2026-01-06T21:44:21.710Z] [INFO] GET /css/reminders.css 200 3ms +[2026-01-06T21:44:25.770Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2026-01-06T21:44:25.772Z] [INFO] POST /api/auth/login 200 465ms +[2026-01-06T21:44:25.809Z] [INFO] GET / 200 3ms +[2026-01-06T21:44:25.885Z] [INFO] GET /css/variables.css 200 6ms +[2026-01-06T21:44:25.886Z] [INFO] GET /css/base.css 200 6ms +[2026-01-06T21:44:25.890Z] [INFO] GET /css/calendar.css 200 7ms +[2026-01-06T21:44:25.891Z] [INFO] GET /css/modal.css 200 4ms +[2026-01-06T21:44:25.893Z] [INFO] GET /css/board.css 200 4ms +[2026-01-06T21:44:25.894Z] [INFO] GET /css/components.css 200 3ms +[2026-01-06T21:44:25.915Z] [INFO] GET /css/list.css 200 1ms +[2026-01-06T21:44:25.916Z] [INFO] GET /css/admin.css 200 2ms +[2026-01-06T21:44:25.941Z] [INFO] GET /css/proposals.css 200 2ms +[2026-01-06T21:44:25.951Z] [INFO] GET /css/gitea.css 200 6ms +[2026-01-06T21:44:25.958Z] [INFO] GET /css/knowledge.css 200 11ms +[2026-01-06T21:44:25.960Z] [INFO] GET /css/notifications.css 200 12ms +[2026-01-06T21:44:25.961Z] [INFO] GET /css/coding.css 200 7ms +[2026-01-06T21:44:25.962Z] [INFO] GET /css/reminders.css 200 7ms +[2026-01-06T21:44:25.971Z] [INFO] GET /css/contacts.css 200 1ms +[2026-01-06T21:44:25.982Z] [INFO] GET /css/responsive.css 200 2ms +[2026-01-06T21:44:25.992Z] [INFO] GET /css/mobile.css 200 3ms +[2026-01-06T21:44:25.995Z] [INFO] GET /js/reminders.js 200 2ms +[2026-01-06T21:44:25.997Z] [INFO] GET /js/app.js 200 6ms +[2026-01-06T21:44:26.000Z] [INFO] GET /js/contacts.js 200 1ms +[2026-01-06T21:44:26.033Z] [INFO] GET /js/store.js 200 6ms +[2026-01-06T21:44:26.037Z] [INFO] GET /js/utils.js 200 6ms +[2026-01-06T21:44:26.039Z] [INFO] GET /js/api.js 200 4ms +[2026-01-06T21:44:26.067Z] [INFO] GET /js/offline.js 200 5ms +[2026-01-06T21:44:26.071Z] [INFO] GET /js/board.js 200 7ms +[2026-01-06T21:44:26.070Z] [INFO] GET /js/task-modal.js 200 7ms +[2026-01-06T21:44:26.075Z] [INFO] GET /js/sync.js 200 6ms +[2026-01-06T21:44:26.077Z] [INFO] GET /js/auth.js 200 4ms +[2026-01-06T21:44:26.079Z] [INFO] GET /js/calendar.js 200 5ms +[2026-01-06T21:44:26.100Z] [INFO] GET /js/list.js 200 3ms +[2026-01-06T21:44:26.111Z] [INFO] GET /js/shortcuts.js 200 5ms +[2026-01-06T21:44:26.113Z] [INFO] GET /js/undo.js 200 6ms +[2026-01-06T21:44:26.120Z] [INFO] GET /js/admin.js 200 4ms +[2026-01-06T21:44:26.124Z] [INFO] GET /js/notifications.js 200 2ms +[2026-01-06T21:44:26.127Z] [INFO] GET /js/proposals.js 200 3ms +[2026-01-06T21:44:26.129Z] [INFO] GET /js/gitea.js 200 3ms +[2026-01-06T21:44:26.136Z] [INFO] GET /js/knowledge.js 200 2ms +[2026-01-06T21:44:26.145Z] [INFO] GET /js/coding.js 200 2ms +[2026-01-06T21:44:26.156Z] [INFO] GET /js/mobile.js 200 3ms +[2026-01-06T21:44:26.197Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T21:44:26.203Z] [INFO] GET /api/auth/users 200 5ms +[2026-01-06T21:44:26.205Z] [INFO] GET /assets/icons/task.svg 304 6ms +[2026-01-06T21:44:26.242Z] [INFO] GET /api/auth/users 304 5ms +[2026-01-06T21:44:26.271Z] [INFO] Socket connected: hendrik_gebhardt@gmx.de (ej3X6UVw_wBdT36eAAAR) +[2026-01-06T21:44:26.278Z] [INFO] GET /api/projects 200 3ms +[2026-01-06T21:44:26.316Z] [INFO] GET /api/stats/dashboard?projectId=2 200 9ms +[2026-01-06T21:44:26.321Z] [INFO] GET /api/labels/2 200 4ms +[2026-01-06T21:44:26.324Z] [INFO] hendrik_gebhardt@gmx.de joined project:[object Object] +[2026-01-06T21:44:26.341Z] [INFO] GET /api/tasks/project/2 200 19ms +[2026-01-06T21:44:26.346Z] [INFO] GET /api/columns/2 200 5ms +[2026-01-06T21:44:26.351Z] [INFO] GET /api/reminders?project_id=2 200 3ms +[2026-01-06T21:44:26.395Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 7ms +[2026-01-06T21:44:26.435Z] [INFO] GET /api/notifications 200 8ms +[2026-01-06T21:44:26.473Z] [INFO] GET /api/knowledge/categories 200 7ms +[2026-01-06T21:44:27.928Z] [INFO] PUT /api/notifications/10/read 200 9ms +[2026-01-06T21:44:27.951Z] [INFO] GET /sw.js 200 2ms +[2026-01-06T21:44:30.254Z] [INFO] DELETE /api/notifications/10 200 10ms +[2026-01-06T21:44:32.293Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T21:44:32.482Z] [INFO] GET /api/reminders/2 200 7ms +[2026-01-06T21:44:34.473Z] [INFO] DELETE /api/reminders/2 200 7ms +[2026-01-06T21:44:34.511Z] [INFO] GET /api/columns/2 304 8ms +[2026-01-06T21:44:34.518Z] [INFO] GET /api/reminders?project_id=2 200 6ms +[2026-01-06T21:44:34.523Z] [INFO] GET /api/labels/2 304 5ms +[2026-01-06T21:44:34.542Z] [INFO] GET /api/tasks/project/2 304 15ms +[2026-01-06T21:44:34.551Z] [INFO] GET /api/reminders?project_id=2 304 4ms +[2026-01-06T21:44:34.587Z] [INFO] GET /api/columns/2 304 8ms +[2026-01-06T21:44:34.596Z] [INFO] GET /api/reminders?project_id=2 304 7ms +[2026-01-06T21:44:34.603Z] [INFO] GET /api/labels/2 304 7ms +[2026-01-06T21:44:34.618Z] [INFO] GET /api/tasks/project/2 304 21ms +[2026-01-06T21:44:35.479Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T21:44:37.229Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T21:44:38.414Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T21:44:41.904Z] [INFO] GET /api/contacts 200 3ms +[2026-01-06T21:44:42.899Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T21:44:44.098Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T21:44:49.219Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T21:45:21.858Z] [INFO] GET /api/knowledge/entries?categoryId=15 200 6ms +[2026-01-06T21:45:22.860Z] [INFO] POST /api/auth/refresh 200 7ms +[2026-01-06T21:47:33.588Z] [WARN] Login fehlgeschlagen: Falsches Passwort - momohomma@googlemail.com (Versuch 4) +[2026-01-06T21:47:33.591Z] [INFO] POST /api/auth/login 401 460ms +[2026-01-06T21:48:26.644Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T21:48:27.683Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T21:48:29.213Z] [DEBUG] Keine fälligen Erinnerungen gefunden +[2026-01-06T21:48:31.338Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T21:48:35.613Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T21:48:46.097Z] [INFO] POST /api/auth/refresh 200 8ms +[2026-01-06T21:48:51.528Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T21:48:56.605Z] [INFO] POST /api/auth/refresh 200 12ms +[2026-01-06T21:49:10.992Z] [INFO] POST /api/auth/refresh 200 11ms +[2026-01-06T21:49:11.822Z] [INFO] Knowledge-Eintrag erstellt: 06.01.2026 - Kontakt-Modul +[2026-01-06T21:49:11.824Z] [INFO] POST /api/knowledge/entries 201 12ms +[2026-01-06T21:49:11.870Z] [INFO] GET /api/knowledge/entries?categoryId=15 200 12ms +[2026-01-06T21:49:11.936Z] [INFO] GET /api/knowledge/categories 200 7ms +[2026-01-06T21:49:12.815Z] [INFO] POST /api/auth/refresh 200 9ms +[2026-01-06T21:49:18.137Z] [INFO] readCLAUDEmd: Checking path /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-06T21:49:18.138Z] [INFO] readCLAUDEmd: File does not exist: /home/claude-dev/TaskMate/CLAUDE.md +[2026-01-06T21:49:18.138Z] [INFO] Trying fallback path for TaskMate: /app/taskmate-source +[2026-01-06T21:49:18.138Z] [INFO] readCLAUDEmd: Checking path /app/taskmate-source/CLAUDE.md +[2026-01-06T21:49:18.139Z] [INFO] readCLAUDEmd: Successfully read 21194 characters from /app/taskmate-source/CLAUDE.md +[2026-01-06T21:49:18.141Z] [INFO] GET /api/coding/directories 200 9ms +[2026-01-06T21:49:18.203Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-06T21:49:18.203Z] [INFO] Git directory exists: true +[2026-01-06T21:49:18.204Z] [INFO] Git-Repository Check: /home/claude-dev/TaskMate -> /app/taskmate-source -> /app/taskmate-source/.git +[2026-01-06T21:49:18.204Z] [INFO] Git directory exists: true +[2026-01-06T21:49:18.266Z] [INFO] GET /api/coding/directories/3/status 200 69ms +[2026-01-06T21:49:19.153Z] [INFO] POST /api/auth/refresh 200 12ms diff --git a/test_login.json b/test_login.json new file mode 100644 index 0000000..5cc5ddc --- /dev/null +++ b/test_login.json @@ -0,0 +1 @@ +{"username":"admin","password":"Kx9#mP2$vL7@nQ4!wR"} \ No newline at end of file