Plugin-Block: Bearbeiten-Knopf fehlt nach Wechsel in den Edit-Modus (stale isEditable) #160

Closed
opened 2026-07-20 21:50:51 +02:00 by fable-5 · 1 comment
Collaborator

Beobachtet auf Prod v0.10.0 (Stefan, ChordPro-Block auf p/stefan-waidele/der-gammler): Im Edit-Modus der Seite bleibt der Plugin-Block im Anzeigemodus. Die Leiste (plugin-block__bar) zeigt nur den Plugin-Namen, der Bearbeiten-Knopf erscheint nicht - auch nicht nach Anklicken des Blocks.

Ursache: PluginBlockView liest editor.isEditable nur im Render (apps/web/src/editor/nodes/plugin-block.tsx). Die Seite startet immer im Lesemodus; der Moduswechsel ruft editor.setEditable() auf (PageEditorPage), was in TipTap nur ein update-Event emittiert, aber keine Transaction. React-NodeViews rendern bei setEditable nicht neu (updateProps feuert nur bei Node-Aenderung und Selektions-Wechsel, geprueft in @tiptap/react 3.27.1). Der Knopf haengt an editable && state === 'ready' - darum fertige Leiste ohne Knopf und ohne Lade-Status.

Betroffen sind alle Block-Plugins (ChordPro, Mermaid, Excalidraw, draw.io, ...). Der bestehende e2e-Pack plugin-blocks.spec.ts deckt den Fall nicht ab, weil dort der Block immer erst NACH dem Wechsel in den Edit-Modus eingefuegt wird.

Fix: editable in der NodeView reaktiv machen - das update-Event des Editors abonnieren und isEditable daraus lesen; zusaetzlich beim Wechsel editable->false einen Block, der gerade im Edit-Modus ist, auf render zurueckschalten (sonst zeigt der Lesemodus die Editier-UI des Plugins). Regression-Test im plugin-blocks-Pack: Block existiert bereits, Seite laedt im Lesemodus, Wechsel in den Edit-Modus muss den Knopf zeigen.

**Beobachtet auf Prod v0.10.0** (Stefan, ChordPro-Block auf p/stefan-waidele/der-gammler): Im Edit-Modus der Seite bleibt der Plugin-Block im Anzeigemodus. Die Leiste (plugin-block__bar) zeigt nur den Plugin-Namen, der Bearbeiten-Knopf erscheint nicht - auch nicht nach Anklicken des Blocks. **Ursache:** PluginBlockView liest editor.isEditable nur im Render (apps/web/src/editor/nodes/plugin-block.tsx). Die Seite startet immer im Lesemodus; der Moduswechsel ruft editor.setEditable() auf (PageEditorPage), was in TipTap nur ein update-Event emittiert, aber keine Transaction. React-NodeViews rendern bei setEditable nicht neu (updateProps feuert nur bei Node-Aenderung und Selektions-Wechsel, geprueft in @tiptap/react 3.27.1). Der Knopf haengt an editable && state === 'ready' - darum fertige Leiste ohne Knopf und ohne Lade-Status. Betroffen sind alle Block-Plugins (ChordPro, Mermaid, Excalidraw, draw.io, ...). Der bestehende e2e-Pack plugin-blocks.spec.ts deckt den Fall nicht ab, weil dort der Block immer erst NACH dem Wechsel in den Edit-Modus eingefuegt wird. **Fix:** editable in der NodeView reaktiv machen - das update-Event des Editors abonnieren und isEditable daraus lesen; zusaetzlich beim Wechsel editable->false einen Block, der gerade im Edit-Modus ist, auf render zurueckschalten (sonst zeigt der Lesemodus die Editier-UI des Plugins). Regression-Test im plugin-blocks-Pack: Block existiert bereits, Seite laedt im Lesemodus, Wechsel in den Edit-Modus muss den Knopf zeigen.
Author
Collaborator

Behoben in PR #161 (Commit db0e563) und mit Release v0.10.1 auf Prod deployt (Gate-Tag prod-v0.10.1-initial; Stefans Freigabe im Chat).

  • Fix: useEditorEditable abonniert das update-Event des Editors, isEditable wird reaktiv gelesen; Guard schaltet einen offenen Block-Edit beim Verlust der Editierbarkeit auf render zurueck.
  • Regressionstest im plugin-blocks-Pack (ohne Fix reproduzierbar rot, mit Fix gruen); CI auf dem PR komplett gruen.
  • Prod verifiziert: api v0.10.1, readyz ok, 7 Container healthy. Test und Int liefen den Fix-Commit db0e563 bereits vor dem Release.

Damit erscheint der Bearbeiten-Knopf an Plugin-Bloecken (ChordPro, Mermaid, Excalidraw, draw.io) jetzt direkt beim Wechsel in den Edit-Modus.

Behoben in PR #161 (Commit db0e563) und mit Release v0.10.1 auf Prod deployt (Gate-Tag prod-v0.10.1-initial; Stefans Freigabe im Chat). - Fix: useEditorEditable abonniert das update-Event des Editors, isEditable wird reaktiv gelesen; Guard schaltet einen offenen Block-Edit beim Verlust der Editierbarkeit auf render zurueck. - Regressionstest im plugin-blocks-Pack (ohne Fix reproduzierbar rot, mit Fix gruen); CI auf dem PR komplett gruen. - Prod verifiziert: api v0.10.1, readyz ok, 7 Container healthy. Test und Int liefen den Fix-Commit db0e563 bereits vor dem Release. Damit erscheint der Bearbeiten-Knopf an Plugin-Bloecken (ChordPro, Mermaid, Excalidraw, draw.io) jetzt direkt beim Wechsel in den Edit-Modus.
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: stwaidele/dorfteich#160
No description provided.