MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 8s
4.5 KiB
4.5 KiB
📥 Kernmodul 1: Triage & Quick-Dump Engine
Das Triage-Modul von MindSift basiert auf dem Getting Things Done (GTD)-Prinzip. Es trennt die Erfassung von Gedanken strikt von der Entscheidung, was damit geschehen soll.
💡 1. Das 2-Phasen-Konzept
- Phase 1: Schnelles Erfassen (Instant Dump)
Ein Gedanke, ein Anruf, eine Idee oder ein Server-Alarm wird ohne Reibung erfasst. Der Benutzer muss in diesem Moment weder ein Projekt auswählen, noch Fälligkeitsdaten eingeben oder Ordner durchsuchen. - Phase 2: Fokussierte Triage (Inbox Zero)
Zu einem späteren Zeitpunkt (z.B. morgens oder beim Feierabend) sichtet der Benutzer den Stapel im Triage-Deck Karte für Karte und trifft für jeden Eintrag eine eindeutige Entscheidung.
🔄 2. Triage State Machine
stateDiagram-v2
[*] --> Capture: Gedanke erfasst (Desktop / Mobile / Webhook)
Capture --> Inbox: Standard (status: 'inbox')
Capture --> Task: Direkt als Aufgabe (target: 'task')
Capture --> Document: Direkt als Notiz (target: 'document')
Capture --> ListItem: Direkt auf Liste (target: 'list_item')
state Inbox {
[*] --> ActiveCard: Oben auf Stapel
ActiveCard --> Skipped: Leertaste / Später (Ans Ende)
Skipped --> ActiveCard
}
ActiveCard --> Discarded: Swipe links / H (Wegwerfen)
ActiveCard --> Task: Swipe rechts / L (Als Aufgabe)
ActiveCard --> TaskDated: T (Mit Fälligkeitsdatum)
ActiveCard --> Document: D (In Notiz umwandeln)
ActiveCard --> ListItem: Auf Liste schieben
Discarded --> Trash: status: 'discarded'
Task --> TasksModule: status: 'kept', converted: 'task'
TaskDated --> TasksModule: status: 'kept', converted: 'task', dueDate
Document --> WorkspaceModule: status: 'converted', converted: 'document'
ListItem --> ListsModule: status: 'converted', converted: 'list_item'
🖐️ 3. Steuerung & Gesten (Mobile vs. Desktop)
Desktop-Bedienung (Tastatur-First)
Coder/: Fokussiert sofort die Eingabeleiste oben im Header.Enter: Speichert den Gedanken sofort im Deck.←oderH: Aktive Karte wegwerfen (discard).→oderL: Aktive Karte sofort zur Aufgabe machen (task).T: Datumsauswahl für Termin-Aufgabe öffnen.D: Aktive Karte in eine vollwertige Workspace-Notiz umwandeln.Leertaste: Karte überspringen und ans Ende des Stapels schieben („Später").
Mobile Bedienung (Touch & Swipe)
- Mittlerer Plus-Button (
+): Öffnet das design-angeglichene Bottom-Sheet mit Spracheingabe, 4 Prioritäts-Buttons (Niedrig,Normal,Wichtig,Dringend) und Fälligkeitsdatum. - Wischgeste nach links (Swipe Left): Roter Indikator erscheint, Karte wird verworfen.
- Wischgeste nach rechts (Swipe Right): Grüner Indikator erscheint, Karte wird sofort zur Aufgabe.
- Long-Press (Langes Drücken auf Karte): Öffnet das Schnell-Aktions-Menü (Auf Liste, Mit Termin, Als Notiz, Später).
🎙️ 4. Spracheingabe (Speech-to-Text)
In der Desktop-Schnelleingabeleiste (InstantCaptureBar.tsx) sowie im mobilen Triage-Modal (App.tsx) ist ein nativer Browser-Sprachassistent integriert:
- Verwendet die standardisierte
SpeechRecognitionbzw.webkitSpeechRecognitionAPI. - Erkennt Sprache auf Deutsch (
lang: 'de-DE'). - Live-Transkription: Gesprochener Text wird in Echtzeit in das Textfeld eingefügt.
- Haptisches Feedback: Vibrieren beim Starten und Stoppen der Aufnahme.
- Markiert erfasste Gedanken automatisch mit dem Herkunfts-Attribut
source: 'voice'(Diktat-Badge).
⚡ 5. Webhook-Ingestion & Smarthome-Pille
MindSift kann externe Alarme (Home Assistant, Zigbee2MQTT, n8n, Proxmox, Monitoring) automatisch ins Triage-Deck einspeisen:
Herkunftserkennung
- Wird ein Gedanke über
/api/v1/inboxmitX-API-Keyoder über/api/v1/webhooks/ingesteingeliefert, setzt das Backend automatischsource = "webhook". - Im Frontend visualisiert die Triage-Karte eine dezente Webhook-Pille (
<Webhook className="w-3 h-3 text-accent" /> Webhook). - Diese Kennzeichnung bleibt auch erhalten, wenn die Karte später zu einer Aufgabe umgewandelt wird.
Live-WebSocket Update
Nach erfolgreichem Ingest sendet der Server sofort ein TASK_CREATED Event über den WebSocket-Hub. Das geöffnete Triage-Deck fügt die neue Alarm-Karte sofort oben in den Stapel ein – ohne dass der Benutzer die Seite neu laden muss.