#160: Plugin-Block - Bearbeiten-Knopf nach Moduswechsel wieder da #161

Merged
stwaidele merged 1 commits from fix-160-plugin-block-editable into main 2026-07-20 23:22:40 +02:00
Collaborator

Fixes #160.

Bug (Prod v0.10.0, von Stefan am ChordPro-Block gemeldet): Im Edit-Modus der Seite blieb jeder Plugin-Block im Anzeigemodus - die Leiste zeigte nur den Plugin-Namen, kein Bearbeiten-Knopf, kein Lade-Status.

Ursache: Die NodeView las editor.isEditable nur beim Mount. Die Seite mountet immer im Lesemodus; der Moduswechsel laeuft ueber setEditable(), das in TipTap nur ein update-Event emittiert und keine Transaction - React-NodeViews rendern dabei nie neu (geprueft in @tiptap/react 3.27.1). Betroffen: alle Block-Plugins (ChordPro, Mermaid, Excalidraw, draw.io).

Fix: useEditorEditable abonniert das update-Event des Editors und liest isEditable reaktiv. Zusatz-Guard: verliert die Seite die Editierbarkeit, waehrend die Editier-UI des Plugins offen ist, faellt der Block auf render zurueck (der Lesemodus blendet die Leiste aus - es gaebe sonst keinen Weg mehr heraus). Damit stimmt auch die setData-Schreibrecht-Pruefung wieder.

Tests: Neuer Regressionstest im plugin-blocks-Pack (Block existiert bereits, Seite laedt im Lesemodus, Moduswechsel muss den Knopf zeigen; Rueckweg mitgeprueft). Ohne Fix reproduzierbar rot, mit Fix gruen. Lokal gruen: plugin-blocks (5), plugins+mermaid (6), Web-Unit (63), typecheck, lint. Die bisherigen Specs fuegten Bloecke immer erst nach dem Moduswechsel ein und konnten den Fall nicht sehen.

Keine Backend-/DB-Aenderung.

Fixes #160. **Bug (Prod v0.10.0, von Stefan am ChordPro-Block gemeldet):** Im Edit-Modus der Seite blieb jeder Plugin-Block im Anzeigemodus - die Leiste zeigte nur den Plugin-Namen, kein Bearbeiten-Knopf, kein Lade-Status. **Ursache:** Die NodeView las editor.isEditable nur beim Mount. Die Seite mountet immer im Lesemodus; der Moduswechsel laeuft ueber setEditable(), das in TipTap nur ein update-Event emittiert und keine Transaction - React-NodeViews rendern dabei nie neu (geprueft in @tiptap/react 3.27.1). Betroffen: alle Block-Plugins (ChordPro, Mermaid, Excalidraw, draw.io). **Fix:** useEditorEditable abonniert das update-Event des Editors und liest isEditable reaktiv. Zusatz-Guard: verliert die Seite die Editierbarkeit, waehrend die Editier-UI des Plugins offen ist, faellt der Block auf render zurueck (der Lesemodus blendet die Leiste aus - es gaebe sonst keinen Weg mehr heraus). Damit stimmt auch die setData-Schreibrecht-Pruefung wieder. **Tests:** Neuer Regressionstest im plugin-blocks-Pack (Block existiert bereits, Seite laedt im Lesemodus, Moduswechsel muss den Knopf zeigen; Rueckweg mitgeprueft). Ohne Fix reproduzierbar rot, mit Fix gruen. Lokal gruen: plugin-blocks (5), plugins+mermaid (6), Web-Unit (63), typecheck, lint. Die bisherigen Specs fuegten Bloecke immer erst nach dem Moduswechsel ein und konnten den Fall nicht sehen. Keine Backend-/DB-Aenderung.
fable-5 added 1 commit 2026-07-20 21:55:16 +02:00
#160: Plugin-Block — Bearbeiten-Knopf nach Moduswechsel wieder da
All checks were successful
CI / Lint, typecheck, test (pull_request) Successful in 4m39s
CI / Build container images (pull_request) Successful in 1m29s
CI / Auth e2e pack (pull_request) Successful in 7m22s
CI / Import/export fidelity gate (pull_request) Successful in 55s
CD / Build and push images (push) Successful in 18s
CD / Deploy to Test (push) Successful in 13s
CD / Smoke tests against Test (push) Successful in 1m16s
CD / Promote to Int (push) Successful in 11s
Release / Build release images and notes (push) Successful in 1m9s
CI / Lint, typecheck, test (push) Successful in 4m48s
CI / Build container images (push) Has been skipped
Release / Release-candidate operations QA (push) Successful in 52s
Prod deploy / Deploy the released images to Prod (push) Successful in 18s
CI / Auth e2e pack (push) Successful in 7m2s
CI / Import/export fidelity gate (push) Successful in 54s
db0e563f95
Die NodeView las editor.isEditable nur beim Mount. Die Seite mountet
immer im Lesemodus, und der Moduswechsel läuft über setEditable() —
das emittiert in TipTap nur ein update-Event, aber keine Transaction,
weshalb React-NodeViews nie neu rendern (geprüft in @tiptap/react
3.27.1: updateProps feuert nur bei Node-Änderung und Selektions-
Wechsel). Folge: die Block-Leiste blieb ohne Bearbeiten-Knopf, für
alle Block-Plugins (ChordPro, Mermaid, Excalidraw, draw.io).

Fix: useEditorEditable abonniert das update-Event und liest
isEditable reaktiv; verliert die Seite die Editierbarkeit, während
die Editier-UI des Plugins offen ist, fällt der Block auf render
zurück (der Lesemodus blendet die Leiste aus, es gäbe sonst keinen
Weg mehr heraus). Damit stimmt auch die setData-Schreibrecht-Prüfung
(editableRef) wieder.

Regressionstest im plugin-blocks-Pack: Block existiert bereits,
Seite lädt im Lesemodus, Wechsel in den Edit-Modus zeigt den Knopf
(fiel ohne Fix reproduzierbar durch); Rückweg Lesemodus→render
mitgeprüft. Die bisherigen Tests fügten Blöcke immer erst nach dem
Moduswechsel ein und konnten den Fall nicht sehen.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
stwaidele merged commit db0e563f95 into main 2026-07-20 23:22:40 +02:00
Sign in to join this conversation.
No description provided.