Files
MindSift/Doku/modules/tasks.md
T
sandrodachandClaude Sonnet 5.5 bc13235da6
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 8s
docs: rewrite documentation and README from current codebase, add flaw analysis
Remove outdated claims (CRDT, DocRooms, presence, .md files on disk) and
document the actual architecture, API, permissions and known flaws.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 23:09:05 +01:00

3.3 KiB

Modul: Aufgaben, Kanban & Alarme

Code: TasksView.tsx, TaskDetailModal.tsx, ManageColumnsModal.tsx; Backend: handleUpdateThought, handleReorderTasks, *TaskList*-Handler, startAlarmTicker.

Datenmodell

Eine Aufgabe ist ein thought (database.md) mit kanbanStatus, priority (low/normal/high/urgent), dueDate (nur Datum), notes (Markdown), subtasks ([{id, title, isCompleted}]), tags, taskListId und sortOrder. Aufgaben ohne Liste sind persönlich.

Ansichten

  • Liste mit Filtern (offen, erledigt, Papierkorb), Gruppierung (z. B. nach Status oder Fälligkeit), Sortierung und Hashtag-Filter.
  • Kanban: Spalten pro Liste frei konfigurierbar (Name, Farbe, „Erledigt“-Spalte). Standard: Zu erledigen, In Bearbeitung, Wartet auf andere, Erledigt. Eine Karte in eine „Erledigt“-Spalte zu ziehen setzt isCompleted.
  • Drag & Drop sortiert in der Liste und zwischen Spalten; ein Klick öffnet das Detail-Fenster (Titel, Status, Priorität, Fälligkeit mit Schnellwahl, Liste, Hashtags, Unteraufgaben mit Fortschrittsbalken, Notizen).
  • Aufgaben lassen sich in eine Notiz umwandeln („Als Notiz vertiefen“). Aufgaben aus Notiz-Checkboxen (enhanced-task) bleiben verknüpft: Abhaken wirkt in beide Richtungen (SyncDocBlockAndTask), „In Notiz öffnen“ springt zum Block.

Aufgabenlisten und Freigabe

  • Jede Liste hat Eigentümer, Titel, Symbol, Farbe und eigene Kanban-Spalten.
  • Freigabe an Gruppen oder Benutzer über den Dialog UnifiedShareModal (Stufe pro Freigabe):
    • Bearbeiter: darf Aufgaben anlegen, ändern, abhaken, verschieben, löschen sowie Liste umbenennen und Spalten ändern.
    • Leser: sieht alles, kann nichts ändern. Der Server antwortet mit 403; die Oberfläche blendet Eingaben aus und zeigt „Nur Lesen“.
    • Gruppenmitglieder mit mehreren Wegen erhalten die höchste Stufe. Nur der Eigentümer legt Freigaben an oder entfernt sie und kann die Liste löschen.
  • Umsetzung: Store.GetTaskListPermission liefert owner/editor/viewer/""; ensureTaskListWritable schützt Schreibpfade.
  • Bekannte Lücken: FLAW-03 (Umsortieren per ID), FLAW-06 (Editor kann weiterteilen).

Alarme

Der Ticker läuft jede Minute (architecture.md). Für offene Aufgaben mit due_date <= heute und alarm_sent = 0 sendet er an die Kanäle des Aufgaben-Eigentümers:

Kanal Ziel Konfiguration
E-Mail alarmEmail (sonst Konto-Adresse) SMTP aus Admin-Einstellungen oder Umgebung (Port 465 mit TLS wird direkt unterstützt, sonst STARTTLS über smtp.SendMail)
Discord Webhook-URL Benutzereinstellungen
Webhook beliebige URL (JSON: event, title, notes, dueDate, priority, timestamp) Benutzereinstellungen

Danach wird alarm_sent = 1 gesetzt, sobald mindestens ein Kanal erfolgreich war.

Einschränkungen (FLAW-12): Fälligkeiten haben keine Uhrzeit, notifyBeforeMinutes wird ignoriert, die Serverzeit gilt, und ein verschobener Termin löst nicht erneut aus. URLs werden nicht geprüft (FLAW-05).