ADR-003: Notion-artiger E-Mail-Builder
Warum Owlat den klassischen 3-Spalten-E-Mail-Editor durch eine Notion-artige, einspaltige Canvas für Inline-WYSIWYG-Bearbeitung ersetzt hat.
- Status: Angenommen
- Datum: 2025-01-10
Kontext
Der ursprüngliche E-Mail-Builder verwendete ein klassisches 3-Spalten-Layout: eine Blockpalette links, eine Canvas in der Mitte und ein Eigenschaftenpanel rechts. Das ist der Standardansatz der meisten E-Mail-Editoren (Mailchimp, Beehiiv usw.).
Nutzerrückmeldungen und interne Tests brachten Probleme zutage:
- Kognitiver Aufwand — Nutzer wechselten ständig den Kontext zwischen Palette, Canvas und Eigenschaftenpanel. Einen Block zu bearbeiten erforderte: (1) den Block auf der Canvas anklicken, (2) nach rechts schauen, um die Einstellungen zu finden, (3) Änderungen vornehmen, (4) zurück zur Canvas schauen, um das Ergebnis zu sehen.
- Verschwendeter Platz — Palette und Eigenschaftenpanel belegten Bildschirmbreite, auch wenn sie nicht genutzt wurden, und ließen eine schmale Canvas übrig, die nicht der tatsächlichen E-Mail-Breite entsprach.
- Reibung bei Drag-and-drop — Blöcke aus einer Palette an eine bestimmte Position zu ziehen war ungenau, besonders beim Umsortieren bestehender Blöcke.
Notion, Linear und moderne Dokumenteditoren lösen das mit Inline-Bearbeitung: Inhalte werden dort bearbeitet, wo sie stehen, und Werkzeuge erscheinen kontextbezogen.
Entscheidung
Das 3-Spalten-Layout durch eine einspaltige Dokument-Canvas ersetzen (Notion-artiger Editor). Blöcke werden inline bearbeitet. Einstellungen erscheinen in einem schwebenden Popover, das am ausgewählten Block verankert ist. Neue Blöcke werden über ein Slash-Command-Menü oder eine horizontale Toolbar eingefügt.
Zentrale Komponenten:
DocumentCanvas.vueersetztCanvasArea.vueUnifiedToolbar.vue— kombinierte schwebende Toolbar (Textformatierung + Blockeinstellungen), die das frühere seitliche Eigenschaftenpanel ablöstFloatingBlockSidebar.vue(+BlockPickerPopover.vue) für das Einfügen von Blöcken- Slash-Command-Menü (
/) für tastaturzentriertes Einfügen von Blöcken
Konsequenzen
Ermöglicht:
- WYSIWYG-Bearbeitung — was auf der Canvas zu sehen ist, ist das, wie die E-Mail aussieht
- Tastaturzentrierter Arbeitsablauf — Slash-Befehle, Navigation mit den Pfeiltasten, Enter zum Hinzufügen von Blöcken
- Eine Canvas in voller Breite, die der Renderbreite der E-Mail entspricht
- Einfacheres mentales Modell — „klicken zum Bearbeiten, tippen zum Schreiben“
- Mobilfreundliche Bearbeitung (kein Mehrspaltenlayout, das gequetscht werden muss)
Trade-offs:
- Komplexere Komponentenarchitektur — die schwebende Toolbar bzw. das Popover benötigt eine Ankerverwaltung (
useToolbarPosition.ts) - Layout-Blöcke (Columns, Container, Hero) verwenden
defineAsyncComponent, um zirkuläre Importe aufzubrechen - Die alten 3-Spalten-Komponenten (
CanvasArea.vue,PropertyPanel.vue,BlockPalette.vue,FloatingToolbar.vue) wurden entfernt; die öffentliche Komponenten-API (Props/Emits vonEmailBuilder.vue) ist unverändert - Manche Power-User-Funktionen (Massenbearbeitung von Eigenschaften, Blockbaum-Ansicht) sind ohne dauerhaftes Seitenpanel schwerer zugänglich zu machen