Plugin options matrix
Every official plugin's settings, checked on each surface. Screen = the editor's layout and painters; Read-only = <FolioView readOnly> / reader mode; PDF = @nextgensoftwares/folio-export-pdf (draws the layout, so screen output carries over); DOCX = @nextgensoftwares/folio-export-docx with the plugin's exporters; Live = the option survives live collaboration (a document attr declared in the plugin's /schema entry, which the server composes), or is a per-user view setting that is meant to stay local.
ok works and has a test · fixed was broken and is now fixed + tested · n/a doesn't apply to that surface · local per-user view option (not synced on purpose).
Code (@nextgensoftwares/folio-plugin-code)
| Option | Screen | Read-only | DOCX | Live | Tests | |
|---|---|---|---|---|---|---|
| language (block attr) | ok | ok | ok | ok | ok | layout, export |
| line numbers | ok | ok | ok | ok | ok | options, options-export |
| wrap (long lines, hanging indent) | ok | ok | ok | n/a (Word reflows) | n/a | design |
| mark wrapped lines ↪ (block / document default) | ok | ok | ok | n/a (Word reflows) | block: ok, default: local | options, options-export |
| diff (+ / - bands) | ok | ok | ok | ok | ok | options, options-export, export |
| title | fixed (commit on blur / menu close) | ok | ok | ok | ok | commit-inputs, options-export |
| highlight lines | fixed (commit on blur / menu close) | ok | ok | ok | ok | commit-inputs, options-export |
| theme (preset + light/dark) | ok | ok | ok | ok | local | palette, options-export |
| tab width | ok | ok | ok | fixed (tabs expanded to the same stops) | local | design, options-export |
| repeat header on split boxes | ok | ok | ok | fixed (Word header row follows it) | local | design, options-export |
| preferred language / all variants | ok | ok (reader's own choice) | ok | ok (exportAll) | local | layout, export |
group variant (clicked tab, active) | ok | ok | ok | ok | ok | header |
| custom languages / highlighter | ok | ok | ok (after whenHighlighted) | ok (awaits async tokens) | n/a | highlighter*, scopes |
Callout · media · player · file preview
| Plugin | Option | Screen | Read-only | DOCX | Live | Notes | |
|---|---|---|---|---|---|---|---|
| callout | variant, appearance, colours, icon | ok | ok | ok | ok | ok | attrs in /schema |
| callout | title | fixed (commit on blur / close) | ok | ok | ok | ok | CommitInput |
| callout | icon without a title | ok | ok | ok | fixed | ok | Word now leads the first paragraph with the icon |
| callout | metrics (padding, border, bar) | ok | ok | ok | fixed | n/a | DOCX used the defaults |
| callout | palette, wrapKey, toolbar, slash, allowNested | ok | n/a | n/a | n/a | local | options.test |
| media | size presets, alt text prompt, align/wrap/width | ok | ok | ok | ok | ok | options.test |
| player | video/audio control sets, node controls, tracks | ok | ok | print fallback | print fallback | ok | options.test |
| player | resolveSrc, ui: false, settings defaults | ok | ok | n/a | n/a | local | |
| file preview | card size (previewSize) | ok | ok | ok | ok | ok | |
| file preview | exportThumbnails false / generate, defaultSize, onOpen | ok | ok | ok | ok | local | options.test |
Header & footer · TOC · watermark · math · dark mode
| Plugin | Option | Screen | Read-only | DOCX | Live | Notes | |
|---|---|---|---|---|---|---|---|
| header-footer | show, different first page, odd & even | ok | ok | ok | ok | ok | options.test |
| header-footer | distances, number format, start at | ok | ok | ok | ok | ok | NumberInput commits on unmount too |
| header-footer | document title, variables | fixed (commit on blur, not per keystroke) | ok | ok | ok | ok | CommitInput |
| header-footer | edit header/footer | ok | fixed (never enters editing) | n/a | n/a | n/a | |
| header-footer | section breaks (next / odd / even page) | ok | ok | ok | ok | fixed | odd/even added to the Insert menu; attrs now in the server schema |
| toc | title, levels, leaders, numbered | ok | ok | ok | fixed | fixed | DOCX had no TOC exporter; node now in the server schema |
| watermark | text, font, size, colour, opacity, angle, copies, position, gap, layer, pages, targets | ok | ok | ok | ok | local | plugin options, not document content |
| watermark | image URL | fixed (commit, not per keystroke) | ok | ok | ok | local | |
| math | toolbar, paste, shortcut, recent symbols | ok | ok | ok | ok | ok | equations are standard nodes |
| dark mode | themes, knobs, overrides | ok | ok | n/a (prints document colours) | n/a | local | image filter commits on blur/unmount |
Comments · collab · import · protect · layers
| Plugin | Option | Screen | Read-only | DOCX | Live | Notes | |
|---|---|---|---|---|---|---|---|
| comments | export to Word / PDF (+ resolved), visibility | ok | ok | ok | ok | ok | options.test |
| comments | shortcut, sidebar/settings slots, canEditDocument, reactions | ok | ok | n/a | n/a | ok | |
| comments | typing: false | ok | ok | n/a | n/a | fixed | also hides others' typing indicators |
| collab | sidebar, history, promptName | ok | ok | n/a | n/a | ok | |
| collab | readersGetEditingUi | ok | fixed | n/a | n/a | ok | history panel ignored it |
| collab (blame) | visibleTo, defaultVisible | ok | ok | n/a (screen only) | n/a | ok | |
| import | toolbar, drop, importers, limits, onImported, schema, applyOptions | ok | n/a | n/a | n/a | ok | |
| import | header/footer bands of 0 from Word | fixed | ok | ok | ok | n/a | 0 was treated as "unset" |
| protect | copy, context menu, drag, select, print, blur, tamper | ok | ok | n/a | n/a | n/a | options.test |
| layers | shapes, text boxes, pictures, wrap, z-order, anchors, backgrounds | ok | ok | ok | ok | fixed | audited only (another agent owns the package); drawing + layers doc attr now in the server schema |
Live mode and the schema
Live edits used to be refused for file cards, drawings, TOCs, header/footer fields, section breaks and layers attrs: the playground's server and collab schema was the standard one. Every plugin now ships a Node-safe /schema entry; the host composes them (the playground's src/doc-schema.ts, used by the editor, the in-page API server, live collab and server/main.ts), and a server whose schema still lacks something refuses the push with rejected: 'unsupported' and a message naming the type instead of reporting a divergence. See server-node.