Zum Hauptinhalt springen

Zurück zum Devlog

Montag, 30. März 2026

Feature

42 Commits

5 min Lesezeit

Todo: Notepad-Design & Keyboard-Navigation

Komplettes Redesign der Todo-Liste als Notizblock mit durchgängiger Tastaturnavigation zwischen Tasks und QuickInputBar.

T

Till Schneider

Autor

Highlights

  • Notizblock-Design mit liniertem Papier-Hintergrund und roter Margin-Linie
  • Durchgängige Tastaturnavigation: Pfeiltasten, Tab, Shift+Tab zwischen allen Tasks
  • contenteditable statt Input-Toggle: Cursor landet direkt an der Klick-Position
  • Zirkuläre Navigation: QuickInputBar -> Tasks -> QuickInputBar
  • Debug-Borders Modus (Ctrl+Shift+D) für UI-Debugging

Notepad-Redesign

Die Todo-Homepage wurde von einer schmalen Card-Ansicht (560px) zu einem A4-breiten Notizblock (840px) umgebaut.

Vorher

  • Kleine weiße Card mit Box-Shadow auf grauem Hintergrund
  • CollapsibleSection-Komponenten mit Toggle-Logik
  • Task-Items mit Hover-Effekten (translateY, Hintergrundwechsel)
  • Separate Input-Elemente für Titel-Bearbeitung (zwei Klicks nötig)

Nachher

┌──────────────────────────────────────────────┐
│ ┃  Überfällig (2)                            │  ← Rote Margin-Linie
│ ┃  ○ Steuererklärung abgeben         Gestern │
│ ┃  ○ Zahnarzt anrufen                 25. Mär │
│ ┃─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │  ← Gestrichelte Trenner
│ ┃  Heute (3)                                 │
│ ┃  ○ Meeting vorbereiten              Heute  │
│ ┃  ○ Code Review PR #42              Heute   │
│ ┃  ○ Einkaufen gehen                 Heute   │
│ ┃─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │
│ ┃  ▼ Erledigt (5)                            │  ← Standardmäßig eingeklappt
└──────────────────────────────────────────────┘
     Linierter Hintergrund (Notizbuch-Linien)

Design-Entscheidungen:

AspektEntscheidungGrund
HintergrundLiniert (#fffef5) nur auf SheetPapier-Metapher, Hauptbereich bleibt neutral
Breite840px (A4-ähnlich)Mehr Platz für lange Titel, Labels, Kontakte
SectionsEinfache Header statt CollapsibleWeniger UI-Noise, Sections sind immer relevant
ErledigtEingeklappt mit Chevron-ToggleAktive Tasks im Fokus
Drag-HandleLinks außerhalb des SheetsStört nicht, erscheint nur bei Hover
Hover-EffekteKomplett entferntRuhigere UI, weniger visuelle Ablenkung

Keyboard-Navigation

┌─────────────────────────────┐
│   QuickInputBar (unten)     │ ← ArrowUp / Tab
│   [Neue Aufgabe oder...]    │
└──────────┬──────────────────┘
           │ ↑ ArrowUp / Tab
           ▼ ↓ ArrowDown / Tab
┌─────────────────────────────┐
│   Task 1: Meeting vorber... │ ← contenteditable, Cursor an Klick-Position
│   Task 2: Code Review PR... │ ← ArrowDown / Tab → nächster Task
│   Task 3: Einkaufen gehen   │ ← ArrowDown → zurück zur QuickInputBar
└─────────────────────────────┘

Tastatur-Befehle im Task-Titel

TasteAktion
ArrowDown / TabNächster Task-Titel
ArrowUp / Shift+TabVorheriger Task-Titel
EnterSpeichern und Blur
EscapeÄnderungen verwerfen
Am letzten Task ArrowDownZurück zur QuickInputBar
Am ersten Task ArrowUpZurück zur QuickInputBar

Von QuickInputBar zu Tasks

TasteAktion
ArrowUpErster Task-Titel fokussieren
TabErster Task-Titel fokussieren

contenteditable statt Input-Toggle

Vorher: Klick auf Titel → <span> wird durch <input> ersetzt → zweiter Klick positioniert Cursor.

Nachher: Titel ist immer ein <span contenteditable> → ein Klick positioniert den Cursor sofort an der Maus-Position. Kein visueller Unterschied zwischen Lese- und Bearbeitungsmodus.

<span
	class="task-title"
	contenteditable="true"
	onkeydown={handleTitleKeydown}
	onblur={handleTitleBlur}
>
	{task.title}
</span>

Debug-Borders

Neues Entwickler-Tool: Ctrl+Shift+D aktiviert farbkodierte Outlines für alle UI-Elemente.

ElementFarbe
divRot
sectionBlau
navGrün
buttonGelb
input/textareaViolett
aPink
img/svgCyan

State wird in localStorage persistiert. Aktuell nur in der Todo-App, geplant als globales Shared-Package.

Weitere Verbesserungen

BereichVorherNachher
Task-TitelEinzeilig, abgeschnittenMehrzeilig mit word-break
Checkbox-AlignmentVertikal zentriertAm Anfang der ersten Zeile (flex-start)
Mobile Bottom-Padding150px100px
Erledigt-Datum Opacity0.5 (zu blass)0.7, Hover 1.0
Task-HovertranslateY + HintergrundKein Hover-Effekt
Titel-InputBorder + HintergrundUnsichtbar, gleiche Position

Zusammenfassung

BereichCommitsHighlights
Notepad-Design~15Liniertes Papier, A4-Breite, Section-Redesign
Keyboard-Navigation~10Arrow/Tab zwischen Tasks, zirkulär mit InputBar
contenteditable~5Direkte Cursor-Platzierung, kein Mode-Switch
Debug-Borders~3Ctrl+Shift+D, farbkodiert, localStorage
Cleanup~9Hover entfernt, Alignment, Opacity

Nächste Schritte

  • Debug-Borders als globales Shared-Package für alle Apps
  • Keyboard-Navigation Pattern in andere Apps übertragen (Zitare, Contacts)
  • Tastatur-Shortcut-Hilfe (? oder Ctrl+/) mit Overlay

Tags

#todo #ux #keyboard-navigation #contenteditable #design #accessibility #notepad