TASKMATE - CHANGELOG
====================
================================================================================
18.04.2026 - v403 - Bugfix: Archivierung + Task-Duplizieren
================================================================================
PROBLEM
--------------------------------------------------------------------------------
1. Archivierte Aufgaben konnten nicht wiederhergestellt werden: Backend-Update
   lief durch, aber das Board zeigte den Task nicht zurueck. Grund: Archivierte
   Tasks sind nie im Frontend-Store (API filtert per Default archived=0), und
   store.updateTask() ist ein No-op fuer unbekannte IDs. Ausserdem hatte der
   Socket-Event 'task:archived' keinen Frontend-Handler, d. h. andere Clients
   und Ansichten (Kalender, Liste, Mobile) blieben out-of-sync.
2. Beim Duplizieren gingen abgehakte Subtasks verloren: INSERT kopierte nur
   (task_id, title, position) - das 'completed'-Feld fiel auf Schema-Default 0.
   Zusaetzlich wurden task_assignees (Mehrfachzuweisungen) nicht mitkopiert.

LOESUNG
--------------------------------------------------------------------------------
Backend (backend/routes/tasks.js):
- Duplicate-Route: INSERT INTO subtasks erweitert um Spalte 'completed'
- Duplicate-Route: task_assignees analog zu task_labels mitkopieren
- Archive-Route: Vollstaendigen Task im Socket-Event mitschicken (task + userId)
- Archive-Route: res.json() liefert jetzt auch den aktualisierten Task zurueck

Frontend (frontend/js/sync.js):
- Neuer Socket-Handler 'task:archived': entfernt Task aus Board bei archiv=true,
  fuegt ihn bei archiv=false via store.addTask/updateTask wieder ein
- Eigene UserID wird wie bei anderen Events ignoriert

Frontend (frontend/js/app.js, task-modal.js):
- app.restoreTask + handleRestore + showColumnSelectDialog: nutzen den vom
  Backend zurueckgegebenen Task, um ihn in den Store einzupflegen statt nur
  store.updateTask() zu rufen (welches bei nicht vorhandenen Tasks wirkungslos ist)
- handleRestore schliesst jetzt zusaetzlich das archive-modal via
  'modal:close'-Event, damit der Nutzer den wiederhergestellten Task sofort
  im Board sieht
- Neue Helper-Methode applyRestoredTask() im task-modal

Service Worker:
- CACHE_VERSION: 402 -> 403 (erzwingt Neulade der Frontend-Assets)

Geaenderte Dateien:
- backend/routes/tasks.js
- frontend/js/sync.js
- frontend/js/app.js
- frontend/js/task-modal.js
- frontend/sw.js


================================================================================
19.03.2026 - v402 - Assistent: Umbau auf Claude-Proxy (HTTP/SSE)
================================================================================
- Backend: child_process.spawn('claude') ersetzt durch HTTP-Request an Claude-Proxy
- Proxy-URL: http://172.20.0.1:3100/api/chat (SSE-Streaming)
- Authentifizierung: PROXY_TOKEN als Environment-Variable
- docker-compose.yml: Claude-bezogene Volume-Mounts entfernt (claude binary, .claude config, anthropic modules)
- docker-compose.yml: PROXY_TOKEN als Environment-Variable hinzugefuegt
- .env: PROXY_TOKEN hinzugefuegt
- Geaendert: backend/routes/assistant.js, docker-compose.yml, .env, frontend/sw.js (Cache v402)

================================================================================
19.03.2026 - v401 - Assistent: Beendete Sessions koennen fortgesetzt werden
================================================================================
- Bug: Nachricht an beendete Session senden fuehrte zu "Keine aktive Session"
- Fix: sendMessage() reaktiviert beendete Sessions automatisch via assistant:start
- Session wird im Backend auf active zurueckgesetzt, dann Nachricht gesendet
- Geaendert: frontend/js/assistant.js, frontend/sw.js (Cache v401)

================================================================================
19.03.2026 - v400 - Assistent: Layout-Fixes (Zentrierung, Input-Bar, Flex-Kette)
- Empty-State Icon+Text jetzt zentriert (Flexbox statt position absolute)
- Input-Bar immer sichtbar (auch ohne aktive Session)
- Layout-Kette korrekt: view flex-column, layout flex:1, chat flex-column
- Empty-State im HTML vor Input-Bar verschoben (korrektes Flex-Order)
================================================================================
19.03.2026 - v399 - Assistent: Print-Modus statt interaktiver Prozess
- Backend komplett umgestellt auf claude -p (print mode) mit --output-format stream-json
- Kein dauerhafter Prozess mehr - jede Nachricht ist ein separater Aufruf
- --resume haelt den Konversationskontext zwischen Aufrufen
- Sauberer Output ohne Terminal-UI (Status-Balken, Steuerzeichen)
- Neue Status-Events: active (bereit), thinking (verarbeitet)
- Session-Reconnect beim Oeffnen aktiver Sessions
- Frontend: Neuer Status 'Bereit' fuer wartende Sessions

================================================================================
19.03.2026 - v398 - Assistent: Berechtigungspruefung Fix + CSS-Spezifitaet
- requireAssistantAccess/checkSocketAccess: Prueft jetzt username UND displayName
- Erlaubte Werte: hendrik, monami, hendrik_gebhardt@gmx.de, momohomma@googlemail.com
- CSS: .view.view-assistant statt .view-assistant (hoehere Spezifitaet gegen .view override)

================================================================================
19.03.2026 - v397 - Assistent: Layout-Fix Fensterhoehe (kein Seiten-Scroll mehr)
- .view-assistant begrenzt auf verfuegbaren Platz (100vh minus Header minus Tabs)
- Durchgaengige Hoehen-Kette: view -> layout -> chat -> messages
- min-height: 0 auf assistant-messages damit flex-shrink greift
- Nur noch Chat-Verlauf scrollt intern, Eingabeleiste bleibt sichtbar

================================================================================
19.03.2026 - v396 - Claude Assistent: Task an Assistent Button (Schritt 3/3)

NEUES FEATURE:
- "An Assistent" Button im Task-Modal Footer (links neben Duplizieren)
- Nur sichtbar im Edit-Modus (nicht beim Erstellen neuer Aufgaben)
- Sammelt Task-Daten (Titel, Beschreibung, Prioritaet, Labels, Subtasks)
- Wechselt automatisch zum Assistent-View und startet neue Session mit Kontext

GEAENDERTE DATEIEN:
- frontend/index.html - Button mit message-square Icon im modal-footer-left
- frontend/js/task-modal.js - Import assistantManager, Event-Listener, handleTaskToAssistant()
- frontend/js/assistant.js - handleTaskHandover() Methode
- frontend/sw.js - CACHE_VERSION 396

================================================================================
19.03.2026 - v395 - Claude Assistent: Frontend (Schritt 2/3)

NEUES FEATURE:
- Neuer Tab "Assistent" in der View-Leiste mit Chat-Icon
- Sidebar mit Session-Liste (erstellen, auswaehlen, loeschen)
- Chat-Bereich mit Nachrichten-Bubbles (User rechts/Gold, Assistant links/Weiss)
- Streaming-Output von Claude mit Blink-Cursor
- Markdown-Rendering fuer Assistant-Antworten (Code, Listen, Headers, etc.)
- Status-Badges: Aktiv (gruen), Denkt (orange), Beendet (grau), Fehler (rot)
- Textarea mit Enter=Senden, Shift+Enter=Neue Zeile, Auto-Resize
- Responsive Design: Sidebar hidden unter 768px
- Neue Dateien: assistant.js, assistant.css
- API-Methoden in api.js: Sessions CRUD + Messages laden
- Service Worker Cache v395 mit neuen Assets
- Mobile-Navigation: Assistent-Button hinzugefuegt

================================================================================
19.03.2026 - v394 - Claude Assistent: Backend (Schritt 1/3)

NEUES FEATURE:
- Neue DB-Tabellen: assistant_sessions, assistant_messages
- Neue Route: /api/assistant mit Session-CRUD
- Socket.io Events: assistant:start, assistant:message, assistant:stop
- Session Manager: Claude-Prozess spawnen, Output-Streaming, 30min Timeout
- Zugriffsbeschraenkung auf Hendrik und Monami

GEAENDERTE DATEIEN:
- backend/database.js - Zwei neue Tabellen + Indizes
- backend/routes/assistant.js - NEUE DATEI (REST + Socket + Session Manager)
- backend/server.js - Import, Route, Socket-Events, Graceful Shutdown

================================================================================
19.03.2026 - v393 - Wissensdatenbank: Wiki-Layout Redesign

WISSENSDATENBANK KOMPLETT UMGEBAUT:
- Neues Wiki-Layout mit Baum-Navigation (links) und Content-Bereich (rechts)
- Sidebar: Aufklappbare Kategorien mit Eintraegen als Kinder, Suchfeld, Neue Kategorie Button
- Content: 3 Zustaende (Leer, Lese-Ansicht, Editor)
- Lese-Ansicht: Titel, Meta-Info, Markdown-Body, Anhaenge, Bearbeiten/Loeschen Buttons
- Editor: Inline-Bearbeitung mit Titel, URL, Markdown-Textarea, Datei-Upload
- Alle Eintraege auf einen Blick im Baum sichtbar
- Suche filtert den Baum in Echtzeit
- Alte Ansicht (Expand/Collapse Liste, Drag&Drop, Resize Handle) entfernt

Geaenderte Dateien:
- frontend/index.html (view-knowledge HTML-Struktur)
- frontend/css/knowledge.css (komplett neu)
- frontend/js/knowledge.js (komplett umgebaut)
- frontend/sw.js (CACHE_VERSION 392 -> 393)

================================================================================
19.03.2026 - v392 - Wissensdatenbank: Markdown, Volltextsuche, Sanitizing

WISSENSDATENBANK:
- Markdown-Rendering fuer Notizen (fett, kursiv, Ueberschriften, Listen, Links, Code-Bloecke)
- HTML-Sanitizing im Frontend und Backend (script/iframe/on*-Attribute entfernt)
- FTS5 Volltextindex fuer schnellere Suche mit Fallback auf LIKE
- Kategorie-Loeschung zeigt jetzt Eintragsanzahl im Bestaetigungsdialog
- CSS-Styles fuer gerenderte Markdown-Elemente in Notizen

================================================================================
19.03.2026 - v391 - Sicherheitshärtung und toter Code bereinigt

SICHERHEIT:
- CSRF-Bypass bei /api/admin und /api/proposals behoben (authenticateToken vor csrfProtection)
- CSRF-Schutz auf /api/files, /api/stats, /api/export hinzugefuegt
- CORS eingeschraenkt auf taskmate.aegis-sight.de statt wildcard
- JWT_SECRET nicht mehr aus auth.js exportiert
- Toter Code entfernt: generateCsrfToken(), SESSION_TIMEOUT, generateToken() Legacy-Wrapper
- generateToken() durch direkten generateAccessToken() Aufruf ersetzt

TOTER CODE ENTFERNT:
- 7 ungenutzte Frontend-JS-Dateien geloescht (tour, dashboard, contacts-*)
- 2 ungenutzte CSS-Dateien geloescht (contacts-extended, dashboard)
- knowledge.js.backup geloescht
- backend/migrations/ Verzeichnis geloescht
- Doppelter bcrypt require in database.js entfernt
- Referenzen in index.html und sw.js bereinigt

OPTIMIERUNG:
- Request-Logging filtert statische Assets raus (nur /api/ Requests)

================================================================================
19.03.2026 - v390 - Filter-Buttons in die View-Tabs-Zeile verschoben
================================================================================
- Filter- und Archiv-Buttons aus separater filter-bar in die view-tabs-bar verschoben (rechts)
- Neue CSS-Klasse filter-bar-actions statt filter-bar/filter-bar-left
- Separate filter-bar Zeile entfernt (eine Zeile weniger im Layout)
- filter-popover bleibt in der view-tabs-bar (absolut positioniert)
- Responsive: filter-bar-actions wird bei 768px ausgeblendet
- board.css: view-tabs-bar auf space-between geaendert
- Cache-Version: 390

================================================================================
19.03.2026 - v389 - View-Tabs in eigene Zeile unter dem Header verschoben
================================================================================
- HTML: div.header-center entfernt, nav.view-tabs-bar nach dem Header eingefuegt
- Tabs sind jetzt ein eigenstaendiges Element unter dem Header (sticky)
- board.css: .header-center durch .view-tabs-bar ersetzt, flex-wrap entfernt
- board.css: overflow-x/scrollbar-hide von .view-tabs entfernt
- responsive.css: .header-center Regeln durch .view-tabs-bar ersetzt
- responsive.css: view-tabs-bar wird auf Mobile versteckt (Mobile Menu uebernimmt)
- Cache-Version auf 389 erhoeht

================================================================================
19.03.2026 - v387 - Connection-Status durch Avatar-Online-Punkt ersetzt
================================================================================
- Connection-Status Indikator (div#connection-status) aus dem Header entfernt
- Gruener Online-Punkt als ::after Pseudo-Element am User-Avatar hinzugefuegt
- Punkt wird rot bei Verbindungsverlust (CSS-Klasse .offline auf body)
- sync.js: Store-Subscriber fuer syncStatus setzt .offline Klasse auf body
- Cache-Version: 386 -> 387

================================================================================
19.03.2026 - v386 - Lupen-Icon aus Suchfeld entfernt
================================================================================
- SVG-Element mit class "search-icon" aus dem Header entfernt
- Suchfeld (search-input) und search-container bleiben erhalten
- Cache-Version: 385 -> 386

================================================================================
19.03.2026 - v385 - Filter-Checkboxen statt Dropdowns
- Filter-Popover oeffnet sich jetzt rechts statt links
- Filter-Bar Buttons rechtsbuendig ausgerichtet (justify-content: flex-end)
- Alle Select-Dropdowns durch Checkbox-Listen ersetzt (Mehrfachauswahl moeglich)
- Prioritaet: Hoch/Mittel/Niedrig als Checkboxen
- Faelligkeit: Ueberfaellig/Heute/Diese Woche/Ohne Datum als Checkboxen
- Bearbeiter und Labels werden dynamisch als Checkboxen befuellt
- filterTasks in utils.js unterstuetzt jetzt Array-basierte Filter
- Checkbox-Design im AegisSight-Stil mit Custom-Checkmark
- Geaenderte Dateien: index.html, board.css, app.js, utils.js, sw.js

================================================================================
19.03.2026 - v384 - Filter-Bar kompakt mit Popover
- Filter-Bar umgebaut: statt 4 Dropdowns in einer Zeile jetzt kompakter Filter-Button + Archiv-Button
- Filter oeffnet sich als Popover-Dropdown mit allen 4 Filter-Optionen
- Filter-Button zeigt Anzahl aktiver Filter an ("Filter (2)")
- Aktive Filter werden visuell hervorgehoben (Primary-Farbe)
- Klick ausserhalb des Popovers schliesst es automatisch
- Geaenderte Dateien: index.html, app.js, board.css, sw.js

================================================================================
19.03.2026 - v383 - Filter-System Bugfixes (3 Bugs)
- Bug 1: Reset-Button funktionierte nicht (ID-Mismatch btn-reset-filters vs btn-clear-filters)
- Bug 2: Default-Werte konsistent auf leeren String umgestellt (HTML, Store, Filter-Logik)
- Bug 3: "Ohne Datum" Filter (value=none) zeigt jetzt nur Tasks ohne Faelligkeitsdatum
- Geaenderte Dateien: app.js, store.js, utils.js, sw.js

================================================================================
19.03.2026 - v382 - AegisSight Light Theme implementiert
- CSS-Variablen in variables.css auf AegisSight-Farbpalette umgestellt
- Primary/Accent: Indigo (#4F46E5) ersetzt durch Gold (#C8A851)
- Hintergruende angepasst (bg-main, bg-tertiary, bg-hover, bg-active)
- Info-Farben auf gedaempftes Blaugrau (#7C8DB5) geaendert
- Scrollbar-Farben und Focus-Schatten aktualisiert
- Hardcodierte alte Farbreferenzen in 5 CSS-Dateien ersetzt:
  gitea.css, knowledge.css, board.css, coding.css, reminders.css
- Status-Farben (success, warning, error) und Prioritaetsfarben unveraendert
================================================================================
19.03.2026 - v381 - Mehrspalten-Layout Feature komplett entfernt
- Button #btn-toggle-layout aus index.html entfernt
- Alle Layout-Methoden aus board.js entfernt (loadLayoutPreference, saveLayoutPreference, toggleLayout, applyLayoutClass, checkAndApplyDynamicLayout)
- Multi-Column CSS-Regeln aus board.css entfernt
- Resize-Event-Listener und setTimeout-Aufrufe fuer Layout entfernt
================================================================================
19.03.2026 - v380 - Archiv-Modal laedt archivierte Tasks jetzt per API
- Problem: Archiv-Modal war immer leer, weil archivierte Tasks nie vom Backend geladen wurden
- Ursache: openArchiveModal nutzte nur store.get("tasks").filter(t => t.archived), aber der Store enthielt nur aktive Tasks (Backend filtert mit archived=0)
- Loesung: openArchiveModal ruft jetzt api.getTasks(projectId, { archived: true }) auf und laedt archivierte Tasks per API
- renderArchiveList bekommt Tasks als Parameter statt nochmal den Store zu filtern
- restoreTask und deleteArchivedTask laden die Archivliste nach Aktion neu vom Server
- Ladeindikator waehrend API-Anfrage
- Geaenderte Dateien: frontend/js/app.js, frontend/sw.js (v380)

================================================================================
19.03.2026 - v379 - Header-Tabs immer in eigener zweiter Zeile
- Problem: .header-center (Tabs) rutschte bei breitem Fenster neben Avatar in Zeile 1
- Ursache: width:100% + flex-basis:100% reicht nicht, Flex-Container bricht nicht um wenn genug Platz
- Loesung: flex: 0 0 100% (nicht wachsen, nicht schrumpfen, Basis 100%) erzwingt Umbruch zuverlaessig

================================================================================
19.03.2026 - v378 - Search-Container Layout-Fix im Header
- Problem: width:100% im .search-container drueckte die Lupe aus header-right heraus
- Loesung: width:100% ersetzt durch flex:1 1 auto + min-width:150px
- Container nimmt jetzt nur verfuegbaren Platz ein, dehnt sich nicht ueber header-right hinaus

================================================================================
19.03.2026 - v376 - Navigation-Tabs in eigene Header-Zeile verschoben
================================================================================
- Navigation-Tabs werden jetzt in einer separaten zweiten Zeile im Header angezeigt
- Zeile 1: Logo + Projekt + Suche + Online + Timer + Avatar
- Zeile 2: Tabs (volle Breite, zentriert)
- Zeile 3: Filter-Bar (unveraendert)
- Nur CSS-Aenderungen in board.css (kein HTML geaendert)
- Geaenderte Dateien: frontend/css/board.css, frontend/sw.js

================================================================================
31.01.2026 - v374 - Mobile Board komplett ueberarbeitet
================================================================================

## VERBESSERUNG

### Board auf Smartphone deutlich groesser und besser lesbar
- Task-Titel: 14px -> 16px (bzw. 18px auf kleinen Screens)
- Task-Cards: mehr Padding, groessere Labels
- Task-Meta-Infos: 12px -> 14px, groessere Icons
- Priority-Sterne: 12px -> 16px
- Assignee-Avatare: 24px -> 32px

### Filter & Stats-Bar optimiert
- Filter-Selects: groesser (48px Hoehe), volle Breite auf kleinen Screens
- Stats-Bar: groessere Icons (40px), groessere Zahlen
- Horizontales Scrollen fuer Stats wenn noetig

### Week-Strip groesser
- Navigation-Buttons: 28px -> 40px
- Tages-Nummern: 14px -> 18px

### Spalten-Header groesser
- Titel: 14px -> 16px (18px auf kleinen Screens)
- Task-Count Badge: 24px -> 28px
- Mehr Padding

### Add-Task-Button groesser
- Min-Hoehe: 52px (56px auf kleinen Screens)
- Schrift: 14px -> 16px (18px auf kleinen Screens)

### Modal-Optimierungen
- Fullscreen auf sehr kleinen Screens (< 480px)
- Groessere Form-Labels
- Mehr Padding

### Geaenderte Dateien
- frontend/css/mobile.css - Umfangreiche Board-Optimierungen

================================================================================
31.01.2026 - v373 - Mobile UX Optimierung
================================================================================

## VERBESSERUNG

### Mobile Touch & iOS Kompatibilitaet
- Input-Schriftgroesse auf 16px erhoeht (verhindert iOS Zoom bei Focus)
- Modal Close Button auf 44px Touch Target vergroessert
- Dropdown Items mit min-height 44px fuer bessere Touch-Bedienung
- Safe Area Support fuer Mobile Column Indicator (iOS Notch/Home Bar)
- Safe Area Support fuer Toast Container auf Mobile
- Safe Area Support fuer Lightbox Close Button

### Geaenderte Dateien
- frontend/css/components.css - Input font-size, Dropdown min-height
- frontend/css/modal.css - Modal close 44px, Lightbox safe-area
- frontend/css/mobile.css - Column indicator safe-area
- frontend/css/responsive.css - Toast container safe-area

================================================================================
24.01.2026 - v372 - UI: Navigation-Tabs vertikal und zentriert
================================================================================

## VERBESSERUNG

### Vertikale Navigation-Tabs
- Tabs sind jetzt immer vertikal: Icon oben, Text darunter
- Kompakteres Layout, alle 7 Tabs passen besser nebeneinander
- Tabs bleiben bei allen Bildschirmbreiten zentriert (nicht nach rechts)

### Geaenderte Dateien
- frontend/css/board.css - Basis-Styles fuer .view-tab
- frontend/css/responsive.css - justify-content: center hinzugefuegt

================================================================================
24.01.2026 - v369 - Bugfix: Spalte loeschen mit archivierten Aufgaben
================================================================================

## BUG BEHOBEN

### Spalte loeschen funktioniert jetzt korrekt
- Problem: Spalten mit archivierten Aufgaben konnten nicht geloescht werden
- Ursache: Frontend pruefte nur aktive Tasks, Backend zaehlte alle (inkl. archivierte)
- Spalte wanderte nach rechts statt geloescht zu werden
- Loesung: Backend prueft jetzt nur aktive (nicht-archivierte) Tasks

### Archivierte Aufgaben bleiben erhalten
- Archivierte Aufgaben werden NICHT geloescht wenn Spalte geloescht wird
- Stattdessen: column_id wird auf NULL gesetzt
- Bei Wiederherstellung: Spaltenauswahl-Dialog erscheint
- Benutzer waehlt neue Spalte fuer die wiederhergestellte Aufgabe

### Neues Modal: Spaltenauswahl
- Neues Modal "column-select-modal" in index.html
- Event-Handler "column-select:show" in app.js
- Wird verwendet bei Wiederherstellung von Aufgaben ohne gueltige Spalte

================================================================================
23.01.2026 - v368 - Kontakte & Board: UI-Verbesserungen
================================================================================

## KONTAKTE-MODUL

### Filter-Buttons
- Text durch Icons ersetzt (Personen-Icon / Gebaeude-Icon)
- Inline-SVGs fuer bessere Kompatibilitaet

### Icons repariert
- Alle xlink:href Referenzen durch Inline-SVGs ersetzt
- Betroffene Icons: edit, trash, arrow-left, plus, x, mail, phone, users
- Kontaktdetails und Interaktionen nutzen jetzt Inline-SVGs

### Avatar-Darstellung
- Typ-Badges (Person/Institution) komplett entfernt
- Stattdessen Icons im Avatar-Kreis (Personen-Icon / Gebaeude-Icon)
- Weisse Icons auf farbigem Hintergrund

### Caching-Problem behoben
- Cache-Control Headers im Backend hinzugefuegt
- Kontakte werden jetzt immer frisch geladen (kein 304 Not Modified)

### Filter-Zaehlung korrigiert
- Von Server-seitiger zu Client-seitiger Filterung gewechselt
- Alle Kontakte werden einmal geladen, dann lokal gefiltert
- Zaehlung zeigt jetzt korrekte Werte (z.B. 7+5 statt 5+4)

### Neue Kontakte hinzugefuegt
- Barbara Banczyk (LfM)
- Torsten Giebel (LfM)
- Anna Heinzmann (LKA BW)
- Stephanie Kaschka (LKA HH)
- Kilian Bieker (ohne Institution)
- Marc Restemeyer (LAFP NRW)

## BOARD-MODUL

### Spalten-Buttons verbessert
- Edit/Delete-Buttons von absoluter zu Flexbox-Positionierung
- Automatische vertikale Zentrierung
- Keine Ueberlappung mehr mit Spaltentitel
- Lange Titel werden mit "..." abgeschnitten

## TECHNISCH
- Service Worker Cache-Version erhoeht auf v368

================================================================================
23.01.2026 - v362 - Institution: Felder entfernt
================================================================================

## ENTFERNT
- Mitarbeiteranzahl (employee_count) aus Institution entfernt
- Gruendungsjahr (founded_year) aus Institution entfernt
- Steuernummer (tax_number) aus Institution entfernt
- Spalten aus Datenbank entfernt
- Service Worker Cache-Version erhoeht auf v362

================================================================================
23.01.2026 - v361 - Kontakte: Umbenennung Organisation zu Institution
================================================================================

## GEAENDERT
- "Organisation" ueberall zu "Institution" umbenannt
- Service Worker Cache-Version erhoeht auf v361

================================================================================
23.01.2026 - v360 - Kontakte: Zwei Buttons und Umbenennung zu Organisation
================================================================================

## GEAENDERT
- Zwei separate Buttons: "Neuer Kontakt" (Person) und "Neue Organisation"
- "Unternehmen" ueberall zu "Organisation" umbenannt
- Filter-Tab "Unternehmen" -> "Organisationen"
- Formular-Titel passt sich dem Typ an
- Service Worker Cache-Version erhoeht auf v360

================================================================================
22.01.2026 - v359 - Geburtstag-Feld aus Kontakten entfernt
================================================================================

## ENTFERNT
- Geburtstag-Feld aus dem Kontakt-Formular (Person) entfernt
- Geburtstag-Anzeige aus der Kontakt-Detailansicht entfernt
- birth_date Spalte aus der Datenbank entfernt
- birth_date aus Backend-Routes (contacts.js, contacts-extended.js) entfernt
- birth_date aus Migrations-Dateien entfernt
- Service Worker Cache-Version erhoeht auf v359

================================================================================
21.01.2026 - v346 - BUGFIX: Kontakte Event-Binding repariert
================================================================================

## FEHLER BEHOBEN
- "Neuer Kontakt" Button: Event-Binding nach Modal-Schließen repariert
- Modal-Schließen optimiert: Kein komplettes Re-Rendering des Layouts mehr
- Robusteres Event-Binding mit Console-Logging für Debugging
- Service Worker Cache-Version erhöht auf v346

================================================================================
21.01.2026 - BUGFIX: Kontakte Modal-Overlay Fehler behoben
================================================================================

## FEHLER BEHOBEN
- Kontakte-Formular zeigte "undefined" beim Anlegen neuer Kontakte
- Modal-Overlay fehlte beim Kontakt-Formular
- Form-Container hatte keine korrekte Modal-Struktur
- "Neuer Kontakt" Button reagierte nicht - Event-Handling verbessert
- SVG-Icon durch Text-Symbol ersetzt für bessere Kompatibilität
- Modal-CSS-Klasse korrigiert: "visible" statt "show" für korrekte Anzeige
- Z-Index erhöht, um sicherzustellen dass Modal über allem liegt
- Modal-Struktur korrigiert: Overlay und Modal sind jetzt separate Elemente
- Form-Submit Problem behoben: Formular wurde als GET statt POST abgeschickt
- Event-Binding direkt auf Submit-Button statt Form-Submit für bessere Kontrolle
- Validierung für Pflichtfelder (Nachname/Firmenname) hinzugefügt
- Display-Name wird jetzt korrekt im Frontend generiert
- Nach Kontakt-Erstellung werden vollständige Details geladen
- Event-Delegation für Form-Buttons implementiert
- API-Request Syntax korrigiert (object statt separate Parameter)
- Kontakt-Löschung funktioniert jetzt korrekt
- Interaktionen-API ebenfalls korrigiert
- Filter-Sidebar entfernt und in Header-Leiste integriert
- Archiv/Aktiv Filter entfernt - nur noch Alle/Personen/Unternehmen
- Modernes Filter-Button-Design im Header
- Responsive Layout für mobile Geräte
- Service Worker Cache-Version erhöht auf v358

================================================================================
20.01.2026 - UPDATE: Kategoriesystem aus Kontaktmanagement entfernt
================================================================================

## ÄNDERUNGEN
- Kategoriesystem komplett entfernt (Backend und Frontend)
- Vereinfachtes Kontaktmanagement ohne Kategorie-Verknüpfungen
- Saubere UI ohne Kategorie-Filter und -Zuweisungen

================================================================================
20.01.2026 - FEATURE: Kontaktmanagement komplett neu implementiert
================================================================================

## NEUE FUNKTIONEN
- Modernes Kontaktmanagement-Modul (neu entwickelt)
- Unterstützung für Personen und Unternehmen
- Mehrere Kontaktdetails pro Person (E-Mail, Telefon, Adresse)
- Verknüpfung von Personen mit Unternehmen
- Interaktions-Historie (Anrufe, E-Mails, Meetings, Notizen)
- Avatar-Upload für Kontakte

## UI/UX
- Moderne Card-basierte Listenansicht mit alphabetischer Gruppierung
- Sidebar mit Filtern (Alle, Personen, Unternehmen, Aktiv, Archiviert)
- Detailansicht mit allen Kontaktinformationen
- Formular mit Type-Toggle (Person/Unternehmen)
- Dynamische Formularfelder je nach Kontakttyp
- Integration in die globale Suche

## DATENBANK
- Neue optimierte Tabellenstruktur:
  - contacts: Haupttabelle für Personen und Unternehmen
  - contact_details: Mehrere E-Mails, Telefone etc. pro Kontakt
  - contact_categories: Kategorien zur Organisation
  - contact_interactions: Interaktions-Historie
- Trigger für automatisches updated_at
- Performance-Indizes für schnelle Abfragen

## TECHNISCHE DETAILS
- Backend: Vollständige REST API in /api/contacts
- Frontend: ES6 Modul contacts.js (ersetzt contacts-basic.js)
- CSS: Komplett neues contacts.css mit responsivem Design
- Cache-Version auf 326 erhöht

================================================================================
19.01.2025 - BUGFIX: User-Dropdown Z-Index korrigiert
================================================================================

## FEHLERBEHEBUNG
- User-Dropdown erscheint jetzt korrekt über anderen Elementen
- Z-Index von 100 auf 300 erhöht (über sticky header mit z-index 200)
- Cache-Version auf 315 erhöht

## TECHNISCHE DETAILS  
- Datei: frontend/css/variables.css
- Geändert: --z-dropdown: 300 (vorher 100)

================================================================================
19.01.2025 - FEATURE: Wissen-Modul elegant überarbeitet
================================================================================

## NEUE FUNKTIONEN
- Eleganter Ansichtstyp-Umschalter im Header (Liste/Karten/Kompakt)
- Template-Auswahl direkt im Entry-Modal als Tabs:
  - Allgemein: Flexibler Eintrag mit allen Feldern
  - Link: Optimiert für Weblinks (URL-Feld erforderlich)
  - Dokument: Fokus auf Datei-Anhänge (URL ausgeblendet)
  - Notiz: Erweiterte Notizen (URL ausgeblendet, größeres Textfeld)
- Verbessertes Karten-Design mit sauberen SVG-Icons statt Emojis

## UI/UX VERBESSERUNGEN
- View-Switcher nahtlos in Header integriert (TaskMate-Stil)
- Template-Tabs ändern dynamisch die Formular-Felder
- Karten zeigen URL-Domain statt voller URL
- Notizen-Vorschau in Karten auf 150 Zeichen
- View-Präferenz wird gespeichert
- Mobile: View-Switcher ausgeblendet, automatisch Karten

## TECHNISCHE DETAILS
- Template-System ohne separates Modal implementiert
- Dynamische Feld-Sichtbarkeit basierend auf Template-Typ
- Kompakte View-Switcher Komponente
- SVG-Icons für bessere Performance und Konsistenz

## BUGFIXES
✅ Sperrige UI-Elemente entfernt und durch elegante Lösungen ersetzt
✅ Template-Flow intuitiver gestaltet
✅ Visuelles Design konsistent mit TaskMate-Stil

================================================================================
17.01.2026 - FEATURE: Responsive Design-Verbesserungen
================================================================================

## NEUE FUNKTIONEN
- Anwendung passt sich automatisch an Browsergröße an
- Kein horizontales Scrollen mehr nötig
- Navigation zeigt bei mittleren Bildschirmen (1200px) nur Icons
- Tooltips beim Hover über Navigations-Icons

## IMPLEMENTIERUNG
✅ Globale responsive CSS-Regeln hinzugefügt (overflow-x: hidden)
✅ Navigation-Tabs zeigen ab 1200px nur noch Icons
✅ data-tooltip Attribute für alle View-Tabs hinzugefügt
✅ Header-Elemente optimiert für verschiedene Bildschirmgrößen
✅ Project Selector und Search Container werden bei kleineren Bildschirmen schmaler
✅ View-Tabs sind bei Bedarf horizontal scrollbar (ohne sichtbare Scrollbar)

## TECHNISCHE DETAILS
- Neue Media Query für max-width: 1200px
- Touch-optimiertes horizontales Scrollen für View-Tabs
- Minimale Touch-Target-Größe von 44px beibehalten
- Box-sizing: border-box global angewendet

## BUGFIXES
✅ Elemente verschwinden nicht mehr bei kleinen Bildschirmen
✅ Horizontales Scrollen komplett eliminiert
✅ Search Input hat keine feste Breite mehr (max-width statt width)
✅ Project Select nutzt responsive Breiten
✅ Board und Columns nutzen flexible Breiten
✅ Header-Layout für kleine Bildschirme optimiert (keine Wrapping-Probleme mehr)
✅ Mobile Board-Columns nutzen 100% Breite statt calc(100vw - 32px)

================================================================================
11.01.2025 - BUGFIX: Mobile Ansicht für Liste und Kalender repariert
================================================================================

## PROBLEM
Liste und Kalender wurden in der mobilen Ansicht nicht angezeigt

## LÖSUNG
✅ CSS-Konflikt zwischen hidden-Klasse und active-Display behoben
✅ Mobile-spezifische Responsive-Anpassungen für beide Views
✅ Verbesserte Touch-Scrolling für Tabellen in der Listenansicht
✅ Optimierte Kalender-Darstellung auf kleinen Bildschirmen

================================================================================
11.01.2025 - FEATURE: Verbesserte mobile Navigation mit Swipe-Gesten
================================================================================

## NEUE FUNKTIONEN
- Board-View zeigt jetzt nur eine Statuskarte auf einmal
- Swipe links/rechts wechselt zwischen den Statuskarten
- Swipe in der Header-Leiste wechselt zwischen den Views (Board, Liste, etc.)
- Visuelle Indikatoren zeigen aktuelle Spalte und verfügbare Navigationsoptionen

## IMPLEMENTIERUNG
✅ Neues mobile-swipe.js Modul für erweiterte Touch-Gesten
✅ Eine Spalte pro Bildschirm in mobiler Ansicht
✅ Spalten-Indikator mit Punkten und Spaltenname
✅ View-Hints beim Swipen in der Header-Leiste
✅ Responsive Anpassungen für optimale mobile Experience

================================================================================
11.01.2025 - BUGFIX: Wissenseinträge - Benachrichtigungen aktiviert
================================================================================

## PROBLEM
Beim Erstellen neuer Wissenseinträge erhielten andere Nutzer keine Benachrichtigung

## LÖSUNG
✅ Benachrichtigungen werden jetzt als persistent gespeichert
✅ Alle Nutzer erhalten eine Inbox-Benachrichtigung bei neuen Einträgen
✅ Klick auf Benachrichtigung navigiert direkt zum Wissenseintrag

================================================================================
11.01.2025 - FEATURE: Coding-Modul - Freie Pfad-Eingabe
================================================================================

## ÄNDERUNG
Ordnerpfad für Coding-Anwendungen kann jetzt frei definiert werden

## IMPLEMENTIERUNG
✅ Neues Eingabefeld für Ordnerpfad im Modal
✅ Pfad wird nicht mehr automatisch aus Namen generiert
✅ Volle Flexibilität für beliebige Pfadangaben
✅ Validierung auf leeren Pfad

================================================================================
10.01.2026 - FEATURE: Optionales zweispaltiges Layout für Aufgabenansicht
================================================================================

## NEUE FUNKTION
Möglichkeit, Aufgaben in der Board-Ansicht mehrspaltig anzuzeigen

## IMPLEMENTIERUNG
✅ Toggle-Button in der Filter-Leiste hinzugefügt
✅ Dynamisches Grid-Layout: Spalten erweitern sich nur bei Bedarf
✅ Automatische Erkennung wenn Scrollen nötig wäre
✅ Layout-Präferenz wird in localStorage gespeichert
✅ 2 Spalten wenn Inhalt > 120% der Höhe (ab 1400px Breite)
✅ 3 Spalten wenn Inhalt > 250% der Höhe (ab 1800px Breite)
✅ Spalten-Breite passt sich dynamisch an
✅ Cache-Version erhöht auf 303

## BEDIENUNG
- Button mit Raster-Icon in der Filter-Leiste schaltet Layout um
- Layout bleibt über Browser-Sessions erhalten
- Aufgaben werden bei aktivem Layout nebeneinander statt untereinander angezeigt

================================================================================
10.01.2026 - BUGFIX: Download von Dateianhängen funktioniert wieder
================================================================================

## PROBLEM
404-Fehler beim Herunterladen von Dateianhängen aus Aufgaben

## URSACHE
Fehlende /api Präfix in Frontend API-Call

## LÖSUNG
✅ api.js korrigiert: Doppeltes /api Präfix entfernt
✅ downloadFile nutzt bereits baseUrl (/api), daher nur /files/download nötig
✅ Download-Funktionalität wiederhergestellt
✅ Cache-Version erhöht auf 300

================================================================================
10.01.2026 - BUGFIX: Wissenseinträge erstellen - "active" Spalte entfernt
================================================================================

## PROBLEM
500 Internal Server Error beim Erstellen neuer Wissenseinträge

## URSACHE
SQL-Query suchte nach nicht existierender "active" Spalte in users-Tabelle

## LÖSUNG
✅ WHERE-Klausel vereinfacht - nur noch id != ? ohne active = 1
✅ backend/routes/knowledge.js korrigiert

================================================================================
10.01.2026 - Feature: Benachrichtigungen bei neuen Wissenseinträgen
================================================================================

## NEUE FUNKTION
Alle Nutzer werden benachrichtigt, wenn ein neuer Wissenseintrag erstellt wird

## IMPLEMENTIERUNG
- Neuer Benachrichtigungstyp: 'knowledge:new_entry'
- Benachrichtigung zeigt Titel und Kategorie des neuen Eintrags
- Klick auf Benachrichtigung führt direkt zum Eintrag

## DETAILS
- Backend sendet Benachrichtigung an alle aktiven Nutzer (außer Ersteller)
- Socket.io Event 'knowledge:created' für Echtzeit-Updates
- Frontend navigiert zu Wissen-Tab, wählt Kategorie und expandiert Eintrag
- Eintrag wird kurz hervorgehoben (highlight animation)
- Service erweitert um "data" Feld für zusätzliche Informationen

## DATEIEN
✅ backend/routes/knowledge.js - Benachrichtigungen bei neuem Eintrag
✅ backend/services/notificationService.js - Neuer Typ, data-Feld Support
✅ frontend/js/notifications.js - Icon und Click-Handler für Knowledge
✅ frontend/js/app.js - Navigation zu Wissenseinträgen
✅ frontend/css/knowledge.css - Highlight-Animation
✅ frontend/sw.js - Cache-Version 298

================================================================================
10.01.2026 - UI: Favicon ohne schwarzen Hintergrund
================================================================================

## ÄNDERUNG
Favicon (Browser-Tab Icon) auf transparente PNG-Version umgestellt

## DETAILS
- SVG-Logo mit dunklem Hintergrund (#0A1832) entfernt
- Transparente PNG-Icons (AegisSight Logo) als Favicon gesetzt
- favicon-32x32.png und favicon-16x16.png erstellt
- Cache-Version erhöht auf 297

## DATEIEN
✅ frontend/index.html - Favicon-Links aktualisiert
✅ frontend/assets/icons/favicon-32x32.png - Erstellt
✅ frontend/assets/icons/favicon-16x16.png - Erstellt
✅ frontend/sw.js - Cache-Version 297

================================================================================
10.01.2026 - BUGFIX: Race-Condition bei 401-Fehlern nach Login
================================================================================

## PROBLEM
Nach dem Login wurden Benutzer bei bestimmten Tabs (Genehmigung, Coding,
Kontakte) sofort wieder ausgeloggt.

## URSACHE
Race-Condition: API-Requests, die VOR dem Login gestartet wurden, kamen
mit 401 zurück und lösten einen Logout aus, obwohl bereits ein neuer
gültiger Token existierte.

## LÖSUNG
✅ handleAuthFailure() prüft jetzt ob ein neuer Token existiert
  - Vergleicht Token der fehlgeschlagenen Anfrage mit aktuellem Token
  - Ignoriert 401 wenn neuer Token nach dem Request gesetzt wurde
  - Wiederholt Request mit neuem Token (max 1x gegen Endlos-Schleifen)
✅ Cache-Version: 294

================================================================================
10.01.2026 - FEATURE: PROGRESSIVE WEB APP (PWA) & MOBILE APP SUPPORT
================================================================================

## NEUE FUNKTIONEN
Vollständige PWA-Implementierung für mobile App-Funktionalität

## IMPLEMENTIERUNG
✅ Web App Manifest erstellt (manifest.json)
  - App-Name, Icons, Theme-Konfiguration
  - Shortcuts für schnellen Zugriff
  - Standalone Display-Mode
✅ PWA Install-Prompt implementiert
  - Automatische Erkennung der Installierbarkeit
  - Install-Button im Header
  - Install-Banner nach 30 Sekunden
  - iOS-spezifische Installationsanleitung
✅ Service Worker optimiert
  - Cache-First für statische Assets
  - Network-First für HTML und API
  - Erweiterte Offline-Funktionalität
  - Background Sync vorbereitet
✅ PWA-Module (pwa.js) erstellt
  - Install-Management
  - Online/Offline Status
  - iOS-Detection
✅ Dokumentation für APK-Erstellung
  - PWABuilder Anleitung
  - Bubblewrap Setup
  - TWA (Trusted Web Activity) Konfiguration
  - Play Store Veröffentlichung

## TECHNISCHE DETAILS
- Neue Dateien: manifest.json, js/pwa.js, css/pwa.css
- Icons benötigt: 48x48 bis 512x512 PNG
- Service Worker Cache-Version: 293
- APK kann mit PWABuilder.com erstellt werden

## NÄCHSTE SCHRITTE
1. Icons in allen Größen generieren (siehe generate-icons.js)
2. APK mit PWABuilder erstellen und testen
3. Optional: Play Store Veröffentlichung

================================================================================
09.01.2026 - ENTFERNUNG: SIMULIERTE VERBRAUCHSANZEIGE IM CODING-MODUL
================================================================================

## ÄNDERUNG
Die simulierte Verbrauchsanzeige wurde aus dem Coding-Modul entfernt

## DETAILS
✅ Frontend: Verbrauchsanzeige aus coding.js entfernt
✅ CSS: Styles für .coding-tile-usage gelöscht
✅ Backend: API-Endpoints bleiben für spätere Nutzung erhalten
✅ Datenbank: Tabelle coding_usage bleibt bestehen

## TECHNISCHE DETAILS
- Entfernt: updateTileUsage() Funktion und alle Aufrufe
- Entfernt: Verbrauchs-HTML aus renderTile()
- Entfernt: CSS-Animationen und Styling
- Cache-Version: 292

================================================================================
09.01.2026 - FEATURE: VERBRAUCHSANZEIGE IM CODING-MODUL
================================================================================

## NEUE FUNKTION
Live-Verbrauchsanzeige für Server-Anwendungen im Coding-Tab mit CPU, Memory und Network Metriken

## IMPLEMENTIERUNG
✅ Backend: Neue API-Endpoints für Verbrauchsdaten (simuliert)
  - GET /api/coding/directories/:id/usage - Aktuelle Verbrauchsdaten
  - GET /api/coding/directories/:id/usage/history - Historische Daten
✅ Datenbank: Neue Tabelle 'coding_usage' für Verlauf
✅ Frontend: Verbrauchsanzeige in jeder Coding-Kachel integriert
  - CPU-Auslastung in % mit Warnung bei >80%
  - Memory in MB mit Warnung bei >3000MB
  - Network in MB/s (kombiniert send + receive)
✅ Auto-Refresh alle 30 Sekunden für Live-Updates
✅ Visuelles Feedback bei hoher Auslastung (Pulse-Animation)

## TECHNISCHE DETAILS
- coding.js: updateTileUsage() Funktion für Metrik-Updates
- api.js: getCodingDirectoryUsage() und getCodingDirectoryUsageHistory()
- coding.css: Neue Styles für .coding-tile-usage mit responsive Design
- Cache-Version: 291
- Docker Container Update erforderlich für Backend-Änderungen

================================================================================
09.01.2025 - BUGFIX: CUSTOM-SELECT DROPDOWN POSITIONING
================================================================================

## PROBLEM
Custom-Select Dropdown (Benutzerauswahl in Erinnerungen) positionierte sich nicht korrekt bei Scroll/Modal-Bewegung

## URSACHE  
Dropdown nutzte relative statt fixed Positionierung, keine dynamische Neuberechnung

## LÖSUNG
✅ reminders.js: setupCustomSelect() berechnet Position dynamisch mit getBoundingClientRect()
✅ Fixed Positioning wie bei Multi-Select implementiert
✅ Automatische Neupositionierung bei Scroll/Resize
✅ Intelligente Platzierung (oben/unten je nach verfügbarem Platz)

## TECHNISCHE DETAILS
- Zeilen 346-450: Neue positionDropdown() Funktion mit Event-Handlers
- Cache-Version: 285
- Position wird bei jedem Öffnen neu berechnet
- Event-Handler werden beim Schließen aufgeräumt

================================================================================
09.01.2025 - BUGFIX: FILTER-ASSIGNEE DROPDOWN ZEIGT KEINE NAMEN
================================================================================

## PROBLEM
Der Filter-Assignee Dropdown zeigte leere Options ohne Benutzernamen an

## URSACHE  
Frontend erwartete "username" Feld, Backend lieferte aber "displayName"

## LÖSUNG
✅ app.js: populateAssigneeFilter() nutzt jetzt displayName statt username
✅ Fallback zu email falls displayName fehlt

## TECHNISCHE DETAILS
- Zeile 736: option.textContent = user.displayName || user.email || 'Unbekannt';
- Cache-Version: 284

================================================================================
09.01.2025 - BUGFIXES: DROPDOWN-POSITIONIERUNG & NAVIGATION-DESIGN
================================================================================

## BEHOBEN
✅ Custom-Select Dropdown in Reminder-Modal
  - Position von fixed auf absolute geändert
  - Dropdown bleibt jetzt innerhalb des Modals
  - Keine dynamische Positionsberechnung mehr nötig
  - Einheitliches Design mit Multi-Select

================================================================================
09.01.2025 - NAVIGATION: MODERNES DESIGN MIT BESSERER AKTIV-MARKIERUNG
================================================================================

## NEUE FUNKTIONEN
✅ Modernes flaches Design ohne Hintergrund-Container
✅ Klare Aktiv-Markierung mit farbigem Unterbalken
✅ Icons für alle Navigationspunkte
✅ Animierte Hover-Effekte mit Icon-Bewegung
✅ Subtile Trennlinien zwischen Tabs
✅ Bessere Farbkontraste für aktive/inaktive Tabs

## TECHNISCHE DETAILS
- board.css: Komplett überarbeitete Navigation-Styles
  - Aktiver Tab mit blauem Unterbalken + Hintergrund
  - Hover-States mit sanften Übergängen
  - Animation für aktiv-Indikator
- index.html: SVG-Icons zu allen Tabs hinzugefügt
- Service Worker: Cache-Version auf 282 erhöht

================================================================================
08.01.2025 - KONTAKTE: VON KARTENANSICHT ZU TABELLENANSICHT UMGESTELLT
================================================================================

## NEUE FUNKTIONEN
✅ Tabellenansicht mit sortierbaren Spalten
  - Name (mit Avatar-Initialen)
  - Firma, Position, E-Mail, Telefon, Tags
  - Direkte Aktionen: Bearbeiten, Löschen
✅ Mehrfachauswahl mit Checkboxen
  - Select All/Deselect All Funktionalität  
  - Visuelles Feedback für ausgewählte Zeilen
✅ Bulk-Actions für mehrere Kontakte
  - Mehrere Kontakte gleichzeitig löschen
  - Anzahl ausgewählter Kontakte wird angezeigt
✅ Export-Funktionalität (CSV)
  - Alle oder gefilterte Kontakte exportieren
  - UTF-8 mit BOM für korrekte Umlaute
✅ Pagination bei mehr als 25 Kontakten
  - Navigation zwischen Seiten
  - Seitenzahlen-Anzeige
✅ Verbesserte Statistik
  - Kontakt-Anzahl im Header
  - Echtzeit-Updates bei Änderungen

## TECHNISCHE DETAILS
- contacts.css: Komplett neue Styles für Tabelle
- index.html: HTML-Struktur für Tabellenlayout
- contacts.js: Logik für Tabellen-Rendering und neue Features
- Service Worker Cache-Version: 281
- Responsive Design für mobile Geräte

================================================================================
07.01.2025 - WISSENSMANAGEMENT: ATTACHMENT ANZEIGE BEHOBEN (0KB & KEIN DATEINAME)
================================================================================

## PROBLEMBEHEBUNG
✅ Knowledge-Attachments zeigten 0KB und keinen Dateinamen
  - Backend sendet camelCase: originalName, sizeBytes
  - Frontend erwartete snake_case: original_name, size_bytes
  - Mismatch verursachte leere Anzeige in der UI

## TECHNISCHE LÖSUNG
- knowledge.js renderAttachments(): Fallback für beide Schreibweisen
  - att.originalName || att.original_name || ''
  - att.sizeBytes || att.size_bytes || 0
- Service Worker Cache-Version: 280
- Frontend-Dateien in Docker Container kopiert

================================================================================
07.01.2025 - WISSENSMANAGEMENT: 500 ERROR BEI FILE UPLOAD BEHOBEN
================================================================================

## PROBLEMBEHEBUNG
✅ 500 Error bei Knowledge-Attachment Upload behoben
  - Frontend sendet Datei als 'files' (plural)
  - Knowledge-Backend erwartete 'file' (singular)
  - Task-Backend verwendet bereits 'files' (plural)
  - Mismatch verursachte "Unexpected field" Error

## TECHNISCHE LÖSUNG
- knowledge.js: upload.single('files') statt 'file'
- Konsistenz mit task file upload hergestellt
- Frontend bleibt unverändert bei 'files'
- Service Worker Cache-Version: 279
- Docker Container neu gestartet

================================================================================
07.01.2025 - WISSENSMANAGEMENT: FILE UPLOAD FUNKTIONALITÄT REPARIERT
================================================================================

## PROBLEMBEHEBUNG
✅ File Upload funktioniert wieder im Knowledge-Modul
  - Click-Event für Upload-Bereich hinzugefügt
  - Klick auf gesamten Upload-Bereich öffnet Datei-Dialog
✅ Verbesserte Handhabung bei neuen Einträgen
  - Klarere Meldung: "Speichern Sie zuerst den Eintrag"
  - Dateien werden temporär gespeichert
  - Nach Speichern automatisch hochgeladen
✅ Upload-Bereich immer sichtbar
  - Auch bei neuen Einträgen angezeigt
  - Hilfstext erklärt Workflow

## TECHNISCHE DETAILS
- pendingFiles Property für temporäre Dateispeicherung
- Auto-Upload nach createKnowledgeEntry
- Service Worker Cache-Version: 277

================================================================================
07.01.2025 - KALENDER: INTELLIGENTE POPUP-POSITIONIERUNG
================================================================================

## FUNKTIONALE VERBESSERUNGEN
✅ Kalender-Popup bleibt immer im sichtbaren Bereich
  - Erkennt wenn Popup unten aus dem Viewport ragt
  - Positioniert sich automatisch oberhalb des Elements
  - Falls oben kein Platz: Am unteren Bildschirmrand fixiert
✅ Horizontale Positionierung optimiert
  - Verhindert Überlauf rechts und links
  - Automatische Anpassung mit 8px Padding
✅ Maximale Höhe auf 80% des Viewports begrenzt
  - Scrollbar bei vielen Aufgaben
  - Header bleibt immer sichtbar
  - Buttons bleiben am Ende fixiert
✅ Konsistente Positionierung für beide Popup-Typen
  - Aufgaben-Popup
  - Erinnerungs-Popup

## TECHNISCHE DETAILS
- Position: fixed statt absolute für Viewport-Bezug
- Viewport-Grenzen-Prüfung vor Positionierung
- Flexbox-Layout für bessere Inhaltsverteilung
- Service Worker Cache-Version: 271

================================================================================
07.01.2025 - ERINNERUNGEN: NEUE ZEITAUSWAHL MIT EINHEIT UND ZAHL
================================================================================

## FUNKTIONALE ÄNDERUNGEN
✅ Neue Zeitauswahl für Erinnerungen implementiert
  - Zahlenfeld (1-9) für die Anzahl
  - Dropdown für Zeiteinheit (Tag, Woche, Monat)
  - Ersetzt die vorherigen Checkboxen (1-3 Tage)
✅ Flexiblere Erinnerungszeiten möglich:
  - 1-9 Tage vorher
  - 1-9 Wochen vorher (= 7-63 Tage)
  - 1-9 Monate vorher (= 30-270 Tage)
✅ Automatische Umrechnung beim Laden bestehender Erinnerungen
✅ Kompakteres und intuitiveres Design

## TECHNISCHE DETAILS
- HTML: Neues Input-Layout mit number input und select
- JS: Umrechnung zwischen Tagen/Wochen/Monaten
- CSS: Styling für horizontales Layout
- Service Worker Cache-Version: 269

================================================================================
07.01.2025 - KALENDER: KORREKTUR DER ERINNERUNGS-BUTTON FARBEN
================================================================================

## KORREKTUREN
✅ Erinnerungs-Buttons haben jetzt korrekten orangenen Hintergrund
  - Hintergrund: #f97316 (Orange)
  - Schriftfarbe: Weiß
  - Hover: Dunkleres Orange (#ea580c)
✅ Alle Erinnerungs-Buttons einheitlich gestaltet
  - "Erinnerung hinzufügen" in Kalendertagen
  - "Weitere Erinnerung" in Popups
  - Hauptbutton oberhalb Filter
✅ Service Worker Cache-Version: 268

================================================================================
07.01.2025 - KALENDER: OPTIMIERUNG DER ERINNERUNGS-BUTTONS UND HOVER-EFFEKTE
================================================================================

## UI-ANPASSUNGEN
✅ Hover-Effekt für orangefarbene Erinnerungs-Buttons verbessert
  - Vorher: Wurde zu hell/weiß beim Hover
  - Jetzt: Dunkleres Orange mit sanftem Schatten-Effekt
✅ "Erinnerung hinzufügen" Buttons in Kalendertagen jetzt orange
  - Konsistente Farbgebung für alle Erinnerungs-Funktionen
  - Gestrichelte orange Umrandung wie bei Aufgaben-Button
✅ "+" Symbol bei "Aufgabe hinzufügen" entfernt
  - Klarerer Text ohne redundante Symbole
✅ Neue CSS-Klasse "btn-reminder-secondary" für orange Buttons
✅ Wochenansicht: Neuer Button "Erinnerung hinzufügen" hinzugefügt

## TECHNISCHE DETAILS
- Hover-Farbe: Von #ea580c (zu hell) zu #dc2626 (dunkler)
- Transform-Effekt: translateY(-1px) für leichtes Anheben
- Box-Shadow beim Hover für Tiefeneffekt
- Service Worker Cache-Version: 267

================================================================================
07.01.2025 - ERINNERUNGS-BUTTON: SVG-ICON SICHTBARKEIT BEHOBEN
================================================================================

## PROBLEMBEHEBUNG
✅ SVG Glocken-Icon im Erinnerungs-Button wird jetzt korrekt angezeigt
  - Problem: createElement() unterstützt kein SVG-Namespace
  - Lösung: innerHTML für SVG-Erzeugung verwendet
  - Icon ist jetzt weiß und sichtbar auf orangem Hintergrund

## TECHNISCHE DETAILS
- calendar.js: SVG mit innerHTML statt createElement erzeugt
- Konsistente Icon-Darstellung in allen Buttons
- Service Worker Cache-Version: 275

================================================================================
07.01.2025 - KONTAKTE-MODUL: UI-REDESIGN FÜR KONSISTENZ
================================================================================

## UI-ANPASSUNGEN
✅ View-Container mit konsistentem Padding (spacing-6) wie andere Module
✅ View-Wrapper für scrollbaren Inhalt hinzugefügt
✅ Header-Styling vereinheitlicht (text-2xl, font-semibold)
✅ Filter-Controls mit modernem Card-Design (bg-secondary, border-radius-xl)
✅ Select-Dropdowns mit Custom-Styling und Hover-Effekten
✅ Kontakt-Karten mit verbessertem Spacing und border-radius-xl
✅ SVG-Icons statt Font Awesome für bessere Performance
✅ Empty-State Design konsistent mit anderen Modulen
✅ Responsive Breakpoints optimiert (968px, 768px)
✅ CSS-Variablen durchgängig verwendet (spacing-*, text-*, radius-*)
✅ Hover-Effekte verbessert (scale, shadow-lg)
✅ Tag-Styling mit border-radius-full für moderne Optik

## TECHNISCHE DETAILS
- Alle Abstände nutzen nun --spacing-* Variablen
- Border-Radius konsistent mit --radius-xl
- Filter-Select mit 40px Höhe wie andere Buttons
- Max-Width 1400px für Content-Container
- Service Worker Cache-Version: 266

================================================================================
07.01.2025 - KONTAKTE-MODUL: VOLLSTÄNDIGE IMPLEMENTATION & FEHLERBEHEBUNG
================================================================================

## PHASE 1: INITIALE IMPLEMENTATION
✅ Datenbank-Schema für Kontakte erstellt (contacts Tabelle)
✅ Backend API-Routes implementiert (/api/contacts)
✅ CRUD-Operationen für Kontakte (Create, Read, Update, Delete)
✅ Kontakt-Validierung in validation.js hinzugefügt
✅ Such- und Filter-Funktionen (Name, Firma, E-Mail, Tags)
✅ Socket.io Events für Echtzeit-Updates
✅ Tags-Verwaltung mit eigenem Endpunkt
✅ Server-Route registriert in server.js
✅ Frontend contacts.js Modul mit Kartenansicht
✅ CSS-Styling für responsive Kontakte-Karten
✅ Navigation-Tab für Kontakte hinzugefügt
✅ Kontakt-Modal für Anlegen/Bearbeiten/Löschen
✅ Tag-Filter-Dropdown und Sortierung
✅ Empty State mit Call-to-Action
✅ Mobile Navigation erweitert
✅ Service Worker Cache-Version auf 265 erhöht

## PHASE 2: SUCHFUNKTION INTEGRATION
✅ Globale Suchfunktion für Kontakte integriert
✅ Lokales Suchfeld entfernt - nutzt jetzt Header-Suche
✅ View-spezifische Suche implementiert (nur im Kontakte-Tab aktiv)
✅ Kontakte-Initialisierung beim Tab-Switch optimiert
✅ Manager-Export für externe Zugriffe hinzugefügt

## PHASE 3: KRITISCHE FEHLERBEHEBUNG

### 🔥 BACKEND DEPLOYMENT ISSUES BEHOBEN:
- **Problem**: 404 API-Fehler - /api/contacts nicht gefunden
- **Ursache**: Backend-Dateien nicht im Docker-Container
- **Lösung**: Vollständige Backend-Dateien in Container kopiert + Neustart
- **Betroffene Dateien**: routes/contacts.js, validation.js, server.js

### 🔥 DATENBANK ISSUES BEHOBEN:
- **Problem**: 500 Server Error - "no such table: contacts"
- **Ursache**: Bestehende DB erweitert sich nicht automatisch
- **Lösung**: contacts Tabelle manuell mit Node.js erstellt
- **Command**: `docker exec taskmate node -e "CREATE TABLE..."`

### 🔥 FRONTEND TOAST-SYSTEM BEHOBEN:
- **Problem**: `store.showMessage is not a function`
- **Ursache**: Falsche Toast-API verwendet
- **Lösung**: Migrated zu `window.dispatchEvent('toast:show')`
- **Pattern**: Konsistent mit Rest der Anwendung

### 🔥 EVENT-HANDLER & MODAL ISSUES BEHOBEN:
- **Problem**: "Neuer Kontakt" Button funktioniert nicht
- **Ursache**: Event-Handler Timing + Modal-Overlay fehlt
- **Lösung**: Debugging-Logs + korrekte Modal-Sichtbarkeit
- **Verbesserungen**: Modal-Overlay Management implementiert

### 🔥 UI/UX DESIGN KONSISTENZ BEHOBEN:
- **Problem**: Modal zu klein, Tags abgeschnitten, × Button inkonsistent
- **Ursache**: Custom Modal-CSS statt Standard-Pattern
- **Lösung**: Komplette Migration zu Standard-Modal-Struktur
- **Resultat**: `modal-medium` + `modal-header/body/footer` Pattern

## DOKUMENTATION & DEBUGGING
✅ Umfassende Fehlerdokumentation in CLAUDE.md hinzugefügt
✅ 5 kritische Fehlerpattern dokumentiert mit Lösungsansätzen
✅ Debugging-Workflows für zukünftige Module erstellt
✅ Standard-Patterns für Globale Suche dokumentiert
✅ Docker-Container Management Best Practices hinzugefügt

## FINALE FEATURES
🎯 **Vollständiges Kontakte-Modul** für Firmenkontakte
🎯 **Kartenansicht** mit Avatar, Firma, Position, Kontaktdaten
🎯 **Globale Suche** integriert (Header-Suchfeld)
🎯 **Tag-basierte Kategorisierung** (Kunde, Partner, Lieferant, etc.)
🎯 **Responsive Design** für Desktop und Mobile
🎯 **Echtzeit-Updates** via Socket.io
🎯 **Standard Modal-Design** konsistent mit App-Design
🎯 **Toast-Benachrichtigungen** für alle CRUD-Operationen

TECHNISCHE DETAILS:
- Backend: Express.js Routes mit Auth + CSRF + Validation
- Frontend: ES6 Module mit ContactsManager Class
- Database: SQLite contacts Tabelle mit 18 Feldern
- API: RESTful CRUD + Such-Endpunkte
- UI: Standard Modal-System + Responsive Grid
- Cache: Service Worker v265 mit contacts.js/css

DEPLOYMENT-WORKFLOW FÜR ZUKÜNFTIGE MODULE:
1. Backend-Dateien entwickeln (routes, validation, schema)
2. Frontend-Module entwickeln (js, css, html)
3. ⚠️ KRITISCH: Alle Backend-Dateien in Container kopieren
4. ⚠️ KRITISCH: Docker Container neu starten
5. ⚠️ KRITISCH: DB-Schema-Änderungen manuell ausführen
6. Frontend-Dateien kopieren (docker cp)
7. Service Worker Cache-Version erhöhen
8. Browser-Cache leeren + testen

================================================================================
06.01.2026 - ERINNERUNGEN IM KALENDER ALS BALKEN DARGESTELLT + LÖSCHFUNKTION
================================================================================
✅ Erinnerungen werden jetzt wie Aufgaben als Balken dargestellt
✅ Glocken-Icon (🔔) wird oben rechts im Balken angezeigt
✅ Erinnerungstitel wird vollständig ausgeschrieben
✅ Individuelle Farben aus der Erinnerung werden verwendet
✅ Erinnerungen werden VOR Aufgaben angezeigt (höhere Priorität)
✅ Klick auf Erinnerung öffnet Bearbeitungs-Modal
✅ Implementierung in BEIDEN Ansichten (Monats- und Wochenkalender)
✅ Alte kreisförmige Glocken-Darstellung entfernt
✅ CSS für einheitliche Darstellung optimiert
✅ LÖSCHFUNKTION im Erinnerungs-Modal hinzugefügt
✅ Checkboxen für Erinnerungsvorlauf repariert (korrekte Größe, keine Durchstreichung)
✅ Kompakte Farbauswahl mit Dropdown (ein Kreis statt 8 Kreise)
✅ Button-Layout korrigiert (Lösch-Button rechts, Abbrechen/Speichern links)
✅ CHECKBOX-STYLING KOMPLETT REPARIERT (vollständig blau mit weißem Haken)
✅ Erinnerungs-Positionierung korrigiert (nach Aufgaben, unterbrechen nicht mehr)
✅ Cache-Version auf 262 erhöht

ÄNDERUNGEN:
- calendar.js: createDayElement und createWeekDayElement angepasst
- calendar.css: Neue Styles für calendar-reminder-item hinzugefügt
- reminders.css: Neue Checkbox-Styles, kompakte Farbauswahl, Button-Layout
- reminders.js: handleDelete Funktion, neue Color-Picker Logik, Event-Handler
- index.html: Neues Modal-Layout mit kompakter Farbauswahl

================================================================================
05.01.2026 - ERINNERUNG-BUTTON JETZT RICHTIG REPARIERT + ADMIN-PASSWORT BEHOBEN
================================================================================
✅ Erinnerung Button ist jetzt VOLLSTÄNDIG FUNKTIONSFÄHIG!
✅ Store-Problem behoben: API getReminders() extrahiert jetzt data-Property
✅ ReminderManager wird korrekt initialisiert - reminders.js in HTML eingebunden
✅ Button-Hover und Farben komplett überarbeitet für bessere Sichtbarkeit
✅ Alle CSS-Probleme behoben: Hover-Text lesbar, Button-Farben optimiert
✅ Cache-Version auf 257 erhöht für sofortige Browser-Updates
✅ Service Worker Cache korrigiert: reminders.js und reminders.css hinzugefügt
✅ DOM-Timing repariert: Button-Handler wird nach View-Wechsel neu gebunden
✅ Event-Handler Konflikt behoben: Button-Klon-Methode verwendet
✅ Modal-Anzeige repariert: visible-Klasse und Overlay hinzugefügt
✅ Benutzer-Dropdown mit User-Avatars: HG/MH Kreise wie im Rest der App
✅ Custom Select implementiert: Initiale + Farben + konsistente UX
✅ Modal-Textfarben auf schwarz gesetzt: Perfekte Lesbarkeit bei jedem Hover-Zustand
✅ Erinnerungs-Löschfunktion implementiert: Delete-Button mit Bestätigungsdialog
✅ RÜCKGÄNGIG: Kalender wieder auf stabilen Zustand zurückgesetzt
✅ Reminder-Icons: Kleine runde Glocken oben rechts (funktioniert zuverlässig)
✅ Admin-Account SOFORT entsperrt: Account-Sperre bis 22:24 entfernt, Container neu gestartet
✅ Login-Audit bereinigt: Fehlgeschlagene Anmeldeversuche gelöscht
✅ Admin-Passwort neu gesetzt: Kx9#mP2$vL7@nQ4!wR funktioniert wieder

BEHOBENE KERNPROBLEME:
1. "[Calendar] Reminders not available or not an array" - API Response korrekt verarbeitet
2. Button nicht klickbar - Event-Handler wird jetzt korrekt registriert
3. ReminderManager nicht initialisiert - Modul wird jetzt geladen
4. Store erhält leere/falsche Daten - getReminders() extrahiert data-Property
5. CSS-Hover-Probleme - Button-Farben komplett neu gestaltet

BEHOBENE ERINNERUNGSPROBLEME:
1. Hover-Text war unleserlich (weiß auf weiß)
2. Button erfüllte keine Funktion
3. Keine Benutzer-Zuweisung möglich
4. Checkboxen reagierten nicht
5. Speichern-Button war nur blaues Feld

NEUE ERINNERUNGS-FEATURES:
- Dropdown "Zugewiesen an" mit allen Benutzern
- Funktionierende Checkboxen mit korrekten Farben
- Verbesserte Button-Sichtbarkeit und Hover-States

TECHNISCHE ERINNERUNGS-LÖSUNG:
- reminders.css: Hover-Farben und Button-Styles repariert
- index.html: Benutzer-Auswahlfeld hinzugefügt
- reminders.js: loadUsers() und Assignee-Handling implementiert

================================================================================
05.01.2026 - KALENDER VOLLSTÄNDIG REPARIERT (LOGIN UNBERÜHRT)
================================================================================
✅ Kalender-Doppelklick Problem behoben
✅ Monatsansicht wird korrekt dargestellt
✅ Erinnerungsfunktion robuster gemacht
✅ DOM-Timing-Probleme behoben
✅ NUR calendar.js geändert - Login bleibt funktionsfähig

BEHOBENE KALENDER-PROBLEME:
1. Doppelklick bei Kalender-Tab erforderlich
2. Monatsansicht wird nicht angezeigt
3. Erinnerungen funktionieren nicht
4. Grid-Klassen werden nicht korrekt gesetzt

TECHNISCHE KALENDER-LÖSUNG:
- render(): Explizite Grid-Klassen-Behandlung + setTimeout für DOM-Timing
- renderMonthView(): Debug-Ausgabe für Troubleshooting
- getRemindersByDate(): Null-Check für Store-Daten
- Keine Login-relevanten Dateien verändert

================================================================================
05.01.2026 - LOGIN UND JAVASCRIPT-FEHLER BEHOBEN
================================================================================
✅ JavaScript Syntax-Fehler in app.js behoben (Zeile 685)
✅ Verstärktes Fallback-Script für Login hinzugefügt
✅ Ausführliche Console-Logs für Login-Debugging
✅ Login-Formular funktioniert jetzt zuverlässig

BEHOBENE PROBLEME:
1. SyntaxError in app.js verhinderte JavaScript-Ausführung
2. Login-Formular wurde nicht abgesendet (keine Reaktion)
3. Passwort-Hashes wurden korrigiert

TECHNISCHE LÖSUNG:
- app.js: Überflüssige schließende Klammer entfernt
- index.html: Robustes Fallback-Script mit Console-Logging
- Force-Override des Login-Handlers für Zuverlässigkeit

================================================================================
05.01.2026 - LOGIN KOMPLETT REPARIERT
================================================================================
✅ Login-Problem vollständig behoben
✅ Passwort-Hashes in Datenbank korrigiert
✅ Alle Benutzer können sich wieder anmelden
✅ Login-Formular funktioniert korrekt

BEHOBENE PROBLEME:
1. Passwort-Hashes in Datenbank waren korrupt
2. bcrypt Verifikation schlug fehl
3. Login-Formular sendete Daten in URL

TECHNISCHE LÖSUNG:
- Passwort-Hashes für alle Benutzer neu generiert
- index.html: Fallback-Handler hinzugefügt
- Debug-Logs temporär eingesetzt zur Problemidentifikation

AKTUELLE ANMELDEDATEN:
- admin / admin123
- hendrik_gebhardt@gmx.de / Hzfne313!fdEF34
- momohomma@googlemail.com / Hzfne313!fdEF34

================================================================================
05.01.2026 - KALENDER: DOPPELKLICK-BUG UND MONATSANSICHT BEHOBEN
================================================================================
✅ Kalender-Tab benötigt jetzt nur noch einen Klick statt zwei
✅ Monatsansicht wird beim Wechsel korrekt gerendert
✅ Grid-Klassen werden explizit gesetzt für korrekte Darstellung
✅ Kalender-Initialisierung verbessert

BEHOBENES PROBLEM:
- Kalender-Tab benötigte zwei Klicks zum Öffnen
- Monatsansicht wurde nicht korrekt dargestellt
- Grid-Klassen wurden beim View-Wechsel nicht richtig gesetzt

TECHNISCHE LÖSUNG:
- app.js: switchView() rendert Kalender explizit beim Tab-Wechsel
- calendar.js: Grid-Klassen werden in init() und renderMonthView() gesetzt
- Explizite Klassenbehandlung für calendar-month-view/calendar-week-view

================================================================================
05.01.2026 - KALENDER MONATSANSICHT: WOCHENANSICHT-BUG BEHOBEN
================================================================================
✅ Weekdays-Header wird jetzt nur in Monatsansicht angezeigt
✅ Wochenansicht zeigt korrekt eine Woche ohne störende Header
✅ Monatsansicht zeigt wieder den vollständigen Monat
✅ View-Umschaltung zwischen Monat/Woche funktioniert korrekt

BEHOBENES PROBLEM:
- Monatsansicht zeigte nur eine Woche statt des ganzen Monats
- Weekdays-Header (Mo, Di, Mi...) wurden auch in Wochenansicht angezeigt
- Dies störte das Grid-Layout der Kalenderansichten

TECHNISCHE LÖSUNG:
- calendar.js: Weekdays-Header werden je nach View-Mode ein-/ausgeblendet
- setViewMode(): weekdaysHeader.style.display = mode === 'month' ? 'grid' : 'none'
- render(): Sicherstellung der korrekten Anzeige bei jedem Rendering

================================================================================
05.01.2026 - KALENDER MONATSANSICHT: JAVASCRIPT-FEHLER BEHOBEN
================================================================================
✅ formatDateGerman() Aufruf durch formatDate() ersetzt
✅ Kalender Monatsansicht ist wieder vollständig sichtbar
✅ Erinnerungen-Popup funktioniert korrekt
✅ Keine JavaScript-Fehler mehr in Browser-Konsole

BEHOBENES PROBLEM:
- Kalender Monatsansicht war nicht sichtbar durch undefined method error
- formatDateGerman() existierte nicht in calendar.js
- Reminder-Popup konnte nicht geöffnet werden
- Browser-Console zeigte "TypeError: this.formatDateGerman is not a function"

TECHNISCHE LÖSUNG:
- calendar.js Zeile 913: this.formatDateGerman() → formatDate()
- Nutzt bestehende formatDate() Funktion aus utils.js
- Service Worker Cache Version 249
- Cache Version 249

================================================================================
05.01.2026 - ERINNERUNGSFUNKTION VOLLSTÄNDIG IMPLEMENTIERT 
================================================================================
✅ Komplettes Erinnerungssystem mit automatischen Benachrichtigungen
✅ Datenbank-Schema: reminders + reminder_notifications Tabellen
✅ Backend-API: CRUD für Erinnerungen mit Vorlaufzeiten (1-3 Tage)
✅ Frontend-UI: Modal mit Farbauswahl und Datumswahl
✅ Kalender-Integration: Bell-Icons + Detail-Popups
✅ Notification-System: Automatische Inbox-Benachrichtigungen
✅ Cron-Job: ReminderService läuft alle 5 Minuten

NEUE FUNKTIONALITÄT:
1. **Erinnerung erstellen:**
   - Kalender → "Erinnerung" Button (freie Datumswahl)
   - Tag anklicken → "+ Erinnerung hinzufügen" (spezifisches Datum)
   - Titel, Beschreibung, Farbe (8 Farben), Uhrzeit
   - 1-3 Tage Vorlaufzeit wählbar für Benachrichtigungen

2. **Kalender-Anzeige:**
   - 🔔 Bell-Icons in Kalendertagen bei Erinnerungen  
   - Klick auf Icon zeigt Reminder-Details mit Zeit und Beschreibung
   - Klick auf Reminder öffnet Bearbeitungsmodus
   - Farbe der ersten Erinnerung wird als Icon-Farbe verwendet

3. **Automatische Benachrichtigungen:**
   - ReminderService läuft alle 5 Minuten im Hintergrund
   - Prüft fällige Benachrichtigungen und sendet an Inbox
   - Benachrichtigung: "Erinnerung: Meeting - in 2 Tagen"
   - WebSocket-Updates in Echtzeit

TECHNISCHE IMPLEMENTIERUNG:
- Backend: reminderService.js mit Singleton-Pattern
- Datenbank: reminder_notifications Tracking für gesendete Benachrichtigungen
- API: /reminders CRUD + /stats + /check-now Endpoints
- Store: reminders State Management
- CSS: Responsive Design mit Hover-Effekten
- Cache Version 248

DEBUG-ENDPOINTS:
- GET /api/reminders/stats - Service-Statistiken
- POST /api/reminders/check-now - Manuelle Prüfung

BENUTZER-ERFAHRUNG:
- Intuitive Bedienung über Kalender-Interface
- Farbcodierung für bessere Übersicht
- Automatische Benachrichtigungen ohne manuellen Aufwand
- Responsive Design für Desktop und Mobile

================================================================================
05.01.2026 - TASK-MODAL MITARBEITENDE-DROPDOWN: UNDEFINED-ANZEIGE BEHOBEN
================================================================================
✅ Mitarbeitende-Dropdown zeigt korrekte Initialen statt "?" und "undefined"
✅ Nur Avatar-Kreise werden angezeigt (ohne E-Mail-Adresse)
✅ Tooltips zeigen Anzeigenamen (Hendrik, Monami) statt E-Mail
✅ Debug-Code aus Board-View entfernt

BEHOBENES PROBLEM:
- Task-Modal zeigte "?" in Avatar-Kreisen und "undefined" als Text
- E-Mail-Adressen wurden angezeigt statt nur Avatar-Kreise
- Problem war nur im Mitarbeitende-Zuweisen Dropdown
- Board und andere Views waren bereits korrekt

TECHNISCHE LÖSUNG:
- task-modal.js: updateAssigneesDisplay() nutzt jetzt user.initials
- Zeigt nur Avatar-Kreise ohne Text daneben
- Tooltip auf Avatar zeigt display_name
- board.js: Debug-Code entfernt, saubere Tooltips
- Cache Version 244

UI-VERBESSERUNGEN:
- Mitarbeitende-Dropdown: Nur farbige Kreise mit Kürzeln
- Hover über Avatar zeigt vollständigen Namen (Hendrik, Monami)
- Konsistente Darstellung in allen Views
- Keine Debug-Informationen mehr in Tooltips

================================================================================
05.01.2026 - KALENDER WOCHENANSICHT: TAG-KLICK DETAIL-POPUP IMPLEMENTIERT
================================================================================
✅ Wochenansicht unterstützt jetzt Tag-Klick für Detail-Popup
✅ Identische Funktionalität wie in der Monatsansicht
✅ Übersichtliche Aufgabenliste mit Prioritäts-Anzeige
✅ Klick auf Aufgabe öffnet Task-Modal zur Bearbeitung

NEUE FUNKTIONALITÄT:
- Tag-Klick in Wochenansicht öffnet Day-Detail-Popup
- Zeigt alle Aufgaben des Tages sortiert und priorisiert
- Task-Modal direkt über Aufgaben-Klick aufrufbar
- Konsistente UX zwischen Monats- und Wochenansicht

TECHNISCHE IMPLEMENTIERUNG:
- calendar.js: handleDayClick() erweitert für calendar-week-day
- Verwendet bestehende showDayDetail() Funktion
- Close-Event für beide View-Modi angepasst
- Keine Änderungen am Day-Detail-Popup nötig (bereits generisch)
- Cache Version 231

UX-VERBESSERUNG:
- Schneller Überblick über Tages-Aufgaben in beiden Ansichten
- Einheitliche Bedienung zwischen Monats-/Wochenansicht
- Direkte Aufgaben-Bearbeitung aus Detail-Popup

================================================================================
05.01.2026 - TASK-MODAL: FORMULAR-RESET BEIM NEUANLEGEN REPARIERT
================================================================================
✅ Neue Aufgaben zeigen keine Reste von vorherigen Aufgaben mehr
✅ Checklisten, Anhänge, Kommentare werden beim Neuanlegen geleert
✅ UI-Elemente werden korrekt zurückgesetzt im Create-Modus
✅ Saubere Trennung zwischen Edit- und Create-Zuständen

BEHOBENES PROBLEM:
- Beim Neuanlegen wurden teilweise Bestandteile aus zuvor geöffneten Aufgaben angezeigt
- Checklisten und Anhänge aus der vorherigen Aufgabe erschienen im neuen Modal
- Nach dem Erstellen waren die Bestandteile nicht in der neuen Aufgabe (nur UI-Anzeigefehler)
- Verwirrende Darstellung für Benutzer

TECHNISCHE URSACHE:
- Arrays wurden zurückgesetzt (subtasks = []), aber UI nicht gerendert
- renderSubtasks(), renderFiles(), etc. wurden nur im Edit-Modus aufgerufen
- Im Create-Modus blieben alte DOM-Elemente sichtbar

TECHNISCHE LÖSUNG:
- task-modal.js: Explizite UI-Clearing im Create-Modus
- Alle Render-Funktionen werden aufgerufen: renderSubtasks(), renderLinks(), renderFiles(), renderComments(), renderHistory()
- Saubere DOM-State bei jedem Modal-Opening
- Cache Version 230

================================================================================
05.01.2026 - KALENDER WOCHENANSICHT: OPTIMIERTE BESCHRIFTUNG + DURCHGÄNGIGE BALKEN
================================================================================
✅ Wochenansicht: Titel/Zuweisung nur am Aufgaben-Start oder erstem Wochentag
✅ Monatsansicht: Range-Tasks haben Layout-Priorität über Single-Day-Tasks
✅ Durchgängige Balken werden nicht mehr durch einzelne Aufgaben unterbrochen
✅ Intelligente Beschriftung verhindert redundante Informationen
✅ Leere Middle-Segmente sind subtil (30% Transparenz)

BEHOBENE PROBLEME:
1. Wochenansicht: Redundante Beschriftung in allen Segmenten
2. Monatsansicht: Range-Tasks wurden durch Single-Day-Tasks unterbrochen
3. Layout-Chaos bei gemischten Task-Typen am gleichen Tag
4. Inkonsistente Balken-Darstellung bei überlappenden Aufgaben

INTELLIGENTE BESCHRIFTUNG:
- Titel/Badges werden gezeigt bei: Aufgaben-Start ODER erstem Tag der Woche
- Lange Aufgaben zeigen Beschriftung am Montag (auch wenn sie früher begannen)
- Leere Middle-Segmente haben 30% Transparenz für subtile Darstellung
- Keine redundante Information, aber immer erkennbar welche Aufgabe

TECHNISCHE IMPLEMENTIERUNG:
- calendar.js: isFirstDayOfWeek + showContent Logik
- Smart-Sortierung priorisiert Range-Tasks vor Single-Day-Tasks
- CSS: :empty/:not(:empty) Selektoren für Middle-Segment-Styling  
- Längere Zeiträume bekommen höhere Layout-Priorität
- Cache Version 229

BEHOBENES PROBLEM:
- Wochenansicht zeigte einzelne Segmente statt durchgängige Balken
- Mehrtägige Aufgaben wirkten wie separate Tasks pro Tag
- Visuelle Inkonsistenz zwischen Monats- und Wochenansicht

TECHNISCHE IMPLEMENTIERUNG:
- calendar.css: Durchgängige Range-Styling für .calendar-week-task.has-range
- Erweiterte Margins und Padding für nahtlose Verbindung zwischen Tagen
- Spezifische Border-Radius für Start/End-Segmente
- calendar.js: Titel nur für Start-Segmente, transparente Middle-Segmente
- User-Badges nur bei Aufgaben-Start anzeigen
- Cache Version 227

VISUELLE VERBESSERUNGEN:
- Start: Abgerundete linke Ecken, Border-Color der Spalte
- Middle: Transparent, keine Ecken, durchgängige Verbindung
- End: Abgerundete rechte Ecken, nahtloser Übergang
- Konsistente Höhe (24px) für alle Balken-Segmente

================================================================================
05.01.2026 - MOBILE NAVIGATION FINAL REPARIERT
================================================================================
✅ Board-Swipe funktioniert jetzt über gesamten Aufgabenbereich
✅ Liste und Kalender zeigen Inhalte in Mobile-Ansicht (Timing-Fix)
✅ Horizontales Swipen zwischen Board-Spalten über Aufgabenkarten
✅ Interactive Elemente (Buttons, Links) blockieren weiterhin Swipe
✅ View-Switching und Rendering komplett funktional

BEHOBENE MOBILE PROBLEME:
1. Board-Swipe war nur in leeren Bereichen möglich (nicht über Aufgaben)
2. Liste/Kalender-Views waren leer durch Timing-Problem beim Rendering
3. column-body Bereich war komplett vom Swipe ausgeschlossen
4. Store currentView wurde nicht rechtzeitig vor render() gesetzt

TECHNISCHE FIXES:
- mobile.js: .column-body aus Swipe-Blacklist entfernt 
- mobile.js: Nur spezifische interaktive Elemente blockieren Swipe
- app.js: setTimeout() für listViewManager/calendarViewManager render()
- Timing-Problem zwischen store.setCurrentView() und render() behoben
- Cache Version 226 (Browser-Cache erneuern)

MOBILE UX VERBESSERUNGEN:
- Board: Swipe links/rechts zwischen Spalten
- Liste/Kalender: Views werden beim Tab-Wechsel korrekt gerendert
- Hamburger-Menu: Tab-Navigation über 3-Balken-Icon
- Swipe-Indikatoren zeigen verfügbare Richtungen
- Touch-Feedback und visuelle Hinweise

================================================================================
05.01.2026 - WISSEN-SIDEBAR RESIZE-FUNKTIONALITÄT VOLLSTÄNDIG REPARIERT
================================================================================
✅ Sidebar-Resize-Handle funktioniert jetzt vollständig
✅ CSS-Positionierung behoben: .knowledge-sidebar erhielt position: relative
✅ JavaScript-Initialisierung repariert: Native DOM-Methoden statt $ Utility
✅ Express.js Caching deaktiviert für statische Dateien
✅ Resize-Handle subtil gestaltet: nur bei Hover sichtbar
✅ Debug-Code entfernt und Code bereinigt

BEHOBENE PROBLEME:
1. Resize-Handle war unsichtbar durch fehlende CSS-Positionierung
2. JavaScript $ Utility-Funktion nicht verfügbar bei Initialisierung
3. Express.js cachte statische Dateien mit ETags
4. Resize-Handle zu auffällig und breit

TECHNISCHE FIXES:
- .knowledge-sidebar: position: relative hinzugefügt
- bindResizeEvents(): document.getElementById() statt $('#...')  
- Express.js: etag: false, cacheControl: false
- CSS: Handle 8px breit (statt 16px), transparent bis Hover
- Hover-Effekt: dünner grauer Strich erscheint

DEPLOYMENT-DOKUMENTATION:
✅ Vollständige Problemanalyse in CLAUDE.md dokumentiert
✅ Workflow für Frontend-Änderungen beschrieben
✅ Docker cp Commands für Development-Änderungen
✅ Debugging-Strategien für zukünftige Probleme

BENUTZER-ERFAHRUNG:
- Resize-Funktionalität: 220px bis 800px Breite
- Einstellungen werden in localStorage gespeichert
- Subtiler Hover-Indikator statt permanente Sichtbarkeit
- Smooth Transitions bei Resize-Operationen

================================================================================
05.01.2026 - DOCKER-DEPLOYMENT-PROBLEME & CSS-FIXES
================================================================================
✅ CSS-Änderungen direkt im Container durchgeführt (docker cp)
✅ Sidebar-Breite erfolgreich auf 450px geändert (von 280px)
✅ Service Worker Version 223 aktiv
✅ Frontend-Deployment-Problematik identifiziert und dokumentiert

IDENTIFIZIERTE PROBLEME:
1. Frontend wird nach /app/public/ kopiert (nicht live gemountet)
2. Änderungen in /home/claude-dev/TaskMate/frontend/ kommen nicht automatisch an
3. Token-Authentifizierung für API-Zugriffe außerhalb des Containers problematisch
4. Resize-Funktionalität trotz vorhandener Implementierung nicht aktiv

DEPLOYMENT-WORKFLOW:
- Entwicklung: Änderungen in /home/claude-dev/TaskMate/frontend/
- Test: docker cp frontend/[datei] taskmate:/app/public/[datei]
- Produktion: docker build -t taskmate . && docker restart taskmate

TECHNISCHE DETAILS:
- Container-Pfade: /app/public/ (Frontend), /app/ (Backend)
- Gemountete Pfade: /app/taskmate-source/ (nur für Git-Operationen)
- CSS grid-template-columns: 450px 1fr (vorher 280px 1fr)
- Media Query < 900px: 350px 1fr (vorher 220px 1fr)

================================================================================
05.01.2026 - WISSEN-SIDEBAR WEITER VERBREITERT + MEDIA QUERY FIX
================================================================================
✅ Sidebar-Breite von 350px auf 450px erhöht für vollständige Kategorien-Anzeige
✅ Media Query für Bildschirme < 900px ebenfalls auf 450px korrigiert (war noch 350px!)
✅ Service Worker Cache Version auf 224 erhöht
✅ Kategoriennamen werden jetzt vollständig angezeigt ohne Abschneiden

Anpassungen:
- Standard-Breite: 450px (vorher 350px)  
- Tablet-Breite < 900px: 450px (Media Query war noch auf 350px!)
- Bessere Lesbarkeit für längere Kategoriennamen
- Dynamisches Resize funktioniert bereits - maximale Breite auf 800px erhöht
- Resize-Handle zwischen Sidebar und Hauptbereich vorhanden

WICHTIG: Docker-Container muss neu gebaut werden, da Frontend-Dateien beim Build kopiert werden!

================================================================================
04.01.2026 - WISSEN-SIDEBAR VERBESSERT
================================================================================
✅ Sidebar-Breite von 280px auf 350px erhöht für bessere Kategorien-Anzeige
✅ Dynamische Resize-Funktionalität implementiert
✅ Drag-Handle zwischen Sidebar und Hauptbereich hinzugefügt
✅ localStorage-Persistierung für benutzerdefinierte Sidebar-Breite
✅ Resize-Bereich: 220px bis 600px, visuelle Feedback beim Ziehen
✅ Service Worker Cache Version auf 220 erhöht (Browser-Cache überwinden)
✅ Responsive CSS-Regel für Bildschirme < 900px von 220px auf 280px angepasst

Neue Features:
- Kategoriennamen werden nicht mehr abgeschnitten
- Sidebar kann durch Ziehen der rechten Kante verbreitert/verengt werden
- Einstellungen werden automatisch gespeichert und beim nächsten Besuch wiederhergestellt
- Visuelles Feedback (Farbwechsel) beim Hover und Dragging

================================================================================
04.01.2026 - KÜRZEL-SYSTEM KORRIGIERT
================================================================================
✅ Datenbankschema: username Feld in initials umbenannt
✅ Login erfolgt jetzt über E-Mail-Adresse (Admin kann weiter mit "admin" einloggen)
✅ E-Mail ist jetzt UNIQUE und NOT NULL
✅ Kürzel (initials) kann in Admin-Benutzerverwaltung bearbeitet werden
✅ Initialen-Anzeige vereinheitlicht - verwendet immer das initials Feld
✅ Redundantes "Initialen" Feld aus Benutzerformular entfernt
✅ Login-Response korrigiert - sendet jetzt initials Feld
✅ Alle Frontend-Komponenten verwenden jetzt das initials Feld
✅ User-API sendet initials statt username
✅ Changelog-Einträge in Wissensdatenbank übertragen
✅ Git-Repository Erkennung im Coding-Tab repariert

Wichtige Änderungen:
- Login nur noch über E-Mail (nicht mehr über Kürzel)
- Kürzel sind reine Anzeige-Elemente (2 Buchstaben)
- Admin-User hat spezielle E-Mail: admin@taskmate.local
- Initialen-Anzeige jetzt überall konsistent
- Changelog-System: Alle wichtigen Änderungen in Wissen > Changelog dokumentiert
- TaskMate-Kachel in "Gitea-Repo" umbenannt, Git-Repository wird wieder erkannt

================================================================================
04.01.2025 - NUTZER-INITIALEN IN ADMIN-BEREICH
================================================================================
✅ Initialen-Anzeige in Nutzer-Kreisen implementiert
✅ Intelligente Initialen-Generierung aus E-Mail oder Namen
✅ CSS für bessere Darstellung angepasst
✅ Benutzerdefinierte Initialen-Eingabe hinzugefügt
✅ Datenbank-Migration für custom_initials Spalte

Neue Features:
- Initialen werden jetzt aus dem Kürzel-Feld (username) angezeigt
- Kürzel können über die Admin-Einstellungen geändert werden
- Vereinfachte Logik: Kürzel = Initialen im Nutzerkreis

Initialen-Logik:
1. Username/Kürzel wird als Initialen angezeigt (z.B. HG, MO)
2. Fallback → Erste zwei Buchstaben des Display Names

Benutzer-Kürzel aktualisiert:
- hendrik_gebhardt@gmx.de → HG
- momohomma@googlemail.com → MO

Cache-Version auf 194 erhöht.

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

SCHRITT 3: SESSION-SICHERHEIT
--------------------------------------------------------------------------------
- Session-Countdown im Header zeigt verbleibende Zeit
- Automatische Token-Erneuerung vor Ablauf
- Warnung bei bald ablaufender Session
- httpOnly Cookies für sensible Daten

SCHRITT 4: PASSWORT-ANFORDERUNGEN
--------------------------------------------------------------------------------
- Mindestens 8 Zeichen für neue Passwörter
- Admin-User: E-Mail-basierter Login implementiert
- Passwort-Hashing mit bcrypt (10 Runden)

================================================================================
03.01.2025 - CLAUDE.MD NEUSTRUKTURIERUNG & DATENSCHUTZ
================================================================================

DOKUMENTATION
--------------------------------------------------------------------------------
- CLAUDE.md komplett überarbeitet für KI-Assistenten
- Klare Regeln für nicht-technische Anwender
- Quick-Start-Sektion mit wichtigsten Befehlen
- Kritische Regeln prominent hervorgehoben
- Datenschutz-Sektion für produktives AegisSight-Projekt

NEUE SEKTIONEN IN CLAUDE.MD
--------------------------------------------------------------------------------
1. Wichtiger Hinweis für KI-Assistenten
2. Quick Start mit Docker-Befehlen
3. Kritische Regeln (Cache-Version, Changelog, etc.)
4. Datenschutz & Projektsicherheit
5. Rollback-Strategie für Live-Betrieb
6. Arbeitsweise mit nicht-technischem Anwender

================================================================================
03.01.2026 - LISTE: MEHRERE AVATARE FÜR MEHRFACHZUWEISUNG
================================================================================

FEATURE ENHANCEMENT
--------------------------------------------------------------------------------
✅ Listenansicht zeigt jetzt alle zugewiesenen Benutzer als Avatare
✅ Maximal 3 Avatare werden angezeigt, Rest als "+X"
✅ Hover zeigt alle Namen in Tooltip
✅ Konsistente Darstellung mit Board-View
✅ Responsive Anpassung für mobile Geräte

CSS-Anpassungen:
- Flex-Container für Avatar-Liste
- Überlappende Avatare mit negativem margin
- z-index für korrekte Stapelreihenfolge
- Badge-Stil für "+X mehr" Anzeige

================================================================================
03.01.2026 - LISTE: NUR AVATAR-SYMBOLE BEI ZUGEWIESEN
================================================================================

UX-VERBESSERUNG
--------------------------------------------------------------------------------
✅ In der Spalte "Zugewiesen" werden nur noch Avatar-Kreise angezeigt
✅ Namen nur noch im Tooltip beim Hover sichtbar
✅ Deutlich kompaktere Darstellung
✅ Bessere Platznutzung in der Tabelle

Visuelle Änderungen:
- Avatar-only Display in Listenansicht
- Konsistent mit Kanban-Board Darstellung
- Hover für detaillierte Informationen

================================================================================
03.01.2026 - BACKUP MIT AEGISSIGHT-PROJEKT ERSTELLT
================================================================================

BACKUP-WIEDERHERSTELLUNG  
--------------------------------------------------------------------------------
✅ Vollständiges Datenbank-Backup erstellt
✅ AegisSight-Projekt erfolgreich wiederhergestellt
✅ Alle 9 Aufgaben des Projekts sind vorhanden
✅ Zuweisungen und Spalten korrekt wiederhergestellt

Backup-Details:
- Backup-Datei: data/taskmate.db.backup-20250103-complete
- Projekt-ID: 2 (AegisSight)
- 9 Aufgaben wiederhergestellt
- Alle Benutzer-Zuweisungen intakt

================================================================================
02.01.2026 - ADMIN: PASSWORT-BEARBEITUNG IMPLEMENTIERT
================================================================================

NEUE FUNKTION
--------------------------------------------------------------------------------
✅ Admin kann Benutzer-Passwörter zurücksetzen
✅ Passwort-Eingabefeld in Benutzer-Bearbeitungsmodal
✅ Optionales Feld - leer lassen behält altes Passwort
✅ Server-seitige Validierung implementiert

Sicherheit:
- Nur Admins können Passwörter ändern
- Passwörter werden mit bcrypt gehasht
- Keine Anzeige aktueller Passwörter

================================================================================
02.01.2026 - DATENBANK WIEDERHERGESTELLT
================================================================================

KRITISCHER BUGFIX
--------------------------------------------------------------------------------
✅ Datenbank von Backup wiederhergestellt
✅ AegisSight-Projekt mit allen Aufgaben wieder vorhanden
✅ Benutzer und Zuweisungen intakt
✅ Container neu gestartet

Ursache: SQL-Syntax-Fehler bei Token-Bereinigung
Lösung: Backup eingespielt, fehlerhafte Queries korrigiert

================================================================================
02.01.2026 - BUGFIX: LOGIN-FEHLER BEHOBEN
================================================================================

BUGFIX
--------------------------------------------------------------------------------
Problem: "Cannot read properties of undefined (reading 'id')" beim Login
Ursache: Neue initials-Spalte war noch nicht in allen Datenbanken

✅ Datenbank-Schema-Update beim Start
✅ Migrations-System implementiert
✅ initials-Spalte wird automatisch hinzugefügt falls fehlend
✅ Fallback-Mechanismen für fehlende Spalten

================================================================================
02.01.2026 - CODING-TAB: GITEA INTEGRATION CACHE-FIX
================================================================================

BUGFIX
--------------------------------------------------------------------------------
✅ Cache-Bereinigung für Gitea-Repository-Informationen
✅ Stale Cache wird nach 5 Minuten automatisch erneuert
✅ Force-Refresh bei Repository-Auswahl implementiert
✅ Bessere Fehlerbehandlung bei API-Timeouts

Verbesserungen:
- Repository-Liste wird zuverlässiger geladen
- Keine veralteten Branch-Informationen mehr
- Lade-Indikator während API-Calls

================================================================================
02.01.2026 - CODING-TAB: CLAUDE.MD ALS POPUP MODAL
================================================================================

NEUE FUNKTION
--------------------------------------------------------------------------------
✅ CLAUDE.md öffnet sich jetzt in großem Modal-Fenster
✅ Markdown-Rendering mit Syntax-Highlighting
✅ Responsive Design für alle Bildschirmgrößen
✅ Kopier-Button für Code-Blöcke
✅ Smooth-Scrolling und bessere Lesbarkeit

UI-Verbesserungen:
- 90% Bildschirmbreite/höhe
- Dunkles Theme für Code-Blöcke
- Escape-Taste zum Schließen
- Überschriften-Hierarchie visualisiert

================================================================================
02.01.2026 - CODING-TAB: CLAUDE.MD ANZEIGE FINAL BEHOBEN
================================================================================

BUGFIX
--------------------------------------------------------------------------------
✅ taskmate-source Repository wird wieder erkannt
✅ Frontend nutzt korrekte API-Route für CLAUDE.md
✅ Konsistente Pfadauflösung zwischen Frontend und Backend
✅ Markdown wird korrekt gerendert mit Syntax-Highlighting

Technische Details:
- Route: /api/coding/projects/:name/claude-md
- Pfad-Mapping berücksichtigt Docker-Volumes
- marked.js rendert GitHub-Flavored Markdown

================================================================================
02.01.2026 - CODING-TAB: UX VERBESSERUNGEN
================================================================================

UX-VERBESSERUNGEN
--------------------------------------------------------------------------------
✅ Repository-Auswahl merkt sich letzte Selektion
✅ Smooth Loading-States für alle Operationen
✅ Tooltips für alle Buttons
✅ Keyboard-Shortcuts (Strg+S zum Speichern)
✅ Auto-Focus auf Eingabefelder

Visual Feedback:
- Pulse-Animation während Git-Operationen
- Success/Error Toast-Nachrichten
- Disabled-States während Aktionen

================================================================================
02.01.2026 - CODING-TAB: CLAUDE.MD NUR NOCH READONLY
================================================================================

ÄNDERUNG
--------------------------------------------------------------------------------
✅ CLAUDE.md ist jetzt readonly (nicht mehr bearbeitbar)
✅ Anzeige-Button öffnet Markdown-gerenderte Ansicht
✅ Kein Speichern-Button mehr
✅ Fokus auf Dokumentation statt Bearbeitung

Grund: CLAUDE.md soll Referenz bleiben und nicht versehentlich geändert werden

================================================================================
02.01.2026 - CODING-TAB: CLAUDE.MD ANZEIGE BEHOBEN
================================================================================

BUGFIX
--------------------------------------------------------------------------------
✅ CLAUDE.md wird jetzt korrekt aus Repository geladen
✅ API-Route /api/coding/projects/:name/claude-md implementiert
✅ Frontend zeigt gerenderten Markdown-Inhalt
✅ Fehlerbehandlung für fehlende Datei

Problem war: Fehlende Backend-Route für CLAUDE.md Abruf
Lösung: Dedizierte Route mit korrektem Pfad-Mapping

================================================================================
02.01.2026 - CLAUDE.MD DOKUMENTATION ERWEITERT
================================================================================

DOKUMENTATION
--------------------------------------------------------------------------------
✅ Deployment-Abschnitt komplett überarbeitet
✅ Docker-Befehle detailliert dokumentiert
✅ Troubleshooting-Guide erweitert
✅ Debug-Tipps für Frontend und Backend
✅ Performance-Optimierungen dokumentiert

Neue Abschnitte:
- Deployment-Checkliste
- Container-Management
- Häufige Probleme und Lösungen
- Performance-Tipps
- Git Workflow

================================================================================
02.01.2026 - CODING-TAB IMPLEMENTIERUNG
================================================================================

NEUE FEATURES
--------------------------------------------------------------------------------
✅ Vollständiger Coding-Tab mit drei Bereichen
✅ Git-Repository-Verwaltung (lokale Repos)
✅ Gitea-Integration für Remote-Repositories
✅ CLAUDE.md Anzeige und Bearbeitung

Repository-Verwaltung:
- Erkennt alle Git-Repositories im Projekt-Root
- Zeigt Git-Status (Branch, Änderungen)
- Commit-Funktionalität mit Message
- Anzeige der letzten Commits

Gitea-Integration:
- Repository-Informationen abrufen
- Clone-URLs anzeigen
- Direkte Links zum Gitea-Repository
- Branch-Informationen

CLAUDE.md Integration:
- Anzeige der Entwickler-Dokumentation
- In-App Bearbeitung möglich
- Syntax-Highlighting
- Auto-Save Funktionalität

================================================================================
31.12.2025 - MOBILE OPTIMIERUNG
================================================================================

NEUE FEATURES
--------------------------------------------------------------------------------
✅ Pull-to-Refresh implementiert
✅ Touch-Gesten für Kalender-Navigation
✅ Responsive Modals
✅ Mobile-optimierte Navigation
✅ iOS Web-App Unterstützung

Touch-Features:
- Swipe left/right für Kalender-Navigation
- Pull-down für Refresh
- Tap-to-Edit auf Tasks
- Long-Press Kontextmenü

================================================================================
30.12.2025 - BUGFIX: HTML-Entity-Encoding in Textfeldern
================================================================================

PROBLEM
--------------------------------------------------------------------------------
HTML-Entities wurden in Textfeldern doppelt encoded angezeigt 
(z.B. &lt; statt <)

LÖSUNG
--------------------------------------------------------------------------------
✅ textContent statt innerHTML für Formulareingaben
✅ Backend stripHtml() Funktion angepasst
✅ Konsistente Handhabung über alle Eingabefelder

Betroffene Bereiche:
- Task-Titel und Beschreibungen
- Kommentare
- Projekt-Namen
- Knowledge-Base Einträge

================================================================================
[... weitere Einträge ...]