diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 41a043a..9e221ec 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,6 +1,59 @@ TASKMATE - CHANGELOG ==================== +================================================================================ +30.12.2025 - Checklisten-Unteraufgaben: Drag & Drop und Bearbeiten +================================================================================ + +FEATURE: UNTERAUFGABEN REIHENFOLGE ÄNDERN (DRAG & DROP) +-------------------------------------------------------------------------------- +- Drag-Handle (⋮⋮) links neben jeder Unteraufgabe +- Visueller Indikator beim Ziehen (farbiger Rand oben/unten) +- Reihenfolge wird in der Datenbank gespeichert (position-Feld) + +FEATURE: UNTERAUFGABEN BEARBEITEN +-------------------------------------------------------------------------------- +- Doppelklick auf den Titel zum Bearbeiten +- Bearbeiten-Icon (✎) erscheint beim Hover +- Enter speichert, Escape bricht ab +- Änderungen werden sofort in der Datenbank gespeichert + +BETROFFENE DATEIEN +-------------------------------------------------------------------------------- +- frontend/js/task-modal.js: renderSubtasks() erweitert, Drag & Drop Events, + startEditSubtask() Methode hinzugefügt +- frontend/css/modal.css: Styles für Drag-Handle, Drag-Indikatoren, Edit-Button, + Edit-Input +- frontend/sw.js: Cache-Version auf 138 erhöht + + +================================================================================ +30.12.2025 - Bugfix: Statuskarten Drag & Drop Reihenfolge +================================================================================ + +BUGFIX & VERBESSERUNG: STATUSKARTEN DRAG & DROP +-------------------------------------------------------------------------------- +- Drag & Drop von Statuskarten funktionierte nicht korrekt +- Ursache 1: API-Aufruf mit falschen Parametern (Array statt columnId + Position) +- Ursache 2: Kein visuelles Feedback beim Ziehen (CSS fehlte) +- Ursache 3: DragLeave entfernte Indikatoren zu früh + +ÄNDERUNGEN +-------------------------------------------------------------------------------- +- board.js: reorderColumns() übergibt jetzt korrekt moved.id und toIndex +- board.js: handleDragOver() nutzt jetzt CSS-Klassen statt inline-styles +- board.js: handleDragLeave() prüft jetzt ob Spalte wirklich verlassen wird +- board.js: handleDrop() berechnet Position basierend auf Maus-Position (links/rechts) +- board.css: Neue Styles für .column.dragging (Opacity, Scale, Shadow) +- board.css: Neue Styles für .column.drag-over-left/right (farbiger Rand) + +BETROFFENE DATEIEN +-------------------------------------------------------------------------------- +- frontend/js/board.js: Drag & Drop Logik komplett überarbeitet +- frontend/css/board.css: Column Dragging Styles hinzugefügt +- frontend/sw.js: Cache-Version auf 135 erhöht + + ================================================================================ 30.12.2025 - Browser-Upload: Lokale Verzeichnisse ins Gitea pushen ================================================================================ diff --git a/backups/backup_2025-12-28T16-24-54-155Z.db b/backups/backup_2025-12-28T16-24-54-155Z.db deleted file mode 100644 index c09da33..0000000 Binary files a/backups/backup_2025-12-28T16-24-54-155Z.db and /dev/null differ diff --git a/backups/backup_2025-12-28T16-24-54-155Z.db-wal b/backups/backup_2025-12-28T16-24-54-155Z.db-wal deleted file mode 100644 index 3eb93f9..0000000 Binary files a/backups/backup_2025-12-28T16-24-54-155Z.db-wal and /dev/null differ diff --git a/backups/backup_2025-12-28T16-34-12-984Z.db b/backups/backup_2025-12-28T16-34-12-984Z.db deleted file mode 100644 index c09da33..0000000 Binary files a/backups/backup_2025-12-28T16-34-12-984Z.db and /dev/null differ diff --git a/backups/backup_2025-12-28T16-34-12-984Z.db-wal b/backups/backup_2025-12-28T16-34-12-984Z.db-wal deleted file mode 100644 index 0b8a0f2..0000000 Binary files a/backups/backup_2025-12-28T16-34-12-984Z.db-wal and /dev/null differ diff --git a/backups/backup_2025-12-28T16-54-50-274Z.db b/backups/backup_2025-12-28T16-54-50-274Z.db deleted file mode 100644 index c09da33..0000000 Binary files a/backups/backup_2025-12-28T16-54-50-274Z.db and /dev/null differ diff --git a/backups/backup_2025-12-28T16-54-50-274Z.db-wal b/backups/backup_2025-12-28T16-54-50-274Z.db-wal deleted file mode 100644 index e40c04a..0000000 Binary files a/backups/backup_2025-12-28T16-54-50-274Z.db-wal and /dev/null differ diff --git a/backups/backup_2025-12-28T19-49-36-012Z.db b/backups/backup_2025-12-28T19-49-36-012Z.db deleted file mode 100644 index c09da33..0000000 Binary files a/backups/backup_2025-12-28T19-49-36-012Z.db and /dev/null differ diff --git a/backups/backup_2025-12-28T19-49-36-012Z.db-wal b/backups/backup_2025-12-28T19-49-36-012Z.db-wal deleted file mode 100644 index 949898d..0000000 Binary files a/backups/backup_2025-12-28T19-49-36-012Z.db-wal and /dev/null differ diff --git a/backups/backup_2025-12-28T20-09-05-908Z.db b/backups/backup_2025-12-28T20-09-05-908Z.db deleted file mode 100644 index ecad564..0000000 Binary files a/backups/backup_2025-12-28T20-09-05-908Z.db and /dev/null differ diff --git a/backups/backup_2025-12-28T20-09-05-908Z.db-wal b/backups/backup_2025-12-28T20-09-05-908Z.db-wal deleted file mode 100644 index cad7657..0000000 Binary files a/backups/backup_2025-12-28T20-09-05-908Z.db-wal and /dev/null differ diff --git a/data/taskmate.db b/data/taskmate.db index 8c92234..2cfcc23 100644 Binary files a/data/taskmate.db and b/data/taskmate.db differ diff --git a/data/taskmate.db-shm b/data/taskmate.db-shm index b0d807c..b0c032b 100644 Binary files a/data/taskmate.db-shm and b/data/taskmate.db-shm differ diff --git a/data/taskmate.db-wal b/data/taskmate.db-wal index 3af8f89..c2c28f3 100644 Binary files a/data/taskmate.db-wal and b/data/taskmate.db-wal differ diff --git a/frontend/css/board.css b/frontend/css/board.css index bdc4ad8..27e50b0 100644 --- a/frontend/css/board.css +++ b/frontend/css/board.css @@ -609,12 +609,19 @@ border-bottom: none; border-radius: var(--radius-xl) var(--radius-xl) 0 0; cursor: grab; + user-select: none; + -webkit-user-select: none; } .column-header:active { cursor: grabbing; } +.column-header.dragging, +.column-header[draggable="true"]:active { + cursor: grabbing; +} + .column-title { display: flex; align-items: center; @@ -750,6 +757,24 @@ transform: rotate(3deg); } +/* Column Dragging */ +.column.dragging { + opacity: 0.6; + transform: scale(0.98); + box-shadow: var(--shadow-xl); + z-index: 1000; +} + +.column.drag-over-left { + border-left: 4px solid var(--primary) !important; + margin-left: -2px; +} + +.column.drag-over-right { + border-right: 4px solid var(--primary) !important; + margin-right: -2px; +} + .task-card.overdue { border-left: 4px solid var(--error); } diff --git a/frontend/css/modal.css b/frontend/css/modal.css index 11e8c66..1c11d1d 100644 --- a/frontend/css/modal.css +++ b/frontend/css/modal.css @@ -270,10 +270,44 @@ .subtask-item { display: flex; align-items: center; - gap: var(--spacing-3); - padding: var(--spacing-3); + gap: var(--spacing-2); + padding: var(--spacing-2) var(--spacing-3); background: var(--bg-tertiary); border-radius: var(--radius-lg); + transition: all var(--transition-fast); + border: 2px solid transparent; +} + +.subtask-item.dragging { + opacity: 0.5; + background: var(--bg-secondary); +} + +.subtask-item.drag-over-top { + border-top-color: var(--primary); +} + +.subtask-item.drag-over-bottom { + border-bottom-color: var(--primary); +} + +/* Drag Handle */ +.subtask-drag-handle { + cursor: grab; + color: var(--text-muted); + font-size: var(--text-xs); + padding: 2px 4px; + user-select: none; + opacity: 0.5; + transition: opacity var(--transition-fast); +} + +.subtask-item:hover .subtask-drag-handle { + opacity: 1; +} + +.subtask-drag-handle:active { + cursor: grabbing; } .subtask-item input[type="checkbox"] { @@ -299,19 +333,33 @@ color: var(--text-muted); } +/* Subtask Actions */ +.subtask-actions { + display: flex; + gap: var(--spacing-1); + opacity: 0; + transition: opacity var(--transition-fast); +} + +.subtask-item:hover .subtask-actions { + opacity: 1; +} + +.subtask-edit, .subtask-delete { - padding: 4px; + padding: 4px 6px; color: var(--text-muted); background: none; border: none; cursor: pointer; - opacity: 0; transition: all var(--transition-fast); border-radius: var(--radius-md); + font-size: var(--text-sm); } -.subtask-item:hover .subtask-delete { - opacity: 1; +.subtask-edit:hover { + color: var(--primary); + background: var(--primary-light); } .subtask-delete:hover { @@ -319,6 +367,17 @@ background: var(--error-bg); } +/* Edit Input */ +.subtask-edit-input { + flex: 1; + padding: var(--spacing-1) var(--spacing-2); + font-size: var(--text-sm); + background: var(--bg-card); + border: 1px solid var(--primary); + border-radius: var(--radius-md); + outline: none; +} + /* Add Subtask Form */ .add-subtask-form { display: flex; @@ -333,6 +392,7 @@ flex: 1; font-size: var(--text-sm); color: var(--text-primary); + cursor: text; } /* Links */ diff --git a/frontend/js/board.js b/frontend/js/board.js index 7c0e82c..106e65f 100644 --- a/frontend/js/board.js +++ b/frontend/js/board.js @@ -179,12 +179,14 @@ class BoardManager { const columnEl = createElement('div', { className: 'column', - dataset: { columnId: column.id }, - draggable: 'true' + dataset: { columnId: column.id } }); - // Header with column color - const header = createElement('div', { className: 'column-header' }); + // Header with column color - draggable + const header = createElement('div', { + className: 'column-header', + draggable: 'true' + }); // Apply column color to header background const columnColor = column.color || '#6B7280'; @@ -536,6 +538,7 @@ class BoardManager { handleDragStart(e) { const taskCard = e.target.closest('.task-card'); + const header = e.target.closest('.column-header'); const column = e.target.closest('.column'); if (taskCard) { @@ -548,7 +551,8 @@ class BoardManager { type: 'task', taskId: parseInt(taskCard.dataset.taskId) }); - } else if (column && e.target.closest('.column-header')) { + } else if (header && column) { + // Header wird gezogen -> ganze Spalte verschieben this.draggedColumn = column; column.classList.add('dragging'); e.dataTransfer.effectAllowed = 'move'; @@ -575,6 +579,10 @@ class BoardManager { // Remove all drop indicators $$('.column-body.drag-over').forEach(el => el.classList.remove('drag-over')); $$('.drop-indicator').forEach(el => el.remove()); + // Remove column drag indicators + $$('.column.drag-over-left, .column.drag-over-right').forEach(el => { + el.classList.remove('drag-over-left', 'drag-over-right'); + }); store.setDragState(null); } @@ -597,32 +605,44 @@ class BoardManager { } } else if (dragState.type === 'column') { const column = e.target.closest('.column'); + + // Entferne alle vorherigen Drag-Over-Klassen + $$('.column.drag-over-left, .column.drag-over-right').forEach(col => { + if (col !== column) { + col.classList.remove('drag-over-left', 'drag-over-right'); + } + }); + if (column && column !== this.draggedColumn) { const rect = column.getBoundingClientRect(); const midpoint = rect.left + rect.width / 2; if (e.clientX < midpoint) { - column.style.borderLeft = '3px solid var(--accent)'; - column.style.borderRight = ''; + column.classList.add('drag-over-left'); + column.classList.remove('drag-over-right'); } else { - column.style.borderRight = '3px solid var(--accent)'; - column.style.borderLeft = ''; + column.classList.add('drag-over-right'); + column.classList.remove('drag-over-left'); } } } } handleDragLeave(e) { - const columnBody = e.target.closest('.column-body'); - if (columnBody && !columnBody.contains(e.relatedTarget)) { - columnBody.classList.remove('drag-over'); - $$('.drop-indicator', columnBody).forEach(el => el.remove()); - } + const dragState = store.get('dragState'); - const column = e.target.closest('.column'); - if (column) { - column.style.borderLeft = ''; - column.style.borderRight = ''; + if (dragState?.type === 'task') { + const columnBody = e.target.closest('.column-body'); + if (columnBody && !columnBody.contains(e.relatedTarget)) { + columnBody.classList.remove('drag-over'); + $$('.drop-indicator', columnBody).forEach(el => el.remove()); + } + } else if (dragState?.type === 'column') { + const column = e.target.closest('.column'); + // Nur entfernen wenn wirklich die Spalte verlassen wird + if (column && !column.contains(e.relatedTarget)) { + column.classList.remove('drag-over-left', 'drag-over-right'); + } } } @@ -664,18 +684,45 @@ class BoardManager { this.moveTask(taskId, columnId, position); } else if (dragState.type === 'column') { const targetColumn = e.target.closest('.column'); - if (!targetColumn || targetColumn === this.draggedColumn) return; + + if (!targetColumn || targetColumn === this.draggedColumn) { + // Cleanup + $$('.column.drag-over-left, .column.drag-over-right').forEach(el => { + el.classList.remove('drag-over-left', 'drag-over-right'); + }); + return; + } const columns = store.get('columns'); const fromIndex = columns.findIndex(c => c.id === dragState.columnId); - const toIndex = columns.findIndex(c => c.id === parseInt(targetColumn.dataset.columnId)); + let toIndex = columns.findIndex(c => c.id === parseInt(targetColumn.dataset.columnId)); - if (fromIndex !== -1 && toIndex !== -1) { + // Berechne Position basierend auf Maus-Position (links oder rechts der Ziel-Spalte) + const rect = targetColumn.getBoundingClientRect(); + const midpoint = rect.left + rect.width / 2; + const dropOnRight = e.clientX > midpoint; + + // Wenn rechts gedroppt und von links kommend, nach rechts verschieben + if (dropOnRight && fromIndex < toIndex) { + // toIndex bleibt gleich (Position nach der Ziel-Spalte) + } else if (dropOnRight && fromIndex > toIndex) { + // Von rechts kommend, rechts droppend -> nach der Ziel-Spalte + toIndex = toIndex + 1; + } else if (!dropOnRight && fromIndex > toIndex) { + // toIndex bleibt gleich (Position vor der Ziel-Spalte) + } else if (!dropOnRight && fromIndex < toIndex) { + // Von links kommend, links droppend -> vor der Ziel-Spalte + toIndex = toIndex - 1; + } + + if (fromIndex !== -1 && toIndex !== -1 && fromIndex !== toIndex) { this.reorderColumns(fromIndex, toIndex); } - targetColumn.style.borderLeft = ''; - targetColumn.style.borderRight = ''; + // Cleanup + $$('.column.drag-over-left, .column.drag-over-right').forEach(el => { + el.classList.remove('drag-over-left', 'drag-over-right'); + }); } } @@ -948,7 +995,8 @@ class BoardManager { store.reorderColumns(columnIds); try { - await api.reorderColumns(projectId, columnIds); + // API erwartet: columnId und newPosition + await api.reorderColumns(projectId, moved.id, toIndex); syncManager.notifyColumnsReordered(columnIds); } catch (error) { console.error('Failed to reorder columns:', error); diff --git a/frontend/js/task-modal.js b/frontend/js/task-modal.js index 13f6ca7..a3843f8 100644 --- a/frontend/js/task-modal.js +++ b/frontend/js/task-modal.js @@ -909,26 +909,54 @@ class TaskModalManager { clearElement(container); - this.subtasks.forEach(subtask => { + this.subtasks.forEach((subtask, index) => { const item = createElement('div', { className: `subtask-item ${subtask.completed ? 'completed' : ''}`, - dataset: { subtaskId: subtask.id } + dataset: { subtaskId: subtask.id, position: index }, + draggable: 'true' }, [ + // Drag Handle + createElement('span', { + className: 'subtask-drag-handle', + title: 'Ziehen zum Verschieben' + }, ['⋮⋮']), + // Checkbox createElement('input', { type: 'checkbox', checked: subtask.completed, onchange: () => this.toggleSubtask(subtask.id) }), + // Titel (Doppelklick zum Bearbeiten) createElement('span', { - className: 'subtask-title' + className: 'subtask-title', + ondblclick: (e) => this.startEditSubtask(subtask.id, e.target) }, [subtask.title]), - createElement('button', { - type: 'button', - className: 'subtask-delete', - onclick: () => this.deleteSubtask(subtask.id) - }, ['×']) + // Aktionen + createElement('div', { + className: 'subtask-actions' + }, [ + createElement('button', { + type: 'button', + className: 'subtask-edit', + title: 'Bearbeiten', + onclick: (e) => this.startEditSubtask(subtask.id, e.target.closest('.subtask-item').querySelector('.subtask-title')) + }, ['✎']), + createElement('button', { + type: 'button', + className: 'subtask-delete', + title: 'Löschen', + onclick: () => this.deleteSubtask(subtask.id) + }, ['×']) + ]) ]); + // Drag & Drop Events + item.addEventListener('dragstart', (e) => this.handleSubtaskDragStart(e, subtask.id, index)); + item.addEventListener('dragover', (e) => this.handleSubtaskDragOver(e)); + item.addEventListener('dragleave', (e) => this.handleSubtaskDragLeave(e)); + item.addEventListener('drop', (e) => this.handleSubtaskDrop(e, subtask.id, index)); + item.addEventListener('dragend', (e) => this.handleSubtaskDragEnd(e)); + container.appendChild(item); }); @@ -936,6 +964,136 @@ class TaskModalManager { this.updateSubtaskProgress(); } + // Subtask Drag & Drop + handleSubtaskDragStart(e, subtaskId, position) { + e.dataTransfer.effectAllowed = 'move'; + e.dataTransfer.setData('text/plain', JSON.stringify({ subtaskId, position })); + e.target.classList.add('dragging'); + this.draggedSubtaskId = subtaskId; + } + + handleSubtaskDragOver(e) { + e.preventDefault(); + e.dataTransfer.dropEffect = 'move'; + const item = e.target.closest('.subtask-item'); + if (item && !item.classList.contains('dragging')) { + const rect = item.getBoundingClientRect(); + const midpoint = rect.top + rect.height / 2; + item.classList.remove('drag-over-top', 'drag-over-bottom'); + if (e.clientY < midpoint) { + item.classList.add('drag-over-top'); + } else { + item.classList.add('drag-over-bottom'); + } + } + } + + handleSubtaskDragLeave(e) { + const item = e.target.closest('.subtask-item'); + if (item) { + item.classList.remove('drag-over-top', 'drag-over-bottom'); + } + } + + handleSubtaskDragEnd(e) { + e.target.classList.remove('dragging'); + $$('.subtask-item').forEach(item => { + item.classList.remove('drag-over-top', 'drag-over-bottom'); + }); + this.draggedSubtaskId = null; + } + + async handleSubtaskDrop(e, targetSubtaskId, targetPosition) { + e.preventDefault(); + const item = e.target.closest('.subtask-item'); + if (item) { + item.classList.remove('drag-over-top', 'drag-over-bottom'); + } + + if (!this.draggedSubtaskId || this.draggedSubtaskId === targetSubtaskId) return; + + const draggedIndex = this.subtasks.findIndex(s => s.id === this.draggedSubtaskId); + if (draggedIndex === -1) return; + + // Berechne neue Position basierend auf Drop-Position + const rect = item.getBoundingClientRect(); + const midpoint = rect.top + rect.height / 2; + let newPosition = targetPosition; + if (e.clientY > midpoint && draggedIndex < targetPosition) { + // Nach unten, hinter das Ziel + newPosition = targetPosition; + } else if (e.clientY > midpoint && draggedIndex > targetPosition) { + newPosition = targetPosition + 1; + } else if (e.clientY <= midpoint && draggedIndex > targetPosition) { + newPosition = targetPosition; + } else if (e.clientY <= midpoint && draggedIndex < targetPosition) { + newPosition = targetPosition - 1; + } + + if (newPosition === draggedIndex) return; + + // Lokale Reihenfolge aktualisieren + const [moved] = this.subtasks.splice(draggedIndex, 1); + this.subtasks.splice(newPosition, 0, moved); + this.renderSubtasks(); + + // API-Call + if (this.mode === 'edit' && this.taskId) { + const projectId = store.get('currentProjectId'); + try { + await api.reorderSubtasks(projectId, this.taskId, this.draggedSubtaskId, newPosition); + } catch (error) { + console.error('Fehler beim Neuordnen der Subtask:', error); + } + } + } + + // Subtask bearbeiten + startEditSubtask(subtaskId, titleElement) { + const subtask = this.subtasks.find(s => s.id === subtaskId); + if (!subtask) return; + + const currentTitle = subtask.title; + const input = createElement('input', { + type: 'text', + className: 'subtask-edit-input', + value: currentTitle + }); + + // Titel durch Input ersetzen + titleElement.replaceWith(input); + input.focus(); + input.select(); + + const saveEdit = async () => { + const newTitle = input.value.trim(); + if (newTitle && newTitle !== currentTitle) { + subtask.title = newTitle; + if (this.mode === 'edit' && this.taskId) { + const projectId = store.get('currentProjectId'); + try { + await api.updateSubtask(projectId, this.taskId, subtaskId, { title: newTitle }); + } catch (error) { + console.error('Fehler beim Aktualisieren der Subtask:', error); + subtask.title = currentTitle; // Rollback + } + } + } + this.renderSubtasks(); + }; + + input.addEventListener('blur', saveEdit); + input.addEventListener('keydown', (e) => { + if (e.key === 'Enter') { + e.preventDefault(); + input.blur(); + } else if (e.key === 'Escape') { + subtask.title = currentTitle; // Keine Änderung + this.renderSubtasks(); + } + }); + } + updateSubtaskProgress() { const progressContainer = $('#subtask-progress'); if (!progressContainer) return; diff --git a/frontend/sw.js b/frontend/sw.js index 64a4678..d4805a4 100644 --- a/frontend/sw.js +++ b/frontend/sw.js @@ -4,7 +4,7 @@ * Offline support and caching */ -const CACHE_VERSION = '133'; +const CACHE_VERSION = '138'; const CACHE_NAME = 'taskmate-v' + CACHE_VERSION; const STATIC_CACHE_NAME = 'taskmate-static-v' + CACHE_VERSION; const DYNAMIC_CACHE_NAME = 'taskmate-dynamic-v' + CACHE_VERSION; diff --git a/logs/app.log b/logs/app.log index 6522b93..477ae1a 100644 --- a/logs/app.log +++ b/logs/app.log @@ -45604,3 +45604,1229 @@ hint: See the 'Note about fast-forwards' in 'git push --help' for details. [2025-12-30T19:16:57.258Z] [INFO] POST /api/auth/refresh 200 8ms [2025-12-30T19:17:01.350Z] [INFO] POST /api/auth/refresh 200 12ms [2025-12-30T19:17:06.156Z] [INFO] POST /api/auth/refresh 200 8ms +[2025-12-30T19:17:07.261Z] [INFO] Commit mit Autor: HG +[2025-12-30T19:17:07.425Z] [INFO] POST /api/git/server/commit 200 309ms +[2025-12-30T19:17:07.499Z] [INFO] GET /api/git/server/status 200 38ms +[2025-12-30T19:17:07.514Z] [INFO] GET /api/git/server/branches 304 51ms +[2025-12-30T19:17:07.526Z] [INFO] GET /api/git/server/commits?limit=10 200 24ms +[2025-12-30T19:17:08.131Z] [INFO] POST /api/auth/refresh 200 11ms +[2025-12-30T19:17:09.904Z] [INFO] POST /api/auth/refresh 200 8ms +[2025-12-30T19:17:13.520Z] [INFO] POST /api/git/server/push 200 2226ms +[2025-12-30T19:17:13.535Z] [INFO] POST /api/auth/refresh 200 12ms +[2025-12-30T19:17:13.572Z] [INFO] GET /api/git/server/branches 304 16ms +[2025-12-30T19:17:13.622Z] [INFO] GET /api/git/server/status 200 48ms +[2025-12-30T19:17:13.645Z] [INFO] GET /api/git/server/commits?limit=10 304 17ms +[2025-12-30T19:17:16.601Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:17:20.654Z] [INFO] POST /api/auth/refresh 200 9ms +[2025-12-30T19:17:22.341Z] [INFO] GET /api/tasks/6 200 12ms +[2025-12-30T19:17:22.383Z] [INFO] GET /api/subtasks/6 200 6ms +[2025-12-30T19:17:22.396Z] [INFO] GET /api/comments/6 304 4ms +[2025-12-30T19:17:22.399Z] [INFO] GET /api/links/6 304 3ms +[2025-12-30T19:17:22.405Z] [INFO] GET /api/files/6 304 5ms +[2025-12-30T19:17:22.430Z] [INFO] GET /api/tasks/6/history 404 5ms +[2025-12-30T19:17:22.470Z] [INFO] GET /api/files/preview/2?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJIRyIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwiaWF0IjoxNzY3MTIyMjQwLCJleHAiOjE3NjcxMjI4NDB9.jL_oJaiOlQN56G0st6DE-7iVAiR-qcRMqjOxQceUkt8 200 19ms +[2025-12-30T19:17:23.322Z] [INFO] POST /api/auth/refresh 200 11ms +[2025-12-30T19:17:29.541Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2025-12-30T19:17:29.544Z] [INFO] PUT /api/tasks/6 200 18ms +[2025-12-30T19:17:30.536Z] [INFO] POST /api/auth/refresh 200 10ms +[2025-12-30T19:17:46.706Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:17:47.558Z] [INFO] GET / 200 7ms +[2025-12-30T19:17:47.633Z] [INFO] GET /css/variables.css 200 7ms +[2025-12-30T19:17:47.636Z] [INFO] GET /css/base.css 200 6ms +[2025-12-30T19:17:47.664Z] [INFO] GET /css/components.css 200 3ms +[2025-12-30T19:17:47.674Z] [INFO] GET /css/board.css 200 7ms +[2025-12-30T19:17:47.680Z] [INFO] GET /css/modal.css 200 3ms +[2025-12-30T19:17:47.697Z] [INFO] GET /css/list.css 200 11ms +[2025-12-30T19:17:47.699Z] [INFO] GET /css/calendar.css 200 14ms +[2025-12-30T19:17:47.700Z] [INFO] GET /css/admin.css 200 9ms +[2025-12-30T19:17:47.706Z] [INFO] GET /css/proposals.css 200 4ms +[2025-12-30T19:17:47.720Z] [INFO] GET /css/notifications.css 200 4ms +[2025-12-30T19:17:47.727Z] [INFO] GET /css/gitea.css 200 10ms +[2025-12-30T19:17:47.740Z] [INFO] GET /css/responsive.css 200 9ms +[2025-12-30T19:17:47.743Z] [INFO] GET /js/app.js 200 5ms +[2025-12-30T19:17:47.806Z] [INFO] GET /js/store.js 200 13ms +[2025-12-30T19:17:47.809Z] [INFO] GET /js/auth.js 200 13ms +[2025-12-30T19:17:47.812Z] [INFO] GET /js/api.js 200 12ms +[2025-12-30T19:17:47.813Z] [INFO] GET /js/board.js 200 10ms +[2025-12-30T19:17:47.814Z] [INFO] GET /js/sync.js 200 7ms +[2025-12-30T19:17:47.825Z] [INFO] GET /js/offline.js 200 14ms +[2025-12-30T19:17:47.831Z] [INFO] GET /js/task-modal.js 200 4ms +[2025-12-30T19:17:47.836Z] [INFO] GET /js/calendar.js 200 4ms +[2025-12-30T19:17:47.840Z] [INFO] GET /js/list.js 200 5ms +[2025-12-30T19:17:47.859Z] [INFO] GET /js/shortcuts.js 200 5ms +[2025-12-30T19:17:47.861Z] [INFO] GET /js/undo.js 200 5ms +[2025-12-30T19:17:47.875Z] [INFO] GET /js/admin.js 200 7ms +[2025-12-30T19:17:47.879Z] [INFO] GET /js/gitea.js 200 9ms +[2025-12-30T19:17:47.881Z] [INFO] GET /js/notifications.js 200 5ms +[2025-12-30T19:17:47.881Z] [INFO] GET /js/proposals.js 200 8ms +[2025-12-30T19:17:47.884Z] [INFO] GET /js/utils.js 200 4ms +[2025-12-30T19:17:48.224Z] [INFO] GET /assets/icons/task.svg 200 3ms +[2025-12-30T19:17:49.849Z] [INFO] GET /sw.js 200 5ms +[2025-12-30T19:17:49.892Z] [INFO] GET / 304 3ms +[2025-12-30T19:17:49.895Z] [INFO] GET /css/variables.css 304 2ms +[2025-12-30T19:17:49.897Z] [INFO] GET /index.html 200 7ms +[2025-12-30T19:17:49.914Z] [INFO] GET /css/base.css 304 1ms +[2025-12-30T19:17:49.916Z] [INFO] GET /css/components.css 304 1ms +[2025-12-30T19:17:49.925Z] [INFO] GET /sw.js 200 2ms +[2025-12-30T19:17:49.930Z] [INFO] GET /css/board.css 304 1ms +[2025-12-30T19:17:49.939Z] [INFO] GET /css/modal.css 304 2ms +[2025-12-30T19:17:49.945Z] [INFO] GET /css/calendar.css 304 1ms +[2025-12-30T19:17:49.956Z] [INFO] GET /css/responsive.css 304 1ms +[2025-12-30T19:17:49.958Z] [INFO] GET /js/app.js 304 1ms +[2025-12-30T19:17:49.968Z] [INFO] GET /js/utils.js 304 2ms +[2025-12-30T19:17:49.978Z] [INFO] GET /js/api.js 304 2ms +[2025-12-30T19:17:49.982Z] [INFO] GET /js/auth.js 304 2ms +[2025-12-30T19:17:49.986Z] [INFO] GET /js/store.js 304 1ms +[2025-12-30T19:17:49.999Z] [INFO] GET /js/sync.js 304 2ms +[2025-12-30T19:17:50.006Z] [INFO] GET /js/offline.js 304 1ms +[2025-12-30T19:17:50.012Z] [INFO] GET /js/board.js 304 1ms +[2025-12-30T19:17:50.033Z] [INFO] GET /js/task-modal.js 304 1ms +[2025-12-30T19:17:50.036Z] [INFO] GET /js/calendar.js 304 1ms +[2025-12-30T19:17:50.057Z] [INFO] GET /js/list.js 304 3ms +[2025-12-30T19:17:50.060Z] [INFO] GET /js/shortcuts.js 304 2ms +[2025-12-30T19:17:50.065Z] [INFO] GET /js/undo.js 304 1ms +[2025-12-30T19:17:50.090Z] [INFO] GET /js/admin.js 304 1ms +[2025-12-30T19:17:50.094Z] [INFO] GET /js/tour.js 200 6ms +[2025-12-30T19:17:50.099Z] [INFO] GET /js/proposals.js 304 2ms +[2025-12-30T19:17:50.117Z] [INFO] GET /js/notifications.js 304 1ms +[2025-12-30T19:17:50.125Z] [INFO] GET /js/gitea.js 304 1ms +[2025-12-30T19:17:50.131Z] [INFO] GET /css/list.css 304 1ms +[2025-12-30T19:17:50.157Z] [INFO] GET /css/admin.css 304 3ms +[2025-12-30T19:17:50.162Z] [INFO] GET /css/proposals.css 304 2ms +[2025-12-30T19:17:50.178Z] [INFO] GET /css/notifications.css 304 1ms +[2025-12-30T19:17:50.194Z] [INFO] GET /css/gitea.css 304 1ms +[2025-12-30T19:17:53.264Z] [INFO] Login erfolgreich: momohomma@googlemail.com +[2025-12-30T19:17:53.265Z] [INFO] POST /api/auth/login 200 607ms +[2025-12-30T19:17:53.303Z] [INFO] GET /api/auth/users 200 8ms +[2025-12-30T19:17:53.321Z] [INFO] Socket connected: MH (zmMNUZqFWcoc9QR5AAAO) +[2025-12-30T19:17:53.331Z] [INFO] Socket connected: MH (NXZJdvLhXpQLYG7xAAAP) +[2025-12-30T19:17:53.339Z] [INFO] GET /api/projects 200 5ms +[2025-12-30T19:17:53.362Z] [INFO] MH joined project:[object Object] +[2025-12-30T19:17:53.383Z] [INFO] GET /api/stats/dashboard?projectId=2 200 13ms +[2025-12-30T19:17:53.395Z] [INFO] GET /api/tasks/project/2 200 11ms +[2025-12-30T19:17:53.400Z] [INFO] GET /api/columns/2 200 4ms +[2025-12-30T19:17:53.405Z] [INFO] GET /api/labels/2 200 5ms +[2025-12-30T19:17:53.448Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 4ms +[2025-12-30T19:17:53.480Z] [INFO] GET /api/notifications 200 9ms +[2025-12-30T19:18:16.798Z] [INFO] GET /api/health 200 1ms +[2025-12-30T19:18:46.902Z] [INFO] GET /api/health 200 4ms +[2025-12-30T19:19:00.040Z] [INFO] POST /api/auth/refresh 200 8ms +[2025-12-30T19:19:01.450Z] [INFO] GET / 200 2ms +[2025-12-30T19:19:01.496Z] [INFO] Socket disconnected: MH (NXZJdvLhXpQLYG7xAAAP) +[2025-12-30T19:19:01.503Z] [INFO] Socket disconnected: MH (zmMNUZqFWcoc9QR5AAAO) +[2025-12-30T19:19:01.520Z] [INFO] GET /css/variables.css 200 6ms +[2025-12-30T19:19:01.521Z] [INFO] GET /css/base.css 200 6ms +[2025-12-30T19:19:01.524Z] [INFO] GET /css/calendar.css 200 7ms +[2025-12-30T19:19:01.529Z] [INFO] GET /css/board.css 200 11ms +[2025-12-30T19:19:01.536Z] [INFO] GET /css/components.css 200 13ms +[2025-12-30T19:19:01.539Z] [INFO] GET /css/modal.css 200 14ms +[2025-12-30T19:19:01.548Z] [INFO] GET /css/list.css 200 2ms +[2025-12-30T19:19:01.550Z] [INFO] GET /css/admin.css 200 3ms +[2025-12-30T19:19:01.571Z] [INFO] GET /css/proposals.css 200 8ms +[2025-12-30T19:19:01.574Z] [INFO] GET /css/notifications.css 200 5ms +[2025-12-30T19:19:01.587Z] [INFO] GET /css/responsive.css 200 6ms +[2025-12-30T19:19:01.590Z] [INFO] GET /css/gitea.css 200 7ms +[2025-12-30T19:19:01.592Z] [INFO] GET /js/app.js 200 4ms +[2025-12-30T19:19:01.642Z] [INFO] GET /js/app.js 200 3ms +[2025-12-30T19:19:01.674Z] [INFO] GET /js/api.js 200 6ms +[2025-12-30T19:19:01.677Z] [INFO] GET /js/auth.js 200 7ms +[2025-12-30T19:19:01.680Z] [INFO] GET /js/offline.js 200 8ms +[2025-12-30T19:19:01.685Z] [INFO] GET /js/store.js 200 9ms +[2025-12-30T19:19:01.688Z] [INFO] GET /js/board.js 200 9ms +[2025-12-30T19:19:01.693Z] [INFO] GET /js/sync.js 200 9ms +[2025-12-30T19:19:01.711Z] [INFO] GET /js/calendar.js 200 6ms +[2025-12-30T19:19:01.714Z] [INFO] GET /js/task-modal.js 200 7ms +[2025-12-30T19:19:01.719Z] [INFO] GET /js/list.js 200 4ms +[2025-12-30T19:19:01.723Z] [INFO] GET /js/shortcuts.js 200 2ms +[2025-12-30T19:19:01.742Z] [INFO] GET /js/api.js 200 3ms +[2025-12-30T19:19:01.755Z] [INFO] GET /js/undo.js 200 2ms +[2025-12-30T19:19:01.800Z] [INFO] GET /js/admin.js 200 27ms +[2025-12-30T19:19:01.809Z] [INFO] GET /js/proposals.js 200 30ms +[2025-12-30T19:19:01.813Z] [INFO] GET /js/notifications.js 200 26ms +[2025-12-30T19:19:01.817Z] [INFO] GET /js/gitea.js 200 22ms +[2025-12-30T19:19:01.820Z] [INFO] GET /js/utils.js 200 13ms +[2025-12-30T19:19:01.821Z] [INFO] GET /js/auth.js 200 10ms +[2025-12-30T19:19:01.825Z] [INFO] GET /js/offline.js 200 10ms +[2025-12-30T19:19:01.828Z] [INFO] GET /js/store.js 200 10ms +[2025-12-30T19:19:01.831Z] [INFO] GET /js/sync.js 200 8ms +[2025-12-30T19:19:01.833Z] [INFO] GET /js/calendar.js 200 7ms +[2025-12-30T19:19:01.836Z] [INFO] GET /js/task-modal.js 200 7ms +[2025-12-30T19:19:01.877Z] [INFO] POST /api/auth/refresh 200 8ms +[2025-12-30T19:19:01.879Z] [INFO] GET /js/board.js 200 17ms +[2025-12-30T19:19:01.881Z] [INFO] GET /js/list.js 200 17ms +[2025-12-30T19:19:01.886Z] [INFO] GET /js/shortcuts.js 200 3ms +[2025-12-30T19:19:01.892Z] [INFO] GET /api/auth/users 200 4ms +[2025-12-30T19:19:01.950Z] [INFO] GET /api/auth/users 304 7ms +[2025-12-30T19:19:01.952Z] [INFO] GET /assets/icons/task.svg 200 15ms +[2025-12-30T19:19:01.978Z] [INFO] Socket connected: MH (BxZh2YYHPH5Z6-9bAAAR) +[2025-12-30T19:19:01.987Z] [INFO] GET /api/projects 304 5ms +[2025-12-30T19:19:02.043Z] [INFO] MH joined project:[object Object] +[2025-12-30T19:19:02.066Z] [INFO] GET /api/tasks/project/2 304 22ms +[2025-12-30T19:19:02.071Z] [INFO] GET /api/stats/dashboard?projectId=2 304 24ms +[2025-12-30T19:19:02.075Z] [INFO] GET /api/columns/2 304 3ms +[2025-12-30T19:19:02.080Z] [INFO] GET /api/labels/2 304 4ms +[2025-12-30T19:19:02.135Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 4ms +[2025-12-30T19:19:02.143Z] [INFO] GET /js/undo.js 200 4ms +[2025-12-30T19:19:02.146Z] [INFO] GET /js/admin.js 200 5ms +[2025-12-30T19:19:02.148Z] [INFO] GET /js/proposals.js 200 4ms +[2025-12-30T19:19:02.151Z] [INFO] GET /js/notifications.js 200 6ms +[2025-12-30T19:19:02.153Z] [INFO] GET /js/gitea.js 200 4ms +[2025-12-30T19:19:02.154Z] [INFO] GET /js/utils.js 200 4ms +[2025-12-30T19:19:02.193Z] [INFO] GET /api/notifications 304 9ms +[2025-12-30T19:19:16.999Z] [INFO] GET /api/health 200 1ms +[2025-12-30T19:19:47.109Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:20:17.234Z] [INFO] GET /api/health 200 4ms +[2025-12-30T19:20:17.750Z] [INFO] POST /api/auth/refresh 200 23ms +[2025-12-30T19:20:25.030Z] [INFO] GET /api/tasks/6 200 10ms +[2025-12-30T19:20:25.073Z] [INFO] GET /api/subtasks/6 304 7ms +[2025-12-30T19:20:25.109Z] [INFO] GET /api/links/6 304 6ms +[2025-12-30T19:20:25.135Z] [INFO] GET /api/files/6 304 5ms +[2025-12-30T19:20:25.146Z] [INFO] GET /api/comments/6 304 5ms +[2025-12-30T19:20:25.158Z] [INFO] GET /api/tasks/6/history 404 10ms +[2025-12-30T19:20:25.186Z] [INFO] GET /api/files/preview/2?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJIRyIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwiaWF0IjoxNzY3MTIyNDE3LCJleHAiOjE3NjcxMjMwMTd9.r5H_KbJWpLEy_Z12kr8IFe8b-n6s-DhmSKe-t3pFCLI 200 13ms +[2025-12-30T19:20:26.049Z] [INFO] POST /api/auth/refresh 200 15ms +[2025-12-30T19:20:47.359Z] [INFO] GET /api/health 200 5ms +[2025-12-30T19:20:52.544Z] [INFO] GET /api/files/preview/2?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJIRyIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwiaWF0IjoxNzY3MTIyNDI2LCJleHAiOjE3NjcxMjMwMjZ9.MbBHLtCmZpYvxtDZdfI5hxQj9QExNI36YM0NTh01LkI 200 4ms +[2025-12-30T19:20:53.551Z] [INFO] POST /api/auth/refresh 200 10ms +[2025-12-30T19:20:55.406Z] [INFO] POST /api/auth/refresh 200 10ms +[2025-12-30T19:21:09.574Z] [INFO] GET /api/tasks/12 200 11ms +[2025-12-30T19:21:09.598Z] [INFO] GET /api/subtasks/12 200 3ms +[2025-12-30T19:21:09.624Z] [INFO] GET /api/links/12 200 3ms +[2025-12-30T19:21:09.640Z] [INFO] GET /api/files/12 200 5ms +[2025-12-30T19:21:09.647Z] [INFO] GET /api/comments/12 200 4ms +[2025-12-30T19:21:09.653Z] [INFO] GET /api/tasks/12/history 404 5ms +[2025-12-30T19:21:10.357Z] [INFO] Aufgabe aktualisiert: ELSTER Zugang (ID: 12) +[2025-12-30T19:21:10.359Z] [INFO] PUT /api/tasks/12 200 9ms +[2025-12-30T19:21:10.985Z] [INFO] GET /api/tasks/13 200 6ms +[2025-12-30T19:21:11.014Z] [INFO] GET /api/subtasks/13 200 9ms +[2025-12-30T19:21:11.018Z] [INFO] GET /api/comments/13 200 12ms +[2025-12-30T19:21:11.022Z] [INFO] GET /api/links/13 200 13ms +[2025-12-30T19:21:11.026Z] [INFO] GET /api/tasks/13/history 404 3ms +[2025-12-30T19:21:11.031Z] [INFO] GET /api/files/13 200 4ms +[2025-12-30T19:21:11.988Z] [INFO] POST /api/auth/refresh 200 5ms +[2025-12-30T19:21:14.743Z] [INFO] Aufgabe gelöscht: TaskMate (ID: 13) +[2025-12-30T19:21:14.746Z] [INFO] DELETE /api/tasks/13 200 9ms +[2025-12-30T19:21:14.769Z] [INFO] PUT /api/tasks/13 404 2ms +[2025-12-30T19:21:15.762Z] [INFO] POST /api/auth/refresh 200 12ms +[2025-12-30T19:21:15.821Z] [INFO] GET /api/tasks/12 200 7ms +[2025-12-30T19:21:15.854Z] [INFO] GET /api/subtasks/12 304 7ms +[2025-12-30T19:21:15.864Z] [INFO] GET /api/comments/12 304 8ms +[2025-12-30T19:21:15.872Z] [INFO] GET /api/links/12 304 6ms +[2025-12-30T19:21:15.880Z] [INFO] GET /api/files/12 304 5ms +[2025-12-30T19:21:15.887Z] [INFO] GET /api/tasks/12/history 404 6ms +[2025-12-30T19:21:16.840Z] [INFO] POST /api/auth/refresh 200 7ms +[2025-12-30T19:21:17.462Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:21:18.112Z] [INFO] Aufgabe gelöscht: ELSTER Zugang (ID: 12) +[2025-12-30T19:21:18.116Z] [INFO] DELETE /api/tasks/12 200 9ms +[2025-12-30T19:21:18.142Z] [INFO] PUT /api/tasks/12 404 5ms +[2025-12-30T19:21:19.125Z] [INFO] POST /api/auth/refresh 200 9ms +[2025-12-30T19:21:43.160Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2025-12-30T19:21:43.162Z] [INFO] PUT /api/tasks/6 200 9ms +[2025-12-30T19:21:44.157Z] [INFO] POST /api/auth/refresh 200 8ms +[2025-12-30T19:21:47.561Z] [INFO] GET /api/health 200 1ms +[2025-12-30T19:22:17.700Z] [INFO] GET /api/health 200 4ms +[2025-12-30T19:22:47.806Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:23:17.893Z] [INFO] GET /api/health 200 3ms +[2025-12-30T19:23:47.995Z] [INFO] GET /api/health 200 1ms +[2025-12-30T19:24:18.096Z] [INFO] GET /api/health 200 1ms +[2025-12-30T19:24:48.211Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:25:18.309Z] [INFO] GET /api/health 200 1ms +[2025-12-30T19:25:48.402Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:26:18.487Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:26:48.581Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:26:59.087Z] [INFO] GET / 200 5ms +[2025-12-30T19:26:59.151Z] [INFO] Socket disconnected: HG (TxhbvUMp5KlCqt05AAAK) +[2025-12-30T19:26:59.154Z] [INFO] Socket disconnected: HG (puaSOtDOJHMxVLNXAAAL) +[2025-12-30T19:26:59.158Z] [INFO] GET /css/variables.css 200 1ms +[2025-12-30T19:26:59.189Z] [INFO] GET /css/base.css 200 2ms +[2025-12-30T19:26:59.226Z] [INFO] GET /css/components.css 200 4ms +[2025-12-30T19:26:59.240Z] [INFO] GET /css/modal.css 200 6ms +[2025-12-30T19:26:59.241Z] [INFO] GET /css/board.css 200 6ms +[2025-12-30T19:26:59.242Z] [INFO] GET /css/calendar.css 200 7ms +[2025-12-30T19:26:59.243Z] [INFO] GET /css/list.css 200 7ms +[2025-12-30T19:26:59.244Z] [INFO] GET /css/admin.css 200 6ms +[2025-12-30T19:26:59.262Z] [INFO] GET /css/proposals.css 200 4ms +[2025-12-30T19:26:59.278Z] [INFO] GET /css/notifications.css 200 4ms +[2025-12-30T19:26:59.286Z] [INFO] GET /css/gitea.css 200 3ms +[2025-12-30T19:26:59.293Z] [INFO] GET /css/responsive.css 200 2ms +[2025-12-30T19:26:59.301Z] [INFO] GET /js/app.js 200 2ms +[2025-12-30T19:26:59.374Z] [INFO] GET /js/store.js 200 8ms +[2025-12-30T19:26:59.386Z] [INFO] GET /js/api.js 200 16ms +[2025-12-30T19:26:59.387Z] [INFO] GET /js/offline.js 200 16ms +[2025-12-30T19:26:59.388Z] [INFO] GET /js/auth.js 200 11ms +[2025-12-30T19:26:59.391Z] [INFO] GET /js/sync.js 200 8ms +[2025-12-30T19:26:59.393Z] [INFO] GET /js/board.js 200 8ms +[2025-12-30T19:26:59.406Z] [INFO] GET /js/task-modal.js 200 2ms +[2025-12-30T19:26:59.416Z] [INFO] GET /js/calendar.js 200 3ms +[2025-12-30T19:26:59.420Z] [INFO] GET /js/shortcuts.js 200 2ms +[2025-12-30T19:26:59.422Z] [INFO] GET /js/list.js 200 4ms +[2025-12-30T19:26:59.428Z] [INFO] GET /js/undo.js 200 4ms +[2025-12-30T19:26:59.436Z] [INFO] GET /js/admin.js 200 1ms +[2025-12-30T19:26:59.444Z] [INFO] GET /js/proposals.js 200 2ms +[2025-12-30T19:26:59.448Z] [INFO] GET /js/notifications.js 200 1ms +[2025-12-30T19:26:59.453Z] [INFO] GET /js/gitea.js 200 2ms +[2025-12-30T19:26:59.456Z] [INFO] GET /js/utils.js 200 4ms +[2025-12-30T19:26:59.526Z] [INFO] POST /api/auth/refresh 200 12ms +[2025-12-30T19:26:59.532Z] [INFO] GET /assets/icons/task.svg 304 4ms +[2025-12-30T19:26:59.541Z] [INFO] GET /api/auth/users 304 10ms +[2025-12-30T19:26:59.588Z] [INFO] GET /api/auth/users 304 3ms +[2025-12-30T19:26:59.621Z] [INFO] Socket connected: HG (9mv-UiS-dWf-n_c2AAAT) +[2025-12-30T19:26:59.626Z] [INFO] GET /api/projects 200 9ms +[2025-12-30T19:26:59.664Z] [INFO] GET /api/columns/2 304 7ms +[2025-12-30T19:26:59.672Z] [INFO] GET /api/stats/dashboard?projectId=2 200 6ms +[2025-12-30T19:26:59.673Z] [INFO] HG joined project:[object Object] +[2025-12-30T19:26:59.684Z] [INFO] GET /api/tasks/project/2 200 10ms +[2025-12-30T19:26:59.690Z] [INFO] GET /api/labels/2 304 15ms +[2025-12-30T19:26:59.729Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 6ms +[2025-12-30T19:26:59.771Z] [INFO] GET /api/notifications 304 5ms +[2025-12-30T19:27:16.753Z] [INFO] Socket disconnected: HG (9mv-UiS-dWf-n_c2AAAT) +[2025-12-30T19:27:18.679Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:27:18.923Z] [INFO] GET / 304 3ms +[2025-12-30T19:27:18.985Z] [INFO] GET /css/variables.css 304 1ms +[2025-12-30T19:27:18.992Z] [INFO] GET /css/base.css 304 2ms +[2025-12-30T19:27:18.994Z] [INFO] GET /css/components.css 304 3ms +[2025-12-30T19:27:18.998Z] [INFO] GET /css/board.css 304 2ms +[2025-12-30T19:27:19.000Z] [INFO] GET /css/calendar.css 304 1ms +[2025-12-30T19:27:19.002Z] [INFO] GET /css/modal.css 304 1ms +[2025-12-30T19:27:19.017Z] [INFO] GET /css/list.css 304 0ms +[2025-12-30T19:27:19.039Z] [INFO] GET /css/admin.css 304 5ms +[2025-12-30T19:27:19.040Z] [INFO] GET /css/responsive.css 304 5ms +[2025-12-30T19:27:19.041Z] [INFO] GET /css/gitea.css 304 5ms +[2025-12-30T19:27:19.043Z] [INFO] GET /css/proposals.css 304 1ms +[2025-12-30T19:27:19.045Z] [INFO] GET /css/notifications.css 304 1ms +[2025-12-30T19:27:19.071Z] [INFO] GET /js/app.js 304 1ms +[2025-12-30T19:27:19.112Z] [INFO] GET /js/store.js 304 2ms +[2025-12-30T19:27:19.115Z] [INFO] GET /js/api.js 304 1ms +[2025-12-30T19:27:19.119Z] [INFO] GET /js/auth.js 304 2ms +[2025-12-30T19:27:19.121Z] [INFO] GET /js/board.js 304 2ms +[2025-12-30T19:27:19.123Z] [INFO] GET /js/sync.js 304 2ms +[2025-12-30T19:27:19.123Z] [INFO] GET /js/offline.js 304 1ms +[2025-12-30T19:27:19.145Z] [INFO] GET /js/task-modal.js 304 1ms +[2025-12-30T19:27:19.146Z] [INFO] GET /js/calendar.js 304 2ms +[2025-12-30T19:27:19.155Z] [INFO] GET /js/shortcuts.js 304 2ms +[2025-12-30T19:27:19.159Z] [INFO] GET /js/list.js 304 2ms +[2025-12-30T19:27:19.160Z] [INFO] GET /js/undo.js 304 2ms +[2025-12-30T19:27:19.171Z] [INFO] GET /js/admin.js 304 1ms +[2025-12-30T19:27:19.176Z] [INFO] GET /js/proposals.js 304 2ms +[2025-12-30T19:27:19.177Z] [INFO] GET /js/notifications.js 304 2ms +[2025-12-30T19:27:19.183Z] [INFO] GET /js/gitea.js 304 1ms +[2025-12-30T19:27:19.187Z] [INFO] GET /js/utils.js 304 1ms +[2025-12-30T19:27:19.237Z] [INFO] POST /api/auth/refresh 200 10ms +[2025-12-30T19:27:19.241Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2025-12-30T19:27:19.245Z] [INFO] GET /api/auth/users 304 4ms +[2025-12-30T19:27:19.291Z] [INFO] GET /api/auth/users 304 8ms +[2025-12-30T19:27:19.335Z] [INFO] GET /api/projects 304 11ms +[2025-12-30T19:27:19.343Z] [INFO] Socket connected: HG (GXOSFBrVY5aUMZxtAAAV) +[2025-12-30T19:27:19.378Z] [INFO] GET /api/columns/2 304 7ms +[2025-12-30T19:27:19.385Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2025-12-30T19:27:19.390Z] [INFO] GET /api/labels/2 304 3ms +[2025-12-30T19:27:19.400Z] [INFO] GET /api/tasks/project/2 304 8ms +[2025-12-30T19:27:19.401Z] [INFO] HG joined project:[object Object] +[2025-12-30T19:27:19.449Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 3ms +[2025-12-30T19:27:19.500Z] [INFO] GET /api/notifications 304 6ms +[2025-12-30T19:27:21.042Z] [INFO] GET /sw.js 200 3ms +[2025-12-30T19:27:21.086Z] [INFO] GET /index.html 304 2ms +[2025-12-30T19:27:21.089Z] [INFO] GET /css/variables.css 304 2ms +[2025-12-30T19:27:21.091Z] [INFO] GET / 304 1ms +[2025-12-30T19:27:21.122Z] [INFO] GET /css/components.css 304 2ms +[2025-12-30T19:27:21.125Z] [INFO] GET /css/base.css 304 2ms +[2025-12-30T19:27:21.130Z] [INFO] GET /css/board.css 304 2ms +[2025-12-30T19:27:21.157Z] [INFO] GET /css/modal.css 304 3ms +[2025-12-30T19:27:21.164Z] [INFO] GET /css/calendar.css 304 3ms +[2025-12-30T19:27:21.169Z] [INFO] GET /css/responsive.css 304 6ms +[2025-12-30T19:27:21.199Z] [INFO] GET /js/app.js 304 2ms +[2025-12-30T19:27:21.201Z] [INFO] GET /js/utils.js 304 1ms +[2025-12-30T19:27:21.209Z] [INFO] GET /js/api.js 304 1ms +[2025-12-30T19:27:21.233Z] [INFO] GET /js/store.js 304 2ms +[2025-12-30T19:27:21.241Z] [INFO] GET /js/auth.js 304 3ms +[2025-12-30T19:27:21.245Z] [INFO] GET /js/sync.js 304 2ms +[2025-12-30T19:27:21.274Z] [INFO] GET /js/offline.js 304 3ms +[2025-12-30T19:27:21.278Z] [INFO] GET /js/board.js 304 2ms +[2025-12-30T19:27:21.281Z] [INFO] GET /js/task-modal.js 304 1ms +[2025-12-30T19:27:21.309Z] [INFO] GET /js/calendar.js 304 2ms +[2025-12-30T19:27:21.314Z] [INFO] GET /js/list.js 304 1ms +[2025-12-30T19:27:21.316Z] [INFO] GET /js/shortcuts.js 304 1ms +[2025-12-30T19:27:21.343Z] [INFO] GET /js/undo.js 304 2ms +[2025-12-30T19:27:21.351Z] [INFO] GET /js/tour.js 304 1ms +[2025-12-30T19:27:21.355Z] [INFO] GET /js/admin.js 304 2ms +[2025-12-30T19:27:21.384Z] [INFO] GET /js/proposals.js 304 1ms +[2025-12-30T19:27:21.396Z] [INFO] GET /js/gitea.js 304 3ms +[2025-12-30T19:27:21.399Z] [INFO] GET /js/notifications.js 304 5ms +[2025-12-30T19:27:21.417Z] [INFO] GET /css/list.css 304 0ms +[2025-12-30T19:27:21.432Z] [INFO] GET /css/admin.css 304 1ms +[2025-12-30T19:27:21.434Z] [INFO] GET /css/proposals.css 304 1ms +[2025-12-30T19:27:21.448Z] [INFO] GET /css/notifications.css 304 1ms +[2025-12-30T19:27:21.462Z] [INFO] GET /css/gitea.css 304 1ms +[2025-12-30T19:27:43.019Z] [INFO] POST /api/auth/refresh 200 9ms +[2025-12-30T19:27:48.784Z] [INFO] GET /api/health 200 1ms +[2025-12-30T19:28:18.862Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:28:34.866Z] [INFO] SIGTERM empfangen, fahre herunter... +[2025-12-30T19:28:46.579Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2025-12-30T19:28:46.653Z] [INFO] Datenbank-Tabellen erstellt +[2025-12-30T19:28:46.657Z] [INFO] Datenbank initialisiert +[2025-12-30T19:28:46.663Z] [INFO] Server läuft auf Port 3000 +[2025-12-30T19:28:46.664Z] [INFO] Umgebung: production +[2025-12-30T19:28:46.665Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2025-12-30T19:28:46.666Z] [INFO] Automatische Backups aktiviert +[2025-12-30T19:28:47.320Z] [INFO] Socket connected: HG (N8r9Q9SSWVe0yQxCAAAB) +[2025-12-30T19:28:47.382Z] [INFO] HG joined project:[object Object] +[2025-12-30T19:28:47.544Z] [INFO] Socket connected: MH (EHgOft2f7tvUO6UZAAAD) +[2025-12-30T19:28:47.579Z] [INFO] MH joined project:[object Object] +[2025-12-30T19:28:50.925Z] [INFO] GET /api/health 200 8ms +[2025-12-30T19:29:21.036Z] [INFO] GET /api/health 200 3ms +[2025-12-30T19:29:37.345Z] [INFO] GET / 200 12ms +[2025-12-30T19:29:37.404Z] [INFO] Socket disconnected: HG (N8r9Q9SSWVe0yQxCAAAB) +[2025-12-30T19:29:37.435Z] [INFO] GET /css/variables.css 200 4ms +[2025-12-30T19:29:37.442Z] [INFO] GET /css/base.css 200 2ms +[2025-12-30T19:29:37.469Z] [INFO] GET /css/components.css 200 4ms +[2025-12-30T19:29:37.477Z] [INFO] GET /css/board.css 200 5ms +[2025-12-30T19:29:37.502Z] [INFO] GET /css/modal.css 200 4ms +[2025-12-30T19:29:37.513Z] [INFO] GET /css/calendar.css 200 7ms +[2025-12-30T19:29:37.515Z] [INFO] GET /css/list.css 200 7ms +[2025-12-30T19:29:37.518Z] [INFO] GET /css/admin.css 200 6ms +[2025-12-30T19:29:37.520Z] [INFO] GET /css/proposals.css 200 6ms +[2025-12-30T19:29:37.533Z] [INFO] GET /css/notifications.css 200 2ms +[2025-12-30T19:29:37.539Z] [INFO] GET /css/gitea.css 200 3ms +[2025-12-30T19:29:37.542Z] [INFO] GET /css/responsive.css 200 1ms +[2025-12-30T19:29:37.568Z] [INFO] GET /js/app.js 200 3ms +[2025-12-30T19:29:37.652Z] [INFO] GET /js/store.js 200 7ms +[2025-12-30T19:29:37.654Z] [INFO] GET /js/api.js 200 8ms +[2025-12-30T19:29:37.657Z] [INFO] GET /js/auth.js 200 8ms +[2025-12-30T19:29:37.661Z] [INFO] GET /js/sync.js 200 10ms +[2025-12-30T19:29:37.665Z] [INFO] GET /js/board.js 200 6ms +[2025-12-30T19:29:37.666Z] [INFO] GET /js/offline.js 200 4ms +[2025-12-30T19:29:37.683Z] [INFO] GET /js/task-modal.js 200 3ms +[2025-12-30T19:29:37.687Z] [INFO] GET /js/calendar.js 200 2ms +[2025-12-30T19:29:37.693Z] [INFO] GET /js/list.js 200 4ms +[2025-12-30T19:29:37.696Z] [INFO] GET /js/shortcuts.js 200 3ms +[2025-12-30T19:29:37.699Z] [INFO] GET /js/undo.js 200 2ms +[2025-12-30T19:29:37.712Z] [INFO] GET /js/admin.js 200 2ms +[2025-12-30T19:29:37.722Z] [INFO] GET /js/proposals.js 200 5ms +[2025-12-30T19:29:37.725Z] [INFO] GET /js/notifications.js 200 6ms +[2025-12-30T19:29:37.731Z] [INFO] GET /js/gitea.js 200 5ms +[2025-12-30T19:29:37.734Z] [INFO] GET /js/utils.js 200 4ms +[2025-12-30T19:29:37.820Z] [INFO] POST /api/auth/refresh 200 12ms +[2025-12-30T19:29:37.831Z] [INFO] GET /api/auth/users 304 9ms +[2025-12-30T19:29:37.833Z] [INFO] GET /assets/icons/task.svg 304 12ms +[2025-12-30T19:29:37.873Z] [INFO] GET /api/auth/users 304 5ms +[2025-12-30T19:29:37.909Z] [INFO] GET /api/projects 304 11ms +[2025-12-30T19:29:37.920Z] [INFO] Socket connected: HG (gAmPeUG-k-EeqxMBAAAF) +[2025-12-30T19:29:37.946Z] [INFO] GET /api/columns/2 304 6ms +[2025-12-30T19:29:37.959Z] [INFO] GET /api/stats/dashboard?projectId=2 304 9ms +[2025-12-30T19:29:37.974Z] [INFO] GET /api/tasks/project/2 304 13ms +[2025-12-30T19:29:37.978Z] [INFO] GET /api/labels/2 304 3ms +[2025-12-30T19:29:37.982Z] [INFO] HG joined project:[object Object] +[2025-12-30T19:29:38.028Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 11ms +[2025-12-30T19:29:38.068Z] [INFO] GET /api/notifications 304 7ms +[2025-12-30T19:29:44.702Z] [INFO] Socket disconnected: HG (gAmPeUG-k-EeqxMBAAAF) +[2025-12-30T19:29:46.694Z] [INFO] Backup erstellt: backup_2025-12-30T19-29-46-667Z.db +[2025-12-30T19:29:46.697Z] [INFO] Altes Backup gelöscht: backup_2025-12-28T16-24-54-155Z.db +[2025-12-30T19:29:46.699Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2025-12-30T19:29:47.621Z] [INFO] GET / 304 4ms +[2025-12-30T19:29:47.687Z] [INFO] GET /css/components.css 304 5ms +[2025-12-30T19:29:47.689Z] [INFO] GET /css/modal.css 304 4ms +[2025-12-30T19:29:47.693Z] [INFO] GET /css/board.css 304 2ms +[2025-12-30T19:29:47.696Z] [INFO] GET /css/calendar.css 304 2ms +[2025-12-30T19:29:47.698Z] [INFO] GET /css/variables.css 304 1ms +[2025-12-30T19:29:47.700Z] [INFO] GET /css/base.css 304 1ms +[2025-12-30T19:29:47.722Z] [INFO] GET /css/admin.css 304 3ms +[2025-12-30T19:29:47.725Z] [INFO] GET /css/list.css 304 2ms +[2025-12-30T19:29:47.732Z] [INFO] GET /css/proposals.css 304 2ms +[2025-12-30T19:29:47.736Z] [INFO] GET /css/notifications.css 304 3ms +[2025-12-30T19:29:47.737Z] [INFO] GET /css/responsive.css 304 3ms +[2025-12-30T19:29:47.738Z] [INFO] GET /css/gitea.css 304 0ms +[2025-12-30T19:29:47.752Z] [INFO] GET /js/app.js 304 0ms +[2025-12-30T19:29:47.804Z] [INFO] GET /js/store.js 304 3ms +[2025-12-30T19:29:47.808Z] [INFO] GET /js/api.js 304 6ms +[2025-12-30T19:29:47.809Z] [INFO] GET /js/auth.js 304 3ms +[2025-12-30T19:29:47.813Z] [INFO] GET /js/offline.js 304 2ms +[2025-12-30T19:29:47.817Z] [INFO] GET /js/board.js 304 2ms +[2025-12-30T19:29:47.819Z] [INFO] GET /js/sync.js 304 1ms +[2025-12-30T19:29:47.831Z] [INFO] GET /js/task-modal.js 304 1ms +[2025-12-30T19:29:47.837Z] [INFO] GET /js/list.js 304 3ms +[2025-12-30T19:29:47.838Z] [INFO] GET /js/calendar.js 304 2ms +[2025-12-30T19:29:47.840Z] [INFO] GET /js/shortcuts.js 304 0ms +[2025-12-30T19:29:47.845Z] [INFO] GET /js/undo.js 304 1ms +[2025-12-30T19:29:47.849Z] [INFO] GET /js/admin.js 304 1ms +[2025-12-30T19:29:47.862Z] [INFO] GET /js/proposals.js 304 3ms +[2025-12-30T19:29:47.873Z] [INFO] GET /js/notifications.js 304 4ms +[2025-12-30T19:29:47.876Z] [INFO] GET /js/utils.js 304 5ms +[2025-12-30T19:29:47.878Z] [INFO] GET /js/gitea.js 304 1ms +[2025-12-30T19:29:47.935Z] [INFO] POST /api/auth/refresh 200 12ms +[2025-12-30T19:29:47.943Z] [INFO] GET /api/auth/users 304 6ms +[2025-12-30T19:29:47.945Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2025-12-30T19:29:47.988Z] [INFO] GET /api/auth/users 304 7ms +[2025-12-30T19:29:48.030Z] [INFO] GET /api/projects 304 8ms +[2025-12-30T19:29:48.038Z] [INFO] Socket connected: HG (uMWe3hCSmNN8kQePAAAH) +[2025-12-30T19:29:48.080Z] [INFO] GET /api/tasks/project/2 304 17ms +[2025-12-30T19:29:48.086Z] [INFO] GET /api/stats/dashboard?projectId=2 304 5ms +[2025-12-30T19:29:48.091Z] [INFO] GET /api/columns/2 304 4ms +[2025-12-30T19:29:48.096Z] [INFO] GET /api/labels/2 304 4ms +[2025-12-30T19:29:48.098Z] [INFO] HG joined project:[object Object] +[2025-12-30T19:29:48.154Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 12ms +[2025-12-30T19:29:48.190Z] [INFO] GET /api/notifications 304 6ms +[2025-12-30T19:29:49.718Z] [INFO] GET /sw.js 200 5ms +[2025-12-30T19:29:49.767Z] [INFO] GET /index.html 304 1ms +[2025-12-30T19:29:49.768Z] [INFO] GET / 304 1ms +[2025-12-30T19:29:49.771Z] [INFO] GET /css/variables.css 304 1ms +[2025-12-30T19:29:49.801Z] [INFO] GET /css/base.css 304 1ms +[2025-12-30T19:29:49.806Z] [INFO] GET /css/board.css 304 1ms +[2025-12-30T19:29:49.808Z] [INFO] GET /css/components.css 304 3ms +[2025-12-30T19:29:49.833Z] [INFO] GET /css/modal.css 304 1ms +[2025-12-30T19:29:49.840Z] [INFO] GET /css/calendar.css 304 1ms +[2025-12-30T19:29:49.842Z] [INFO] GET /css/responsive.css 304 1ms +[2025-12-30T19:29:49.865Z] [INFO] GET /js/app.js 304 1ms +[2025-12-30T19:29:49.870Z] [INFO] GET /js/utils.js 304 1ms +[2025-12-30T19:29:49.873Z] [INFO] GET /js/api.js 304 1ms +[2025-12-30T19:29:49.907Z] [INFO] GET /js/auth.js 304 3ms +[2025-12-30T19:29:49.909Z] [INFO] GET /js/store.js 304 1ms +[2025-12-30T19:29:49.925Z] [INFO] GET /js/sync.js 304 1ms +[2025-12-30T19:29:49.937Z] [INFO] GET /js/offline.js 304 1ms +[2025-12-30T19:29:49.946Z] [INFO] GET /js/board.js 304 1ms +[2025-12-30T19:29:49.956Z] [INFO] GET /js/task-modal.js 304 1ms +[2025-12-30T19:29:49.968Z] [INFO] GET /js/calendar.js 304 1ms +[2025-12-30T19:29:49.976Z] [INFO] GET /js/list.js 304 1ms +[2025-12-30T19:29:49.990Z] [INFO] GET /js/shortcuts.js 304 1ms +[2025-12-30T19:29:49.998Z] [INFO] GET /js/undo.js 304 1ms +[2025-12-30T19:29:50.011Z] [INFO] GET /js/tour.js 304 1ms +[2025-12-30T19:29:50.026Z] [INFO] GET /js/admin.js 304 1ms +[2025-12-30T19:29:50.027Z] [INFO] GET /js/proposals.js 304 0ms +[2025-12-30T19:29:50.046Z] [INFO] GET /js/notifications.js 304 1ms +[2025-12-30T19:29:50.060Z] [INFO] GET /js/gitea.js 304 1ms +[2025-12-30T19:29:50.067Z] [INFO] GET /css/list.css 304 1ms +[2025-12-30T19:29:50.083Z] [INFO] GET /css/admin.css 304 2ms +[2025-12-30T19:29:50.095Z] [INFO] GET /css/proposals.css 304 2ms +[2025-12-30T19:29:50.102Z] [INFO] GET /css/notifications.css 304 1ms +[2025-12-30T19:29:50.120Z] [INFO] GET /css/gitea.css 304 2ms +[2025-12-30T19:29:51.131Z] [INFO] GET /api/health 200 1ms +[2025-12-30T19:30:21.220Z] [INFO] GET /api/health 200 4ms +[2025-12-30T19:30:51.313Z] [INFO] GET /api/health 200 3ms +[2025-12-30T19:31:17.970Z] [INFO] Logout: MH +[2025-12-30T19:31:17.972Z] [INFO] POST /api/auth/logout 200 14ms +[2025-12-30T19:31:17.990Z] [INFO] Socket disconnected: MH (EHgOft2f7tvUO6UZAAAD) +[2025-12-30T19:31:21.416Z] [INFO] GET /api/health 200 1ms +[2025-12-30T19:31:51.520Z] [INFO] GET /api/health 200 1ms +[2025-12-30T19:32:21.636Z] [INFO] GET /api/health 200 4ms +[2025-12-30T19:32:24.029Z] [INFO] SIGTERM empfangen, fahre herunter... +[2025-12-30T19:32:35.727Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2025-12-30T19:32:35.803Z] [INFO] Datenbank-Tabellen erstellt +[2025-12-30T19:32:35.806Z] [INFO] Datenbank initialisiert +[2025-12-30T19:32:35.810Z] [INFO] Server läuft auf Port 3000 +[2025-12-30T19:32:35.810Z] [INFO] Umgebung: production +[2025-12-30T19:32:35.812Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2025-12-30T19:32:35.812Z] [INFO] Automatische Backups aktiviert +[2025-12-30T19:32:36.378Z] [INFO] Socket connected: HG (Y1GYQgHLDf-3LUIWAAAB) +[2025-12-30T19:32:36.515Z] [INFO] HG joined project:[object Object] +[2025-12-30T19:32:39.891Z] [INFO] GET /api/health 200 7ms +[2025-12-30T19:33:09.997Z] [INFO] GET /api/health 200 3ms +[2025-12-30T19:33:35.829Z] [INFO] Altes Backup gelöscht: backup_2025-12-28T16-34-12-984Z.db +[2025-12-30T19:33:35.830Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2025-12-30T19:33:35.826Z] [INFO] Backup erstellt: backup_2025-12-30T19-33-35-814Z.db +[2025-12-30T19:33:40.115Z] [INFO] GET /api/health 200 3ms +[2025-12-30T19:34:10.203Z] [INFO] GET /api/health 200 1ms +[2025-12-30T19:34:40.300Z] [INFO] GET /api/health 200 3ms +[2025-12-30T19:35:10.405Z] [INFO] GET /api/health 200 1ms +[2025-12-30T19:35:40.507Z] [INFO] GET /api/health 200 3ms +[2025-12-30T19:35:44.846Z] [INFO] GET / 200 16ms +[2025-12-30T19:35:44.931Z] [INFO] Socket disconnected: HG (Y1GYQgHLDf-3LUIWAAAB) +[2025-12-30T19:35:44.939Z] [INFO] GET /css/variables.css 200 3ms +[2025-12-30T19:35:44.970Z] [INFO] GET /css/base.css 200 4ms +[2025-12-30T19:35:45.014Z] [INFO] GET /css/components.css 200 11ms +[2025-12-30T19:35:45.016Z] [INFO] GET /css/board.css 200 10ms +[2025-12-30T19:35:45.018Z] [INFO] GET /css/modal.css 200 9ms +[2025-12-30T19:35:45.021Z] [INFO] GET /css/calendar.css 200 9ms +[2025-12-30T19:35:45.023Z] [INFO] GET /css/list.css 200 6ms +[2025-12-30T19:35:45.024Z] [INFO] GET /css/admin.css 200 4ms +[2025-12-30T19:35:45.049Z] [INFO] GET /css/proposals.css 200 2ms +[2025-12-30T19:35:45.060Z] [INFO] GET /css/notifications.css 200 4ms +[2025-12-30T19:35:45.072Z] [INFO] GET /css/gitea.css 200 3ms +[2025-12-30T19:35:45.073Z] [INFO] GET /css/responsive.css 200 3ms +[2025-12-30T19:35:45.099Z] [INFO] GET /js/app.js 200 3ms +[2025-12-30T19:35:45.166Z] [INFO] GET /js/api.js 200 4ms +[2025-12-30T19:35:45.167Z] [INFO] GET /js/auth.js 200 5ms +[2025-12-30T19:35:45.171Z] [INFO] GET /js/store.js 200 7ms +[2025-12-30T19:35:45.174Z] [INFO] GET /js/offline.js 200 8ms +[2025-12-30T19:35:45.176Z] [INFO] GET /js/sync.js 200 6ms +[2025-12-30T19:35:45.177Z] [INFO] GET /js/board.js 200 4ms +[2025-12-30T19:35:45.199Z] [INFO] GET /js/task-modal.js 200 2ms +[2025-12-30T19:35:45.200Z] [INFO] GET /js/calendar.js 200 3ms +[2025-12-30T19:35:45.203Z] [INFO] GET /js/list.js 200 1ms +[2025-12-30T19:35:45.208Z] [INFO] GET /js/shortcuts.js 200 2ms +[2025-12-30T19:35:45.209Z] [INFO] GET /js/undo.js 200 3ms +[2025-12-30T19:35:45.211Z] [INFO] GET /js/admin.js 200 3ms +[2025-12-30T19:35:45.242Z] [INFO] GET /js/proposals.js 200 10ms +[2025-12-30T19:35:45.246Z] [INFO] GET /js/notifications.js 200 8ms +[2025-12-30T19:35:45.248Z] [INFO] GET /js/utils.js 200 5ms +[2025-12-30T19:35:45.250Z] [INFO] GET /js/gitea.js 200 5ms +[2025-12-30T19:35:45.354Z] [INFO] POST /api/auth/refresh 200 16ms +[2025-12-30T19:35:45.362Z] [INFO] GET /assets/icons/task.svg 304 7ms +[2025-12-30T19:35:45.374Z] [INFO] GET /api/auth/users 304 14ms +[2025-12-30T19:35:45.416Z] [INFO] GET /api/auth/users 304 5ms +[2025-12-30T19:35:45.449Z] [INFO] Socket connected: HG (_JhuTt29340Sb54PAAAD) +[2025-12-30T19:35:45.461Z] [INFO] GET /api/projects 304 7ms +[2025-12-30T19:35:45.494Z] [INFO] HG joined project:[object Object] +[2025-12-30T19:35:45.502Z] [INFO] GET /api/columns/2 304 7ms +[2025-12-30T19:35:45.521Z] [INFO] GET /api/tasks/project/2 304 18ms +[2025-12-30T19:35:45.537Z] [INFO] GET /api/stats/dashboard?projectId=2 304 8ms +[2025-12-30T19:35:45.545Z] [INFO] GET /api/labels/2 304 6ms +[2025-12-30T19:35:45.591Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2025-12-30T19:35:45.630Z] [INFO] GET /api/notifications 304 7ms +[2025-12-30T19:35:51.562Z] [INFO] Socket disconnected: HG (_JhuTt29340Sb54PAAAD) +[2025-12-30T19:35:58.451Z] [INFO] GET / 200 2ms +[2025-12-30T19:35:58.529Z] [INFO] GET /css/variables.css 200 2ms +[2025-12-30T19:35:58.561Z] [INFO] GET /css/base.css 200 3ms +[2025-12-30T19:35:58.591Z] [INFO] GET /css/components.css 200 3ms +[2025-12-30T19:35:58.596Z] [INFO] GET /css/board.css 200 4ms +[2025-12-30T19:35:58.603Z] [INFO] GET /css/list.css 200 5ms +[2025-12-30T19:35:58.605Z] [INFO] GET /css/modal.css 200 5ms +[2025-12-30T19:35:58.606Z] [INFO] GET /css/admin.css 200 5ms +[2025-12-30T19:35:58.608Z] [INFO] GET /css/calendar.css 200 6ms +[2025-12-30T19:35:58.646Z] [INFO] GET /css/proposals.css 200 6ms +[2025-12-30T19:35:58.652Z] [INFO] GET /css/notifications.css 200 8ms +[2025-12-30T19:35:58.655Z] [INFO] GET /css/gitea.css 200 7ms +[2025-12-30T19:35:58.660Z] [INFO] GET /css/responsive.css 200 6ms +[2025-12-30T19:35:58.676Z] [INFO] GET /js/app.js 200 5ms +[2025-12-30T19:35:58.752Z] [INFO] GET /js/store.js 200 9ms +[2025-12-30T19:35:58.754Z] [INFO] GET /js/api.js 200 9ms +[2025-12-30T19:35:58.757Z] [INFO] GET /js/auth.js 200 9ms +[2025-12-30T19:35:58.760Z] [INFO] GET /js/offline.js 200 10ms +[2025-12-30T19:35:58.763Z] [INFO] GET /js/board.js 200 7ms +[2025-12-30T19:35:58.764Z] [INFO] GET /js/sync.js 200 5ms +[2025-12-30T19:35:58.781Z] [INFO] GET /js/task-modal.js 200 2ms +[2025-12-30T19:35:58.787Z] [INFO] GET /js/calendar.js 200 2ms +[2025-12-30T19:35:58.794Z] [INFO] GET /js/list.js 200 4ms +[2025-12-30T19:35:58.797Z] [INFO] GET /js/shortcuts.js 200 5ms +[2025-12-30T19:35:58.815Z] [INFO] GET /js/undo.js 200 5ms +[2025-12-30T19:35:58.824Z] [INFO] GET /js/admin.js 200 5ms +[2025-12-30T19:35:58.826Z] [INFO] GET /js/proposals.js 200 4ms +[2025-12-30T19:35:58.829Z] [INFO] GET /js/notifications.js 200 6ms +[2025-12-30T19:35:58.830Z] [INFO] GET /js/gitea.js 200 5ms +[2025-12-30T19:35:58.834Z] [INFO] GET /js/utils.js 200 2ms +[2025-12-30T19:35:58.906Z] [INFO] GET /sw.js 200 4ms +[2025-12-30T19:35:58.907Z] [INFO] GET /assets/icons/task.svg 200 6ms +[2025-12-30T19:35:58.999Z] [INFO] GET /css/variables.css 304 1ms +[2025-12-30T19:35:59.002Z] [INFO] GET / 304 1ms +[2025-12-30T19:35:59.004Z] [INFO] GET /index.html 200 7ms +[2025-12-30T19:35:59.034Z] [INFO] GET /css/base.css 304 3ms +[2025-12-30T19:35:59.042Z] [INFO] GET /css/board.css 304 2ms +[2025-12-30T19:35:59.046Z] [INFO] GET /css/components.css 304 2ms +[2025-12-30T19:35:59.067Z] [INFO] GET /css/modal.css 304 1ms +[2025-12-30T19:35:59.071Z] [INFO] GET /css/calendar.css 304 1ms +[2025-12-30T19:35:59.080Z] [INFO] GET /css/responsive.css 304 1ms +[2025-12-30T19:35:59.100Z] [INFO] GET /js/app.js 304 2ms +[2025-12-30T19:35:59.110Z] [INFO] GET /js/utils.js 304 1ms +[2025-12-30T19:35:59.124Z] [INFO] GET /js/api.js 304 1ms +[2025-12-30T19:35:59.142Z] [INFO] GET /js/auth.js 304 2ms +[2025-12-30T19:35:59.150Z] [INFO] GET /js/store.js 304 1ms +[2025-12-30T19:35:59.159Z] [INFO] GET /js/sync.js 304 1ms +[2025-12-30T19:35:59.173Z] [INFO] GET /js/offline.js 304 1ms +[2025-12-30T19:35:59.181Z] [INFO] GET /js/board.js 304 1ms +[2025-12-30T19:35:59.193Z] [INFO] GET /js/task-modal.js 304 1ms +[2025-12-30T19:35:59.207Z] [INFO] GET /js/calendar.js 304 1ms +[2025-12-30T19:35:59.220Z] [INFO] GET /js/list.js 304 2ms +[2025-12-30T19:35:59.226Z] [INFO] GET /js/shortcuts.js 304 1ms +[2025-12-30T19:35:59.241Z] [INFO] GET /js/undo.js 304 2ms +[2025-12-30T19:35:59.255Z] [INFO] GET /js/tour.js 200 3ms +[2025-12-30T19:35:59.259Z] [INFO] GET /js/admin.js 304 1ms +[2025-12-30T19:35:59.273Z] [INFO] GET /js/proposals.js 304 1ms +[2025-12-30T19:35:59.288Z] [INFO] GET /js/notifications.js 304 0ms +[2025-12-30T19:35:59.291Z] [INFO] GET /js/gitea.js 304 1ms +[2025-12-30T19:35:59.306Z] [INFO] GET /css/list.css 304 1ms +[2025-12-30T19:35:59.321Z] [INFO] GET /css/admin.css 304 1ms +[2025-12-30T19:35:59.326Z] [INFO] GET /css/proposals.css 304 2ms +[2025-12-30T19:35:59.356Z] [INFO] GET /css/notifications.css 304 2ms +[2025-12-30T19:35:59.363Z] [INFO] GET /css/gitea.css 304 1ms +[2025-12-30T19:36:03.007Z] [INFO] Login erfolgreich: hendrik_gebhardt@gmx.de +[2025-12-30T19:36:03.009Z] [INFO] POST /api/auth/login 200 507ms +[2025-12-30T19:36:03.073Z] [INFO] GET /api/auth/users 200 4ms +[2025-12-30T19:36:03.123Z] [INFO] Socket connected: HG (wCtEtzTFEtoN4wL4AAAG) +[2025-12-30T19:36:03.130Z] [INFO] Socket connected: HG (7pnkFj6qqa03TBAaAAAH) +[2025-12-30T19:36:03.139Z] [INFO] GET /api/projects 200 6ms +[2025-12-30T19:36:03.180Z] [INFO] HG joined project:[object Object] +[2025-12-30T19:36:03.199Z] [INFO] GET /api/tasks/project/2 200 24ms +[2025-12-30T19:36:03.205Z] [INFO] GET /api/labels/2 200 5ms +[2025-12-30T19:36:03.209Z] [INFO] GET /api/columns/2 200 8ms +[2025-12-30T19:36:03.214Z] [INFO] GET /api/stats/dashboard?projectId=2 200 8ms +[2025-12-30T19:36:03.233Z] [INFO] HG joined project:[object Object] +[2025-12-30T19:36:03.266Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 10ms +[2025-12-30T19:36:03.317Z] [INFO] GET /api/notifications 200 7ms +[2025-12-30T19:36:10.613Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:36:40.742Z] [INFO] GET /api/health 200 4ms +[2025-12-30T19:37:10.847Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:37:34.784Z] [INFO] SIGTERM empfangen, fahre herunter... +[2025-12-30T19:37:46.337Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2025-12-30T19:37:46.437Z] [INFO] Datenbank initialisiert +[2025-12-30T19:37:46.443Z] [INFO] Server läuft auf Port 3000 +[2025-12-30T19:37:46.431Z] [INFO] Datenbank-Tabellen erstellt +[2025-12-30T19:37:46.444Z] [INFO] Umgebung: production +[2025-12-30T19:37:46.446Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2025-12-30T19:37:46.446Z] [INFO] Automatische Backups aktiviert +[2025-12-30T19:37:47.305Z] [INFO] Socket connected: HG (ugd61_S1yeyGKz5XAAAB) +[2025-12-30T19:37:47.378Z] [INFO] HG joined project:[object Object] +[2025-12-30T19:37:48.231Z] [INFO] Socket connected: HG (9UP6e9bwcGr67pozAAAD) +[2025-12-30T19:37:48.262Z] [INFO] HG joined project:[object Object] +[2025-12-30T19:37:50.714Z] [INFO] GET /api/health 200 14ms +[2025-12-30T19:38:20.838Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:38:46.458Z] [INFO] Backup erstellt: backup_2025-12-30T19-38-46-453Z.db +[2025-12-30T19:38:46.461Z] [INFO] Altes Backup gelöscht: backup_2025-12-28T16-54-50-274Z.db +[2025-12-30T19:38:46.462Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2025-12-30T19:38:50.930Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:39:16.757Z] [INFO] GET /css/variables.css 200 11ms +[2025-12-30T19:39:16.766Z] [INFO] GET /css/base.css 200 5ms +[2025-12-30T19:39:16.772Z] [INFO] GET /css/board.css 200 8ms +[2025-12-30T19:39:16.776Z] [INFO] GET /css/modal.css 200 8ms +[2025-12-30T19:39:16.778Z] [INFO] GET /css/calendar.css 200 9ms +[2025-12-30T19:39:16.781Z] [INFO] GET /css/components.css 200 7ms +[2025-12-30T19:39:16.789Z] [INFO] GET /css/list.css 200 2ms +[2025-12-30T19:39:16.799Z] [INFO] GET /css/admin.css 200 3ms +[2025-12-30T19:39:16.830Z] [INFO] GET /css/proposals.css 200 4ms +[2025-12-30T19:39:16.832Z] [INFO] GET /css/notifications.css 200 4ms +[2025-12-30T19:39:16.848Z] [INFO] GET /css/gitea.css 200 10ms +[2025-12-30T19:39:16.849Z] [INFO] GET / 200 13ms +[2025-12-30T19:39:16.852Z] [INFO] GET /css/responsive.css 200 9ms +[2025-12-30T19:39:17.258Z] [INFO] POST /api/auth/refresh 200 11ms +[2025-12-30T19:39:21.023Z] [INFO] GET /api/health 200 1ms +[2025-12-30T19:39:51.124Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:40:21.230Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:40:51.353Z] [INFO] GET /api/health 200 3ms +[2025-12-30T19:41:21.454Z] [INFO] GET /api/health 200 5ms +[2025-12-30T19:41:51.558Z] [INFO] GET /api/health 200 3ms +[2025-12-30T19:42:21.675Z] [INFO] GET /api/health 200 4ms +[2025-12-30T19:42:51.784Z] [INFO] GET /api/health 200 5ms +[2025-12-30T19:43:21.869Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:43:51.978Z] [INFO] GET /api/health 200 4ms +[2025-12-30T19:44:11.356Z] [INFO] POST /api/auth/refresh 200 11ms +[2025-12-30T19:44:13.917Z] [INFO] POST /api/auth/refresh 200 12ms +[2025-12-30T19:44:15.530Z] [INFO] GET / 200 6ms +[2025-12-30T19:44:15.594Z] [INFO] Socket disconnected: HG (9UP6e9bwcGr67pozAAAD) +[2025-12-30T19:44:15.596Z] [INFO] Socket disconnected: HG (ugd61_S1yeyGKz5XAAAB) +[2025-12-30T19:44:15.600Z] [INFO] GET /css/variables.css 200 2ms +[2025-12-30T19:44:15.624Z] [INFO] GET /css/base.css 200 2ms +[2025-12-30T19:44:15.655Z] [INFO] GET /css/components.css 200 3ms +[2025-12-30T19:44:15.673Z] [INFO] GET /css/modal.css 200 9ms +[2025-12-30T19:44:15.676Z] [INFO] GET /css/board.css 200 9ms +[2025-12-30T19:44:15.679Z] [INFO] GET /css/calendar.css 200 8ms +[2025-12-30T19:44:15.683Z] [INFO] GET /css/list.css 200 6ms +[2025-12-30T19:44:15.685Z] [INFO] GET /css/admin.css 200 5ms +[2025-12-30T19:44:15.689Z] [INFO] GET /css/proposals.css 200 3ms +[2025-12-30T19:44:15.721Z] [INFO] GET /css/notifications.css 200 5ms +[2025-12-30T19:44:15.724Z] [INFO] GET /css/gitea.css 200 5ms +[2025-12-30T19:44:15.733Z] [INFO] GET /css/responsive.css 200 6ms +[2025-12-30T19:44:15.739Z] [INFO] GET /js/app.js 200 7ms +[2025-12-30T19:44:15.833Z] [INFO] GET /js/api.js 200 6ms +[2025-12-30T19:44:15.834Z] [INFO] GET /js/auth.js 200 9ms +[2025-12-30T19:44:15.836Z] [INFO] GET /js/store.js 200 8ms +[2025-12-30T19:44:15.837Z] [INFO] GET /js/sync.js 200 7ms +[2025-12-30T19:44:15.841Z] [INFO] GET /js/offline.js 200 2ms +[2025-12-30T19:44:15.881Z] [INFO] GET /js/shortcuts.js 200 11ms +[2025-12-30T19:44:15.887Z] [INFO] GET /js/board.js 200 15ms +[2025-12-30T19:44:15.900Z] [INFO] GET /js/calendar.js 200 25ms +[2025-12-30T19:44:15.904Z] [INFO] GET /js/list.js 200 22ms +[2025-12-30T19:44:15.912Z] [INFO] GET /js/task-modal.js 200 20ms +[2025-12-30T19:44:15.919Z] [INFO] GET /js/undo.js 200 14ms +[2025-12-30T19:44:15.924Z] [INFO] GET /js/admin.js 200 9ms +[2025-12-30T19:44:15.926Z] [INFO] GET /js/proposals.js 200 4ms +[2025-12-30T19:44:15.939Z] [INFO] GET /js/notifications.js 200 4ms +[2025-12-30T19:44:15.942Z] [INFO] GET /js/gitea.js 200 7ms +[2025-12-30T19:44:15.983Z] [INFO] GET /js/utils.js 200 15ms +[2025-12-30T19:44:16.042Z] [INFO] POST /api/auth/refresh 200 8ms +[2025-12-30T19:44:16.057Z] [INFO] GET /api/auth/users 200 7ms +[2025-12-30T19:44:16.060Z] [INFO] GET /assets/icons/task.svg 200 15ms +[2025-12-30T19:44:16.100Z] [INFO] GET /api/auth/users 200 5ms +[2025-12-30T19:44:16.134Z] [INFO] Socket connected: HG (FrpS6mwYqcmu04feAAAF) +[2025-12-30T19:44:16.146Z] [INFO] GET /api/projects 200 6ms +[2025-12-30T19:44:16.200Z] [INFO] GET /api/stats/dashboard?projectId=2 200 15ms +[2025-12-30T19:44:16.206Z] [INFO] GET /api/columns/2 200 19ms +[2025-12-30T19:44:16.208Z] [INFO] HG joined project:[object Object] +[2025-12-30T19:44:16.231Z] [INFO] GET /api/tasks/project/2 200 22ms +[2025-12-30T19:44:16.237Z] [INFO] GET /api/labels/2 200 3ms +[2025-12-30T19:44:16.286Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 10ms +[2025-12-30T19:44:16.325Z] [INFO] GET /api/notifications 200 6ms +[2025-12-30T19:44:22.064Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:44:52.158Z] [INFO] GET /api/health 200 1ms +[2025-12-30T19:44:55.991Z] [INFO] SIGTERM empfangen, fahre herunter... +[2025-12-30T19:45:07.571Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2025-12-30T19:45:07.652Z] [INFO] Datenbank-Tabellen erstellt +[2025-12-30T19:45:07.655Z] [INFO] Datenbank initialisiert +[2025-12-30T19:45:07.659Z] [INFO] Server läuft auf Port 3000 +[2025-12-30T19:45:07.659Z] [INFO] Umgebung: production +[2025-12-30T19:45:07.661Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2025-12-30T19:45:07.661Z] [INFO] Automatische Backups aktiviert +[2025-12-30T19:45:08.259Z] [INFO] POST /api/auth/refresh 200 24ms +[2025-12-30T19:45:09.021Z] [INFO] Socket connected: HG (Mx0VueTRXbN3BObMAAAB) +[2025-12-30T19:45:09.061Z] [INFO] HG joined project:[object Object] +[2025-12-30T19:45:11.933Z] [INFO] GET /api/health 200 8ms +[2025-12-30T19:45:12.876Z] [INFO] POST /api/auth/refresh 200 9ms +[2025-12-30T19:45:42.052Z] [INFO] GET /api/health 200 3ms +[2025-12-30T19:45:59.160Z] [INFO] GET / 200 7ms +[2025-12-30T19:45:59.221Z] [INFO] Socket disconnected: HG (Mx0VueTRXbN3BObMAAAB) +[2025-12-30T19:45:59.230Z] [INFO] GET /css/variables.css 200 4ms +[2025-12-30T19:45:59.231Z] [INFO] GET /css/base.css 200 4ms +[2025-12-30T19:45:59.262Z] [INFO] GET /css/components.css 200 5ms +[2025-12-30T19:45:59.264Z] [INFO] GET /css/board.css 200 6ms +[2025-12-30T19:45:59.302Z] [INFO] GET /css/modal.css 200 8ms +[2025-12-30T19:45:59.315Z] [INFO] GET /css/calendar.css 200 16ms +[2025-12-30T19:45:59.318Z] [INFO] GET /css/list.css 200 11ms +[2025-12-30T19:45:59.319Z] [INFO] GET /css/admin.css 200 8ms +[2025-12-30T19:45:59.324Z] [INFO] GET /css/proposals.css 200 8ms +[2025-12-30T19:45:59.326Z] [INFO] GET /css/notifications.css 200 4ms +[2025-12-30T19:45:59.347Z] [INFO] GET /css/gitea.css 200 3ms +[2025-12-30T19:45:59.365Z] [INFO] GET /css/responsive.css 200 12ms +[2025-12-30T19:45:59.376Z] [INFO] GET /js/app.js 200 4ms +[2025-12-30T19:45:59.450Z] [INFO] GET /js/offline.js 200 10ms +[2025-12-30T19:45:59.455Z] [INFO] GET /js/api.js 200 12ms +[2025-12-30T19:45:59.460Z] [INFO] GET /js/auth.js 200 13ms +[2025-12-30T19:45:59.464Z] [INFO] GET /js/sync.js 200 11ms +[2025-12-30T19:45:59.467Z] [INFO] GET /js/board.js 200 9ms +[2025-12-30T19:45:59.469Z] [INFO] GET /js/store.js 200 7ms +[2025-12-30T19:45:59.481Z] [INFO] GET /js/task-modal.js 200 2ms +[2025-12-30T19:45:59.491Z] [INFO] GET /js/calendar.js 200 4ms +[2025-12-30T19:45:59.493Z] [INFO] GET /js/list.js 200 4ms +[2025-12-30T19:45:59.500Z] [INFO] GET /js/undo.js 200 3ms +[2025-12-30T19:45:59.504Z] [INFO] GET /js/shortcuts.js 200 2ms +[2025-12-30T19:45:59.521Z] [INFO] GET /js/admin.js 200 3ms +[2025-12-30T19:45:59.526Z] [INFO] GET /js/notifications.js 200 3ms +[2025-12-30T19:45:59.527Z] [INFO] GET /js/proposals.js 200 3ms +[2025-12-30T19:45:59.531Z] [INFO] GET /js/gitea.js 200 2ms +[2025-12-30T19:45:59.536Z] [INFO] GET /js/utils.js 200 2ms +[2025-12-30T19:45:59.586Z] [INFO] POST /api/auth/refresh 200 17ms +[2025-12-30T19:45:59.595Z] [INFO] GET /assets/icons/task.svg 304 6ms +[2025-12-30T19:45:59.599Z] [INFO] GET /api/auth/users 304 6ms +[2025-12-30T19:45:59.641Z] [INFO] GET /api/auth/users 304 5ms +[2025-12-30T19:45:59.675Z] [INFO] Socket connected: HG (VKgc-t-WoIGB4XRlAAAD) +[2025-12-30T19:45:59.688Z] [INFO] GET /api/projects 304 8ms +[2025-12-30T19:45:59.731Z] [INFO] GET /api/labels/2 304 10ms +[2025-12-30T19:45:59.738Z] [INFO] GET /api/columns/2 304 5ms +[2025-12-30T19:45:59.742Z] [INFO] HG joined project:[object Object] +[2025-12-30T19:45:59.754Z] [INFO] GET /api/stats/dashboard?projectId=2 304 7ms +[2025-12-30T19:45:59.768Z] [INFO] GET /api/tasks/project/2 304 13ms +[2025-12-30T19:45:59.810Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2025-12-30T19:45:59.855Z] [INFO] GET /api/notifications 304 10ms +[2025-12-30T19:46:02.565Z] [INFO] Spalte Erledigt von Position 2 zu 1 verschoben +[2025-12-30T19:46:02.568Z] [INFO] PUT /api/columns/6/position 200 9ms +[2025-12-30T19:46:04.378Z] [INFO] Spalte Erledigt von Position 1 zu 2 verschoben +[2025-12-30T19:46:04.382Z] [INFO] PUT /api/columns/6/position 200 11ms +[2025-12-30T19:46:07.676Z] [INFO] Backup erstellt: backup_2025-12-30T19-46-07-663Z.db +[2025-12-30T19:46:07.679Z] [INFO] Altes Backup gelöscht: backup_2025-12-28T19-49-36-012Z.db +[2025-12-30T19:46:07.683Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2025-12-30T19:46:09.463Z] [INFO] Spalte zu Klären von Position 4 zu 3 verschoben +[2025-12-30T19:46:09.466Z] [INFO] PUT /api/columns/9/position 200 8ms +[2025-12-30T19:46:10.828Z] [INFO] Spalte zu Klären von Position 3 zu 4 verschoben +[2025-12-30T19:46:10.830Z] [INFO] PUT /api/columns/9/position 200 9ms +[2025-12-30T19:46:12.152Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:46:12.793Z] [INFO] GET /api/tasks/6 200 17ms +[2025-12-30T19:46:12.833Z] [INFO] GET /api/subtasks/6 200 10ms +[2025-12-30T19:46:12.841Z] [INFO] GET /api/links/6 200 5ms +[2025-12-30T19:46:12.845Z] [INFO] GET /api/tasks/6/history 404 3ms +[2025-12-30T19:46:12.851Z] [INFO] GET /api/comments/6 200 5ms +[2025-12-30T19:46:12.856Z] [INFO] GET /api/files/6 200 9ms +[2025-12-30T19:46:12.902Z] [INFO] GET /api/files/preview/2?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJIRyIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwiaWF0IjoxNzY3MTIzOTU5LCJleHAiOjE3NjcxMjQ1NTl9.j2NyuZVjPjMhIiKevRM32Dt4lPxVBW1FRngsG1nnZFQ 200 13ms +[2025-12-30T19:46:13.793Z] [INFO] POST /api/auth/refresh 200 13ms +[2025-12-30T19:46:15.675Z] [INFO] PUT /api/subtasks/8 200 9ms +[2025-12-30T19:46:16.682Z] [INFO] POST /api/auth/refresh 200 10ms +[2025-12-30T19:46:17.399Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2025-12-30T19:46:17.401Z] [INFO] PUT /api/tasks/6 200 9ms +[2025-12-30T19:46:17.449Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2025-12-30T19:46:17.450Z] [INFO] PUT /api/tasks/6 200 12ms +[2025-12-30T19:46:18.397Z] [INFO] POST /api/auth/refresh 200 8ms +[2025-12-30T19:46:34.893Z] [INFO] GET /api/tasks/6 200 9ms +[2025-12-30T19:46:34.935Z] [INFO] GET /api/subtasks/6 200 8ms +[2025-12-30T19:46:34.950Z] [INFO] GET /api/links/6 304 8ms +[2025-12-30T19:46:34.957Z] [INFO] GET /api/comments/6 304 4ms +[2025-12-30T19:46:34.962Z] [INFO] GET /api/files/6 304 3ms +[2025-12-30T19:46:34.966Z] [INFO] GET /api/tasks/6/history 404 2ms +[2025-12-30T19:46:35.000Z] [INFO] GET /api/files/preview/2?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJIRyIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwiaWF0IjoxNzY3MTIzOTc4LCJleHAiOjE3NjcxMjQ1Nzh9.JW7zljygQrVwt-03_DpoCkayvtMBTrrC0Wgp7imPRsY 200 6ms +[2025-12-30T19:46:35.909Z] [INFO] POST /api/auth/refresh 200 10ms +[2025-12-30T19:46:39.062Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2025-12-30T19:46:39.064Z] [INFO] PUT /api/tasks/6 200 10ms +[2025-12-30T19:46:40.069Z] [INFO] POST /api/auth/refresh 200 12ms +[2025-12-30T19:46:40.322Z] [INFO] GET /api/tasks/6 200 11ms +[2025-12-30T19:46:40.365Z] [INFO] GET /api/files/6 304 8ms +[2025-12-30T19:46:40.372Z] [INFO] GET /api/tasks/6/history 404 6ms +[2025-12-30T19:46:40.386Z] [INFO] GET /api/subtasks/6 304 12ms +[2025-12-30T19:46:40.393Z] [INFO] GET /api/links/6 304 18ms +[2025-12-30T19:46:40.397Z] [INFO] GET /api/comments/6 304 21ms +[2025-12-30T19:46:40.412Z] [INFO] GET /api/files/preview/2?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJIRyIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwiaWF0IjoxNzY3MTI0MDAwLCJleHAiOjE3NjcxMjQ2MDB9.YxvtOI4iV9Ku2tUEsd4HfNRrTWe3tgGhIY0V3a9D62c 200 7ms +[2025-12-30T19:46:41.313Z] [INFO] POST /api/auth/refresh 200 11ms +[2025-12-30T19:46:42.250Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:47:12.350Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:47:15.709Z] [INFO] Login erfolgreich: momohomma@googlemail.com +[2025-12-30T19:47:15.710Z] [INFO] POST /api/auth/login 200 527ms +[2025-12-30T19:47:15.806Z] [INFO] GET /api/auth/users 304 4ms +[2025-12-30T19:47:15.811Z] [INFO] Socket connected: MH (B27zpuMyPk_azVx6AAAG) +[2025-12-30T19:47:15.827Z] [INFO] Socket connected: MH (1L_ouFDW_BNaGBK1AAAH) +[2025-12-30T19:47:15.836Z] [INFO] GET /api/projects 200 3ms +[2025-12-30T19:47:15.858Z] [INFO] MH joined project:[object Object] +[2025-12-30T19:47:15.864Z] [INFO] GET /api/columns/2 304 5ms +[2025-12-30T19:47:15.870Z] [INFO] GET /api/stats/dashboard?projectId=2 200 5ms +[2025-12-30T19:47:15.881Z] [INFO] GET /api/tasks/project/2 200 10ms +[2025-12-30T19:47:15.887Z] [INFO] GET /api/labels/2 304 6ms +[2025-12-30T19:47:15.913Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 5ms +[2025-12-30T19:47:37.383Z] [INFO] GET / 304 2ms +[2025-12-30T19:47:37.409Z] [INFO] Socket disconnected: MH (B27zpuMyPk_azVx6AAAG) +[2025-12-30T19:47:37.415Z] [INFO] Socket disconnected: MH (1L_ouFDW_BNaGBK1AAAH) +[2025-12-30T19:47:37.421Z] [INFO] GET /css/variables.css 304 2ms +[2025-12-30T19:47:37.423Z] [INFO] GET /css/base.css 304 1ms +[2025-12-30T19:47:37.446Z] [INFO] GET /css/components.css 304 2ms +[2025-12-30T19:47:37.451Z] [INFO] GET /css/board.css 200 3ms +[2025-12-30T19:47:37.459Z] [INFO] GET /css/modal.css 304 1ms +[2025-12-30T19:47:37.462Z] [INFO] GET /css/calendar.css 304 2ms +[2025-12-30T19:47:37.466Z] [INFO] GET /css/list.css 304 2ms +[2025-12-30T19:47:37.468Z] [INFO] GET /css/proposals.css 304 1ms +[2025-12-30T19:47:37.470Z] [INFO] GET /css/admin.css 304 1ms +[2025-12-30T19:47:37.479Z] [INFO] GET /css/notifications.css 304 1ms +[2025-12-30T19:47:37.483Z] [INFO] GET /css/gitea.css 304 1ms +[2025-12-30T19:47:37.489Z] [INFO] GET /css/responsive.css 304 2ms +[2025-12-30T19:47:37.490Z] [INFO] GET /js/app.js 304 1ms +[2025-12-30T19:47:37.513Z] [INFO] GET /js/store.js 304 1ms +[2025-12-30T19:47:37.517Z] [INFO] GET /js/api.js 304 2ms +[2025-12-30T19:47:37.518Z] [INFO] GET /js/auth.js 304 2ms +[2025-12-30T19:47:37.524Z] [INFO] GET /js/sync.js 304 3ms +[2025-12-30T19:47:37.523Z] [INFO] GET /js/offline.js 304 4ms +[2025-12-30T19:47:37.528Z] [INFO] GET /js/board.js 200 3ms +[2025-12-30T19:47:37.530Z] [INFO] GET /js/task-modal.js 304 1ms +[2025-12-30T19:47:37.536Z] [INFO] GET /js/calendar.js 304 2ms +[2025-12-30T19:47:37.538Z] [INFO] GET /js/list.js 304 1ms +[2025-12-30T19:47:37.542Z] [INFO] GET /js/shortcuts.js 304 1ms +[2025-12-30T19:47:37.543Z] [INFO] GET /js/undo.js 304 2ms +[2025-12-30T19:47:37.556Z] [INFO] GET /js/proposals.js 304 2ms +[2025-12-30T19:47:37.562Z] [INFO] GET /js/admin.js 304 4ms +[2025-12-30T19:47:37.564Z] [INFO] GET /js/notifications.js 304 4ms +[2025-12-30T19:47:37.567Z] [INFO] GET /js/gitea.js 304 1ms +[2025-12-30T19:47:37.572Z] [INFO] GET /js/utils.js 304 2ms +[2025-12-30T19:47:37.602Z] [INFO] POST /api/auth/refresh 200 9ms +[2025-12-30T19:47:37.766Z] [INFO] GET /api/auth/users 304 7ms +[2025-12-30T19:47:37.837Z] [INFO] GET /api/auth/users 304 6ms +[2025-12-30T19:47:37.841Z] [INFO] GET /assets/icons/task.svg 304 1ms +[2025-12-30T19:47:37.869Z] [INFO] Socket connected: MH (hggKr4gcQt4C68ajAAAJ) +[2025-12-30T19:47:37.880Z] [INFO] GET /api/projects 304 7ms +[2025-12-30T19:47:37.922Z] [INFO] MH joined project:[object Object] +[2025-12-30T19:47:37.930Z] [INFO] GET /api/stats/dashboard?projectId=2 304 6ms +[2025-12-30T19:47:37.940Z] [INFO] GET /api/tasks/project/2 304 9ms +[2025-12-30T19:47:37.949Z] [INFO] GET /api/columns/2 304 8ms +[2025-12-30T19:47:37.954Z] [INFO] GET /api/labels/2 304 9ms +[2025-12-30T19:47:38.002Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 7ms +[2025-12-30T19:47:38.032Z] [INFO] GET /api/notifications 304 7ms +[2025-12-30T19:47:39.528Z] [INFO] GET /sw.js 200 3ms +[2025-12-30T19:47:39.559Z] [INFO] GET / 304 2ms +[2025-12-30T19:47:39.560Z] [INFO] GET /index.html 304 1ms +[2025-12-30T19:47:39.562Z] [INFO] GET /css/variables.css 304 1ms +[2025-12-30T19:47:39.580Z] [INFO] GET /css/base.css 304 2ms +[2025-12-30T19:47:39.587Z] [INFO] GET /css/components.css 304 3ms +[2025-12-30T19:47:39.589Z] [INFO] GET /css/board.css 304 1ms +[2025-12-30T19:47:39.598Z] [INFO] GET /css/modal.css 304 0ms +[2025-12-30T19:47:39.602Z] [INFO] GET /sw.js 200 2ms +[2025-12-30T19:47:39.608Z] [INFO] GET /css/calendar.css 304 2ms +[2025-12-30T19:47:39.610Z] [INFO] GET /css/responsive.css 304 1ms +[2025-12-30T19:47:39.618Z] [INFO] GET /js/app.js 304 1ms +[2025-12-30T19:47:39.626Z] [INFO] GET /js/utils.js 304 1ms +[2025-12-30T19:47:39.628Z] [INFO] GET /js/api.js 304 0ms +[2025-12-30T19:47:39.637Z] [INFO] GET /js/auth.js 304 1ms +[2025-12-30T19:47:39.647Z] [INFO] GET /js/store.js 304 2ms +[2025-12-30T19:47:39.651Z] [INFO] GET /js/sync.js 304 1ms +[2025-12-30T19:47:39.657Z] [INFO] GET /js/offline.js 304 1ms +[2025-12-30T19:47:39.666Z] [INFO] GET /js/board.js 304 1ms +[2025-12-30T19:47:39.671Z] [INFO] GET /js/task-modal.js 304 1ms +[2025-12-30T19:47:39.677Z] [INFO] GET /js/calendar.js 304 2ms +[2025-12-30T19:47:39.686Z] [INFO] GET /js/list.js 304 1ms +[2025-12-30T19:47:39.695Z] [INFO] GET /js/shortcuts.js 304 2ms +[2025-12-30T19:47:39.697Z] [INFO] GET /js/undo.js 304 1ms +[2025-12-30T19:47:39.705Z] [INFO] GET /js/tour.js 304 2ms +[2025-12-30T19:47:39.713Z] [INFO] GET /js/admin.js 304 1ms +[2025-12-30T19:47:39.715Z] [INFO] GET /js/proposals.js 304 1ms +[2025-12-30T19:47:39.727Z] [INFO] GET /js/notifications.js 304 2ms +[2025-12-30T19:47:39.737Z] [INFO] GET /js/gitea.js 304 3ms +[2025-12-30T19:47:39.738Z] [INFO] GET /css/list.css 304 3ms +[2025-12-30T19:47:39.748Z] [INFO] GET /css/admin.css 304 2ms +[2025-12-30T19:47:39.756Z] [INFO] GET /css/proposals.css 304 2ms +[2025-12-30T19:47:39.758Z] [INFO] GET /css/notifications.css 304 1ms +[2025-12-30T19:47:39.768Z] [INFO] GET /css/gitea.css 304 2ms +[2025-12-30T19:47:42.448Z] [INFO] GET /api/health 200 1ms +[2025-12-30T19:47:46.817Z] [INFO] Spalte Erledigt von Position 2 zu 1 verschoben +[2025-12-30T19:47:46.818Z] [INFO] PUT /api/columns/6/position 200 5ms +[2025-12-30T19:47:49.029Z] [INFO] Spalte Erledigt von Position 1 zu 2 verschoben +[2025-12-30T19:47:49.032Z] [INFO] PUT /api/columns/6/position 200 10ms +[2025-12-30T19:47:49.966Z] [INFO] POST /api/auth/refresh 200 8ms +[2025-12-30T19:47:57.170Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2025-12-30T19:47:57.173Z] [INFO] PUT /api/tasks/6 200 10ms +[2025-12-30T19:47:58.180Z] [INFO] POST /api/auth/refresh 200 9ms +[2025-12-30T19:47:58.821Z] [INFO] GET /api/tasks/6 200 7ms +[2025-12-30T19:47:58.868Z] [INFO] GET /api/subtasks/6 304 11ms +[2025-12-30T19:47:58.903Z] [INFO] GET /api/links/6 304 9ms +[2025-12-30T19:47:58.939Z] [INFO] GET /api/comments/6 304 7ms +[2025-12-30T19:47:58.945Z] [INFO] GET /api/files/6 304 12ms +[2025-12-30T19:47:58.969Z] [INFO] GET /api/tasks/6/history 404 10ms +[2025-12-30T19:47:58.990Z] [INFO] GET /api/files/preview/2?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJIRyIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwiaWF0IjoxNzY3MTI0MDc4LCJleHAiOjE3NjcxMjQ2Nzh9.SGzxCS1VWsTUc_RLXLKJ3v_KMKbcvvhAUQIDQOYguQ8 200 6ms +[2025-12-30T19:47:59.828Z] [INFO] POST /api/auth/refresh 200 9ms +[2025-12-30T19:48:12.533Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:48:22.662Z] [INFO] GET /api/tasks/6 200 9ms +[2025-12-30T19:48:22.692Z] [INFO] GET /api/subtasks/6 200 6ms +[2025-12-30T19:48:22.699Z] [INFO] GET /api/links/6 200 6ms +[2025-12-30T19:48:22.707Z] [INFO] GET /api/files/6 200 6ms +[2025-12-30T19:48:22.713Z] [INFO] GET /api/tasks/6/history 404 5ms +[2025-12-30T19:48:22.722Z] [INFO] GET /api/comments/6 200 5ms +[2025-12-30T19:48:22.731Z] [INFO] GET /api/files/preview/2?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NCwidXNlcm5hbWUiOiJNSCIsImRpc3BsYXlOYW1lIjoiTW9uYW1pIiwiY29sb3IiOiIjMDAzYjk5Iiwicm9sZSI6InVzZXIiLCJwZXJtaXNzaW9ucyI6WyJnZW5laG1pZ3VuZyJdLCJpYXQiOjE3NjcxMjQwNTcsImV4cCI6MTc2NzEyNDY1N30.SzVpBAWFqA1sX9b_Q0Na-qS1MgaPA38nm49j64Y2UQc 200 4ms +[2025-12-30T19:48:25.815Z] [INFO] POST /api/auth/refresh 200 11ms +[2025-12-30T19:48:34.848Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2025-12-30T19:48:34.853Z] [INFO] PUT /api/tasks/6 200 14ms +[2025-12-30T19:48:35.797Z] [INFO] POST /api/auth/refresh 200 6ms +[2025-12-30T19:48:42.636Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:48:47.590Z] [INFO] GET /api/tasks/9 200 5ms +[2025-12-30T19:48:47.621Z] [INFO] GET /api/subtasks/9 200 6ms +[2025-12-30T19:48:47.650Z] [INFO] GET /api/links/9 200 8ms +[2025-12-30T19:48:47.659Z] [INFO] GET /api/files/9 200 6ms +[2025-12-30T19:48:47.675Z] [INFO] GET /api/comments/9 200 14ms +[2025-12-30T19:48:47.682Z] [INFO] GET /api/tasks/9/history 404 5ms +[2025-12-30T19:48:47.708Z] [INFO] GET /api/files/preview/6?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NCwidXNlcm5hbWUiOiJNSCIsImRpc3BsYXlOYW1lIjoiTW9uYW1pIiwiY29sb3IiOiIjMDAzYjk5Iiwicm9sZSI6InVzZXIiLCJwZXJtaXNzaW9ucyI6WyJnZW5laG1pZ3VuZyJdLCJpYXQiOjE3NjcxMjQxMTUsImV4cCI6MTc2NzEyNDcxNX0.-Aj6WBugSloOwhJ3fxGaL1RscxNs4OCC5YSKi89Tx-8 200 20ms +[2025-12-30T19:48:47.709Z] [INFO] GET /api/files/preview/4?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NCwidXNlcm5hbWUiOiJNSCIsImRpc3BsYXlOYW1lIjoiTW9uYW1pIiwiY29sb3IiOiIjMDAzYjk5Iiwicm9sZSI6InVzZXIiLCJwZXJtaXNzaW9ucyI6WyJnZW5laG1pZ3VuZyJdLCJpYXQiOjE3NjcxMjQxMTUsImV4cCI6MTc2NzEyNDcxNX0.-Aj6WBugSloOwhJ3fxGaL1RscxNs4OCC5YSKi89Tx-8 200 19ms +[2025-12-30T19:48:47.711Z] [INFO] GET /api/files/preview/5?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NCwidXNlcm5hbWUiOiJNSCIsImRpc3BsYXlOYW1lIjoiTW9uYW1pIiwiY29sb3IiOiIjMDAzYjk5Iiwicm9sZSI6InVzZXIiLCJwZXJtaXNzaW9ucyI6WyJnZW5laG1pZ3VuZyJdLCJpYXQiOjE3NjcxMjQxMTUsImV4cCI6MTc2NzEyNDcxNX0.-Aj6WBugSloOwhJ3fxGaL1RscxNs4OCC5YSKi89Tx-8 200 13ms +[2025-12-30T19:48:47.713Z] [INFO] GET /api/files/preview/3?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NCwidXNlcm5hbWUiOiJNSCIsImRpc3BsYXlOYW1lIjoiTW9uYW1pIiwiY29sb3IiOiIjMDAzYjk5Iiwicm9sZSI6InVzZXIiLCJwZXJtaXNzaW9ucyI6WyJnZW5laG1pZ3VuZyJdLCJpYXQiOjE3NjcxMjQxMTUsImV4cCI6MTc2NzEyNDcxNX0.-Aj6WBugSloOwhJ3fxGaL1RscxNs4OCC5YSKi89Tx-8 200 11ms +[2025-12-30T19:48:48.597Z] [INFO] POST /api/auth/refresh 200 6ms +[2025-12-30T19:48:54.182Z] [INFO] POST /api/auth/refresh 200 8ms +[2025-12-30T19:48:54.189Z] [INFO] Aufgabe aktualisiert: Logofarbgebung - Ist irgendwas davon ansprechend genug? W (ID: 9) +[2025-12-30T19:48:54.191Z] [INFO] PUT /api/tasks/9 200 7ms +[2025-12-30T19:48:55.247Z] [INFO] POST /api/auth/refresh 200 6ms +[2025-12-30T19:48:55.252Z] [INFO] Aufgabe aktualisiert: Logofarbgebung - Ist irgendwas davon ansprechend genug? (ID: 9) +[2025-12-30T19:48:55.254Z] [INFO] PUT /api/tasks/9 200 6ms +[2025-12-30T19:48:59.522Z] [INFO] Aufgabe aktualisiert: Logofarbgebung - Ist irgendwas davon ansprechend genug? Gerne (ID: 9) +[2025-12-30T19:48:59.524Z] [INFO] PUT /api/tasks/9 200 10ms +[2025-12-30T19:48:59.530Z] [INFO] POST /api/auth/refresh 200 5ms +[2025-12-30T19:49:03.584Z] [INFO] Aufgabe aktualisiert: Logofarbgebung - Ist irgendwas davon ansprechend genug? Gerne Gegenvorschläge (ID: 9) +[2025-12-30T19:49:03.586Z] [INFO] PUT /api/tasks/9 200 11ms +[2025-12-30T19:49:03.595Z] [INFO] POST /api/auth/refresh 200 7ms +[2025-12-30T19:49:06.379Z] [INFO] POST /api/auth/refresh 200 5ms +[2025-12-30T19:49:06.401Z] [INFO] Aufgabe aktualisiert: Logofarbgebung - Ist irgendwas davon ansprechend genug? (ID: 9) +[2025-12-30T19:49:06.402Z] [INFO] PUT /api/tasks/9 200 11ms +[2025-12-30T19:49:06.563Z] [INFO] Aufgabe aktualisiert: Logofarbgebung - Ist irgendwas davon ansprechend genug? (ID: 9) +[2025-12-30T19:49:06.565Z] [INFO] PUT /api/tasks/9 200 6ms +[2025-12-30T19:49:07.567Z] [INFO] POST /api/auth/refresh 200 7ms +[2025-12-30T19:49:09.576Z] [INFO] GET /api/tasks/11 200 5ms +[2025-12-30T19:49:09.607Z] [INFO] GET /api/subtasks/11 200 7ms +[2025-12-30T19:49:09.613Z] [INFO] GET /api/links/11 200 5ms +[2025-12-30T19:49:09.618Z] [INFO] GET /api/files/11 200 3ms +[2025-12-30T19:49:09.622Z] [INFO] GET /api/tasks/11/history 404 3ms +[2025-12-30T19:49:09.627Z] [INFO] GET /api/comments/11 200 4ms +[2025-12-30T19:49:10.578Z] [INFO] POST /api/auth/refresh 200 5ms +[2025-12-30T19:49:12.121Z] [INFO] Aufgabe aktualisiert: E-Bilanz Software (ID: 11) +[2025-12-30T19:49:12.123Z] [INFO] PUT /api/tasks/11 200 8ms +[2025-12-30T19:49:12.724Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:49:13.129Z] [INFO] POST /api/auth/refresh 200 6ms +[2025-12-30T19:49:16.345Z] [INFO] GET /api/tasks/10 200 12ms +[2025-12-30T19:49:16.379Z] [INFO] GET /api/links/10 200 9ms +[2025-12-30T19:49:16.386Z] [INFO] GET /api/subtasks/10 200 6ms +[2025-12-30T19:49:16.393Z] [INFO] GET /api/tasks/10/history 404 6ms +[2025-12-30T19:49:16.397Z] [INFO] GET /api/files/10 200 9ms +[2025-12-30T19:49:16.401Z] [INFO] GET /api/comments/10 200 13ms +[2025-12-30T19:49:17.348Z] [INFO] POST /api/auth/refresh 200 7ms +[2025-12-30T19:49:24.095Z] [INFO] DELETE /api/subtasks/37 200 13ms +[2025-12-30T19:49:25.100Z] [INFO] POST /api/auth/refresh 200 12ms +[2025-12-30T19:49:27.275Z] [INFO] Aufgabe aktualisiert: Bilanzbuchhaltung - Finanzamt (ID: 10) +[2025-12-30T19:49:27.277Z] [INFO] PUT /api/tasks/10 200 7ms +[2025-12-30T19:49:28.279Z] [INFO] POST /api/auth/refresh 200 7ms +[2025-12-30T19:49:42.821Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:50:12.917Z] [INFO] GET /api/health 200 1ms +[2025-12-30T19:50:43.029Z] [INFO] GET /api/health 200 4ms +[2025-12-30T19:51:13.113Z] [INFO] GET /api/health 200 1ms +[2025-12-30T19:51:43.210Z] [INFO] GET /api/health 200 1ms +[2025-12-30T19:52:06.682Z] [INFO] SIGTERM empfangen, fahre herunter... +[2025-12-30T19:52:18.371Z] [ERROR] Fehler beim Abrufen der Upload-Einstellungen: +[2025-12-30T19:52:18.422Z] [INFO] Datenbank-Tabellen erstellt +[2025-12-30T19:52:18.424Z] [INFO] Datenbank initialisiert +[2025-12-30T19:52:18.429Z] [INFO] Server läuft auf Port 3000 +[2025-12-30T19:52:18.430Z] [INFO] Umgebung: production +[2025-12-30T19:52:18.431Z] [INFO] Backup-Scheduler gestartet (alle 24 Stunden) +[2025-12-30T19:52:18.431Z] [INFO] Automatische Backups aktiviert +[2025-12-30T19:52:21.276Z] [INFO] Socket connected: HG (QD6zHx9PaERhVkVpAAAB) +[2025-12-30T19:52:21.333Z] [INFO] HG joined project:[object Object] +[2025-12-30T19:52:22.283Z] [INFO] Socket connected: MH (aDcM3NHBWWDkjDWUAAAD) +[2025-12-30T19:52:22.322Z] [INFO] MH joined project:[object Object] +[2025-12-30T19:52:22.515Z] [INFO] GET /api/health 200 8ms +[2025-12-30T19:52:52.610Z] [INFO] GET /api/health 200 3ms +[2025-12-30T19:52:58.797Z] [INFO] GET / 200 15ms +[2025-12-30T19:52:58.863Z] [INFO] Socket disconnected: HG (QD6zHx9PaERhVkVpAAAB) +[2025-12-30T19:52:58.868Z] [INFO] GET /css/variables.css 200 2ms +[2025-12-30T19:52:58.877Z] [INFO] GET /css/base.css 200 5ms +[2025-12-30T19:52:58.899Z] [INFO] GET /css/components.css 200 3ms +[2025-12-30T19:52:58.912Z] [INFO] GET /css/board.css 200 2ms +[2025-12-30T19:52:58.931Z] [INFO] GET /css/modal.css 200 3ms +[2025-12-30T19:52:58.939Z] [INFO] GET /css/list.css 200 6ms +[2025-12-30T19:52:58.940Z] [INFO] GET /css/calendar.css 200 6ms +[2025-12-30T19:52:58.944Z] [INFO] GET /css/proposals.css 200 7ms +[2025-12-30T19:52:58.946Z] [INFO] GET /css/admin.css 200 8ms +[2025-12-30T19:52:58.976Z] [INFO] GET /css/notifications.css 200 8ms +[2025-12-30T19:52:58.980Z] [INFO] GET /css/gitea.css 200 7ms +[2025-12-30T19:52:59.002Z] [INFO] GET /css/responsive.css 200 19ms +[2025-12-30T19:52:59.008Z] [INFO] GET /js/app.js 200 7ms +[2025-12-30T19:52:59.073Z] [INFO] GET /js/store.js 200 4ms +[2025-12-30T19:52:59.077Z] [INFO] GET /js/auth.js 200 6ms +[2025-12-30T19:52:59.079Z] [INFO] GET /js/api.js 200 7ms +[2025-12-30T19:52:59.083Z] [INFO] GET /js/sync.js 200 5ms +[2025-12-30T19:52:59.085Z] [INFO] GET /js/offline.js 200 4ms +[2025-12-30T19:52:59.087Z] [INFO] GET /js/board.js 200 5ms +[2025-12-30T19:52:59.109Z] [INFO] GET /js/task-modal.js 200 4ms +[2025-12-30T19:52:59.117Z] [INFO] GET /js/calendar.js 200 5ms +[2025-12-30T19:52:59.122Z] [INFO] GET /js/list.js 200 7ms +[2025-12-30T19:52:59.124Z] [INFO] GET /js/undo.js 200 5ms +[2025-12-30T19:52:59.125Z] [INFO] GET /js/shortcuts.js 200 4ms +[2025-12-30T19:52:59.142Z] [INFO] GET /js/admin.js 200 2ms +[2025-12-30T19:52:59.150Z] [INFO] GET /js/proposals.js 200 2ms +[2025-12-30T19:52:59.156Z] [INFO] GET /js/notifications.js 200 4ms +[2025-12-30T19:52:59.158Z] [INFO] GET /js/utils.js 200 4ms +[2025-12-30T19:52:59.160Z] [INFO] GET /js/gitea.js 200 5ms +[2025-12-30T19:52:59.251Z] [INFO] POST /api/auth/refresh 200 14ms +[2025-12-30T19:52:59.261Z] [INFO] GET /api/auth/users 200 7ms +[2025-12-30T19:52:59.268Z] [INFO] GET /assets/icons/task.svg 200 6ms +[2025-12-30T19:52:59.304Z] [INFO] GET /api/auth/users 304 5ms +[2025-12-30T19:52:59.330Z] [INFO] Socket connected: HG (gAQ8QpC4twV5TyqMAAAF) +[2025-12-30T19:52:59.339Z] [INFO] GET /api/projects 200 5ms +[2025-12-30T19:52:59.387Z] [INFO] GET /api/stats/dashboard?projectId=2 200 11ms +[2025-12-30T19:52:59.406Z] [INFO] GET /api/tasks/project/2 200 18ms +[2025-12-30T19:52:59.412Z] [INFO] GET /api/columns/2 200 5ms +[2025-12-30T19:52:59.417Z] [INFO] GET /api/labels/2 200 4ms +[2025-12-30T19:52:59.418Z] [INFO] HG joined project:[object Object] +[2025-12-30T19:52:59.456Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 200 4ms +[2025-12-30T19:52:59.492Z] [INFO] GET /api/notifications 200 5ms +[2025-12-30T19:53:00.548Z] [INFO] GET /api/tasks/6 200 17ms +[2025-12-30T19:53:00.585Z] [INFO] GET /api/files/6 200 6ms +[2025-12-30T19:53:00.590Z] [INFO] GET /api/subtasks/6 200 4ms +[2025-12-30T19:53:00.594Z] [INFO] GET /api/comments/6 200 3ms +[2025-12-30T19:53:00.599Z] [INFO] GET /api/tasks/6/history 404 5ms +[2025-12-30T19:53:00.603Z] [INFO] GET /api/links/6 200 8ms +[2025-12-30T19:53:00.619Z] [INFO] GET /api/files/preview/2?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJIRyIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwiaWF0IjoxNzY3MTI0Mzc5LCJleHAiOjE3NjcxMjQ5Nzl9.5CibcpHiRLTPLIdafJHWlvC3mU9RzL5rLbsgw56FGAw 200 5ms +[2025-12-30T19:53:01.538Z] [INFO] POST /api/auth/refresh 200 6ms +[2025-12-30T19:53:03.982Z] [INFO] POST /api/auth/refresh 200 7ms +[2025-12-30T19:53:05.428Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2025-12-30T19:53:05.431Z] [INFO] PUT /api/tasks/6 200 14ms +[2025-12-30T19:53:06.427Z] [INFO] POST /api/auth/refresh 200 7ms +[2025-12-30T19:53:06.487Z] [INFO] GET /api/tasks/6 200 15ms +[2025-12-30T19:53:06.527Z] [INFO] GET /api/files/6 304 5ms +[2025-12-30T19:53:06.532Z] [INFO] GET /api/links/6 304 9ms +[2025-12-30T19:53:06.539Z] [INFO] GET /api/subtasks/6 304 5ms +[2025-12-30T19:53:06.550Z] [INFO] GET /api/tasks/6/history 404 8ms +[2025-12-30T19:53:06.557Z] [INFO] GET /api/comments/6 304 13ms +[2025-12-30T19:53:06.566Z] [INFO] GET /api/files/preview/2?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJIRyIsImRpc3BsYXlOYW1lIjoiSGVuZHJpayIsImNvbG9yIjoiI0Y1OUUwQiIsInJvbGUiOiJ1c2VyIiwicGVybWlzc2lvbnMiOlsiZ2VuZWhtaWd1bmciXSwiaWF0IjoxNzY3MTI0Mzg2LCJleHAiOjE3NjcxMjQ5ODZ9.aULLwr5hafVMabS1shG8jRUG2rs4yUthTd2w0mcQ_dM 200 6ms +[2025-12-30T19:53:07.470Z] [INFO] POST /api/auth/refresh 200 9ms +[2025-12-30T19:53:10.346Z] [INFO] PUT /api/subtasks/9/position 200 5ms +[2025-12-30T19:53:12.632Z] [INFO] PUT /api/subtasks/6/position 200 10ms +[2025-12-30T19:53:14.676Z] [INFO] PUT /api/subtasks/7/position 200 9ms +[2025-12-30T19:53:17.880Z] [INFO] PUT /api/subtasks/32/position 200 5ms +[2025-12-30T19:53:18.444Z] [INFO] Backup erstellt: backup_2025-12-30T19-53-18-432Z.db +[2025-12-30T19:53:18.446Z] [INFO] Altes Backup gelöscht: backup_2025-12-28T20-09-05-908Z.db +[2025-12-30T19:53:18.448Z] [INFO] Fälligkeits-Check für Benachrichtigungen gestartet +[2025-12-30T19:53:20.167Z] [INFO] PUT /api/subtasks/7/position 200 6ms +[2025-12-30T19:53:22.692Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:53:24.358Z] [INFO] PUT /api/subtasks/6/position 200 6ms +[2025-12-30T19:53:29.766Z] [INFO] PUT /api/subtasks/8/position 200 7ms +[2025-12-30T19:53:33.073Z] [INFO] PUT /api/subtasks/9 200 7ms +[2025-12-30T19:53:34.082Z] [INFO] POST /api/auth/refresh 200 13ms +[2025-12-30T19:53:35.793Z] [INFO] PUT /api/subtasks/9/position 200 9ms +[2025-12-30T19:53:44.709Z] [INFO] PUT /api/subtasks/10 200 4ms +[2025-12-30T19:53:45.706Z] [INFO] POST /api/auth/refresh 200 5ms +[2025-12-30T19:53:46.516Z] [INFO] PUT /api/subtasks/10/position 200 9ms +[2025-12-30T19:53:50.744Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2025-12-30T19:53:50.746Z] [INFO] PUT /api/tasks/6 200 6ms +[2025-12-30T19:53:50.787Z] [INFO] Aufgabe aktualisiert: Taskmate - Wunschliste für künftige Updates (ID: 6) +[2025-12-30T19:53:50.789Z] [INFO] PUT /api/tasks/6 200 9ms +[2025-12-30T19:53:51.744Z] [INFO] POST /api/auth/refresh 200 11ms +[2025-12-30T19:53:52.774Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:54:22.877Z] [INFO] GET /api/health 200 1ms +[2025-12-30T19:54:39.953Z] [INFO] GET /api/git/server/info 200 38ms +[2025-12-30T19:54:40.015Z] [INFO] GET /api/git/server/status 200 33ms +[2025-12-30T19:54:40.062Z] [INFO] GET /api/git/server/branches 200 19ms +[2025-12-30T19:54:40.086Z] [INFO] GET /api/git/server/commits?limit=10 200 20ms +[2025-12-30T19:54:40.935Z] [INFO] POST /api/auth/refresh 200 11ms +[2025-12-30T19:54:49.706Z] [INFO] POST /api/auth/refresh 200 10ms +[2025-12-30T19:54:50.829Z] [INFO] POST /api/auth/refresh 200 7ms +[2025-12-30T19:54:52.965Z] [INFO] GET /api/health 200 1ms +[2025-12-30T19:55:00.455Z] [INFO] POST /api/auth/refresh 200 7ms +[2025-12-30T19:55:09.268Z] [INFO] POST /api/auth/refresh 200 7ms +[2025-12-30T19:55:14.166Z] [INFO] GET / 304 5ms +[2025-12-30T19:55:14.294Z] [INFO] Socket disconnected: MH (aDcM3NHBWWDkjDWUAAAD) +[2025-12-30T19:55:14.296Z] [INFO] GET /css/base.css 304 0ms +[2025-12-30T19:55:14.298Z] [INFO] GET /css/variables.css 304 1ms +[2025-12-30T19:55:14.726Z] [INFO] GET /css/board.css 304 1ms +[2025-12-30T19:55:14.727Z] [INFO] GET /css/components.css 304 1ms +[2025-12-30T19:55:14.761Z] [INFO] GET /css/modal.css 200 1ms +[2025-12-30T19:55:14.794Z] [INFO] GET /css/calendar.css 304 1ms +[2025-12-30T19:55:14.796Z] [INFO] GET /css/list.css 304 1ms +[2025-12-30T19:55:14.829Z] [INFO] GET /css/admin.css 304 2ms +[2025-12-30T19:55:14.830Z] [INFO] GET /css/notifications.css 304 2ms +[2025-12-30T19:55:14.832Z] [INFO] GET /css/proposals.css 304 1ms +[2025-12-30T19:55:15.182Z] [INFO] GET /css/gitea.css 304 2ms +[2025-12-30T19:55:15.186Z] [INFO] GET /css/responsive.css 304 2ms +[2025-12-30T19:55:15.189Z] [INFO] GET /js/app.js 304 2ms +[2025-12-30T19:55:15.846Z] [INFO] GET /js/store.js 304 2ms +[2025-12-30T19:55:15.848Z] [INFO] GET /js/api.js 304 1ms +[2025-12-30T19:55:15.850Z] [INFO] GET /js/auth.js 304 1ms +[2025-12-30T19:55:15.853Z] [INFO] GET /js/offline.js 304 1ms +[2025-12-30T19:55:15.855Z] [INFO] GET /js/sync.js 304 1ms +[2025-12-30T19:55:15.855Z] [INFO] GET /js/board.js 200 4ms +[2025-12-30T19:55:16.010Z] [INFO] GET /js/list.js 304 2ms +[2025-12-30T19:55:16.015Z] [INFO] GET /js/calendar.js 304 2ms +[2025-12-30T19:55:16.017Z] [INFO] GET /js/task-modal.js 200 10ms +[2025-12-30T19:55:16.020Z] [INFO] GET /js/undo.js 304 6ms +[2025-12-30T19:55:16.021Z] [INFO] GET /js/shortcuts.js 304 3ms +[2025-12-30T19:55:16.196Z] [INFO] GET /js/admin.js 304 1ms +[2025-12-30T19:55:16.198Z] [INFO] GET /js/proposals.js 304 1ms +[2025-12-30T19:55:16.201Z] [INFO] GET /js/notifications.js 304 1ms +[2025-12-30T19:55:16.202Z] [INFO] GET /js/gitea.js 304 0ms +[2025-12-30T19:55:16.204Z] [INFO] GET /js/utils.js 304 1ms +[2025-12-30T19:55:16.257Z] [INFO] POST /api/auth/refresh 200 8ms +[2025-12-30T19:55:16.427Z] [INFO] GET /api/auth/users 304 6ms +[2025-12-30T19:55:16.504Z] [INFO] GET /assets/icons/task.svg 304 4ms +[2025-12-30T19:55:16.510Z] [INFO] GET /api/auth/users 304 4ms +[2025-12-30T19:55:16.529Z] [INFO] Socket connected: MH (AkN_8fCwOYNx8k5WAAAH) +[2025-12-30T19:55:16.537Z] [INFO] GET /api/projects 304 5ms +[2025-12-30T19:55:16.558Z] [INFO] MH joined project:[object Object] +[2025-12-30T19:55:16.587Z] [INFO] GET /api/stats/dashboard?projectId=2 304 8ms +[2025-12-30T19:55:16.590Z] [INFO] GET /api/columns/2 304 11ms +[2025-12-30T19:55:16.605Z] [INFO] GET /api/labels/2 304 14ms +[2025-12-30T19:55:16.619Z] [INFO] GET /api/tasks/project/2 200 27ms +[2025-12-30T19:55:16.648Z] [INFO] GET /api/proposals?sort=date&archived=0&projectId=2 304 4ms +[2025-12-30T19:55:16.684Z] [INFO] GET /api/notifications 304 13ms +[2025-12-30T19:55:17.544Z] [INFO] POST /api/auth/refresh 200 4ms +[2025-12-30T19:55:18.174Z] [INFO] GET /sw.js 200 2ms +[2025-12-30T19:55:18.205Z] [INFO] GET / 304 2ms +[2025-12-30T19:55:18.206Z] [INFO] GET /index.html 304 1ms +[2025-12-30T19:55:18.208Z] [INFO] GET /css/variables.css 304 1ms +[2025-12-30T19:55:18.267Z] [INFO] POST /api/auth/refresh 200 6ms +[2025-12-30T19:55:18.441Z] [INFO] GET /css/base.css 304 1ms +[2025-12-30T19:55:18.442Z] [INFO] GET /css/board.css 304 1ms +[2025-12-30T19:55:18.444Z] [INFO] GET /css/components.css 304 1ms +[2025-12-30T19:55:18.740Z] [INFO] GET /css/modal.css 304 1ms +[2025-12-30T19:55:18.742Z] [INFO] GET /css/calendar.css 304 1ms +[2025-12-30T19:55:18.745Z] [INFO] GET /css/responsive.css 304 1ms +[2025-12-30T19:55:18.896Z] [INFO] GET /js/api.js 304 2ms +[2025-12-30T19:55:18.900Z] [INFO] GET /js/app.js 304 3ms +[2025-12-30T19:55:18.901Z] [INFO] GET /js/utils.js 304 4ms +[2025-12-30T19:55:18.932Z] [INFO] GET /js/store.js 304 3ms +[2025-12-30T19:55:18.933Z] [INFO] GET /js/auth.js 304 3ms +[2025-12-30T19:55:18.940Z] [INFO] GET /js/sync.js 304 0ms +[2025-12-30T19:55:18.957Z] [INFO] GET /js/board.js 304 2ms +[2025-12-30T19:55:18.958Z] [INFO] GET /js/offline.js 304 2ms +[2025-12-30T19:55:18.994Z] [INFO] GET /js/task-modal.js 304 1ms +[2025-12-30T19:55:18.996Z] [INFO] GET /js/calendar.js 304 1ms +[2025-12-30T19:55:18.999Z] [INFO] GET /js/list.js 304 2ms +[2025-12-30T19:55:19.033Z] [INFO] GET /js/shortcuts.js 304 1ms +[2025-12-30T19:55:19.035Z] [INFO] GET /js/undo.js 304 1ms +[2025-12-30T19:55:19.040Z] [INFO] GET /js/tour.js 304 3ms +[2025-12-30T19:55:19.060Z] [INFO] GET /js/admin.js 304 1ms +[2025-12-30T19:55:19.115Z] [INFO] GET /js/gitea.js 304 3ms +[2025-12-30T19:55:19.117Z] [INFO] GET /js/notifications.js 304 3ms +[2025-12-30T19:55:19.120Z] [INFO] GET /js/proposals.js 304 1ms +[2025-12-30T19:55:19.143Z] [INFO] GET /css/list.css 304 0ms +[2025-12-30T19:55:19.239Z] [INFO] GET /css/admin.css 304 1ms +[2025-12-30T19:55:19.241Z] [INFO] GET /css/notifications.css 304 1ms +[2025-12-30T19:55:19.242Z] [INFO] GET /css/proposals.css 304 1ms +[2025-12-30T19:55:19.330Z] [INFO] GET /css/gitea.css 304 3ms +[2025-12-30T19:55:20.340Z] [INFO] GET /api/tasks/6 200 5ms +[2025-12-30T19:55:20.382Z] [INFO] GET /api/files/6 304 5ms +[2025-12-30T19:55:20.386Z] [INFO] GET /api/subtasks/6 200 8ms +[2025-12-30T19:55:20.392Z] [INFO] GET /api/tasks/6/history 404 4ms +[2025-12-30T19:55:20.397Z] [INFO] GET /api/links/6 304 4ms +[2025-12-30T19:55:20.402Z] [INFO] GET /api/comments/6 304 4ms +[2025-12-30T19:55:20.411Z] [INFO] GET /api/files/preview/2?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NCwidXNlcm5hbWUiOiJNSCIsImRpc3BsYXlOYW1lIjoiTW9uYW1pIiwiY29sb3IiOiIjMDAzYjk5Iiwicm9sZSI6InVzZXIiLCJwZXJtaXNzaW9ucyI6WyJnZW5laG1pZ3VuZyJdLCJpYXQiOjE3NjcxMjQ1MTcsImV4cCI6MTc2NzEyNTExN30.SDIkNYBRfjPWLty_XXb3kr-82nQsTOvv8i_W_2Hm9ZI 200 7ms +[2025-12-30T19:55:21.346Z] [INFO] POST /api/auth/refresh 200 6ms +[2025-12-30T19:55:23.041Z] [INFO] GET /api/health 200 2ms +[2025-12-30T19:55:26.554Z] [INFO] POST /api/auth/refresh 200 9ms +[2025-12-30T19:55:37.907Z] [INFO] POST /api/auth/refresh 200 10ms