1617 Zeilen
68 KiB
Plaintext
1617 Zeilen
68 KiB
Plaintext
TASKMATE - CHANGELOG
|
|
====================
|
|
|
|
================================================================================
|
|
30.12.2025 - Browser-Upload: Lokale Verzeichnisse ins Gitea pushen
|
|
================================================================================
|
|
|
|
FEATURE: VERZEICHNIS-UPLOAD VOM BROWSER
|
|
--------------------------------------------------------------------------------
|
|
- Lokale Verzeichnisse direkt vom Computer ins Gitea pushen
|
|
- Verwendet File System Access API (Chrome/Edge/Opera)
|
|
- Drag & Drop als Fallback für andere Browser
|
|
- Automatische Filterung von .git, node_modules, etc.
|
|
|
|
ABLAUF
|
|
--------------------------------------------------------------------------------
|
|
1. Ziel-Repository aus Gitea-Liste auswählen
|
|
2. Ziel-Branch eingeben (Standard: main)
|
|
3. "Verzeichnis auswählen" klicken oder Ordner per Drag & Drop
|
|
4. Datei-Vorschau prüfen
|
|
5. Commit-Nachricht eingeben
|
|
6. "Commit & Push" ausführen
|
|
|
|
TECHNISCHE ÄNDERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- backend/routes/git.js:
|
|
* POST /api/git/browser-upload - Empfängt Dateien und pusht ins Gitea
|
|
* POST /api/git/browser-upload-prepare - Bereitet Upload-Session vor
|
|
* DELETE /api/git/browser-upload/:sessionId - Bricht Upload ab
|
|
* Multer-Konfiguration für Git-Uploads (50MB/Datei, 500 Dateien max)
|
|
- frontend/js/api.js:
|
|
* prepareBrowserUpload() - Session vorbereiten
|
|
* browserUploadAndPush() - Dateien hochladen und pushen
|
|
* cancelBrowserUpload() - Session abbrechen
|
|
- frontend/js/gitea.js:
|
|
* Browser-Upload Properties und Ignore-Patterns
|
|
* bindBrowserUploadEvents() - Event-Handler
|
|
* handleSelectDirectory() - File System Access API
|
|
* readDirectoryRecursive() - Verzeichnis rekursiv lesen
|
|
* handleDroppedFiles() - Drag & Drop Handler
|
|
* renderUploadPreview() - Datei-Vorschau
|
|
* executeBrowserUpload() - Upload durchführen
|
|
- frontend/index.html: Neues Browser-Upload UI mit Schritten
|
|
- frontend/css/gitea.css: Styles für Upload-Schritte, Drop-Zone, Progress
|
|
- frontend/sw.js: Cache-Version auf 132 erhöht
|
|
|
|
IGNORIERTE DATEIEN/ORDNER
|
|
--------------------------------------------------------------------------------
|
|
.git, node_modules, __pycache__, .env, .env.local, .env.production,
|
|
.DS_Store, Thumbs.db, .idea, .vscode, dist, build, .cache, coverage
|
|
|
|
================================================================================
|
|
30.12.2025 - Gitea-Integration: Server-Modus
|
|
================================================================================
|
|
|
|
FEATURE: SERVER-DATEIEN DIREKT INS GITEA PUSHEN
|
|
--------------------------------------------------------------------------------
|
|
- Neuer "Server-Anwendung" Modus im Gitea-Tab
|
|
- Ermöglicht Git-Operationen direkt auf dem Server-Verzeichnis /home/claude-dev/TaskMate
|
|
- Alle Änderungen an der Anwendung können sofort ins Gitea gepusht werden
|
|
- Kein separates Konfigurieren nötig - sofort einsatzbereit
|
|
|
|
FEATURE: ZWEI-MODUS-SCHALTER
|
|
--------------------------------------------------------------------------------
|
|
- Modus-Schalter oben im Gitea-Tab: "Server-Anwendung" und "Projekt-Repository"
|
|
- Server-Modus: Zeigt TaskMate Server-Dateien
|
|
- Projekt-Modus: Bisherige Funktionalität für lokale Pfade pro Projekt
|
|
|
|
SERVER-MODUS FUNKTIONEN
|
|
--------------------------------------------------------------------------------
|
|
- Git-Status anzeigen (geänderte Dateien, aktueller Branch)
|
|
- Branch-Wechsel
|
|
- Fetch, Pull, Push, Commit
|
|
- Commit-Historie anzeigen
|
|
- Änderungsliste mit Statusanzeige (M, A, D, ?)
|
|
|
|
TECHNISCHE ÄNDERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- docker-compose.yml: Neues Volume-Mount ".:/app/taskmate-source" für Zugriff auf Source-Code
|
|
- backend/routes/git.js: Neue Server-Endpoints:
|
|
* GET /api/git/server/info - Repository-Informationen
|
|
* GET /api/git/server/status - Git-Status
|
|
* GET /api/git/server/branches - Branch-Liste
|
|
* GET /api/git/server/commits - Commit-Historie
|
|
* GET /api/git/server/remote - Remote-URL
|
|
* POST /api/git/server/stage - Alle Änderungen stagen
|
|
* POST /api/git/server/commit - Commit erstellen
|
|
* POST /api/git/server/push - Push ausführen
|
|
* POST /api/git/server/pull - Pull ausführen
|
|
* POST /api/git/server/fetch - Fetch ausführen
|
|
* POST /api/git/server/checkout - Branch wechseln
|
|
- frontend/js/api.js: Neue API-Funktionen für Server-Modus
|
|
- frontend/js/gitea.js:
|
|
* GiteaManager mit currentMode Property
|
|
* Server-Modus Methoden (loadServerData, renderServer*, handleServer*)
|
|
* Modus-Wechsel Handler
|
|
- frontend/index.html: Server-Modus UI mit Modus-Schalter
|
|
- frontend/css/gitea.css: Styles für Modus-Schalter (.gitea-mode-switch, .gitea-mode-btn)
|
|
- frontend/sw.js: Cache-Version auf 131 erhöht
|
|
|
|
================================================================================
|
|
30.12.2025 - Session-Countdown auf Hauptoberfläche
|
|
================================================================================
|
|
|
|
FEATURE: SITZUNGS-COUNTDOWN IM HEADER
|
|
--------------------------------------------------------------------------------
|
|
- Countdown-Timer im Header zeigt verbleibende Sitzungszeit an
|
|
- Format: MM:SS (z.B. 09:45)
|
|
- Timer startet immer bei 10:00 Minuten
|
|
- Farbliche Warnung bei < 60 Sekunden (orange)
|
|
- Kritische Warnung bei < 30 Sekunden (rot, pulsierend)
|
|
- Automatischer Logout bei Ablauf mit Toast-Benachrichtigung
|
|
|
|
FEATURE: INTERAKTIONS-BASIERTER SESSION-REFRESH
|
|
--------------------------------------------------------------------------------
|
|
- Bei jedem Klick oder Tastendruck wird die Session automatisch verlängert
|
|
- Timer wird auf 10:00 zurückgesetzt bei Interaktion
|
|
- Debouncing verhindert zu viele Server-Anfragen (max. 1 pro Sekunde)
|
|
- Bei Browser-Aktualisierung (F5) wird Session automatisch refreshed
|
|
|
|
ÄNDERUNG: SITZUNGSZEIT AUF 10 MINUTEN REDUZIERT
|
|
--------------------------------------------------------------------------------
|
|
- SESSION_TIMEOUT in .env von 30 auf 10 Minuten geändert
|
|
- Erhöhte Sicherheit durch kürzere Sitzungsdauer
|
|
|
|
ÄNDERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- .env: SESSION_TIMEOUT=10
|
|
- frontend/index.html: Session-Timer-Element im Header hinzugefügt
|
|
- frontend/js/auth.js:
|
|
* SessionTimerHandler-Klasse für Countdown-Logik
|
|
* JWT-Token-Parsing für Ablaufzeit
|
|
* Automatischer Logout bei Session-Ablauf
|
|
* Interaktions-basiertes Token-Refresh (Click/Keydown Events)
|
|
* initFromExistingSession() für korrekten Timer bei Seiten-Reload
|
|
- frontend/js/api.js: X-New-Token-Header verarbeiten und Event dispatchen
|
|
- frontend/css/board.css:
|
|
* .session-timer Styles
|
|
* .warning und .critical Zustände
|
|
* pulse-critical Animation
|
|
- frontend/sw.js: Cache-Version auf 128 erhöht
|
|
|
|
================================================================================
|
|
30.12.2025 - Kalender: Dots nach Statusspalte gruppiert
|
|
================================================================================
|
|
|
|
FEATURE: AUFGABEN-DOTS IM WOCHENSTREIFEN NACH SPALTE GRUPPIERT
|
|
--------------------------------------------------------------------------------
|
|
- Im Wochenstreifen-Kalender (Board-Ansicht) wird jetzt nur ein Kreis pro
|
|
Statusspalte angezeigt statt einem Kreis pro Aufgabe
|
|
- Bei Mouseover werden alle Aufgaben dieser Spalte im Tooltip aufgelistet
|
|
- Tooltip zeigt: Spaltenname, Anzahl Aufgaben, Liste mit Start/Ende-Info
|
|
- Kreis-Typ basiert auf enthaltenen Aufgaben:
|
|
* Offener Kreis = alle Aufgaben haben nur Startdatum
|
|
* Gefüllter Kreis = alle Aufgaben haben nur Enddatum
|
|
* Kreis mit Ring = gemischt (Start und Ende)
|
|
- Klick auf Kreis öffnet die erste Aufgabe der Gruppe
|
|
|
|
ÄNDERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- frontend/js/board.js:
|
|
* getTasksForDay() gruppiert Aufgaben nach Spalte (Map statt Array)
|
|
* renderDayDots() rendert einen Dot pro Spalte mit data-task-ids
|
|
* showTaskTooltip() zeigt alle Aufgaben der Spalte im Tooltip
|
|
* openTaskFromDot() öffnet erste Aufgabe aus der Gruppe
|
|
- frontend/css/board.css:
|
|
* Neue Tooltip-Stile für gruppierte Aufgaben
|
|
* .week-strip-tooltip-header, -column-name, -count, -task-list, -task, etc.
|
|
- frontend/sw.js: Cache-Version auf 126 erhöht
|
|
|
|
================================================================================
|
|
29.12.2025 - Dokumentation aktualisiert
|
|
================================================================================
|
|
|
|
ANWENDUNGSBESCHREIBUNG.TXT ÜBERARBEITET
|
|
--------------------------------------------------------------------------------
|
|
- Inhaltsverzeichnis erweitert (13 Abschnitte statt 10)
|
|
- Neuer Abschnitt 6: Listenansicht
|
|
- Neuer Abschnitt 8: Gitea-Integration (vollständige Dokumentation)
|
|
- Neuer Abschnitt 9: Benachrichtigungen (Inbox)
|
|
- Navigationsleiste im ASCII-Diagramm aktualisiert
|
|
- Admin-Passwort aktualisiert
|
|
|
|
================================================================================
|
|
29.12.2025 - Admin: Sicheres Passwort
|
|
================================================================================
|
|
|
|
ÄNDERUNG: ADMIN-PASSWORT AKTUALISIERT
|
|
--------------------------------------------------------------------------------
|
|
- Neues sicheres Admin-Passwort ohne Bezug zur Anwendung
|
|
- 18 Zeichen mit Groß-/Kleinbuchstaben, Zahlen und Sonderzeichen
|
|
|
|
ÄNDERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- backend/database.js: Standard-Admin-Passwort geändert
|
|
|
|
================================================================================
|
|
29.12.2025 - Admin: Benutzer löschen repariert
|
|
================================================================================
|
|
|
|
BUGFIX: BENUTZER KONNTE NICHT GELÖSCHT WERDEN
|
|
--------------------------------------------------------------------------------
|
|
- Problem: SQLITE_CONSTRAINT_NOTNULL Fehler beim Löschen von Benutzern
|
|
- Ursache: Tabellen comments, history und proposals haben NOT NULL Constraints
|
|
auf user_id/created_by, Code versuchte diese auf NULL zu setzen
|
|
|
|
LÖSUNG
|
|
--------------------------------------------------------------------------------
|
|
- Kommentare des Benutzers werden gelöscht (statt user_id = NULL)
|
|
- Historie-Einträge des Benutzers werden gelöscht (statt user_id = NULL)
|
|
- Vorschläge des Benutzers werden gelöscht (statt created_by = NULL)
|
|
- Task-Assignees werden gelöscht
|
|
- Benachrichtigungen werden gelöscht
|
|
- Applications.created_by wird auf NULL gesetzt
|
|
|
|
ÄNDERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- backend/routes/admin.js: DELETE /api/admin/users/:id überarbeitet
|
|
* Korrekte Behandlung aller Fremdschlüssel-Beziehungen
|
|
|
|
================================================================================
|
|
29.12.2025 - Gitea: Commits aus Anzeige ausblenden
|
|
================================================================================
|
|
|
|
FEATURE: COMMITS AUS ANZEIGE ENTFERNEN
|
|
--------------------------------------------------------------------------------
|
|
- X-Button bei jedem Commit zum Ausblenden (erscheint bei Hover)
|
|
- "Alle ausblenden" Button in der Überschrift
|
|
- Ausgeblendete Commits werden nur aus der UI entfernt, nicht aus Git
|
|
- Anzeige zeigt "Alle Commits ausgeblendet" wenn Liste leer
|
|
|
|
ÄNDERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- frontend/index.html: Commits-Header mit "Alle ausblenden" Button
|
|
- frontend/css/gitea.css:
|
|
* .commits-header Style für Überschrift mit Button
|
|
* .commit-delete Button-Style (erscheint bei Hover)
|
|
- frontend/js/gitea.js:
|
|
* hiddenCommits Set im Constructor
|
|
* renderCommits() filtert ausgeblendete Commits
|
|
* handleCommitListClick() für Event-Delegation
|
|
* hideCommit(), clearAllCommits() Methoden
|
|
- frontend/sw.js: Cache-Version auf 125 erhöht
|
|
|
|
================================================================================
|
|
29.12.2025 - Gitea: Commit-Autor = eingeloggter Benutzer
|
|
================================================================================
|
|
|
|
BUGFIX: COMMIT-AUTOR WAR FALSCH
|
|
--------------------------------------------------------------------------------
|
|
- Problem: Bei Commits wurde "Claude Projekt Manager" als Autor angezeigt
|
|
(aus der lokalen Git-Konfiguration des Benutzers)
|
|
- Lösung: Der eingeloggte TaskMate-Benutzer wird jetzt als Autor verwendet
|
|
|
|
ÄNDERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- backend/services/gitService.js: commit() akzeptiert jetzt author-Parameter
|
|
* Verwendet git commit --author="Name <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
|