diff --git a/docs/editor.md b/docs/editor.md index 2de45ee41..dea3d6183 100644 --- a/docs/editor.md +++ b/docs/editor.md @@ -609,7 +609,7 @@ The sidebar shell expands/collapses by animating `--*-panel-width`. The panel sl |---------------|------------------------------------------------------------------------------| | General | Site name, meta title, meta description, language, favicon | | Shortcuts | Auto-rendered keyboard shortcut reference from the keybindings registry | -| Publishing | Self-hosted runtime info + framework CSS tree-shaking toggle | +| Publishing | Self-hosted runtime info, framework CSS tree-shaking toggle, published-page CSP allowlist (`settings.csp`) | | Preferences | Catalog-driven editor preferences (auto-rendered from `PREFERENCE_CATALOG`) | Site-specific controls that were previously sections of this modal (Pages roster, Breakpoints/Viewports, Conditions) now live in their dedicated surfaces: the Site Explorer panel and `CanvasContextSelector` (unified condition axis). diff --git a/docs/features/plugin-system.md b/docs/features/plugin-system.md index 62f161280..09fc75547 100644 --- a/docs/features/plugin-system.md +++ b/docs/features/plugin-system.md @@ -624,7 +624,7 @@ Supported `kind` values are `script`, `script-inline`, `style`, `style-inline`, `attrs` passes through to the emitted tag except where `server/publish/frontendInjections.ts` owns the value: `data-plugin-id` on every tag, `src` on every script, strategy attributes on external scripts, and `href` plus `rel` on stylesheet assets. Bare `link` and `meta` declarations rely entirely on `attrs`. Inline JSON-LD uses `{ "kind": "script-inline", "attrs": { "type": "application/ld+json" }, "content": "..." }`. -The injection pipeline derives CSP changes from the plan. Inline scripts/styles add the matching `'unsafe-inline'` directive. `networkAllowedHosts[]` contributes published-page `connect-src` origins for plugins with frontend assets, which is why frontend trackers that call their own or third-party ingest endpoints must list those hosts as well as declare `frontend.assets`. +The injection pipeline derives CSP changes from the plan. Inline scripts/styles add the matching `'unsafe-inline'` directive. `networkAllowedHosts[]` contributes published-page `connect-src` origins for plugins with frontend assets, which is why frontend trackers that call their own or third-party ingest endpoints must list those hosts as well as declare `frontend.assets`. No manifest field adds a host to `script-src`: a plugin cannot load a remote third-party script. That is a site-owner decision, made in Settings → Publishing → Content Security Policy (`site.settings.csp`, see [publisher.md](publisher.md) → "CSP"). ### Settings — declared in `instatic-plugin.config.ts` / `plugin.json` diff --git a/docs/features/publisher.md b/docs/features/publisher.md index f7efd7b6a..f96769b11 100644 --- a/docs/features/publisher.md +++ b/docs/features/publisher.md @@ -364,6 +364,9 @@ The CSP is modelled as **data**, not a string assembled with regex. `src/core/pu - `media-src` deliberately mirrors `img-src`. Both govern passive references that execute nothing, so allowing a remote image while blocking a remote `