Files
TaskMate/CHANGELOG.txt

1400 Zeilen
58 KiB
Plaintext

TASKMATE - CHANGELOG
====================
================================================================================
29.12.2025 - Gitea: Commits aus Anzeige ausblenden
================================================================================
FEATURE: COMMITS AUS ANZEIGE ENTFERNEN
--------------------------------------------------------------------------------
- X-Button bei jedem Commit zum Ausblenden (erscheint bei Hover)
- "Alle ausblenden" Button in der Überschrift
- Ausgeblendete Commits werden nur aus der UI entfernt, nicht aus Git
- Anzeige zeigt "Alle Commits ausgeblendet" wenn Liste leer
ÄNDERUNGEN
--------------------------------------------------------------------------------
- frontend/index.html: Commits-Header mit "Alle ausblenden" Button
- frontend/css/gitea.css:
* .commits-header Style für Überschrift mit Button
* .commit-delete Button-Style (erscheint bei Hover)
- frontend/js/gitea.js:
* hiddenCommits Set im Constructor
* renderCommits() filtert ausgeblendete Commits
* handleCommitListClick() für Event-Delegation
* hideCommit(), clearAllCommits() Methoden
- frontend/sw.js: Cache-Version auf 125 erhöht
================================================================================
29.12.2025 - Gitea: Commit-Autor = eingeloggter Benutzer
================================================================================
BUGFIX: COMMIT-AUTOR WAR FALSCH
--------------------------------------------------------------------------------
- Problem: Bei Commits wurde "Claude Projekt Manager" als Autor angezeigt
(aus der lokalen Git-Konfiguration des Benutzers)
- Lösung: Der eingeloggte TaskMate-Benutzer wird jetzt als Autor verwendet
ÄNDERUNGEN
--------------------------------------------------------------------------------
- backend/services/gitService.js: commit() akzeptiert jetzt author-Parameter
* Verwendet git commit --author="Name <email>" -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
- <img src=""> 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