dorfteich/apps/api/src/plugins
Claude Fable 5 97f94f247b
All checks were successful
CD / Build and push images (push) Successful in 3m54s
CD / Deploy to Test (push) Successful in 10s
CI / Lint, typecheck, test (push) Successful in 4m9s
CI / Build container images (push) Has been skipped
CD / Smoke tests against Test (push) Successful in 1m13s
CD / Promote to Int (push) Successful in 13s
CI / Auth e2e pack (push) Successful in 5m36s
CI / Import/export fidelity gate (push) Successful in 47s
draw.io reference plugin: fullscreen editing, inline SVG rendering
A new block plugin bundling the OFFICIAL draw.io editor — nothing ever
loads from diagrams.net; the sandbox CSP pins every request to the
plugin's own version-pinned asset path (zero-external-network verified
live via a request-capture run).

Plugin (packages/plugins/drawio):
- block data { xml, svg }: xml is the draw.io source (document of
  record), svg the rendered snapshot as raw markup — render mode,
  office/PDF exports (the existing fallback renderer already inlines
  data.svg) and the public view all show the diagram without running
  diagram code
- edit mode: snapshot + "edit in fullscreen" (an empty block opens the
  editor immediately); the bundled editor runs in a child iframe of the
  plugin's own assets and speaks draw.io's JSON embed protocol —
  Save & Exit exports xmlsvg, persists { xml, svg } via blockData, and
  drops back to the inline size
- build.mjs fetches the pinned release (v30.3.6) into a gitignored
  vendor/ cache (fonts-build pattern; skipped in CI — plugin.js still
  bundles, the installable ZIP needs a dev machine) and packs a trimmed
  webapp subset: no dev sources, no embed.diagrams.net integrations
  bundle, no standalone viewers, no MathJax/templates/PWA — 27 MiB ZIP,
  85 MiB unpacked, de+en editor languages

Host/SDK extensions (generic, not drawio-specific):
- new ui.enterFullscreen()/exitFullscreen(): the surface's frame becomes
  a viewport-covering overlay — same sandboxed iframe, only geometry
  changes; destroy removes the frame, so a vanished plugin can never
  leave the app covered
- sandbox CSP: connect-src/frame-src now allow the plugin's OWN asset
  path (was 'none') — bundled apps lazy-load their resources and run in
  a child frame, but the api and external hosts stay unreachable; HTML
  assets are served with the same CSP so a packaged page cannot widen
  the rules, and child frames inherit the sandbox attribute
- plugin size limits raised (ZIP 5→64 MiB, unpacked 20→256 MiB) for
  bundled-app plugins; content types for xml/txt/ico assets

Verified end to end against a local stack (9/9): install via dropzone
(85 MiB validation), block insert, fullscreen entry, bundled editor
boots inside the double sandbox (German UI), shape drawn, Save & Exit
persists, snapshot renders inline, survives reload, zero off-origin
requests throughout.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EwZ4jR4KFAPvpjWevfUGX1
2026-07-12 14:15:30 +02:00
..
plugin-admin.controller.ts Add Site-Admin system panel with persistent audit trail (#86) 2026-07-11 20:03:05 +02:00
plugin-assets.controller.ts draw.io reference plugin: fullscreen editing, inline SVG rendering 2026-07-12 14:15:30 +02:00
plugin-css.test.ts Complete section-style plugins: CSS gate, injection, picker, export (#75) 2026-07-11 11:43:36 +02:00
plugin-css.ts Complete section-style plugins: CSS gate, injection, picker, export (#75) 2026-07-11 11:43:36 +02:00
plugin-fallback-renderer.ts Degrade plugin content gracefully in HTML, PDF, and office exports (#79) 2026-07-11 14:13:09 +02:00
plugin-frame.ts draw.io reference plugin: fullscreen editing, inline SVG rendering 2026-07-12 14:15:30 +02:00
plugin-package.service.test.ts draw.io reference plugin: fullscreen editing, inline SVG rendering 2026-07-12 14:15:30 +02:00
plugin-package.service.ts Complete section-style plugins: CSS gate, injection, picker, export (#75) 2026-07-11 11:43:36 +02:00
plugin-pond.controller.ts Add Site-Admin system panel with persistent audit trail (#86) 2026-07-11 20:03:05 +02:00
plugin-storage.service.ts Complete section-style plugins: CSS gate, injection, picker, export (#75) 2026-07-11 11:43:36 +02:00
plugin-watcher.service.ts Never crash boot on plugin dropzone setup; default PLUGINS_DIR in image (#71) 2026-07-10 17:25:42 +02:00
plugin.constants.ts draw.io reference plugin: fullscreen editing, inline SVG rendering 2026-07-12 14:15:30 +02:00
plugins.e2e.db.test.ts draw.io reference plugin: fullscreen editing, inline SVG rendering 2026-07-12 14:15:30 +02:00
plugins.module.ts Degrade plugin content gracefully in HTML, PDF, and office exports (#79) 2026-07-11 14:13:09 +02:00
plugins.service.ts Add Site-Admin system panel with persistent audit trail (#86) 2026-07-11 20:03:05 +02:00