feat: Add Focus Tools (ADHD-friendly productivity features)
continuous-integration/drone/push Build is passing

- Add Focus Tools dashboard with collapsible help section
- Implement Quick Wins page for tasks under 15 minutes
- Add Single Task Focus mode to reduce overwhelm
- Create Body Doubling page for virtual co-working
- Add visual timer, break reminders, and energy tracking
- Implement hyperfocus protection alerts
- Add ADHD settings panel with customizable options
- Include full English and German translations
- Fix larger touch targets CSS to not break button layouts
- Add Playwright tests for Focus Tools features
This commit is contained in:
Paul Nothaft
2026-01-15 21:20:04 +01:00
parent 74ffef48d3
commit 7ce4f7efdc
31 changed files with 5651 additions and 11 deletions
+310
View File
@@ -35,6 +35,7 @@
"weekList": "Woche",
"create": "Erstellen",
"kanban": "Kanban",
"adhd": "Fokus-Tools",
"achievements": "Erfolge",
"leaderboard": "Bestenliste",
"settings": "Einstellungen"
@@ -286,6 +287,18 @@
"2fa": "Zwei-Faktor-Authentifizierung",
"2faDesc": "Ihr Konto mit E-Mail-basierter 2FA sichern"
},
"schedule": {
"title": "Zeitplan-Einstellungen",
"description": "Definiere deine Verfügbarkeit für intelligente Planung.",
"start": "Startzeit",
"end": "Endzeit",
"days": "Aktive Tage",
"saved": "Zeitplan gespeichert",
"work": "Arbeitszeit",
"personal": "Persönliche Zeit",
"workDesc": "Aufgaben mit 'Arbeit'-Labels werden während dieser Zeiten geplant.",
"personalDesc": "Aufgaben mit 'Persönlich'-Labels werden während dieser Zeiten geplant. 'Neutrale' Aufgaben können beide nutzen."
},
"admin": {
"title": "Administration",
"description": "Systemweite Einstellungen und Benutzerverwaltung",
@@ -671,6 +684,17 @@
}
},
"analytics": {
"title": "Analysen",
"timeTracking": "Zeiterfassung",
"timeDistribution": "Zeitverteilung",
"totalTime": "Gesamtzeit",
"noData": "Keine Daten für diesen Zeitraum",
"period": {
"day": "Tag",
"week": "Woche",
"month": "Monat",
"year": "Jahr"
},
"mon": "Mo",
"tue": "Di",
"wed": "Mi",
@@ -905,5 +929,291 @@
"estimatedDuration": "Geschätzte Dauer",
"subtasks": "Teilaufgaben",
"timeEstimate": "Zeitschätzung"
},
"common": {
"optional": "Optional",
"saving": "Speichern...",
"creating": "Erstellen..."
},
"adhd": {
"mode": "Fokus-Tools",
"modeEnabled": "Fokus-Tools aktiviert",
"modeDisabled": "Fokus-Tools deaktiviert",
"modeDescription": "Optimiert die App für Fokus und Produktivität",
"toggleMode": "Fokus-Tools umschalten",
"active": "Aktiv",
"dashboard": {
"title": "Fokus-Dashboard",
"subtitle": "Werkzeuge, die zu deinem Gehirn passen",
"available": "verfügbar",
"completedToday": "Heute erledigt",
"coworking": "Zusammenarbeit",
"energyLevel": "Energie",
"focusMode": "Fokus-Modus",
"helpTitle": "Wie die Fokus-Tools dir helfen",
"helpIntro": "Diese Werkzeuge sind für dein Gehirn entwickelt - sie adressieren häufige Herausforderungen wie Zeitblindheit, Aufgabenlähmung und das Bedürfnis nach schnellen Erfolgen.",
"help": {
"quickWins": {
"title": "Schnelle Erfolge",
"why": "Das Starten von Aufgaben fühlt sich überwältigend an, und dein Gehirn sehnt sich nach schnellen Dopamin-Kicks.",
"how": "Zeigt nur Aufgaben unter 15 Minuten, sortiert nach Einfachheit. Kleine Erfolge bauen Momentum auf und geben deinem Gehirn die Belohnung, die es braucht.",
"usage": "Öffne Schnelle Erfolge, wenn du feststeckst. Wähle die erste Aufgabe und erledige sie. Der Dopamin-Boost hilft dir, mehr zu schaffen."
},
"singleTask": {
"title": "Einzelaufgaben-Fokus",
"why": "Eine lange Aufgabenliste zu sehen verursacht Überforderung und Lähmung.",
"how": "Versteckt alles außer EINER Aufgabe. Keine Ablenkungen, keine Listen-Angst - nur die Aufgabe vor dir.",
"usage": "Wähle eine Aufgabe und gehe in den Fokus-Modus. Arbeite nur an dieser Aufgabe, bis sie fertig ist oder du eine Pause brauchst."
},
"fiveMinute": {
"title": "5-Minuten-Starter",
"why": "Das Schwierigste ist der Anfang. Dein Gehirn wehrt sich gegen große Aufgaben.",
"how": "Verpflichte dich zu nur 5 Minuten. Dein Gehirn denkt: 'Ich kann alles 5 Minuten lang machen.' Einmal angefangen, machst du oft weiter.",
"usage": "Klicke '5 Min Start' bei einer Aufgabe. Arbeite 5 Minuten. Danach kannst du ohne schlechtes Gewissen aufhören ODER weitermachen."
},
"visualTimer": {
"title": "Visueller Timer",
"why": "Zeitblindheit - du kannst Zeit nicht natürlich wahrnehmen.",
"how": "Ein schrumpfender Kreis zeigt Zeit visuell an. Farben ändern sich (grün → gelb → rot) wenn die Zeit abläuft.",
"usage": "Nutze den Timer während Fokus-Sessions. Das visuelle Feedback hilft dir, Zeit zu spüren."
},
"breaks": {
"title": "Pausen-Erinnerungen",
"why": "Du vergisst Pausen zu machen, was zu Burnout oder Hyperfokus-Abstürzen führt.",
"how": "Sanfte Erinnerungen erscheinen nach deinem eingestellten Intervall mit Vorschlägen wie Dehnen oder Wasser trinken.",
"usage": "Wenn die Erinnerung erscheint, mach eine echte Pause. Auch 2 Minuten helfen. Du kannst bei Bedarf snoozen."
},
"hyperfocus": {
"title": "Hyperfokus-Schutz",
"why": "Du bleibst stundenlang an einer Aufgabe hängen und vernachlässigst alles andere.",
"how": "Warnt dich, wenn du zu lange an einer Aufgabe arbeitest. Zeigt andere wartende Aufgaben.",
"usage": "Bei einer Warnung überlege, ob du weitermachen oder wechseln solltest. Es ist okay weiterzumachen, aber mach es bewusst."
},
"energy": {
"title": "Energie-Check-ins",
"why": "Dich zu schweren Aufgaben zu zwingen, wenn du erschöpft bist, führt zum Scheitern.",
"how": "Logge täglich dein Energielevel. Die App schlägt Aufgaben vor, die zu deiner aktuellen Energie passen.",
"usage": "Checke jeden Morgen ein. Wenig Energie? Mach einfache Aufgaben. Viel Energie? Tackle Herausforderungen."
},
"bodyDoubling": {
"title": "Body Doubling",
"why": "Alleine zu arbeiten macht es schwer, am Ball zu bleiben.",
"how": "Virtuelle Co-Working-Sessions, bei denen du neben anderen arbeitest. Soziale Verantwortlichkeit hält dich fokussiert.",
"usage": "Tritt einer Session bei oder erstelle eine. Allein zu wissen, dass andere arbeiten, hilft dir dranzubleiben."
},
"taskBreakdown": {
"title": "KI-Aufgabenzerlegung",
"why": "Große Aufgaben fühlen sich unmöglich an zu starten.",
"how": "KI zerlegt überwältigende Aufgaben in kleine, konkrete Schritte mit Zeitschätzungen.",
"usage": "Klicke 'Zerlegen' bei einer großen Aufgabe. Überprüfe die Schritte und erstelle sie als Unteraufgaben."
}
},
"quickWins": "Schnelle Erfolge",
"streak": "Tagessträhne"
},
"timer": {
"remaining": "verbleibend"
},
"breakReminder": {
"title": "Zeit für eine Pause!",
"workingFor": "Du arbeitest seit {{minutes}} Minuten",
"message": "Dein Gehirn braucht regelmäßige Pausen. Wähle eine kurze Pause:",
"snooze5": "5 Min später",
"snooze15": "15 Min später",
"gentle": "Es ist okay, Pausen zu machen. Du machst das großartig!",
"types": {
"stretch": "Dehnen",
"water": "Wasser",
"walk": "Spazieren",
"eyes": "Augen",
"snack": "Snack",
"breathe": "Atmen"
}
},
"taskBreakdown": {
"title": "Aufgabe aufteilen",
"description": "Große Aufgaben können überwältigend sein. Lass uns sie in kleine Schritte zerlegen.",
"prompt": "Klicke unten, um diese Aufgabe in machbare Schritte zu zerlegen.",
"analyzing": "Analysiere...",
"breakItDown": "Aufgabe aufteilen",
"estimated": "geschätzt",
"totalTime": "Gesamtzeit",
"regenerate": "Neu generieren",
"createSubtasks": "{{count}} Schritte erstellen",
"error": "Aufgabe konnte nicht zerlegt werden. Bitte versuche es erneut."
},
"quickWins": {
"title": "Schnelle Erfolge",
"description": "Kleine Aufgaben für sofortige Dopamin-Boosts",
"tip": "Kleine Erfolge schaffen Momentum! Erledige diese schnellen Aufgaben für einen Dopamin-Boost.",
"noTasks": "Keine schnellen Aufgaben verfügbar"
},
"singleTask": {
"title": "Einzelaufgaben-Fokus",
"description": "Konzentriere dich auf eine Aufgabe ohne Ablenkungen",
"selectTask": "Wähle eine Aufgabe zum Fokussieren",
"choosePlaceholder": "Aufgabe auswählen...",
"task": "Aufgabe",
"complete": "erledigt",
"allDone": "Alles geschafft!",
"allDoneDesc": "Du hast alle Aufgaben erledigt. Nimm dir eine wohlverdiente Pause!",
"exit": "Ansicht verlassen",
"markComplete": "Als erledigt markieren",
"fiveMin": "5 Min starten",
"startTimer": "Timer starten",
"skip": "Überspringen"
},
"fiveMin": {
"title": "Die 5-Minuten-Regel",
"prompt": "Verpflichte dich nur zu 5 Minuten. Danach kannst du aufhören.",
"start": "5 Minuten starten",
"noObligation": "Keine Verpflichtung weiterzumachen!",
"remaining": "verbleibend",
"pause": "Pause",
"resume": "Fortsetzen",
"done": "Fertig!",
"encouragement": "Du machst das großartig! Jede Sekunde zählt.",
"congrats": "Super gemacht!",
"fiveMinDone": "Du hast 5 Minuten geschafft!",
"continueWorking": "Weitermachen",
"finished": "Aufgabe fertig!",
"takeBreak": "Pause machen",
"earned": "verdient"
},
"energy": {
"title": "Wie ist dein Energielevel?",
"description": "Hilf uns, dir passende Aufgaben vorzuschlagen.",
"checkIn": "Einchecken",
"checkInReminder": "Wie fühlst du dich heute?",
"checkInBenefit": "Tracke deine Energie für bessere Aufgabenvorschläge",
"notesLabel": "Notizen",
"notesPlaceholder": "Wie fühlst du dich heute?",
"submit": "Energie erfassen",
"levels": {
"low": "Niedrig",
"medium": "Mittel",
"high": "Hoch"
},
"suggestions": {
"low": {
"title": "Empfehlung für niedrige Energie",
"description": "Konzentriere dich auf einfache, administrative Aufgaben oder kurze Quick Wins."
},
"medium": {
"title": "Empfehlung für mittlere Energie",
"description": "Gut für Routineaufgaben und Kommunikation."
},
"high": {
"title": "Empfehlung für hohe Energie",
"description": "Perfekt für kreative oder herausfordernde Aufgaben!"
}
}
},
"hyperfocus": {
"title": "Hyperfokus-Warnung",
"message": "Du arbeitest seit {{minutes}} Minuten an dieser Aufgabe.",
"minutes": "Min",
"urgentTasks": "dringende Aufgaben",
"waitingTasks": "Wartende Aufgaben",
"takeBreak": "Pause machen",
"continue": "Weitermachen",
"gentle": "Es ist okay, Pausen zu machen oder zu wechseln."
},
"bodyDoubling": {
"title": "Body Doubling",
"description": "Arbeite gemeinsam mit anderen für mehr Fokus und Accountability.",
"tip": "Gemeinsames Arbeiten hilft beim Fokussieren. Tritt einer Session bei oder erstelle eine.",
"createSession": "Session erstellen",
"newSession": "Neue Session",
"newSessionDesc": "Erstelle eine Session, zu der andere beitreten können.",
"sessionTitle": "Titel",
"titlePlaceholder": "z.B. Fokus-Session Vormittag",
"sessionType": "Typ",
"types": {
"focus": "Fokus",
"brainstorm": "Brainstorm",
"admin": "Admin",
"creative": "Kreativ"
},
"startTime": "Startzeit",
"duration": "Dauer",
"create": "Session erstellen",
"activeSessions": "Aktive Sessions",
"upcomingSessions": "Geplante Sessions",
"noSessions": "Keine Sessions geplant. Erstelle die erste!",
"live": "Live",
"join": "Beitreten",
"leave": "Verlassen"
},
"settings": {
"title": "Fokus-Einstellungen",
"description": "Passe deine fokusfreundliche Erfahrung an",
"visualTitle": "Darstellung & Interaktion",
"visualDesc": "Passe das Interface für deine Bedürfnisse an.",
"reducedAnimations": "Reduzierte Animationen",
"reducedAnimationsDesc": "Weniger visuelle Bewegung für bessere Konzentration.",
"largerTargets": "Größere Buttons",
"largerTargetsDesc": "Größere Berührungsflächen für einfacheres Klicken.",
"singleTaskDefault": "Single-Task-Modus Standard",
"singleTaskDefaultDesc": "Zeige nur eine Aufgabe zur Zeit an.",
"timerTitle": "Timer & Fokus",
"timerDesc": "Einstellungen für Zeitmanagement.",
"visualTimer": "Visueller Timer",
"visualTimerDesc": "Zeige die Zeit als schrumpfenden Kreis.",
"hyperfocusProtection": "Hyperfokus-Schutz",
"hyperfocusProtectionDesc": "Warnungen bei zu langem Arbeiten an einer Aufgabe.",
"hyperfocusMaxMinutes": "Maximale Fokuszeit",
"breakTitle": "Pausen",
"breakDesc": "Erinnerungen für regelmäßige Pausen.",
"breakInterval": "Pausen-Intervall (Minuten)",
"motivationTitle": "Motivation",
"motivationDesc": "Positive Verstärkung und Belohnungen.",
"messagingLevel": "Ermutigungs-Level",
"messagingMinimal": "Minimal",
"messagingNormal": "Normal",
"messagingHigh": "Hoch",
"messagingLevelDesc": "Wie viel positive Ermutigung möchtest du?",
"quickWinThreshold": "Quick-Win Schwellwert",
"quickWinThresholdDesc": "Aufgaben unter dieser Dauer gelten als Quick Wins.",
"energyTitle": "Energie",
"energyDesc": "Tägliche Energie-Check-ins.",
"energyCheckIns": "Energie-Check-ins aktivieren",
"energyCheckInsDesc": "Täglich nach deinem Energielevel fragen.",
"reset": "Auf Standard zurücksetzen"
},
"encouragements": {
"taskComplete": [
"Großartig! Jeder Schritt zählt.",
"Du machst das super! Weiter so!",
"Ein Task weniger - du rockst das!",
"Siehst du? Du kannst das!",
"Fantastisch! Bleib dran!"
],
"returning": [
"Schön, dass du wieder da bist!",
"Jeder Neustart ist ein Gewinn.",
"Willkommen zurück! Lass uns loslegen."
],
"struggling": [
"Es ist okay, kleine Schritte zu machen.",
"Du musst nicht alles auf einmal schaffen.",
"Atme tief durch. Du schaffst das."
],
"streakBroken": [
"Streaks sind nur Zahlen. Du bist mehr als das.",
"Morgen ist ein neuer Tag!",
"Jeder Tag ist eine neue Chance."
],
"milestone": [
"Meilenstein erreicht! Unglaublich!",
"Du hast es geschafft! Feier diesen Moment!",
"Was für ein Erfolg!"
],
"quickWin": [
"Schneller Erfolg! Das Dopamin fließt!",
"Boom! Quick Win erledigt!",
"So schnell kann es gehen!"
]
}
}
}