Block-Plugin „Akkordblätter/Leadsheets" (ChordPro) #155

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

Ziel

Neues Block-Plugin packages/plugins/chordpro/: Quelle im ChordPro-Format ({title: …}, [C]Text…), gerendertes Akkordblatt (Akkorde über dem Text) im Editor-Preview, Lese- und Public-Ansicht.

Umsetzungsskizze

  • Klon des mermaid-Musters (packages/plugins/mermaid/): manifest kind=code, Block-Extension-Point sheet, permissions ["blockData","ui"], build.mjs (esbuild-Bundle + fflate-ZIP).
  • Parser: chordsheetjs (MIT) ins Bundle; Darstellung als selbst erzeugtes SVG (Monospace-Layout, Akkordzeile über Textzeile, Direktiven title/artist/key als Kopf).
  • Persistenz {source, svg} — der SVG-Snapshot bedient den PluginFallbackRenderer (sanitizeSvg) für Public-Ansicht und Export, exakt die mermaid-Konvention.
  • Edit-Modus: Textarea + debounced Live-Preview (mermaid-Vorbild onEdit); host.ui.resize().
  • Optional (nur wenn billig): Transponier-Buttons im Edit-Modus.
  • Prod-Installation ist wie üblich Site-Admin-Handgriff (Stefan); Anleitung im site-admin-guide ergänzen.

Akzeptanzkriterien

  • ZIP baut unter den Limits (64/256 MiB).
  • Beispiel-Sheet rendert im Editor, im Lesemodus und anonym (svg-Fallback); Umlaute korrekt.
  • Unit-Test für den SVG-Formatter; Doku-Absatz (extending/user-guide en+de) + Install-Hinweis.
## Ziel Neues Block-Plugin `packages/plugins/chordpro/`: Quelle im ChordPro-Format (`{title: …}`, `[C]Text…`), gerendertes Akkordblatt (Akkorde über dem Text) im Editor-Preview, Lese- und Public-Ansicht. ## Umsetzungsskizze - Klon des mermaid-Musters (`packages/plugins/mermaid/`): manifest kind=code, Block-Extension-Point `sheet`, permissions `["blockData","ui"]`, `build.mjs` (esbuild-Bundle + fflate-ZIP). - Parser: `chordsheetjs` (MIT) ins Bundle; Darstellung als selbst erzeugtes SVG (Monospace-Layout, Akkordzeile über Textzeile, Direktiven title/artist/key als Kopf). - Persistenz `{source, svg}` — der SVG-Snapshot bedient den `PluginFallbackRenderer` (sanitizeSvg) für Public-Ansicht und Export, exakt die mermaid-Konvention. - Edit-Modus: Textarea + debounced Live-Preview (mermaid-Vorbild `onEdit`); `host.ui.resize()`. - Optional (nur wenn billig): Transponier-Buttons im Edit-Modus. - Prod-Installation ist wie üblich Site-Admin-Handgriff (Stefan); Anleitung im site-admin-guide ergänzen. ## Akzeptanzkriterien - ZIP baut unter den Limits (64/256 MiB). - Beispiel-Sheet rendert im Editor, im Lesemodus und anonym (svg-Fallback); Umlaute korrekt. - Unit-Test für den SVG-Formatter; Doku-Absatz (extending/user-guide en+de) + Install-Hinweis.
fable-5 added this to the M23 — ChordPro-Plugin milestone 2026-07-20 00:15:50 +02:00
Author
Collaborator

Umgesetzt in PR #159 (a879561): Referenz-Plugin packages/plugins/chordpro nach dem mermaid-Muster. ABWEICHUNG zur Skizze: kein chordsheetjs — eigener minimaler ChordPro-Parser (Direktiven title/subtitle/artist/key/capo/tempo/comment, Chorus-Fences, [Akkord]-Marker, #-Kommentare) + SVG-Formatter mit Monospace-Raster (Akkorde ueber dem Text, Titelkopf, Chorus-Einrueckung, XML-escaped) — kein neuer Supply-Chain-Zuwachs (Lehre aus #136), und der SVG-Formatter waere ohnehin Eigenbau gewesen. Persistenz {source, svg}; der Snapshot bedient Lesemodus, Public-Ansicht und Exporte ueber den PluginFallbackRenderer. ZIP 20 KB (Limits 64/256 MiB). 4 Parser-/Formatter-Tests; Runtime in der Sandbox verifiziert (Install → Aktivierung → Block einfuegen → Quelltext → SVG mit Titel/Akkorden gerendert). Doku: site-admin-guide en+de (Plugin-Liste + Build-Zeile), plugin-architecture-Referenzliste. Prod-Installation wie ueblich als Site-Admin-Handgriff (ZIP: packages/plugins/chordpro/dist/chordpro-1.0.0.zip nach pnpm build).

Umgesetzt in PR #159 (a879561): Referenz-Plugin packages/plugins/chordpro nach dem mermaid-Muster. ABWEICHUNG zur Skizze: kein chordsheetjs — eigener minimaler ChordPro-Parser (Direktiven title/subtitle/artist/key/capo/tempo/comment, Chorus-Fences, [Akkord]-Marker, #-Kommentare) + SVG-Formatter mit Monospace-Raster (Akkorde ueber dem Text, Titelkopf, Chorus-Einrueckung, XML-escaped) — kein neuer Supply-Chain-Zuwachs (Lehre aus #136), und der SVG-Formatter waere ohnehin Eigenbau gewesen. Persistenz {source, svg}; der Snapshot bedient Lesemodus, Public-Ansicht und Exporte ueber den PluginFallbackRenderer. ZIP 20 KB (Limits 64/256 MiB). 4 Parser-/Formatter-Tests; Runtime in der Sandbox verifiziert (Install → Aktivierung → Block einfuegen → Quelltext → SVG mit Titel/Akkorden gerendert). Doku: site-admin-guide en+de (Plugin-Liste + Build-Zeile), plugin-architecture-Referenzliste. Prod-Installation wie ueblich als Site-Admin-Handgriff (ZIP: packages/plugins/chordpro/dist/chordpro-1.0.0.zip nach pnpm build).
Sign in to join this conversation.
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#155
No description provided.