Section-style plugins and the section container node #75
Labels
No Label
area:auth
area:docs
area:export
area:ops
area:storage
area:supply-chain
auth
backend
blocked
collab
deployment
docs
effort:L
effort:M
effort:S
frontend
plugins
qa
vs-nfd
vs-nfd:blocker
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: stwaidele/dorfteich#75
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
The vision's simplest plugin case: CSS-only styles like colored section backgrounds, without any sandbox cost (ADR 0008 kind
section_style).Scope
Add a
sectioncontainer node to the shared schema (attrs: styleId) with editor UI (wrap selection in section, style picker fed from active section-style plugins, unwrap); CSS pipeline: sanitize (no @import/external url()), scope under.dt-style-<plugin>-<style>, inject active plugins' CSS per pond; ship the reference pluginsection-styles-basic(callout/info/warning/colored-box styles) inpackages/plugins/; render sections in HTML/PDF export with inlined styles.Acceptance criteria
Technical notes
Dependencies
Depends on #24, #71, #72.
Size: ~1.5 days
Conventions: English code/comments, clear human-readable code, no hard-coded UI strings (ADR 0012, add
deanden), permission checks only via the shared guard (docs/architecture/permissions.md). Read the referenced ADRs before starting.Umgesetzt in
2e96173,784f21dunde32f961(CI grün, alle 8 Kontexte).Akzeptanzkriterien:
section-styles.spec.ts: computed background in beiden Modi) und PDF-Export (export.service.db.test.ts: Plugin-CSS + Section-Markup im Gotenberg-HTML)plugin-css.test.ts: external url, @import, position:fixed-Overlay, dazu</style>-Breakout, Scope-Umgehungen, Statement-At-Rules)markdown.test.ts)Design-Entscheidung: Das Install-Gate erzwingt die Scope-Klassen
.dt-style-<pluginId>-<styleId>statt CSS umzuschreiben (dokumentiert inplugin-architecture.md) — vorhersagbar für Plugin-Autoren, kein CSS-Rewriter im Serve-Pfad. Zusätzlich verboten:positionaußer static/relative (Overlay-Vektor).Referenz-Plugin
packages/plugins/section-styles-basic(callout/info/warning/colored-box) ist Workspace-Package, läuft durch SDK-Validierung und das echte API-Install-Gate;pnpm --filter @dorfteich/plugin-section-styles-basic builderzeugt das installierbare ZIP.