diff --git a/ANWENDUNGSBESCHREIBUNG.txt b/ANWENDUNGSBESCHREIBUNG.txt index b4a2344..050f041 100644 --- a/ANWENDUNGSBESCHREIBUNG.txt +++ b/ANWENDUNGSBESCHREIBUNG.txt @@ -15,11 +15,14 @@ INHALTSVERZEICHNIS 3. Aufgaben verwalten 4. Projekte und Spalten 5. Kalenderansicht -6. Genehmigung (Vorschläge) -7. Archiv-Funktion -8. Einstellungen -9. Benutzerverwaltung (Admin) -10. Tipps und Tricks +6. Listenansicht +7. Genehmigung (Vorschläge) +8. Gitea-Integration +9. Benachrichtigungen (Inbox) +10. Archiv-Funktion +11. Einstellungen +12. Benutzerverwaltung (Admin) +13. Tipps und Tricks ================================================================================ 1. ERSTE SCHRITTE @@ -49,7 +52,7 @@ ADMINISTRATOREN Standard-Admin-Zugangsdaten: - Benutzername: admin -- Passwort: !1Data123 +- Passwort: Kx9#mP2$vL7@nQ4!wR Nach der Anmeldung als regulärer Benutzer sehen Sie das Kanban-Board. @@ -58,9 +61,9 @@ DIE OBERFLAECHE --------------- Die Oberflaeche besteht aus: -+-------------------------------------------------------------------------+ -| Logo | Projekt-Auswahl | Board | Kalender | Genehmigung | Suche | User | -+-------------------------------------------------------------------------+ ++--------------------------------------------------------------------------------------+ +| Logo | Projekt-Auswahl | Board | Liste | Kalender | Genehmigung | Gitea | Suche | User | ++--------------------------------------------------------------------------------------+ | Filterleiste: Benutzer | Prioritaet | Labels | Faelligkeit | +------------------------------------------------------------------+ | Statistik: Offen | In Arbeit | Erledigt | Ueberfaellig | @@ -296,7 +299,45 @@ FILTER ================================================================================ -6. GENEHMIGUNG (VORSCHLÄGE) +6. LISTENANSICHT +================================================================================ + +Die Listenansicht bietet eine tabellarische Übersicht aller Aufgaben. + +ANSICHT WECHSELN +---------------- +Klicken Sie auf "Liste" in der Navigationsleiste. + +ANSICHTSMODI +------------ +- Gruppierte Ansicht: Aufgaben nach Status gruppiert (einklappbar) +- Flache Liste: Alle Aufgaben in einer Tabelle + +SPALTEN +------- +- Aufgabe: Titel mit Farbpunkt der Spalte +- Status: Aktueller Status (per Dropdown änderbar) +- Priorität: Hoch/Mittel/Niedrig mit Sternen (per Dropdown änderbar) +- Fälligkeitsdatum: Datum (per Datepicker änderbar) +- Zugewiesen: Benutzer-Avatar (per Dropdown änderbar) + +INLINE-BEARBEITUNG +------------------ +Alle Felder können direkt in der Liste bearbeitet werden: +- Status: Dropdown öffnen und ändern +- Priorität: Dropdown öffnen und ändern +- Datum: Datepicker öffnen und ändern +- Zuweisung: Dropdown öffnen und ändern +- Titel: Doppelklick zum Bearbeiten + +SORTIERUNG +---------- +Klicken Sie auf eine Spaltenüberschrift, um nach dieser Spalte zu sortieren. +Erneutes Klicken kehrt die Sortierrichtung um. + + +================================================================================ +7. GENEHMIGUNG (VORSCHLÄGE) ================================================================================ Der Genehmigung-Bereich ermöglicht es Teammitgliedern, Vorschläge einzureichen, @@ -343,7 +384,128 @@ VORSCHLAG LÖSCHEN ================================================================================ -7. ARCHIV-FUNKTION +8. GITEA-INTEGRATION +================================================================================ + +Die Gitea-Integration ermöglicht die Verknüpfung von TaskMate-Projekten mit +Git-Repositories auf einem Gitea-Server. + +VORAUSSETZUNGEN +--------------- +- Gitea-Server muss konfiguriert sein (GITEA_URL, GITEA_TOKEN in .env) +- Docker-Container muss Zugriff auf lokale Laufwerke haben + +GITEA-TAB ÖFFNEN +---------------- +Klicken Sie auf "Gitea" in der Navigationsleiste. + +REPOSITORY VERKNÜPFEN +--------------------- +1. Verbindungsstatus prüfen (grün = verbunden) +2. Repository aus Dropdown wählen ODER "Neues Repository erstellen" +3. Lokalen Pfad eingeben (z.B. C:\Projekte\MeinProjekt) +4. Standard-Branch festlegen (z.B. "main") +5. "Speichern" klicken + +NEUES REPOSITORY ERSTELLEN +-------------------------- +1. "Neues Repository erstellen" klicken +2. Name eingeben (wird automatisch formatiert) +3. Optional: Beschreibung hinzufügen +4. Sichtbarkeit wählen (Privat/Öffentlich) +5. "Erstellen" klicken + +GIT-STATUS +---------- +Nach der Verknüpfung zeigt das Status-Panel: +- Aktueller Branch (per Dropdown wechselbar) +- Status: Clean (keine Änderungen) oder Dirty (Änderungen vorhanden) +- Anzahl der geänderten Dateien + +GIT-OPERATIONEN +--------------- +- Fetch: Änderungen vom Server abrufen (ohne lokale Dateien zu ändern) +- Pull: Änderungen vom Server herunterladen und einbinden +- Push: Lokale Änderungen auf den Server hochladen +- Commit: Änderungen mit Nachricht speichern + +PUSH MIT BRANCH-AUSWAHL +----------------------- +Beim Push können Sie den Ziel-Branch wählen: +- "Gleicher Name wie lokal": Push auf gleichnamigen Remote-Branch +- "main", "master", "develop": Push auf spezifischen Branch +- Force-Push: Überschreibt Remote-Historie (bei Konflikten) + +BRANCH UMBENENNEN +----------------- +1. Auf das Stift-Symbol neben dem Branch-Dropdown klicken +2. Neuen Branch-Namen eingeben +3. "Umbenennen" klicken + +ÄNDERUNGEN ANZEIGEN +------------------- +Die Änderungsliste zeigt alle modifizierten Dateien: +- M = Modified (geändert) +- A = Added (neu hinzugefügt) +- D = Deleted (gelöscht) +- ? = Untracked (nicht versioniert) + +COMMIT-HISTORIE +--------------- +Die letzten Commits werden mit Hash, Nachricht, Autor und Datum angezeigt. +- X-Button: Commit aus der Anzeige ausblenden +- "Alle ausblenden": Alle Commits aus der Anzeige entfernen + +KONFIGURATION ENTFERNEN +----------------------- +1. Auf das Papierkorb-Symbol im Repository-Header klicken +2. Bestätigen +Die Verknüpfung wird entfernt, das Repository bleibt erhalten. + + +================================================================================ +9. BENACHRICHTIGUNGEN (INBOX) +================================================================================ + +Das Benachrichtigungssystem informiert Sie über wichtige Ereignisse in Echtzeit. + +GLOCKEN-SYMBOL +-------------- +- Position: Oben rechts in der Kopfzeile, neben dem Benutzer-Avatar +- Grau: Keine ungelesenen Nachrichten +- Farbig mit Badge: Anzahl ungelesener Nachrichten + +INBOX ÖFFNEN +------------ +Klicken Sie auf das Glocken-Symbol, um das Dropdown-Menü zu öffnen. + +BENACHRICHTIGUNGSTYPEN +---------------------- +- Aufgabe zugewiesen: Eine Aufgabe wurde Ihnen zugewiesen +- Zuweisung entfernt: Sie wurden von einer Aufgabe entfernt +- Bald fällig: Eine Ihrer Aufgaben ist morgen fällig +- Aufgabe erledigt: Eine Aufgabe wurde abgeschlossen +- Fälligkeit geändert: Das Fälligkeitsdatum wurde geändert +- Priorität erhöht: Priorität wurde auf "Hoch" gesetzt +- Neuer Kommentar: Kommentar zu Ihrer Aufgabe +- @Erwähnung: Sie wurden in einem Kommentar erwähnt +- Genehmigung ausstehend: Neue Genehmigung wartet (persistent) +- Genehmigung erteilt: Vorschlag wurde genehmigt + +PERSISTENTE BENACHRICHTIGUNGEN +------------------------------ +Genehmigungsanfragen sind "persistent" - sie können nicht gelöscht werden +und bleiben bis zur Genehmigung/Ablehnung bestehen. +Sie sind mit einem gelben Rand markiert. + +AKTIONEN +-------- +- Klick auf Nachricht: Navigiert zur Aufgabe oder Genehmigung +- "Alle als gelesen markieren": Markiert alle Nachrichten als gelesen + + +================================================================================ +10. ARCHIV-FUNKTION ================================================================================ Das Archiv speichert Aufgaben, die Sie nicht mehr aktiv benoetigen, @@ -367,7 +529,7 @@ AUFGABE ARCHIVIEREN ================================================================================ -8. EINSTELLUNGEN +11. EINSTELLUNGEN ================================================================================ Oeffnen Sie die Einstellungen ueber das Benutzer-Menu (oben rechts). @@ -392,7 +554,7 @@ PASSWORT AENDERN ================================================================================ -9. BENUTZERVERWALTUNG (ADMIN) +12. BENUTZERVERWALTUNG (ADMIN) ================================================================================ Die Benutzerverwaltung ist nur für Administratoren zugänglich und ermöglicht @@ -458,7 +620,7 @@ HINWEIS: Der eigene Account kann nicht gelöscht werden. ================================================================================ -10. TIPPS UND TRICKS +13. TIPPS UND TRICKS ================================================================================ SUCHE diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 7c246cb..c1a44aa 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,6 +1,56 @@ TASKMATE - CHANGELOG ==================== +================================================================================ +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 ================================================================================ diff --git a/backend/database.js b/backend/database.js index f363a37..58289dd 100644 --- a/backend/database.js +++ b/backend/database.js @@ -461,7 +461,7 @@ async function createDefaultUsers() { // Admin-Benutzer const adminUser = { username: 'admin', - password: '!1Data123', + password: 'Kx9#mP2$vL7@nQ4!wR', displayName: 'Administrator', color: '#8B5CF6' }; diff --git a/backend/routes/admin.js b/backend/routes/admin.js index c416d32..08afdfb 100644 --- a/backend/routes/admin.js +++ b/backend/routes/admin.js @@ -290,35 +290,44 @@ router.delete('/users/:id', (req, res) => { return res.status(400).json({ error: 'Sie können sich nicht selbst löschen' }); } - // Alle Referenzen auf den Benutzer auf NULL setzen oder löschen - // Tasks + // Alle Referenzen auf den Benutzer behandeln + // Tasks - assigned_to und created_by auf NULL setzen (erlaubt NULL) db.prepare('UPDATE tasks SET assigned_to = NULL WHERE assigned_to = ?').run(userId); db.prepare('UPDATE tasks SET created_by = NULL WHERE created_by = ?').run(userId); - // Kommentare - db.prepare('UPDATE comments SET user_id = NULL WHERE user_id = ?').run(userId); + // Task-Assignees löschen (Mehrfachzuweisung) + db.prepare('DELETE FROM task_assignees WHERE user_id = ?').run(userId); - // Historie - db.prepare('UPDATE history SET user_id = NULL WHERE user_id = ?').run(userId); + // Kommentare löschen (user_id NOT NULL) + db.prepare('DELETE FROM comments WHERE user_id = ?').run(userId); - // Vorschläge - db.prepare('UPDATE proposals SET created_by = NULL WHERE created_by = ?').run(userId); + // Historie löschen (user_id NOT NULL) + db.prepare('DELETE FROM history WHERE user_id = ?').run(userId); + + // Vorschläge: Votes zuerst löschen, dann Vorschläge des Benutzers + db.prepare('DELETE FROM proposal_votes WHERE user_id = ?').run(userId); + db.prepare('DELETE FROM proposals WHERE created_by = ?').run(userId); + // approved_by kann NULL sein db.prepare('UPDATE proposals SET approved_by = NULL WHERE approved_by = ?').run(userId); - // Projekte + // Projekte - created_by auf NULL setzen (erlaubt NULL) db.prepare('UPDATE projects SET created_by = NULL WHERE created_by = ?').run(userId); - // Anhänge + // Anhänge - uploaded_by auf NULL setzen (erlaubt NULL) db.prepare('UPDATE attachments SET uploaded_by = NULL WHERE uploaded_by = ?').run(userId); - // Links + // Links - created_by auf NULL setzen (erlaubt NULL) db.prepare('UPDATE links SET created_by = NULL WHERE created_by = ?').run(userId); - // Login-Audit (kann gelöscht werden) + // Applications - created_by auf NULL setzen (erlaubt NULL) + db.prepare('UPDATE applications SET created_by = NULL WHERE created_by = ?').run(userId); + + // Login-Audit löschen db.prepare('DELETE FROM login_audit WHERE user_id = ?').run(userId); - // Votes des Benutzers löschen - db.prepare('DELETE FROM proposal_votes WHERE user_id = ?').run(userId); + // Benachrichtigungen löschen (wird auch durch CASCADE gelöscht, aber sicherheitshalber) + db.prepare('DELETE FROM notifications WHERE user_id = ?').run(userId); + db.prepare('UPDATE notifications SET actor_id = NULL WHERE actor_id = ?').run(userId); // Benutzer löschen db.prepare('DELETE FROM users WHERE id = ?').run(userId); diff --git a/backups/backup_2025-12-22T20-12-14-820Z.db-wal b/backups/backup_2025-12-22T20-12-14-820Z.db-wal deleted file mode 100644 index 3a8ed55..0000000 Binary files a/backups/backup_2025-12-22T20-12-14-820Z.db-wal and /dev/null differ diff --git a/backups/backup_2025-12-22T20-56-42-001Z.db b/backups/backup_2025-12-22T20-56-42-001Z.db deleted file mode 100644 index 0fdc965..0000000 Binary files a/backups/backup_2025-12-22T20-56-42-001Z.db and /dev/null differ diff --git a/backups/backup_2025-12-22T20-56-42-001Z.db-wal b/backups/backup_2025-12-22T20-56-42-001Z.db-wal deleted file mode 100644 index 09b1b3b..0000000 Binary files a/backups/backup_2025-12-22T20-56-42-001Z.db-wal and /dev/null differ diff --git a/backups/backup_2025-12-22T21-43-57-007Z.db-wal b/backups/backup_2025-12-22T21-43-57-007Z.db-wal deleted file mode 100644 index e24a03c..0000000 Binary files a/backups/backup_2025-12-22T21-43-57-007Z.db-wal and /dev/null differ diff --git a/backups/backup_2025-12-22T21-43-57-007Z.db b/backups/backup_2025-12-29T19-59-53-354Z.db similarity index 77% rename from backups/backup_2025-12-22T21-43-57-007Z.db rename to backups/backup_2025-12-29T19-59-53-354Z.db index 0fdc965..dfdeb0e 100644 Binary files a/backups/backup_2025-12-22T21-43-57-007Z.db and b/backups/backup_2025-12-29T19-59-53-354Z.db differ diff --git a/backups/backup_2025-12-29T19-59-53-354Z.db-wal b/backups/backup_2025-12-29T19-59-53-354Z.db-wal new file mode 100644 index 0000000..c81d695 Binary files /dev/null and b/backups/backup_2025-12-29T19-59-53-354Z.db-wal differ diff --git a/backups/backup_2025-12-22T20-12-14-820Z.db b/backups/backup_2025-12-29T20-11-37-153Z.db similarity index 77% rename from backups/backup_2025-12-22T20-12-14-820Z.db rename to backups/backup_2025-12-29T20-11-37-153Z.db index 0fdc965..37ebbb6 100644 Binary files a/backups/backup_2025-12-22T20-12-14-820Z.db and b/backups/backup_2025-12-29T20-11-37-153Z.db differ diff --git a/backups/backup_2025-12-29T20-11-37-153Z.db-wal b/backups/backup_2025-12-29T20-11-37-153Z.db-wal new file mode 100644 index 0000000..c33befa Binary files /dev/null and b/backups/backup_2025-12-29T20-11-37-153Z.db-wal differ diff --git a/backups/backup_2025-12-29T20-14-06-429Z.db b/backups/backup_2025-12-29T20-14-06-429Z.db new file mode 100644 index 0000000..2f7292d Binary files /dev/null and b/backups/backup_2025-12-29T20-14-06-429Z.db differ diff --git a/backups/backup_2025-12-29T20-14-06-429Z.db-wal b/backups/backup_2025-12-29T20-14-06-429Z.db-wal new file mode 100644 index 0000000..6d67d05 Binary files /dev/null and b/backups/backup_2025-12-29T20-14-06-429Z.db-wal differ diff --git a/data/taskmate.db b/data/taskmate.db index dfdeb0e..2f7292d 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 index 4b65144..c576d1d 100644 Binary files a/data/taskmate.db-shm and b/data/taskmate.db-shm differ diff --git a/data/taskmate.db-wal b/data/taskmate.db-wal index 4f0f992..92b468b 100644 Binary files a/data/taskmate.db-wal and b/data/taskmate.db-wal differ diff --git a/logs/app.log b/logs/app.log index 35bfee4..ef18791 100644 --- a/logs/app.log +++ b/logs/app.log @@ -33487,3 +33487,462 @@ hint: See the 'Note about fast-forwards' in 'git push --help' for details. [2025-12-29T19:52:29.002Z] [INFO] GET /api/health 200 1ms [2025-12-29T19:52:34.672Z] [INFO] CSRF: Token missing or not stored for user 1, generated new token [2025-12-29T19:52:34.673Z] [INFO] POST /api/git/commit/4 403 5ms +[2025-12-29T19:52:35.196Z] [INFO] Commit mit Autor: HG +[2025-12-29T19:52:36.246Z] [INFO] POST /api/git/commit/4 200 1568ms +[2025-12-29T19:52:36.754Z] [INFO] GET /api/git/status/4 200 501ms +[2025-12-29T19:52:36.860Z] [INFO] GET /api/git/branches/4 304 105ms +[2025-12-29T19:52:36.960Z] [INFO] GET /api/git/commits/4?limit=10 200 99ms +[2025-12-29T19:52:42.579Z] [INFO] POST /api/git/push/4 200 1900ms +[2025-12-29T19:52:42.690Z] [INFO] GET /api/git/branches/4 304 106ms +[2025-12-29T19:52:43.136Z] [INFO] GET /api/git/status/4 200 551ms +[2025-12-29T19:52:43.222Z] [INFO] GET /api/git/commits/4?limit=10 304 637ms +[2025-12-29T19:52:58.371Z] [INFO] GET /api/health 200 1ms +[2025-12-29T19:53:02.279Z] [INFO] HG left project:[object Object] +[2025-12-29T19:53:02.280Z] [INFO] HG joined project:[object Object] +[2025-12-29T19:53:02.291Z] [INFO] GET /api/columns/1 200 4ms +[2025-12-29T19:53:02.300Z] [INFO] GET /api/stats/dashboard?projectId=1 200 9ms +[2025-12-29T19:53:02.328Z] [INFO] GET /api/labels/1 200 5ms +[2025-12-29T19:53:02.322Z] [INFO] GET /api/tasks/project/1 200 22ms +[2025-12-29T19:53:14.948Z] [INFO] HG left project:[object Object] +[2025-12-29T19:53:14.948Z] [INFO] HG joined project:[object Object] +[2025-12-29T19:53:14.964Z] [INFO] GET /api/stats/dashboard?projectId=4 304 7ms +[2025-12-29T19:53:14.970Z] [INFO] GET /api/labels/4 304 4ms +[2025-12-29T19:53:14.977Z] [INFO] GET /api/columns/4 304 3ms +[2025-12-29T19:53:14.974Z] [INFO] GET /api/tasks/project/4 304 4ms +[2025-12-29T19:53:18.050Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=4 304 4ms +[2025-12-29T19:53:19.340Z] [INFO] GET /api/applications/4 200 4ms +[2025-12-29T19:53:19.442Z] [INFO] GET /api/git/branches/4 304 96ms +[2025-12-29T19:53:19.852Z] [INFO] GET /api/git/status/4 304 505ms +[2025-12-29T19:53:19.938Z] [INFO] GET /api/git/commits/4?limit=10 304 591ms +[2025-12-29T19:53:27.736Z] [INFO] GET /api/health 200 1ms +[2025-12-29T19:53:57.031Z] [INFO] GET /api/health 200 1ms +[2025-12-29T19:54:26.406Z] [INFO] GET /api/health 200 0ms +[2025-12-29T19:54:55.766Z] [INFO] GET /api/health 200 1ms +[2025-12-29T19:55:20.762Z] [INFO] Logout: HG +[2025-12-29T19:55:20.763Z] [INFO] POST /api/auth/logout 200 3ms +[2025-12-29T19:55:20.765Z] [INFO] Logout: HG +[2025-12-29T19:55:20.767Z] [INFO] Socket disconnected: HG (WLX8rFFdGcDBaqlzAAAF) +[2025-12-29T19:55:20.765Z] [INFO] POST /api/auth/logout 200 2ms +[2025-12-29T19:55:25.136Z] [INFO] GET /api/health 200 1ms +[2025-12-29T19:55:27.496Z] [INFO] Login erfolgreich: admin +[2025-12-29T19:55:27.510Z] [INFO] GET /api/admin/users 200 4ms +[2025-12-29T19:55:27.497Z] [INFO] POST /api/auth/login 200 258ms +[2025-12-29T19:55:27.512Z] [INFO] Socket connected: admin (iRPI5afdV7TLQtnoAAAH) +[2025-12-29T19:55:27.521Z] [INFO] GET /api/admin/upload-settings 200 3ms +[2025-12-29T19:55:34.195Z] [INFO] DELETE /api/admin/users/6 500 7ms +[2025-12-29T19:55:34.194Z] [ERROR] Fehler beim Löschen des Benutzers: {"code":"SQLITE_CONSTRAINT_NOTNULL"} +[2025-12-29T19:55:54.508Z] [INFO] GET /api/health 200 1ms +[2025-12-29T19:56:19.617Z] [INFO] DELETE /api/admin/users/6 500 4ms +[2025-12-29T19:56:19.617Z] [ERROR] Fehler beim Löschen des Benutzers: {"code":"SQLITE_CONSTRAINT_NOTNULL"} +[2025-12-29T19:56:23.783Z] [INFO] GET /api/health 200 1ms +[2025-12-29T19:56:53.163Z] [INFO] GET /api/health 200 0ms +[2025-12-29T19:57:22.530Z] [INFO] GET /api/health 200 1ms +[2025-12-29T19:57:51.896Z] [INFO] GET /api/health 200 0ms +[2025-12-29T19:58:21.248Z] [INFO] GET /api/health 200 1ms +[2025-12-29T19:58:22.691Z] [INFO] SIGTERM empfangen, fahre herunter... +[2025-12-29T19:58:54.723Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2025-12-29T19:58:54.780Z] [INFO] Datenbank-Tabellen erstellt +[2025-12-29T19:58:54.781Z] [INFO] Datenbank initialisiert +[2025-12-29T19:58:54.783Z] [INFO] Server läuft auf Port 3000 +[2025-12-29T19:58:54.783Z] [INFO] Umgebung: production +[2025-12-29T19:58:54.785Z] [INFO] Automatische Backups aktiviert +[2025-12-29T19:58:54.785Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2025-12-29T19:58:57.019Z] [INFO] Socket connected: admin (-OQS4SWvLt4FmT5wAAAB) +[2025-12-29T19:58:59.507Z] [INFO] GET /api/health 200 3ms +[2025-12-29T19:59:12.704Z] [INFO] GET / 304 1ms +[2025-12-29T19:59:12.779Z] [INFO] GET /css/variables.css 304 1ms +[2025-12-29T19:59:12.795Z] [INFO] GET /css/notifications.css 304 1ms +[2025-12-29T19:59:12.788Z] [INFO] GET /css/list.css 304 1ms +[2025-12-29T19:59:12.789Z] [INFO] GET /css/proposals.css 304 0ms +[2025-12-29T19:59:12.785Z] [INFO] GET /css/base.css 304 2ms +[2025-12-29T19:59:12.821Z] [INFO] GET /css/board.css 304 25ms +[2025-12-29T19:59:12.822Z] [INFO] GET /css/gitea.css 304 25ms +[2025-12-29T19:59:12.820Z] [INFO] GET /css/calendar.css 304 22ms +[2025-12-29T19:59:12.821Z] [INFO] GET /css/modal.css 304 24ms +[2025-12-29T19:59:12.823Z] [INFO] GET /css/components.css 304 23ms +[2025-12-29T19:59:12.822Z] [INFO] GET /css/admin.css 304 24ms +[2025-12-29T19:59:12.881Z] [INFO] GET /js/api.js 304 2ms +[2025-12-29T19:59:12.853Z] [INFO] GET /css/responsive.css 304 30ms +[2025-12-29T19:59:12.853Z] [INFO] GET /js/app.js 304 29ms +[2025-12-29T19:59:12.882Z] [INFO] GET /js/store.js 304 2ms +[2025-12-29T19:59:12.882Z] [INFO] GET /js/auth.js 304 2ms +[2025-12-29T19:59:12.883Z] [INFO] GET /js/offline.js 304 3ms +[2025-12-29T19:59:12.882Z] [INFO] GET /js/sync.js 304 2ms +[2025-12-29T19:59:12.883Z] [INFO] GET /js/board.js 304 3ms +[2025-12-29T19:59:12.913Z] [INFO] GET /js/calendar.js 304 29ms +[2025-12-29T19:59:12.912Z] [INFO] GET /js/shortcuts.js 304 28ms +[2025-12-29T19:59:12.912Z] [INFO] GET /js/list.js 304 28ms +[2025-12-29T19:59:12.913Z] [INFO] GET /js/task-modal.js 304 29ms +[2025-12-29T19:59:12.914Z] [INFO] GET /js/undo.js 304 29ms +[2025-12-29T19:59:12.954Z] [INFO] GET /js/notifications.js 304 39ms +[2025-12-29T19:59:12.955Z] [INFO] GET /js/gitea.js 304 40ms +[2025-12-29T19:59:12.955Z] [INFO] GET /js/utils.js 304 40ms +[2025-12-29T19:59:12.955Z] [INFO] GET /js/proposals.js 304 41ms +[2025-12-29T19:59:12.999Z] [INFO] GET /assets/icons/task.svg 304 7ms +[2025-12-29T19:59:12.914Z] [INFO] GET /js/admin.js 304 29ms +[2025-12-29T19:59:12.996Z] [INFO] GET /api/auth/users 304 4ms +[2025-12-29T19:59:13.009Z] [INFO] GET /api/admin/users 304 3ms +[2025-12-29T19:59:13.021Z] [INFO] GET /api/admin/upload-settings 304 4ms +[2025-12-29T19:59:14.844Z] [INFO] GET /sw.js 304 1ms +[2025-12-29T19:59:28.867Z] [INFO] GET /api/health 200 1ms +[2025-12-29T19:59:53.369Z] [INFO] Backup erstellt: backup_2025-12-29T19-59-53-354Z.db +[2025-12-29T19:59:53.378Z] [INFO] Altes Backup gelöscht: backup_2025-12-22T20-12-14-820Z.db +[2025-12-29T19:59:53.380Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2025-12-29T19:59:58.319Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:00:27.674Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:00:42.770Z] [INFO] Socket disconnected: admin (-OQS4SWvLt4FmT5wAAAB) +[2025-12-29T20:00:48.744Z] [INFO] Admin admin hat Benutzer TN gelöscht +[2025-12-29T20:00:48.745Z] [INFO] DELETE /api/admin/users/6 200 25ms +[2025-12-29T20:00:48.755Z] [INFO] GET /api/admin/users 200 5ms +[2025-12-29T20:00:57.002Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:01:26.273Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:01:55.607Z] [INFO] GET /api/health 200 0ms +[2025-12-29T20:02:24.946Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:02:54.269Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:03:23.589Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:03:52.913Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:04:22.251Z] [INFO] GET /api/health 200 0ms +[2025-12-29T20:04:51.596Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:05:20.915Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:05:50.235Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:06:19.523Z] [INFO] GET /api/health 200 0ms +[2025-12-29T20:06:48.852Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:07:18.151Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:07:47.416Z] [INFO] GET /api/health 200 0ms +[2025-12-29T20:08:16.730Z] [INFO] GET /api/health 200 0ms +[2025-12-29T20:08:45.985Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:09:15.273Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:10:38.649Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2025-12-29T20:10:38.683Z] [INFO] Datenbank-Tabellen erstellt +[2025-12-29T20:10:38.684Z] [INFO] Datenbank initialisiert +[2025-12-29T20:10:38.685Z] [INFO] Server läuft auf Port 3000 +[2025-12-29T20:10:38.686Z] [INFO] Umgebung: production +[2025-12-29T20:10:38.686Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2025-12-29T20:10:38.686Z] [INFO] Automatische Backups aktiviert +[2025-12-29T20:10:43.529Z] [INFO] GET /api/health 200 4ms +[2025-12-29T20:10:48.003Z] [INFO] Logout: admin +[2025-12-29T20:10:48.016Z] [INFO] GET / 304 2ms +[2025-12-29T20:10:48.004Z] [INFO] POST /api/auth/logout 200 3ms +[2025-12-29T20:10:48.036Z] [INFO] GET /css/variables.css 304 1ms +[2025-12-29T20:10:48.041Z] [INFO] GET /css/base.css 304 1ms +[2025-12-29T20:10:48.043Z] [INFO] GET /css/board.css 304 1ms +[2025-12-29T20:10:48.043Z] [INFO] GET /css/admin.css 304 1ms +[2025-12-29T20:10:48.040Z] [INFO] GET /css/components.css 304 1ms +[2025-12-29T20:10:48.056Z] [INFO] GET /css/notifications.css 304 11ms +[2025-12-29T20:10:48.058Z] [INFO] GET /css/modal.css 304 13ms +[2025-12-29T20:10:48.057Z] [INFO] GET /css/gitea.css 304 11ms +[2025-12-29T20:10:48.054Z] [INFO] GET /css/proposals.css 304 10ms +[2025-12-29T20:10:48.058Z] [INFO] GET /css/list.css 304 12ms +[2025-12-29T20:10:48.059Z] [INFO] GET /css/calendar.css 304 13ms +[2025-12-29T20:10:48.068Z] [INFO] GET /css/responsive.css 304 9ms +[2025-12-29T20:10:48.069Z] [INFO] GET /js/app.js 304 9ms +[2025-12-29T20:10:48.090Z] [INFO] GET /js/auth.js 304 1ms +[2025-12-29T20:10:48.089Z] [INFO] GET /js/store.js 304 1ms +[2025-12-29T20:10:48.090Z] [INFO] GET /js/api.js 304 1ms +[2025-12-29T20:10:48.092Z] [INFO] GET /js/sync.js 304 1ms +[2025-12-29T20:10:48.093Z] [INFO] GET /js/offline.js 304 2ms +[2025-12-29T20:10:48.093Z] [INFO] GET /js/board.js 304 1ms +[2025-12-29T20:10:48.093Z] [INFO] GET /js/task-modal.js 304 1ms +[2025-12-29T20:10:48.095Z] [INFO] GET /js/list.js 304 1ms +[2025-12-29T20:10:48.094Z] [INFO] GET /js/calendar.js 304 0ms +[2025-12-29T20:10:48.097Z] [INFO] GET /js/undo.js 304 2ms +[2025-12-29T20:10:48.096Z] [INFO] GET /js/shortcuts.js 304 1ms +[2025-12-29T20:10:48.097Z] [INFO] GET /js/proposals.js 304 1ms +[2025-12-29T20:10:48.108Z] [INFO] GET /js/utils.js 304 9ms +[2025-12-29T20:10:48.109Z] [INFO] GET /js/gitea.js 304 10ms +[2025-12-29T20:10:48.108Z] [INFO] GET /js/notifications.js 304 10ms +[2025-12-29T20:10:48.097Z] [INFO] GET /js/admin.js 304 2ms +[2025-12-29T20:10:48.135Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2025-12-29T20:10:49.698Z] [INFO] GET /sw.js 304 1ms +[2025-12-29T20:10:55.826Z] [INFO] GET / 304 1ms +[2025-12-29T20:10:55.846Z] [INFO] GET /css/variables.css 304 0ms +[2025-12-29T20:10:55.854Z] [INFO] GET /css/proposals.css 304 1ms +[2025-12-29T20:10:55.854Z] [INFO] GET /css/components.css 304 1ms +[2025-12-29T20:10:55.849Z] [INFO] GET /css/base.css 304 0ms +[2025-12-29T20:10:55.852Z] [INFO] GET /css/modal.css 304 1ms +[2025-12-29T20:10:55.865Z] [INFO] GET /css/calendar.css 304 8ms +[2025-12-29T20:10:55.864Z] [INFO] GET /css/notifications.css 304 8ms +[2025-12-29T20:10:55.864Z] [INFO] GET /css/gitea.css 304 8ms +[2025-12-29T20:10:55.863Z] [INFO] GET /css/board.css 304 8ms +[2025-12-29T20:10:55.866Z] [INFO] GET /css/admin.css 304 9ms +[2025-12-29T20:10:55.875Z] [INFO] GET /css/responsive.css 304 9ms +[2025-12-29T20:10:55.865Z] [INFO] GET /css/list.css 304 9ms +[2025-12-29T20:10:55.875Z] [INFO] GET /js/app.js 304 8ms +[2025-12-29T20:10:55.902Z] [INFO] GET /js/api.js 304 1ms +[2025-12-29T20:10:55.903Z] [INFO] GET /js/auth.js 304 2ms +[2025-12-29T20:10:55.902Z] [INFO] GET /js/store.js 304 2ms +[2025-12-29T20:10:55.903Z] [INFO] GET /js/sync.js 304 2ms +[2025-12-29T20:10:55.904Z] [INFO] GET /js/board.js 304 3ms +[2025-12-29T20:10:55.903Z] [INFO] GET /js/offline.js 304 2ms +[2025-12-29T20:10:55.908Z] [INFO] GET /js/shortcuts.js 304 3ms +[2025-12-29T20:10:55.907Z] [INFO] GET /js/list.js 304 2ms +[2025-12-29T20:10:55.908Z] [INFO] GET /js/undo.js 304 2ms +[2025-12-29T20:10:55.907Z] [INFO] GET /js/calendar.js 304 2ms +[2025-12-29T20:10:55.909Z] [INFO] GET /js/admin.js 304 3ms +[2025-12-29T20:10:55.909Z] [INFO] GET /js/task-modal.js 304 3ms +[2025-12-29T20:10:55.918Z] [INFO] GET /js/notifications.js 304 8ms +[2025-12-29T20:10:55.919Z] [INFO] GET /js/gitea.js 304 9ms +[2025-12-29T20:10:55.919Z] [INFO] GET /js/utils.js 304 9ms +[2025-12-29T20:10:55.918Z] [INFO] GET /js/proposals.js 304 9ms +[2025-12-29T20:10:55.945Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2025-12-29T20:10:57.494Z] [INFO] GET /sw.js 304 0ms +[2025-12-29T20:11:02.038Z] [WARN] Login fehlgeschlagen: Falsches Passwort - admin (Versuch 1) +[2025-12-29T20:11:02.039Z] [INFO] POST /api/auth/login 401 223ms +[2025-12-29T20:11:05.570Z] [WARN] Login fehlgeschlagen: Falsches Passwort - admin (Versuch 2) +[2025-12-29T20:11:05.570Z] [INFO] POST /api/auth/login 401 203ms +[2025-12-29T20:11:12.801Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:11:14.811Z] [WARN] Login fehlgeschlagen: Falsches Passwort - admin (Versuch 3) +[2025-12-29T20:11:14.812Z] [INFO] POST /api/auth/login 401 203ms +[2025-12-29T20:11:32.680Z] [INFO] Login erfolgreich: admin +[2025-12-29T20:11:32.680Z] [INFO] POST /api/auth/login 200 206ms +[2025-12-29T20:11:32.692Z] [INFO] GET /api/admin/users 200 3ms +[2025-12-29T20:11:32.696Z] [INFO] Socket connected: admin (rZxp5k6JLoEZPtIcAAAB) +[2025-12-29T20:11:32.698Z] [INFO] GET /api/admin/upload-settings 304 1ms +[2025-12-29T20:11:37.167Z] [INFO] Backup erstellt: backup_2025-12-29T20-11-37-153Z.db +[2025-12-29T20:11:37.171Z] [INFO] Altes Backup gelöscht: backup_2025-12-22T20-56-42-001Z.db +[2025-12-29T20:11:37.172Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2025-12-29T20:11:42.157Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:11:55.816Z] [INFO] Logout: admin +[2025-12-29T20:11:55.817Z] [INFO] POST /api/auth/logout 200 1ms +[2025-12-29T20:11:55.825Z] [INFO] GET / 304 0ms +[2025-12-29T20:11:55.819Z] [INFO] Socket disconnected: admin (rZxp5k6JLoEZPtIcAAAB) +[2025-12-29T20:11:55.841Z] [INFO] GET /css/variables.css 304 1ms +[2025-12-29T20:11:55.846Z] [INFO] GET /css/board.css 304 1ms +[2025-12-29T20:11:55.846Z] [INFO] GET /css/admin.css 304 1ms +[2025-12-29T20:11:55.845Z] [INFO] GET /css/base.css 304 1ms +[2025-12-29T20:11:55.844Z] [INFO] GET /css/components.css 304 1ms +[2025-12-29T20:11:55.857Z] [INFO] GET /css/gitea.css 304 9ms +[2025-12-29T20:11:55.847Z] [INFO] GET /css/proposals.css 304 1ms +[2025-12-29T20:11:55.857Z] [INFO] GET /css/notifications.css 304 10ms +[2025-12-29T20:11:55.858Z] [INFO] GET /css/modal.css 304 10ms +[2025-12-29T20:11:55.858Z] [INFO] GET /css/responsive.css 304 10ms +[2025-12-29T20:11:55.859Z] [INFO] GET /css/calendar.css 304 10ms +[2025-12-29T20:11:55.869Z] [INFO] GET /js/app.js 304 9ms +[2025-12-29T20:11:55.859Z] [INFO] GET /css/list.css 304 10ms +[2025-12-29T20:11:55.889Z] [INFO] GET /js/auth.js 304 2ms +[2025-12-29T20:11:55.889Z] [INFO] GET /js/sync.js 304 2ms +[2025-12-29T20:11:55.888Z] [INFO] GET /js/api.js 304 1ms +[2025-12-29T20:11:55.889Z] [INFO] GET /js/store.js 304 3ms +[2025-12-29T20:11:55.890Z] [INFO] GET /js/offline.js 304 2ms +[2025-12-29T20:11:55.890Z] [INFO] GET /js/board.js 304 2ms +[2025-12-29T20:11:55.901Z] [INFO] GET /js/shortcuts.js 304 10ms +[2025-12-29T20:11:55.902Z] [INFO] GET /js/list.js 304 11ms +[2025-12-29T20:11:55.900Z] [INFO] GET /js/task-modal.js 304 10ms +[2025-12-29T20:11:55.901Z] [INFO] GET /js/calendar.js 304 10ms +[2025-12-29T20:11:55.902Z] [INFO] GET /js/admin.js 304 11ms +[2025-12-29T20:11:55.903Z] [INFO] GET /js/undo.js 304 12ms +[2025-12-29T20:11:55.913Z] [INFO] GET /js/utils.js 304 9ms +[2025-12-29T20:11:55.912Z] [INFO] GET /js/notifications.js 304 8ms +[2025-12-29T20:11:55.912Z] [INFO] GET /js/gitea.js 304 8ms +[2025-12-29T20:11:55.912Z] [INFO] GET /js/proposals.js 304 9ms +[2025-12-29T20:11:55.937Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2025-12-29T20:11:56.733Z] [INFO] GET /sw.js 304 1ms +[2025-12-29T20:13:07.277Z] [INFO] Migration: role Spalte zu users hinzugefuegt +[2025-12-29T20:13:07.229Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2025-12-29T20:13:07.279Z] [INFO] Migration: permissions Spalte zu users hinzugefuegt +[2025-12-29T20:13:07.280Z] [INFO] Migration: email Spalte zu users hinzugefuegt +[2025-12-29T20:13:07.281Z] [INFO] Migration: repositories_base_path Spalte zu users hinzugefuegt +[2025-12-29T20:13:07.288Z] [INFO] Migration: archived Spalte zu proposals hinzugefuegt +[2025-12-29T20:13:07.289Z] [INFO] Migration: task_id Spalte zu proposals hinzugefuegt +[2025-12-29T20:13:07.290Z] [INFO] Migration: project_id Spalte zu proposals hinzugefuegt +[2025-12-29T20:13:07.292Z] [INFO] Migration: filter_category Spalte zu columns hinzugefuegt +[2025-12-29T20:13:07.293Z] [INFO] Migration: Standard-Filterkategorien fuer bestehende Spalten gesetzt +[2025-12-29T20:13:07.334Z] [INFO] Datenbank-Tabellen erstellt +[2025-12-29T20:13:07.961Z] [INFO] Standard-Benutzer und Admin erstellt +[2025-12-29T20:13:07.970Z] [INFO] Standard-Projekt mit Spalten und Labels erstellt +[2025-12-29T20:13:07.970Z] [INFO] Datenbank initialisiert +[2025-12-29T20:13:07.971Z] [INFO] Server läuft auf Port 3000 +[2025-12-29T20:13:07.971Z] [INFO] Umgebung: production +[2025-12-29T20:13:07.972Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2025-12-29T20:13:07.972Z] [INFO] Automatische Backups aktiviert +[2025-12-29T20:13:11.974Z] [INFO] GET /api/health 200 3ms +[2025-12-29T20:13:22.451Z] [INFO] GET / 304 2ms +[2025-12-29T20:13:22.466Z] [INFO] GET /css/variables.css 304 1ms +[2025-12-29T20:13:22.471Z] [INFO] GET /css/base.css 304 1ms +[2025-12-29T20:13:22.473Z] [INFO] GET /css/board.css 304 1ms +[2025-12-29T20:13:22.472Z] [INFO] GET /css/admin.css 304 2ms +[2025-12-29T20:13:22.469Z] [INFO] GET /css/components.css 304 1ms +[2025-12-29T20:13:22.482Z] [INFO] GET /css/notifications.css 304 7ms +[2025-12-29T20:13:22.484Z] [INFO] GET /css/gitea.css 304 9ms +[2025-12-29T20:13:22.484Z] [INFO] GET /css/modal.css 304 9ms +[2025-12-29T20:13:22.483Z] [INFO] GET /css/proposals.css 304 9ms +[2025-12-29T20:13:22.485Z] [INFO] GET /css/calendar.css 304 9ms +[2025-12-29T20:13:22.485Z] [INFO] GET /css/list.css 304 9ms +[2025-12-29T20:13:22.495Z] [INFO] GET /js/app.js 304 8ms +[2025-12-29T20:13:22.495Z] [INFO] GET /css/responsive.css 304 9ms +[2025-12-29T20:13:22.509Z] [INFO] GET /js/api.js 304 1ms +[2025-12-29T20:13:22.512Z] [INFO] GET /js/sync.js 304 2ms +[2025-12-29T20:13:22.510Z] [INFO] GET /js/auth.js 304 1ms +[2025-12-29T20:13:22.507Z] [INFO] GET /js/store.js 304 1ms +[2025-12-29T20:13:22.513Z] [INFO] GET /js/board.js 304 2ms +[2025-12-29T20:13:22.513Z] [INFO] GET /js/calendar.js 304 2ms +[2025-12-29T20:13:22.513Z] [INFO] GET /js/task-modal.js 304 2ms +[2025-12-29T20:13:22.512Z] [INFO] GET /js/offline.js 304 2ms +[2025-12-29T20:13:22.514Z] [INFO] GET /js/list.js 304 3ms +[2025-12-29T20:13:22.521Z] [INFO] GET /js/admin.js 304 6ms +[2025-12-29T20:13:22.522Z] [INFO] GET /js/shortcuts.js 304 7ms +[2025-12-29T20:13:22.520Z] [INFO] GET /js/undo.js 304 6ms +[2025-12-29T20:13:22.523Z] [INFO] GET /js/proposals.js 304 8ms +[2025-12-29T20:13:22.523Z] [INFO] GET /js/notifications.js 304 8ms +[2025-12-29T20:13:22.524Z] [INFO] GET /js/gitea.js 304 8ms +[2025-12-29T20:13:22.539Z] [INFO] GET /js/utils.js 304 14ms +[2025-12-29T20:13:22.572Z] [INFO] GET /assets/icons/task.svg 304 3ms +[2025-12-29T20:13:24.137Z] [INFO] GET /sw.js 304 1ms +[2025-12-29T20:13:24.488Z] [INFO] GET / 304 0ms +[2025-12-29T20:13:24.512Z] [INFO] GET /css/variables.css 304 0ms +[2025-12-29T20:13:24.515Z] [INFO] GET /css/components.css 304 1ms +[2025-12-29T20:13:24.516Z] [INFO] GET /css/board.css 304 2ms +[2025-12-29T20:13:24.515Z] [INFO] GET /css/base.css 304 1ms +[2025-12-29T20:13:24.517Z] [INFO] GET /css/modal.css 304 1ms +[2025-12-29T20:13:24.517Z] [INFO] GET /css/proposals.css 304 1ms +[2025-12-29T20:13:24.528Z] [INFO] GET /css/list.css 304 10ms +[2025-12-29T20:13:24.528Z] [INFO] GET /css/gitea.css 304 9ms +[2025-12-29T20:13:24.527Z] [INFO] GET /css/calendar.css 304 9ms +[2025-12-29T20:13:24.529Z] [INFO] GET /css/admin.css 304 11ms +[2025-12-29T20:13:24.529Z] [INFO] GET /css/notifications.css 304 10ms +[2025-12-29T20:13:24.529Z] [INFO] GET /css/responsive.css 304 10ms +[2025-12-29T20:13:24.546Z] [INFO] GET /js/app.js 304 16ms +[2025-12-29T20:13:24.579Z] [INFO] GET /js/store.js 304 1ms +[2025-12-29T20:13:24.580Z] [INFO] GET /js/api.js 304 1ms +[2025-12-29T20:13:24.584Z] [INFO] GET /js/offline.js 304 1ms +[2025-12-29T20:13:24.580Z] [INFO] GET /js/auth.js 304 1ms +[2025-12-29T20:13:24.581Z] [INFO] GET /js/calendar.js 304 0ms +[2025-12-29T20:13:24.584Z] [INFO] GET /js/sync.js 304 2ms +[2025-12-29T20:13:24.585Z] [INFO] GET /js/task-modal.js 304 2ms +[2025-12-29T20:13:24.585Z] [INFO] GET /js/shortcuts.js 304 2ms +[2025-12-29T20:13:24.594Z] [INFO] GET /js/undo.js 304 8ms +[2025-12-29T20:13:24.585Z] [INFO] GET /js/board.js 304 2ms +[2025-12-29T20:13:24.594Z] [INFO] GET /js/list.js 304 8ms +[2025-12-29T20:13:24.595Z] [INFO] GET /js/admin.js 304 9ms +[2025-12-29T20:13:24.595Z] [INFO] GET /js/gitea.js 304 8ms +[2025-12-29T20:13:24.595Z] [INFO] GET /js/notifications.js 304 8ms +[2025-12-29T20:13:24.595Z] [INFO] GET /js/proposals.js 304 8ms +[2025-12-29T20:13:24.613Z] [INFO] GET /js/utils.js 304 17ms +[2025-12-29T20:13:24.639Z] [INFO] GET /assets/icons/task.svg 304 2ms +[2025-12-29T20:13:25.658Z] [INFO] GET /sw.js 304 0ms +[2025-12-29T20:13:30.131Z] [WARN] Login fehlgeschlagen: Falsches Passwort - admin (Versuch 1) +[2025-12-29T20:13:30.132Z] [INFO] POST /api/auth/login 401 209ms +[2025-12-29T20:13:34.239Z] [INFO] Login erfolgreich: admin +[2025-12-29T20:13:34.239Z] [INFO] POST /api/auth/login 200 209ms +[2025-12-29T20:13:34.251Z] [INFO] GET /api/admin/users 200 3ms +[2025-12-29T20:13:34.255Z] [INFO] Socket connected: admin (D8R4yNJQCY13GHKUAAAB) +[2025-12-29T20:13:34.259Z] [INFO] GET /api/admin/upload-settings 200 3ms +[2025-12-29T20:13:41.256Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:14:06.449Z] [INFO] Backup erstellt: backup_2025-12-29T20-14-06-429Z.db +[2025-12-29T20:14:06.456Z] [INFO] Altes Backup gelöscht: backup_2025-12-22T21-43-57-007Z.db +[2025-12-29T20:14:06.457Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2025-12-29T20:14:10.533Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:14:36.691Z] [INFO] Admin admin hat Benutzer HG bearbeitet +[2025-12-29T20:14:36.696Z] [INFO] GET /api/admin/users 200 1ms +[2025-12-29T20:14:36.691Z] [INFO] PUT /api/admin/users/1 200 3ms +[2025-12-29T20:14:39.815Z] [INFO] GET /api/health 200 0ms +[2025-12-29T20:15:09.070Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:15:27.454Z] [INFO] Admin admin hat Benutzer MH bearbeitet +[2025-12-29T20:15:27.455Z] [INFO] PUT /api/admin/users/2 200 2ms +[2025-12-29T20:15:27.460Z] [INFO] GET /api/admin/users 200 1ms +[2025-12-29T20:15:31.727Z] [INFO] Logout: admin +[2025-12-29T20:15:31.728Z] [INFO] POST /api/auth/logout 200 1ms +[2025-12-29T20:15:31.737Z] [INFO] GET / 304 0ms +[2025-12-29T20:15:31.730Z] [INFO] Socket disconnected: admin (D8R4yNJQCY13GHKUAAAB) +[2025-12-29T20:15:31.752Z] [INFO] GET /css/variables.css 304 0ms +[2025-12-29T20:15:31.754Z] [INFO] GET /css/board.css 304 1ms +[2025-12-29T20:15:31.755Z] [INFO] GET /css/base.css 304 0ms +[2025-12-29T20:15:31.757Z] [INFO] GET /css/list.css 304 1ms +[2025-12-29T20:15:31.758Z] [INFO] GET /css/modal.css 304 1ms +[2025-12-29T20:15:31.756Z] [INFO] GET /css/components.css 304 0ms +[2025-12-29T20:15:31.769Z] [INFO] GET /css/notifications.css 304 11ms +[2025-12-29T20:15:31.769Z] [INFO] GET /css/calendar.css 304 11ms +[2025-12-29T20:15:31.769Z] [INFO] GET /css/gitea.css 304 11ms +[2025-12-29T20:15:31.768Z] [INFO] GET /css/proposals.css 304 10ms +[2025-12-29T20:15:31.770Z] [INFO] GET /css/admin.css 304 11ms +[2025-12-29T20:15:31.791Z] [INFO] GET /js/store.js 304 1ms +[2025-12-29T20:15:31.781Z] [INFO] GET /js/app.js 304 10ms +[2025-12-29T20:15:31.770Z] [INFO] GET /css/responsive.css 304 11ms +[2025-12-29T20:15:31.792Z] [INFO] GET /js/offline.js 304 2ms +[2025-12-29T20:15:31.803Z] [INFO] GET /js/calendar.js 304 11ms +[2025-12-29T20:15:31.791Z] [INFO] GET /js/sync.js 304 1ms +[2025-12-29T20:15:31.791Z] [INFO] GET /js/auth.js 304 2ms +[2025-12-29T20:15:31.791Z] [INFO] GET /js/api.js 304 2ms +[2025-12-29T20:15:31.802Z] [INFO] GET /js/board.js 304 10ms +[2025-12-29T20:15:31.803Z] [INFO] GET /js/list.js 304 11ms +[2025-12-29T20:15:31.804Z] [INFO] GET /js/undo.js 304 11ms +[2025-12-29T20:15:31.803Z] [INFO] GET /js/shortcuts.js 304 10ms +[2025-12-29T20:15:31.804Z] [INFO] GET /js/task-modal.js 304 11ms +[2025-12-29T20:15:31.819Z] [INFO] GET /js/notifications.js 304 14ms +[2025-12-29T20:15:31.820Z] [INFO] GET /js/utils.js 304 14ms +[2025-12-29T20:15:31.818Z] [INFO] GET /js/proposals.js 304 13ms +[2025-12-29T20:15:31.819Z] [INFO] GET /js/admin.js 304 15ms +[2025-12-29T20:15:31.821Z] [INFO] GET /js/gitea.js 304 16ms +[2025-12-29T20:15:31.842Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2025-12-29T20:15:33.397Z] [INFO] GET /sw.js 304 0ms +[2025-12-29T20:15:38.358Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:15:39.211Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2025-12-29T20:15:39.211Z] [INFO] POST /api/auth/login 200 204ms +[2025-12-29T20:15:39.221Z] [INFO] GET /api/auth/users 200 2ms +[2025-12-29T20:15:39.230Z] [INFO] Socket connected: HG (R-aFMcr14sppJUAcAAAE) +[2025-12-29T20:15:39.232Z] [INFO] Socket connected: HG (b_iKYMQ6h5n8qeivAAAF) +[2025-12-29T20:15:39.234Z] [INFO] GET /api/projects 200 4ms +[2025-12-29T20:15:39.246Z] [INFO] GET /api/stats/dashboard?projectId=4 304 6ms +[2025-12-29T20:15:39.248Z] [INFO] GET /api/columns/4 200 7ms +[2025-12-29T20:15:39.250Z] [INFO] GET /api/tasks/project/4 304 9ms +[2025-12-29T20:15:39.257Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=4 304 2ms +[2025-12-29T20:15:39.252Z] [INFO] HG joined project:[object Object] +[2025-12-29T20:15:39.251Z] [INFO] GET /api/labels/4 200 10ms +[2025-12-29T20:15:39.263Z] [INFO] GET /api/notifications 304 2ms +[2025-12-29T20:15:55.534Z] [INFO] Projekt erstellt: AccountForger (ID: 2) von HG +[2025-12-29T20:15:55.542Z] [INFO] GET /api/stats/dashboard?projectId=2 200 3ms +[2025-12-29T20:15:55.537Z] [INFO] HG left project:[object Object] +[2025-12-29T20:15:55.537Z] [INFO] HG joined project:[object Object] +[2025-12-29T20:15:55.534Z] [INFO] POST /api/projects 201 7ms +[2025-12-29T20:15:55.545Z] [INFO] GET /api/columns/2 200 3ms +[2025-12-29T20:15:55.548Z] [INFO] GET /api/labels/2 200 6ms +[2025-12-29T20:15:55.546Z] [INFO] GET /api/tasks/project/2 200 4ms +[2025-12-29T20:16:07.623Z] [INFO] GET /api/health 200 0ms +[2025-12-29T20:16:08.487Z] [INFO] Spalte aktualisiert: Offen (ID: 4) +[2025-12-29T20:16:08.488Z] [INFO] PUT /api/columns/4 200 3ms +[2025-12-29T20:16:30.707Z] [INFO] GET /api/applications/2 200 3ms +[2025-12-29T20:16:30.932Z] [INFO] GET /api/gitea/test 200 222ms +[2025-12-29T20:16:31.039Z] [INFO] GET /api/gitea/repositories?page=1&limit=50 200 103ms +[2025-12-29T20:16:36.884Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:17:06.183Z] [INFO] GET /api/health 200 0ms +[2025-12-29T20:17:35.493Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:18:04.797Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:18:34.066Z] [INFO] GET /api/health 200 0ms +[2025-12-29T20:19:03.352Z] [INFO] GET /api/health 200 0ms +[2025-12-29T20:19:32.630Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:20:01.896Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:20:31.158Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:21:00.426Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:21:29.694Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:21:58.952Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:22:28.202Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:22:57.425Z] [INFO] GET /api/health 200 0ms +[2025-12-29T20:23:26.699Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:23:55.948Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:24:25.216Z] [INFO] GET /api/health 200 0ms +[2025-12-29T20:24:54.459Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:25:23.695Z] [INFO] GET /api/health 200 0ms +[2025-12-29T20:25:52.939Z] [INFO] GET /api/health 200 0ms +[2025-12-29T20:26:22.212Z] [INFO] GET /api/health 200 0ms +[2025-12-29T20:26:51.453Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:27:20.704Z] [INFO] GET /api/health 200 0ms +[2025-12-29T20:27:49.928Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:28:19.154Z] [INFO] GET /api/health 200 0ms +[2025-12-29T20:28:48.377Z] [INFO] GET /api/health 200 0ms +[2025-12-29T20:29:17.611Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:29:46.884Z] [INFO] GET /api/health 200 1ms +[2025-12-29T20:29:51.047Z] [INFO] GET /api/applications/2 304 2ms +[2025-12-29T20:29:51.234Z] [INFO] GET /api/gitea/test 304 184ms +[2025-12-29T20:29:51.339Z] [INFO] GET /api/gitea/repositories?page=1&limit=50 304 101ms +[2025-12-29T20:30:13.839Z] [INFO] POST /api/git/validate-path 200 33ms +[2025-12-29T20:30:16.139Z] [INFO] GET /api/health 200 0ms +[2025-12-29T20:30:18.870Z] [INFO] Anwendung erstellt für Projekt 2 +[2025-12-29T20:30:18.871Z] [INFO] POST /api/applications 200 4ms +[2025-12-29T20:30:18.924Z] [INFO] Remote 'origin' aktualisiert: https://gitea-undso.aegis-sight.de/AegisSight/TaskMate.git +[2025-12-29T20:30:18.951Z] [INFO] Repository für Gitea vorbereitet: C:\Users\hendr\Desktop\IntelSight\Projektablage\TaskMate -> https://gitea-undso.aegis-sight.de/AegisSight/TaskMate.git +[2025-12-29T20:30:18.951Z] [INFO] Repository vorbereitet für Projekt 2: https://gitea-undso.aegis-sight.de/AegisSight/TaskMate.git +[2025-12-29T20:30:18.952Z] [INFO] POST /api/git/prepare/2 200 78ms +[2025-12-29T20:30:18.957Z] [INFO] GET /api/applications/2 200 2ms +[2025-12-29T20:30:19.233Z] [INFO] GET /api/git/status/2 200 271ms +[2025-12-29T20:30:19.291Z] [INFO] GET /api/git/branches/2 200 57ms +[2025-12-29T20:30:19.347Z] [INFO] GET /api/git/commits/2?limit=10 200 56ms diff --git a/nul b/nul index 6209913..e69de29 100644 --- a/nul +++ b/nul @@ -1,2 +0,0 @@ -C\:\\Users\\hendr\\Desktop\\IntelSight\\Projektablage\\Aufgabenverwaltung\\frontend: -css index.html js sw.js