TASKMATE - CHANGELOG ==================== ================================================================================ 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