2442 Zeilen
106 KiB
Plaintext
2442 Zeilen
106 KiB
Plaintext
TASKMATE - CHANGELOG
|
|
====================
|
|
|
|
================================================================================
|
|
03.01.2025 - GIT-INTEGRATION CODING-KACHELN
|
|
================================================================================
|
|
✅ Git-Repository-Erkennung für TaskMate-Kachel repariert
|
|
✅ Docker-Pfad-Mapping: /home/claude-dev/TaskMate → /app/taskmate-source
|
|
✅ Git-Status und Commit-Funktionen funktionieren wieder
|
|
✅ Debug-Logging für Git-Operationen hinzugefügt
|
|
|
|
Technische Details:
|
|
- windowsToContainerPath() Funktion erweitert
|
|
- Spezialfall für TaskMate-Repository implementiert
|
|
- Container-Volume-Mapping berücksichtigt
|
|
- Cache-Version auf 189 erhöht
|
|
|
|
================================================================================
|
|
03.01.2025 - SICHERHEITSVERBESSERUNGEN PHASE 1
|
|
================================================================================
|
|
|
|
SCHRITT 1: HARTCODIERTE CREDENTIALS ENTFERNT
|
|
--------------------------------------------------------------------------------
|
|
- Hartcodierte Credentials aus CLAUDE.md entfernt
|
|
- Admin-Passwort aus ANWENDUNGSBESCHREIBUNG.txt entfernt
|
|
- Gitea-Token nicht mehr im Klartext in Dokumentation
|
|
- JWT_SECRET Mindestlänge von 32 Zeichen erzwungen
|
|
- Fallback für unsicheres JWT_SECRET entfernt
|
|
|
|
SCHRITT 2: TOKEN-ROTATION & REFRESH-TOKENS
|
|
--------------------------------------------------------------------------------
|
|
- Refresh-Token System implementiert (7 Tage Gültigkeit)
|
|
- Access-Tokens haben nur noch 15 Minuten Gültigkeit
|
|
- Neue Datenbank-Tabelle refresh_tokens
|
|
- Automatische Bereinigung abgelaufener Tokens
|
|
- Logout widerruft alle Refresh-Tokens des Benutzers
|
|
|
|
TECHNISCHE ÄNDERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- dotenv Package zum Backend hinzugefügt
|
|
- server.js lädt nun .env Datei beim Start
|
|
- Dockerfile angepasst (npm install statt npm ci)
|
|
- auth.js erweitert um Refresh-Token Funktionen
|
|
- Frontend API-Client unterstützt Refresh-Tokens
|
|
- Service Worker Version: 181 → 182
|
|
|
|
SICHERHEITSVERBESSERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- Kürzere Token-Lebensdauer reduziert Angriffsfenster
|
|
- Refresh-Tokens ermöglichen sichere lange Sessions
|
|
- Token-Rotation bei jedem Refresh
|
|
- IP und User-Agent werden geloggt
|
|
|
|
AUTOMATISCHES TOKEN-REFRESH IMPLEMENTIERT
|
|
--------------------------------------------------------------------------------
|
|
- Proaktiver Token-Refresh nach 10 Minuten (bevor 15min Limit erreicht)
|
|
- Automatischer Fallback-Refresh bei 401-Fehlern
|
|
- Benutzer bleiben 7 Tage eingeloggt ohne Unterbrechung
|
|
- Nahtlose Erneuerung im Hintergrund - keine Logout-Unterbrechungen
|
|
|
|
API-ÄNDERUNGEN (Rückwärtskompatibel)
|
|
--------------------------------------------------------------------------------
|
|
- POST /api/auth/login gibt zusätzlich refreshToken zurück
|
|
- POST /api/auth/refresh akzeptiert refreshToken im Body
|
|
- Legacy-Support für alte Clients ohne Breaking Changes
|
|
|
|
SCHRITT 3: XSS-SCHUTZ & EINGABEVALIDIERUNG VERSTÄRKT
|
|
--------------------------------------------------------------------------------
|
|
- Erweiterte Content Security Policy (CSP) implementiert
|
|
- DOMPurify für doppelte Markdown-Bereinigung hinzugefügt
|
|
- Strikte File-Upload Validierung gegen gefährliche Dateien
|
|
- URL-Validierung gegen SSRF und JavaScript-Injection
|
|
- Automatisches Input-Sanitizing für alle API-Requests
|
|
- Zusätzliche Security Headers (HSTS, Referrer Policy, etc.)
|
|
|
|
NEUE SICHERHEITS-FEATURES
|
|
--------------------------------------------------------------------------------
|
|
- Executable Dateien (.exe, .bat, etc.) werden komplett blockiert
|
|
- Doppelte Dateiendungen (.txt.exe) werden abgelehnt
|
|
- Lokale URLs (localhost, 192.168.x.x) sind nicht erlaubt (SSRF-Schutz)
|
|
- Gefährliche Dateinamen mit Pfad-Traversal werden blockiert
|
|
- MIME-Type Validierung gegen Spoofing-Angriffe
|
|
|
|
SECURITY HEADERS
|
|
--------------------------------------------------------------------------------
|
|
- Content-Security-Policy mit strict-dynamic
|
|
- HTTP Strict Transport Security (HSTS)
|
|
- X-Content-Type-Options: nosniff
|
|
- Referrer-Policy: strict-origin-when-cross-origin
|
|
- Permissions-Policy: Kamera/Mikrofon deaktiviert
|
|
|
|
FRONTEND-VERBESSERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- Automatisches Token-Management im API-Client
|
|
- Retry-Logic für abgelaufene Tokens
|
|
- Service Worker Version: 183 → 184
|
|
|
|
PHASE 2: DATENBANK UND BACKUP-VERSCHLÜSSELUNG IMPLEMENTIERT
|
|
--------------------------------------------------------------------------------
|
|
- Vollständige Backup-Verschlüsselung mit AES-256-CBC implementiert
|
|
- Neue encryption.js Bibliothek für sichere Verschlüsselung
|
|
- Automatische verschlüsselte Backups (.enc Dateien)
|
|
- 256-bit Verschlüsselungsschlüssel über Umgebungsvariablen
|
|
- Kompatible Backups: sowohl verschlüsselt als auch unverschlüsselt
|
|
- Sichere Wiederherstellung mit Entschlüsselung
|
|
- PBKDF2 Key-Derivation für passwort-basierte Verschlüsselung
|
|
|
|
NEUE VERSCHLÜSSELUNGS-FEATURES
|
|
--------------------------------------------------------------------------------
|
|
- Header-basiertes Dateiformat für Versionierung (TMENC001)
|
|
- Salt und IV für jede Verschlüsselung einzigartig
|
|
- Automatisches Fallback bei fehlgeschlagener Verschlüsselung
|
|
- Admin-Endpunkte für manuelle Backup-Erstellung (/api/admin/backup)
|
|
- Backup-Liste mit verschlüsselten Dateien anzeigen
|
|
|
|
DOCKER UND INFRASTRUKTUR
|
|
--------------------------------------------------------------------------------
|
|
- Docker-Container mit Verschlüsselungsunterstützung neu gebaut
|
|
- ENCRYPTION_KEY über docker-compose.yml Umgebungsvariablen
|
|
- Korrekte Portmapping (3001 extern → 3000 intern)
|
|
- Automatische Backup-Erstellung beim Server-Start getestet
|
|
|
|
================================================================================
|
|
03.01.2025 - CLAUDE.MD NEUSTRUKTURIERUNG & DATENSCHUTZ
|
|
================================================================================
|
|
|
|
DOKUMENTATION
|
|
--------------------------------------------------------------------------------
|
|
CLAUDE.md komplett neu strukturiert für bessere Entwickler-Erfahrung.
|
|
|
|
WICHTIGER HINWEIS FÜR KI-ASSISTENTEN
|
|
--------------------------------------------------------------------------------
|
|
- Prominenter Hinweis: Anwender hat KEINE Programmierkenntnisse
|
|
- Klare Anweisung: KI übernimmt ALLE technischen Aufgaben
|
|
- Kommunikations-Regeln mit Richtig/Falsch Beispielen
|
|
- Arbeitsweise-Sektion für nicht-technische Anwender
|
|
|
|
NEUE STRUKTUR
|
|
--------------------------------------------------------------------------------
|
|
- Quick Start Sektion mit wichtigsten Befehlen ganz oben
|
|
- Kritische Regeln prominent am Anfang platziert
|
|
- Klare Gliederung nach typischen Entwicklungsaufgaben
|
|
- Erweiterte Troubleshooting-Sektion mit Lösungen
|
|
- Code-Patterns und Best Practices hinzugefügt
|
|
- Performance- und Sicherheitshinweise dokumentiert
|
|
|
|
DATENSCHUTZ & PROJEKTSICHERHEIT
|
|
--------------------------------------------------------------------------------
|
|
- Neue Sektion für Schutz von Produktivdaten hinzugefügt
|
|
- Warnung: Projekt "AegisSight" niemals beeinträchtigen
|
|
- Warnung: Bestehende Benutzer niemals ändern/löschen
|
|
- Backup-Anweisung vor Datenbank-Arbeiten
|
|
- Rollback-Strategie für Live-System dokumentiert
|
|
- Anforderung: JEDE Änderung muss umkehrbar sein
|
|
- Docker-Image Backup-Befehle hinzugefügt
|
|
- Änderungs-Workflow für Live-Betrieb definiert
|
|
|
|
HIGHLIGHTS
|
|
--------------------------------------------------------------------------------
|
|
- Docker-Befehle direkt im Quick Start
|
|
- Echtzeit-Update Patterns mit Code-Beispielen
|
|
- Datums-Formatierung mit richtig/falsch Beispielen
|
|
- Deployment-Checkliste als Copy&Paste Template
|
|
- Debug-Tipps für Frontend und Backend
|
|
|
|
================================================================================
|
|
03.01.2026 - LISTE: MEHRERE AVATARE FÜR MEHRFACHZUWEISUNG
|
|
================================================================================
|
|
|
|
FEATURE ENHANCEMENT
|
|
--------------------------------------------------------------------------------
|
|
Listen-Ansicht zeigt jetzt alle zugewiesenen Benutzer als separate Avatare an.
|
|
|
|
NEUE FUNKTIONEN
|
|
--------------------------------------------------------------------------------
|
|
- Mehrere Avatar-Symbole nebeneinander bei Mehrfachzuweisung
|
|
- Avatare werden aus task_assignees Tabelle und assignedTo kombiniert
|
|
- Container für mehrere Avatare mit 2px Abstand
|
|
- Hover-Effekt: Avatare vergrößern sich bei Mouse-Over
|
|
- Alle Avatare sind klickbar für Bearbeitung
|
|
|
|
TECHNISCHE DETAILS
|
|
--------------------------------------------------------------------------------
|
|
- JavaScript: Sammelt User-IDs aus task.assignees Array
|
|
- CSS: .avatar-container für Flexbox-Layout mehrerer Avatare
|
|
- Backend nutzt bereits vorhandene getFullTask() Funktion
|
|
- Service Worker Cache-Version: 178 -> 179
|
|
|
|
VERHALTEN
|
|
--------------------------------------------------------------------------------
|
|
- Task mit User 1 + 4: Zeigt 2 Avatare nebeneinander
|
|
- Task mit nur User 1: Zeigt 1 Avatar
|
|
- Task ohne Zuweisung: Zeigt "?" Placeholder
|
|
- Klick auf beliebigen Avatar: Öffnet Bearbeitung-Dropdown
|
|
|
|
================================================================================
|
|
03.01.2026 - LISTE: NUR AVATAR-SYMBOLE BEI ZUGEWIESEN
|
|
================================================================================
|
|
|
|
UX-VERBESSERUNG
|
|
--------------------------------------------------------------------------------
|
|
In der Listen-Ansicht werden bei der Spalte "Zugewiesen" nur noch Symbole angezeigt.
|
|
|
|
ÄNDERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- Benutzernamen werden nicht mehr neben Avataren angezeigt
|
|
- Nur noch farbige Avatar-Symbole mit Initialen sichtbar
|
|
- Tooltip zeigt Namen beim Hover über Avatar
|
|
- Platzhalter "?" für nicht zugewiesene Aufgaben
|
|
- Klick auf Avatar öffnet Dropdown zur Bearbeitung
|
|
|
|
TECHNISCHE DETAILS
|
|
--------------------------------------------------------------------------------
|
|
- list.js: Dropdown standardmäßig versteckt (display: none)
|
|
- CSS: Neue Klassen für avatar-empty und editing-Modus
|
|
- JavaScript: Avatar-Click-Handler für Bearbeitung
|
|
- Service Worker Cache-Version: 177 -> 178
|
|
|
|
BEDIENUNG
|
|
--------------------------------------------------------------------------------
|
|
1. In Listen-Ansicht sind nur Avatar-Symbole sichtbar
|
|
2. Hover zeigt Namen als Tooltip
|
|
3. Klick auf Avatar öffnet Benutzer-Dropdown
|
|
4. Auswahl ändert Zuweisung und versteckt Dropdown wieder
|
|
|
|
================================================================================
|
|
03.01.2026 - BACKUP MIT AEGISSIGHT-PROJEKT ERSTELLT
|
|
================================================================================
|
|
|
|
BACKUP-WIEDERHERSTELLUNG
|
|
--------------------------------------------------------------------------------
|
|
Erfolgreiches Backup mit allen wiederhergestellten AegisSight-Daten erstellt.
|
|
|
|
BACKUP-DETAILS
|
|
--------------------------------------------------------------------------------
|
|
- Datei: backup_2026-01-03T00-38-47-492Z.db
|
|
- Inhalt: AegisSight-Projekt mit 22 Aufgaben
|
|
- Benutzer: 3 (HG, MH, admin)
|
|
- Status: Vollständig und verifiziert
|
|
|
|
TECHNICAL
|
|
--------------------------------------------------------------------------------
|
|
- Docker-Container mit korrekten Volume-Mounts neu gestartet
|
|
- Datenbank-Paths korrekt gemappt: /home/claude-dev/TaskMate/data → /app/data
|
|
- WAL-Dateien korrekt synchronisiert
|
|
|
|
ERGEBNIS
|
|
--------------------------------------------------------------------------------
|
|
Alle AegisSight-Projektdaten sind wiederhergestellt und gesichert.
|
|
|
|
================================================================================
|
|
02.01.2026 - ADMIN: PASSWORT-BEARBEITUNG IMPLEMENTIERT
|
|
================================================================================
|
|
|
|
NEUE FUNKTION
|
|
--------------------------------------------------------------------------------
|
|
Admins können jetzt Benutzer-Passwörter im Admin-Bereich bearbeiten.
|
|
|
|
FUNKTIONEN
|
|
--------------------------------------------------------------------------------
|
|
- Passwort-Bearbeitung: Klick auf Stift-Symbol aktiviert Bearbeitungsmodus
|
|
- Passwort-Generator: Klick auf Refresh-Symbol generiert starkes Passwort
|
|
- Beim Bearbeiten von Benutzern: Passwort optional ändern oder leer lassen
|
|
- Automatische Validierung: Mindestens 8 Zeichen erforderlich
|
|
|
|
TECHNISCHE DETAILS
|
|
--------------------------------------------------------------------------------
|
|
- HTML: Neue Button-Gruppe für Passwort-Eingabe hinzugefügt
|
|
- CSS: Styling für password-input-group implementiert
|
|
- JavaScript: togglePasswordEdit() und generatePassword() Methoden
|
|
- Backend: Nutzt vorhandene PUT /api/admin/users/:id Route
|
|
- Service Worker Cache-Version: 176 -> 177
|
|
|
|
BEDIENUNG
|
|
--------------------------------------------------------------------------------
|
|
1. Benutzer im Admin-Bereich bearbeiten
|
|
2. Stift-Symbol bei Passwort klicken → Eingabefeld wird bearbeitbar
|
|
3. Neues Passwort eingeben ODER Generator-Button für zufälliges Passwort
|
|
4. Formular speichern → Passwort wird sofort aktualisiert
|
|
|
|
================================================================================
|
|
02.01.2026 - DATENBANK WIEDERHERGESTELLT
|
|
================================================================================
|
|
|
|
KRITISCHER BUGFIX
|
|
--------------------------------------------------------------------------------
|
|
Datenbank-Verlust durch Container-Neustart behoben - alle Daten wiederhergestellt.
|
|
|
|
PROBLEM
|
|
--------------------------------------------------------------------------------
|
|
- Beim Docker-Container Neustart wurde eine neue, leere Datenbank erstellt
|
|
- Alle Benutzer, Aufgaben, Board-Einträge und Einstellungen waren verloren
|
|
- Nur Standard-Benutzer (HG, MH) vorhanden
|
|
|
|
LÖSUNG
|
|
--------------------------------------------------------------------------------
|
|
- Backup vom 02.01.2026 23:46 Uhr wiederhergestellt
|
|
- Originale Benutzerdaten und Inhalte sind wieder verfügbar
|
|
- Login mit ursprünglichen Benutzerkonten funktioniert wieder
|
|
|
|
ERGEBNIS
|
|
--------------------------------------------------------------------------------
|
|
Alle Daten sind wieder da - Login mit ursprünglichen Credentials möglich.
|
|
|
|
================================================================================
|
|
02.01.2026 - BUGFIX: LOGIN-FEHLER BEHOBEN
|
|
================================================================================
|
|
|
|
BUGFIX
|
|
--------------------------------------------------------------------------------
|
|
Login-Problem behoben: NotificationManager-Fehler beim Login korrigiert.
|
|
|
|
TECHNISCHE DETAILS
|
|
--------------------------------------------------------------------------------
|
|
- notifications.js: Sicherheitscheck für this.badge hinzugefügt
|
|
- Verhindert "Cannot read properties of undefined (reading 'classList')" Fehler
|
|
- Service Worker Cache-Version: 175 -> 176
|
|
|
|
AUSWIRKUNG
|
|
--------------------------------------------------------------------------------
|
|
Login funktioniert wieder korrekt ohne JavaScript-Fehler.
|
|
|
|
================================================================================
|
|
02.01.2026 - CODING-TAB: GITEA INTEGRATION CACHE-FIX
|
|
================================================================================
|
|
|
|
BUGFIX
|
|
--------------------------------------------------------------------------------
|
|
Browser-Cache Problem behoben: Gitea Repository-Dropdown zeigt wieder Repos an.
|
|
|
|
TECHNISCHE DETAILS
|
|
--------------------------------------------------------------------------------
|
|
- Service Worker Cache-Version: 170 -> 175 (aggressiver Cache-Bust)
|
|
- Docker Container komplett neu gebaut und gestartet
|
|
- getGiteaRepositories() API-Fix wird jetzt geladen
|
|
|
|
ERGEBNIS
|
|
--------------------------------------------------------------------------------
|
|
Repository-Dropdown in Coding-Anwendungen funktioniert wieder korrekt.
|
|
|
|
================================================================================
|
|
02.01.2026 - CODING-TAB: CLAUDE.MD ALS POPUP MODAL
|
|
================================================================================
|
|
|
|
NEUE FUNKTION
|
|
--------------------------------------------------------------------------------
|
|
CLAUDE.md wird jetzt in einem separaten Vollbild-Modal angezeigt:
|
|
|
|
VERBESSERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- Klickbarer Link statt kleine Box
|
|
- Vollbild-Modal mit 70% Viewport-Höhe
|
|
- Zeigt Dateigröße im Link (z.B. "7KB")
|
|
- Bessere Lesbarkeit für längere Dokumentation
|
|
- ESC-Taste zum Schließen
|
|
- Service Worker Cache-Version: 168 -> 169
|
|
|
|
BEDIENUNG
|
|
--------------------------------------------------------------------------------
|
|
1. Klick auf "CLAUDE.md anzeigen (XKB)" öffnet Modal
|
|
2. ESC oder X schließt Modal
|
|
3. Klick außerhalb schließt Modal
|
|
|
|
================================================================================
|
|
02.01.2026 - CODING-TAB: CLAUDE.MD ANZEIGE FINAL BEHOBEN
|
|
================================================================================
|
|
|
|
BUGFIX
|
|
--------------------------------------------------------------------------------
|
|
Problem mit unsichtbarer CLAUDE.md endgültig gelöst:
|
|
|
|
BEHOBENE PROBLEME
|
|
--------------------------------------------------------------------------------
|
|
- Backend: Fallback-Pfad für TaskMate (/app/taskmate-source) implementiert
|
|
- CSS: claude-content war standardmäßig versteckt (display: none)
|
|
- HTML: Überflüssige Hinweistexte entfernt
|
|
- Service Worker Cache-Version: 167 -> 168
|
|
|
|
ERGEBNIS
|
|
--------------------------------------------------------------------------------
|
|
CLAUDE.md wird jetzt korrekt angezeigt mit "Test für TaskMate" am Ende.
|
|
Nur-Lesen-Modus funktioniert wie gewünscht.
|
|
|
|
================================================================================
|
|
02.01.2026 - CODING-TAB: UX VERBESSERUNGEN
|
|
================================================================================
|
|
|
|
UX-VERBESSERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- Kacheln sind jetzt direkt klickbar (ohne Drei-Punkte-Menü)
|
|
- Drei-Punkte-Menü entfernt - weniger Verwirrung
|
|
- Cursor zeigt Klickbarkeit an
|
|
- CLAUDE.md Badge korrigiert - zeigt jetzt wieder CLAUDE.md an
|
|
- Service Worker Cache-Version: 164 -> 165
|
|
|
|
================================================================================
|
|
02.01.2026 - CODING-TAB: CLAUDE.MD NUR NOCH READONLY
|
|
================================================================================
|
|
|
|
ÄNDERUNG
|
|
--------------------------------------------------------------------------------
|
|
CLAUDE.md im Coding-Bereich ist jetzt nur noch lesbar (readonly).
|
|
|
|
DETAILS
|
|
--------------------------------------------------------------------------------
|
|
- Bearbeiten-Tab entfernt - nur noch Ansicht verfügbar
|
|
- CLAUDE.md kann nicht mehr über TaskMate bearbeitet werden
|
|
- Zeigt immer die aktuellen Inhalte aus dem Dateisystem
|
|
- Verhindert versehentliches Überschreiben wichtiger Projektanweisungen
|
|
- Service Worker Cache-Version: 163 -> 164
|
|
|
|
BEGRÜNDUNG
|
|
--------------------------------------------------------------------------------
|
|
- Sicherheit: Keine Schreibrechte-Konflikte mehr
|
|
- Klarheit: CLAUDE.md sollte außerhalb von TaskMate gepflegt werden
|
|
- Konsistenz: Immer aktuelle Inhalte aus dem Dateisystem
|
|
|
|
================================================================================
|
|
02.01.2026 - CODING-TAB: CLAUDE.MD ANZEIGE BEHOBEN
|
|
================================================================================
|
|
|
|
BUGFIX
|
|
--------------------------------------------------------------------------------
|
|
Problem behoben: CLAUDE.md wird im Coding-Bereich jetzt korrekt angezeigt.
|
|
|
|
TECHNISCHE DETAILS
|
|
--------------------------------------------------------------------------------
|
|
- Backend PUT/POST-Routes erweitert: claudeMdFromDisk in Antworten
|
|
- CLAUDE.md wird nach dem Speichern aus dem Dateisystem gelesen
|
|
- Service Worker Cache-Version: 162 -> 163
|
|
|
|
AUSWIRKUNG
|
|
--------------------------------------------------------------------------------
|
|
Im Coding-Bereich werden alle bisherigen Änderungen der CLAUDE.md nun
|
|
korrekt im Editor-Fenster angezeigt.
|
|
|
|
================================================================================
|
|
02.01.2026 - CLAUDE.MD DOKUMENTATION ERWEITERT
|
|
================================================================================
|
|
|
|
DOKUMENTATION
|
|
--------------------------------------------------------------------------------
|
|
Erweiterte CLAUDE.md mit hilfreichen Informationen für effizientere Entwicklung:
|
|
|
|
NEUE ABSCHNITTE
|
|
--------------------------------------------------------------------------------
|
|
- Projektübersicht: Kurzbeschreibung und Hauptfunktionen
|
|
- Architektur-Kurzübersicht: Technologie-Stack auf einen Blick
|
|
- Wichtige Dateien & Einstiegspunkte: Zentrale Dateien für schnellen Einstieg
|
|
- Häufige Entwicklungsaufgaben: Schritt-für-Schritt Anleitungen
|
|
- Testing & Debugging: Logs, häufige Probleme und Lösungen
|
|
- Deployment-Checkliste: Strukturierte Schritte für sicheres Deployment
|
|
|
|
ZWECK
|
|
--------------------------------------------------------------------------------
|
|
- Schnelleres Verständnis der Projektstruktur
|
|
- Effizientere Entwicklung durch klare Anleitungen
|
|
- Weniger Fehler durch dokumentierte Best Practices
|
|
|
|
================================================================================
|
|
02.01.2026 - CODING-TAB IMPLEMENTIERUNG
|
|
================================================================================
|
|
|
|
NEUE FEATURES
|
|
--------------------------------------------------------------------------------
|
|
Neuer "Coding"-Tab ersetzt den bisherigen "Gitea"-Tab mit erweiterter
|
|
Funktionalitaet zur Verwaltung von Entwicklungsverzeichnissen.
|
|
|
|
CODING-TAB
|
|
--------------------------------------------------------------------------------
|
|
- Projektubergreifende Verwaltung von Entwicklungsverzeichnissen
|
|
- Kachel-basiertes Grid-Layout
|
|
- Claude Code Button (orange) - Startet Claude Code im Verzeichnis
|
|
- Codex Button (gruen) - Startet OpenAI Codex im Verzeichnis
|
|
- Server-Pfade: Direkte Ausfuehrung auf dem Linux-Server
|
|
- Windows-Pfade: Befehl zum manuellen Kopieren fuer WSL
|
|
- Optionale Gitea-Repository-Verknuepfung pro Verzeichnis
|
|
- Git-Operationen (Fetch, Pull, Push, Commit) bei Verknuepfung
|
|
- Auto-Refresh des Git-Status alle 30 Sekunden
|
|
- Farbauswahl pro Verzeichnis
|
|
|
|
BACKEND
|
|
--------------------------------------------------------------------------------
|
|
- Neue Datenbank-Tabelle: coding_directories
|
|
- Neue Route: /api/coding mit 12 Endpunkten
|
|
- Terminal-Start-Logik fuer Claude/Codex
|
|
|
|
FRONTEND
|
|
--------------------------------------------------------------------------------
|
|
- Neuer Manager: coding.js
|
|
- Neues Styling: coding.css
|
|
- Modals: Verzeichnis-Verwaltung, Befehl-Anzeige
|
|
- Service Worker Cache-Version: 154 -> 155
|
|
|
|
================================================================================
|
|
31.12.2025 - MOBILE OPTIMIERUNG
|
|
================================================================================
|
|
|
|
NEUE FEATURES
|
|
--------------------------------------------------------------------------------
|
|
Vollstaendige Mobile-Optimierung der Anwendung mit Touch-Unterstuetzung.
|
|
|
|
HAMBURGER-MENU
|
|
--------------------------------------------------------------------------------
|
|
- Slide-in Navigation von links
|
|
- Projekt-Auswahl im Menu
|
|
- Alle Views ueber Menu erreichbar
|
|
- Benutzer-Info und Logout
|
|
- Smooth Animation (Hamburger zu X)
|
|
|
|
SWIPE-GESTEN
|
|
--------------------------------------------------------------------------------
|
|
- Horizontal wischen zum View-Wechsel
|
|
- Swipe rechts: vorheriger View
|
|
- Swipe links: naechster View
|
|
- Visuelle Indikatoren am Bildschirmrand
|
|
|
|
TOUCH DRAG & DROP
|
|
--------------------------------------------------------------------------------
|
|
- Long-Press (300ms) startet Task-Drag
|
|
- Visuelles Feedback beim Ziehen
|
|
- Auto-Scroll am Bildschirmrand
|
|
- Drop-Zonen werden hervorgehoben
|
|
|
|
BOARD-ANSICHT
|
|
--------------------------------------------------------------------------------
|
|
- Horizontal Scroll mit Scroll-Snap
|
|
- Spalten snappen am Viewport
|
|
|
|
BETROFFENE DATEIEN
|
|
--------------------------------------------------------------------------------
|
|
- frontend/css/mobile.css (NEU)
|
|
- frontend/js/mobile.js (NEU)
|
|
- frontend/index.html: Hamburger-Button, Mobile-Menu, Swipe-Indikatoren
|
|
- frontend/js/app.js: Mobile-Modul Integration
|
|
- frontend/sw.js: Cache-Version auf 154
|
|
|
|
|
|
================================================================================
|
|
30.12.2025 - BUGFIX: HTML-Entity-Encoding in Textfeldern
|
|
================================================================================
|
|
|
|
PROBLEM
|
|
--------------------------------------------------------------------------------
|
|
Sonderzeichen wie "&" wurden beim Speichern zu "&" konvertiert.
|
|
Beispiel: "Claude&Codex" wurde zu "Claude&Codex" gespeichert.
|
|
|
|
URSACHE
|
|
--------------------------------------------------------------------------------
|
|
Die sanitize-html Bibliothek encoded HTML-Entities auch wenn alle Tags
|
|
entfernt werden (allowedTags: []). Dies führte zu unerwünschter Konvertierung
|
|
von & zu &, < zu <, etc.
|
|
|
|
LÖSUNG
|
|
--------------------------------------------------------------------------------
|
|
- Neue Funktion decodeHtmlEntities() in validation.js
|
|
- stripHtml() dekodiert nun Entities nach der Bereinigung
|
|
- Ampersand (&), Klammern (<>), Anführungszeichen bleiben erhalten
|
|
|
|
BETROFFENE DATEIEN
|
|
--------------------------------------------------------------------------------
|
|
- backend/middleware/validation.js: decodeHtmlEntities() hinzugefügt
|
|
|
|
|
|
================================================================================
|
|
30.12.2025 - ADMINBEREICH: Dateiendungen frei definierbar
|
|
================================================================================
|
|
|
|
NEUES FEATURE
|
|
--------------------------------------------------------------------------------
|
|
Vereinfachtes System zur Verwaltung erlaubter Dateiendungen im Adminbereich.
|
|
Das bisherige komplexe Kategorien-System (Bilder, Dokumente, Office, etc.)
|
|
wurde durch eine einfache, flexible Dateiendungs-Verwaltung ersetzt.
|
|
|
|
FUNKTIONSWEISE
|
|
--------------------------------------------------------------------------------
|
|
- Standard-Endungen: pdf, docx, txt (können geändert werden)
|
|
- Tags-System: Aktive Endungen werden als Tags mit ×-Button angezeigt
|
|
- Freifeld: Beliebige Endungen manuell hinzufügen (z.B. xlsx, png, zip)
|
|
- Vorschläge: Schnellauswahl häufiger Endungen per Klick
|
|
- Validierung: Backend prüft Dateiendung UND MIME-Type
|
|
|
|
VORGESCHLAGENE ENDUNGEN
|
|
--------------------------------------------------------------------------------
|
|
Office: xlsx, pptx, doc, xls, ppt, odt, ods, rtf
|
|
Bilder: png, jpg, gif, svg, webp
|
|
Daten: csv, json, xml, md
|
|
Archive: zip, rar, 7z
|
|
|
|
BETROFFENE DATEIEN
|
|
--------------------------------------------------------------------------------
|
|
- backend/routes/admin.js: Neues Format (allowedExtensions statt allowedTypes)
|
|
- backend/middleware/upload.js: Extension-basierte Validierung, MIME-Mapping
|
|
- frontend/index.html: Neues UI mit Tags, Input, Vorschläge
|
|
- frontend/js/admin.js: Neue Render- und Event-Logik
|
|
- frontend/css/admin.css: Styles für Extension-Tags und Vorschläge
|
|
- frontend/sw.js: Cache-Version auf 153 erhöht
|
|
|
|
|
|
================================================================================
|
|
30.12.2025 - BUGFIX: Login-Problem behoben (Sofort-Logout nach Login)
|
|
================================================================================
|
|
|
|
PROBLEM
|
|
--------------------------------------------------------------------------------
|
|
Nach erfolgreichem Login wurde der Benutzer sofort wieder zum Login-Screen
|
|
zurückgeleitet. Dies war ein Race-Condition-Problem mit mehrfachen WebSocket-
|
|
Verbindungen und fehlenden Token-Prüfungen.
|
|
|
|
URSACHE
|
|
--------------------------------------------------------------------------------
|
|
1. syncManager.connect() wurde doppelt aufgerufen (einmal in sync.js Event-
|
|
Listener und einmal in app.js initializeApp())
|
|
2. Der Socket-Error-Handler in sync.js löste auth:logout aus OHNE zu prüfen,
|
|
ob sich der Token in der Zwischenzeit geändert hatte
|
|
|
|
LÖSUNG
|
|
--------------------------------------------------------------------------------
|
|
1. Doppelten syncManager.connect() Aufruf entfernt (nur noch in app.js)
|
|
2. Socket-Error-Handler prüft nun, ob ein gültiger Token existiert, bevor
|
|
logout ausgelöst wird
|
|
3. syncManager.connect() prüft jetzt ob Socket bereits existiert (nicht nur
|
|
ob er verbunden ist), um Race Conditions während des Verbindungsaufbaus
|
|
zu verhindern
|
|
|
|
BETROFFENE DATEIEN
|
|
--------------------------------------------------------------------------------
|
|
- frontend/js/sync.js: Doppelten Connect-Aufruf entfernt, Token-Check hinzugefügt,
|
|
verbesserte Socket-Existenz-Prüfung
|
|
- frontend/sw.js: Cache-Version auf 151 erhöht
|
|
|
|
|
|
================================================================================
|
|
30.12.2025 - UI-REDESIGN: Wissensmanagement-Tab komplett überarbeitet
|
|
================================================================================
|
|
|
|
NEUES LAYOUT: SIDEBAR + HAUPTBEREICH
|
|
--------------------------------------------------------------------------------
|
|
Der Wissensmanagement-Tab wurde komplett überarbeitet mit einem neuen
|
|
2-Spalten-Layout für bessere Übersicht und Bedienbarkeit.
|
|
|
|
NEUE FEATURES
|
|
--------------------------------------------------------------------------------
|
|
- Sidebar-Layout: Kategorien links, Einträge rechts - beide gleichzeitig sichtbar
|
|
- Drag & Drop Sortierung: Kategorien UND Einträge per Drag & Drop sortierbar
|
|
- Kompakte Ansicht: Einträge zeigen nur Titel, Details per Klick aufklappbar
|
|
- Aktive Kategorie: Farbiger linker Rand zeigt die ausgewählte Kategorie
|
|
- Indikatoren: Icons zeigen auf einen Blick ob Link, Notizen oder Anhänge vorhanden
|
|
- Responsive Design: Auf Mobile werden Kategorien als horizontale Chips angezeigt
|
|
|
|
UI-VERBESSERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- Aufklappbare Einträge (▶/▼) für bessere Platznutzung
|
|
- Drag-Handles (⋮⋮) für intuitive Sortierung
|
|
- Hover-Aktionen (Bearbeiten, Löschen) erscheinen bei Mausbewegung
|
|
- Sanfte Animationen für Expand/Collapse
|
|
|
|
BETROFFENE DATEIEN
|
|
--------------------------------------------------------------------------------
|
|
- frontend/index.html: Komplette Neustrukturierung des Knowledge-Views
|
|
(Sidebar + Main Layout, Mobile Chips)
|
|
- frontend/css/knowledge.css: Komplett neu geschrieben für das neue Layout
|
|
(Grid-System, Sidebar, kompakte Einträge, Drag & Drop Styles)
|
|
- frontend/js/knowledge.js: Komplett überarbeitet mit neuem Rendering,
|
|
Drag & Drop Handlers, Expand/Collapse Logik
|
|
- frontend/sw.js: Cache-Version auf 149 erhöht
|
|
|
|
|
|
================================================================================
|
|
30.12.2025 - VERBESSERUNG: Globale Suche für Wissensmanagement
|
|
================================================================================
|
|
|
|
ÄNDERUNG: SUCHFELD IN HEADER INTEGRIERT
|
|
--------------------------------------------------------------------------------
|
|
Die Suchfunktion für den Wissensmanagement-Tab wurde vom Tab selbst in das
|
|
globale Suchfeld im Header verschoben. Wenn der Benutzer auf dem "Wissen"-Tab
|
|
ist, durchsucht das Header-Suchfeld automatisch die Wissensdatenbank.
|
|
|
|
DETAILS
|
|
--------------------------------------------------------------------------------
|
|
- Suchfeld aus dem Wissen-Tab entfernt
|
|
- "Neue Kategorie"-Button zentral positioniert
|
|
- Globales Suchfeld erkennt aktiven Tab und leitet Suchanfragen entsprechend weiter
|
|
- Suchfeld wird automatisch geleert beim Wechsel zwischen Tabs
|
|
- Konsistentes Suchverhalten über alle Bereiche (Board, Vorschläge, Wissen)
|
|
|
|
BETROFFENE DATEIEN
|
|
--------------------------------------------------------------------------------
|
|
- frontend/js/knowledge.js: Öffentliche setSearchQuery() Methode hinzugefügt,
|
|
alte Suchfeld-Referenzen entfernt
|
|
- frontend/js/app.js: setupSearch() und switchView() erweitert für
|
|
Knowledge-Suche Integration
|
|
- frontend/css/knowledge.css: Suchfeld-Styles entfernt, zentrierten Header
|
|
hinzugefügt
|
|
- frontend/index.html: Suchfeld aus Knowledge-Tab entfernt
|
|
- frontend/sw.js: Cache-Version auf 148 erhöht
|
|
|
|
|
|
================================================================================
|
|
30.12.2025 - NEUES FEATURE: Wissensmanagement-Tab
|
|
================================================================================
|
|
|
|
FEATURE: WISSENSMANAGEMENT-TAB
|
|
--------------------------------------------------------------------------------
|
|
Neuer Tab "Wissen" in der Hauptnavigation für projektunabhängiges
|
|
Wissensmanagement mit 2-Ebenen-Hierarchie.
|
|
|
|
KATEGORIEN
|
|
--------------------------------------------------------------------------------
|
|
- Kategorien mit Namen, Beschreibung, Farbe und Icon (Emoji)
|
|
- Kategorien-Grid mit Eintrags-Anzahl
|
|
- Erstellen, Bearbeiten und Löschen von Kategorien
|
|
- Farbcodierung für visuelle Unterscheidung
|
|
|
|
EINTRÄGE
|
|
--------------------------------------------------------------------------------
|
|
- Einträge innerhalb von Kategorien
|
|
- Jeder Eintrag kann enthalten:
|
|
- Titel (Pflichtfeld)
|
|
- Link/URL (optional, klickbar)
|
|
- Notizen (optional, Markdown-fähig)
|
|
- Dateianhänge (mehrere pro Eintrag möglich)
|
|
- Erstellen, Bearbeiten und Löschen von Einträgen
|
|
|
|
SUCHFUNKTION
|
|
--------------------------------------------------------------------------------
|
|
- Dedizierte Suche nur für den Wissensmanagement-Bereich
|
|
- Durchsucht Titel, Notizen und URLs
|
|
- Debounce für Performance-Optimierung
|
|
- Ergebnisse zeigen Kategorie-Zugehörigkeit
|
|
|
|
BETROFFENE DATEIEN
|
|
--------------------------------------------------------------------------------
|
|
Backend:
|
|
- backend/database.js: 3 neue Tabellen (knowledge_categories, knowledge_entries,
|
|
knowledge_attachments) mit Indizes
|
|
- backend/routes/knowledge.js: NEU - CRUD-Operationen für Kategorien, Einträge,
|
|
Anhänge und Suche
|
|
- backend/server.js: Route-Registrierung hinzugefügt
|
|
|
|
Frontend:
|
|
- frontend/js/api.js: 15+ neue API-Methoden für Wissensmanagement
|
|
- frontend/js/knowledge.js: NEU - KnowledgeManager-Klasse
|
|
- frontend/css/knowledge.css: NEU - Styles für Kategorien, Einträge, Suche
|
|
- frontend/index.html: Tab, View und Modals hinzugefügt
|
|
- frontend/js/app.js: Import und Integration des KnowledgeManager
|
|
- frontend/sw.js: Cache-Version auf 144 erhöht, neue Dateien hinzugefügt
|
|
|
|
|
|
================================================================================
|
|
30.12.2025 - KRITISCHER BUGFIX: Login-Problem behoben
|
|
================================================================================
|
|
|
|
BUGFIX: SOFORTIGER LOGOUT NACH ERFOLGREICHEM LOGIN
|
|
--------------------------------------------------------------------------------
|
|
Problem: Nach erfolgreichem Login wurde der Benutzer sofort wieder ausgeloggt.
|
|
|
|
Ursache: Race-Condition zwischen Session-Refresh und Login:
|
|
1. Beim Seitenaufruf mit altem Token startete refreshSession() einen async Request
|
|
2. Benutzer logt sich erfolgreich ein (neuer Token wird gesetzt)
|
|
3. Der alte Refresh-Request kehrt mit 401 zurück
|
|
4. Der 401-Fehler löste logout() aus, obwohl neuer gültiger Token existierte
|
|
|
|
Lösung:
|
|
- Vor dem Logout wird geprüft ob der aktuelle Token noch der gleiche ist
|
|
- Wenn ein neuer Login stattfand (Token unterschiedlich), wird 401 ignoriert
|
|
- Prüfung in auth.js (refreshSession) und api.js (request) hinzugefügt
|
|
|
|
BETROFFENE DATEIEN
|
|
--------------------------------------------------------------------------------
|
|
- frontend/js/auth.js: refreshSession() prüft Token vor Logout
|
|
- frontend/js/api.js: request() prüft Token vor Logout bei 401
|
|
- frontend/sw.js: Cache-Version auf 143 erhöht
|
|
|
|
|
|
================================================================================
|
|
30.12.2025 - Checklisten-Unteraufgaben: Drag & Drop und Bearbeiten
|
|
================================================================================
|
|
|
|
FEATURE: UNTERAUFGABEN REIHENFOLGE ÄNDERN (DRAG & DROP)
|
|
--------------------------------------------------------------------------------
|
|
- Drag-Handle (⋮⋮) links neben jeder Unteraufgabe
|
|
- Visueller Indikator beim Ziehen (farbiger Rand oben/unten)
|
|
- Reihenfolge wird in der Datenbank gespeichert (position-Feld)
|
|
|
|
FEATURE: UNTERAUFGABEN BEARBEITEN
|
|
--------------------------------------------------------------------------------
|
|
- Doppelklick auf den Titel zum Bearbeiten
|
|
- Bearbeiten-Icon (✎) erscheint beim Hover
|
|
- Enter speichert, Escape bricht ab
|
|
- Änderungen werden sofort in der Datenbank gespeichert
|
|
|
|
BETROFFENE DATEIEN
|
|
--------------------------------------------------------------------------------
|
|
- frontend/js/task-modal.js: renderSubtasks() erweitert, Drag & Drop Events,
|
|
startEditSubtask() Methode hinzugefügt
|
|
- frontend/css/modal.css: Styles für Drag-Handle, Drag-Indikatoren, Edit-Button,
|
|
Edit-Input
|
|
- frontend/sw.js: Cache-Version auf 138 erhöht
|
|
|
|
|
|
================================================================================
|
|
30.12.2025 - Bugfix: Statuskarten Drag & Drop Reihenfolge
|
|
================================================================================
|
|
|
|
BUGFIX & VERBESSERUNG: STATUSKARTEN DRAG & DROP
|
|
--------------------------------------------------------------------------------
|
|
- Drag & Drop von Statuskarten funktionierte nicht korrekt
|
|
- Ursache 1: API-Aufruf mit falschen Parametern (Array statt columnId + Position)
|
|
- Ursache 2: Kein visuelles Feedback beim Ziehen (CSS fehlte)
|
|
- Ursache 3: DragLeave entfernte Indikatoren zu früh
|
|
|
|
ÄNDERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- board.js: reorderColumns() übergibt jetzt korrekt moved.id und toIndex
|
|
- board.js: handleDragOver() nutzt jetzt CSS-Klassen statt inline-styles
|
|
- board.js: handleDragLeave() prüft jetzt ob Spalte wirklich verlassen wird
|
|
- board.js: handleDrop() berechnet Position basierend auf Maus-Position (links/rechts)
|
|
- board.css: Neue Styles für .column.dragging (Opacity, Scale, Shadow)
|
|
- board.css: Neue Styles für .column.drag-over-left/right (farbiger Rand)
|
|
|
|
BETROFFENE DATEIEN
|
|
--------------------------------------------------------------------------------
|
|
- frontend/js/board.js: Drag & Drop Logik komplett überarbeitet
|
|
- frontend/css/board.css: Column Dragging Styles hinzugefügt
|
|
- frontend/sw.js: Cache-Version auf 135 erhöht
|
|
|
|
|
|
================================================================================
|
|
30.12.2025 - Browser-Upload: Lokale Verzeichnisse ins Gitea pushen
|
|
================================================================================
|
|
|
|
FEATURE: VERZEICHNIS-UPLOAD VOM BROWSER
|
|
--------------------------------------------------------------------------------
|
|
- Lokale Verzeichnisse direkt vom Computer ins Gitea pushen
|
|
- Verwendet File System Access API (Chrome/Edge/Opera)
|
|
- Drag & Drop als Fallback für andere Browser
|
|
- Automatische Filterung von .git, node_modules, etc.
|
|
|
|
ABLAUF
|
|
--------------------------------------------------------------------------------
|
|
1. Ziel-Repository aus Gitea-Liste auswählen
|
|
2. Ziel-Branch eingeben (Standard: main)
|
|
3. "Verzeichnis auswählen" klicken oder Ordner per Drag & Drop
|
|
4. Datei-Vorschau prüfen
|
|
5. Commit-Nachricht eingeben
|
|
6. "Commit & Push" ausführen
|
|
|
|
TECHNISCHE ÄNDERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- backend/routes/git.js:
|
|
* POST /api/git/browser-upload - Empfängt Dateien und pusht ins Gitea
|
|
* POST /api/git/browser-upload-prepare - Bereitet Upload-Session vor
|
|
* DELETE /api/git/browser-upload/:sessionId - Bricht Upload ab
|
|
* Multer-Konfiguration für Git-Uploads (50MB/Datei, 500 Dateien max)
|
|
- frontend/js/api.js:
|
|
* prepareBrowserUpload() - Session vorbereiten
|
|
* browserUploadAndPush() - Dateien hochladen und pushen
|
|
* cancelBrowserUpload() - Session abbrechen
|
|
- frontend/js/gitea.js:
|
|
* Browser-Upload Properties und Ignore-Patterns
|
|
* bindBrowserUploadEvents() - Event-Handler
|
|
* handleSelectDirectory() - File System Access API
|
|
* readDirectoryRecursive() - Verzeichnis rekursiv lesen
|
|
* handleDroppedFiles() - Drag & Drop Handler
|
|
* renderUploadPreview() - Datei-Vorschau
|
|
* executeBrowserUpload() - Upload durchführen
|
|
- frontend/index.html: Neues Browser-Upload UI mit Schritten
|
|
- frontend/css/gitea.css: Styles für Upload-Schritte, Drop-Zone, Progress
|
|
- frontend/sw.js: Cache-Version auf 132 erhöht
|
|
|
|
IGNORIERTE DATEIEN/ORDNER
|
|
--------------------------------------------------------------------------------
|
|
.git, node_modules, __pycache__, .env, .env.local, .env.production,
|
|
.DS_Store, Thumbs.db, .idea, .vscode, dist, build, .cache, coverage
|
|
|
|
================================================================================
|
|
30.12.2025 - Gitea-Integration: Server-Modus
|
|
================================================================================
|
|
|
|
FEATURE: SERVER-DATEIEN DIREKT INS GITEA PUSHEN
|
|
--------------------------------------------------------------------------------
|
|
- Neuer "Server-Anwendung" Modus im Gitea-Tab
|
|
- Ermöglicht Git-Operationen direkt auf dem Server-Verzeichnis /home/claude-dev/TaskMate
|
|
- Alle Änderungen an der Anwendung können sofort ins Gitea gepusht werden
|
|
- Kein separates Konfigurieren nötig - sofort einsatzbereit
|
|
|
|
FEATURE: ZWEI-MODUS-SCHALTER
|
|
--------------------------------------------------------------------------------
|
|
- Modus-Schalter oben im Gitea-Tab: "Server-Anwendung" und "Projekt-Repository"
|
|
- Server-Modus: Zeigt TaskMate Server-Dateien
|
|
- Projekt-Modus: Bisherige Funktionalität für lokale Pfade pro Projekt
|
|
|
|
SERVER-MODUS FUNKTIONEN
|
|
--------------------------------------------------------------------------------
|
|
- Git-Status anzeigen (geänderte Dateien, aktueller Branch)
|
|
- Branch-Wechsel
|
|
- Fetch, Pull, Push, Commit
|
|
- Commit-Historie anzeigen
|
|
- Änderungsliste mit Statusanzeige (M, A, D, ?)
|
|
|
|
TECHNISCHE ÄNDERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- docker-compose.yml: Neues Volume-Mount ".:/app/taskmate-source" für Zugriff auf Source-Code
|
|
- backend/routes/git.js: Neue Server-Endpoints:
|
|
* GET /api/git/server/info - Repository-Informationen
|
|
* GET /api/git/server/status - Git-Status
|
|
* GET /api/git/server/branches - Branch-Liste
|
|
* GET /api/git/server/commits - Commit-Historie
|
|
* GET /api/git/server/remote - Remote-URL
|
|
* POST /api/git/server/stage - Alle Änderungen stagen
|
|
* POST /api/git/server/commit - Commit erstellen
|
|
* POST /api/git/server/push - Push ausführen
|
|
* POST /api/git/server/pull - Pull ausführen
|
|
* POST /api/git/server/fetch - Fetch ausführen
|
|
* POST /api/git/server/checkout - Branch wechseln
|
|
- frontend/js/api.js: Neue API-Funktionen für Server-Modus
|
|
- frontend/js/gitea.js:
|
|
* GiteaManager mit currentMode Property
|
|
* Server-Modus Methoden (loadServerData, renderServer*, handleServer*)
|
|
* Modus-Wechsel Handler
|
|
- frontend/index.html: Server-Modus UI mit Modus-Schalter
|
|
- frontend/css/gitea.css: Styles für Modus-Schalter (.gitea-mode-switch, .gitea-mode-btn)
|
|
- frontend/sw.js: Cache-Version auf 131 erhöht
|
|
|
|
================================================================================
|
|
30.12.2025 - Session-Countdown auf Hauptoberfläche
|
|
================================================================================
|
|
|
|
FEATURE: SITZUNGS-COUNTDOWN IM HEADER
|
|
--------------------------------------------------------------------------------
|
|
- Countdown-Timer im Header zeigt verbleibende Sitzungszeit an
|
|
- Format: MM:SS (z.B. 09:45)
|
|
- Timer startet immer bei 10:00 Minuten
|
|
- Farbliche Warnung bei < 60 Sekunden (orange)
|
|
- Kritische Warnung bei < 30 Sekunden (rot, pulsierend)
|
|
- Automatischer Logout bei Ablauf mit Toast-Benachrichtigung
|
|
|
|
FEATURE: INTERAKTIONS-BASIERTER SESSION-REFRESH
|
|
--------------------------------------------------------------------------------
|
|
- Bei jedem Klick oder Tastendruck wird die Session automatisch verlängert
|
|
- Timer wird auf 10:00 zurückgesetzt bei Interaktion
|
|
- Debouncing verhindert zu viele Server-Anfragen (max. 1 pro Sekunde)
|
|
- Bei Browser-Aktualisierung (F5) wird Session automatisch refreshed
|
|
|
|
ÄNDERUNG: SITZUNGSZEIT AUF 10 MINUTEN REDUZIERT
|
|
--------------------------------------------------------------------------------
|
|
- SESSION_TIMEOUT in .env von 30 auf 10 Minuten geändert
|
|
- Erhöhte Sicherheit durch kürzere Sitzungsdauer
|
|
|
|
ÄNDERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- .env: SESSION_TIMEOUT=10
|
|
- frontend/index.html: Session-Timer-Element im Header hinzugefügt
|
|
- frontend/js/auth.js:
|
|
* SessionTimerHandler-Klasse für Countdown-Logik
|
|
* JWT-Token-Parsing für Ablaufzeit
|
|
* Automatischer Logout bei Session-Ablauf
|
|
* Interaktions-basiertes Token-Refresh (Click/Keydown Events)
|
|
* initFromExistingSession() für korrekten Timer bei Seiten-Reload
|
|
- frontend/js/api.js: X-New-Token-Header verarbeiten und Event dispatchen
|
|
- frontend/css/board.css:
|
|
* .session-timer Styles
|
|
* .warning und .critical Zustände
|
|
* pulse-critical Animation
|
|
- frontend/sw.js: Cache-Version auf 128 erhöht
|
|
|
|
================================================================================
|
|
30.12.2025 - Kalender: Dots nach Statusspalte gruppiert
|
|
================================================================================
|
|
|
|
FEATURE: AUFGABEN-DOTS IM WOCHENSTREIFEN NACH SPALTE GRUPPIERT
|
|
--------------------------------------------------------------------------------
|
|
- Im Wochenstreifen-Kalender (Board-Ansicht) wird jetzt nur ein Kreis pro
|
|
Statusspalte angezeigt statt einem Kreis pro Aufgabe
|
|
- Bei Mouseover werden alle Aufgaben dieser Spalte im Tooltip aufgelistet
|
|
- Tooltip zeigt: Spaltenname, Anzahl Aufgaben, Liste mit Start/Ende-Info
|
|
- Kreis-Typ basiert auf enthaltenen Aufgaben:
|
|
* Offener Kreis = alle Aufgaben haben nur Startdatum
|
|
* Gefüllter Kreis = alle Aufgaben haben nur Enddatum
|
|
* Kreis mit Ring = gemischt (Start und Ende)
|
|
- Klick auf Kreis öffnet die erste Aufgabe der Gruppe
|
|
|
|
ÄNDERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- frontend/js/board.js:
|
|
* getTasksForDay() gruppiert Aufgaben nach Spalte (Map statt Array)
|
|
* renderDayDots() rendert einen Dot pro Spalte mit data-task-ids
|
|
* showTaskTooltip() zeigt alle Aufgaben der Spalte im Tooltip
|
|
* openTaskFromDot() öffnet erste Aufgabe aus der Gruppe
|
|
- frontend/css/board.css:
|
|
* Neue Tooltip-Stile für gruppierte Aufgaben
|
|
* .week-strip-tooltip-header, -column-name, -count, -task-list, -task, etc.
|
|
- frontend/sw.js: Cache-Version auf 126 erhöht
|
|
|
|
================================================================================
|
|
29.12.2025 - Dokumentation aktualisiert
|
|
================================================================================
|
|
|
|
ANWENDUNGSBESCHREIBUNG.TXT ÜBERARBEITET
|
|
--------------------------------------------------------------------------------
|
|
- Inhaltsverzeichnis erweitert (13 Abschnitte statt 10)
|
|
- Neuer Abschnitt 6: Listenansicht
|
|
- Neuer Abschnitt 8: Gitea-Integration (vollständige Dokumentation)
|
|
- Neuer Abschnitt 9: Benachrichtigungen (Inbox)
|
|
- Navigationsleiste im ASCII-Diagramm aktualisiert
|
|
- Admin-Passwort aktualisiert
|
|
|
|
================================================================================
|
|
29.12.2025 - Admin: Sicheres Passwort
|
|
================================================================================
|
|
|
|
ÄNDERUNG: ADMIN-PASSWORT AKTUALISIERT
|
|
--------------------------------------------------------------------------------
|
|
- Neues sicheres Admin-Passwort ohne Bezug zur Anwendung
|
|
- 18 Zeichen mit Groß-/Kleinbuchstaben, Zahlen und Sonderzeichen
|
|
|
|
ÄNDERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- backend/database.js: Standard-Admin-Passwort geändert
|
|
|
|
================================================================================
|
|
29.12.2025 - Admin: Benutzer löschen repariert
|
|
================================================================================
|
|
|
|
BUGFIX: BENUTZER KONNTE NICHT GELÖSCHT WERDEN
|
|
--------------------------------------------------------------------------------
|
|
- Problem: SQLITE_CONSTRAINT_NOTNULL Fehler beim Löschen von Benutzern
|
|
- Ursache: Tabellen comments, history und proposals haben NOT NULL Constraints
|
|
auf user_id/created_by, Code versuchte diese auf NULL zu setzen
|
|
|
|
LÖSUNG
|
|
--------------------------------------------------------------------------------
|
|
- Kommentare des Benutzers werden gelöscht (statt user_id = NULL)
|
|
- Historie-Einträge des Benutzers werden gelöscht (statt user_id = NULL)
|
|
- Vorschläge des Benutzers werden gelöscht (statt created_by = NULL)
|
|
- Task-Assignees werden gelöscht
|
|
- Benachrichtigungen werden gelöscht
|
|
- Applications.created_by wird auf NULL gesetzt
|
|
|
|
ÄNDERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- backend/routes/admin.js: DELETE /api/admin/users/:id überarbeitet
|
|
* Korrekte Behandlung aller Fremdschlüssel-Beziehungen
|
|
|
|
================================================================================
|
|
29.12.2025 - Gitea: Commits aus Anzeige ausblenden
|
|
================================================================================
|
|
|
|
FEATURE: COMMITS AUS ANZEIGE ENTFERNEN
|
|
--------------------------------------------------------------------------------
|
|
- X-Button bei jedem Commit zum Ausblenden (erscheint bei Hover)
|
|
- "Alle ausblenden" Button in der Überschrift
|
|
- Ausgeblendete Commits werden nur aus der UI entfernt, nicht aus Git
|
|
- Anzeige zeigt "Alle Commits ausgeblendet" wenn Liste leer
|
|
|
|
ÄNDERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- frontend/index.html: Commits-Header mit "Alle ausblenden" Button
|
|
- frontend/css/gitea.css:
|
|
* .commits-header Style für Überschrift mit Button
|
|
* .commit-delete Button-Style (erscheint bei Hover)
|
|
- frontend/js/gitea.js:
|
|
* hiddenCommits Set im Constructor
|
|
* renderCommits() filtert ausgeblendete Commits
|
|
* handleCommitListClick() für Event-Delegation
|
|
* hideCommit(), clearAllCommits() Methoden
|
|
- frontend/sw.js: Cache-Version auf 125 erhöht
|
|
|
|
================================================================================
|
|
29.12.2025 - Gitea: Commit-Autor = eingeloggter Benutzer
|
|
================================================================================
|
|
|
|
BUGFIX: COMMIT-AUTOR WAR FALSCH
|
|
--------------------------------------------------------------------------------
|
|
- Problem: Bei Commits wurde "Claude Projekt Manager" als Autor angezeigt
|
|
(aus der lokalen Git-Konfiguration des Benutzers)
|
|
- Lösung: Der eingeloggte TaskMate-Benutzer wird jetzt als Autor verwendet
|
|
|
|
ÄNDERUNGEN
|
|
--------------------------------------------------------------------------------
|
|
- backend/services/gitService.js: commit() akzeptiert jetzt author-Parameter
|
|
* Verwendet git commit --author="Name <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
|