Skip to content

0006 Editor-agnostic authoring

  • Status: accepted (2026-10-29)

Hosts already have editors (TipTap, CKEditor, Lexical, plain textareas). Shipping one WYSIWYG engine would force it on everyone and pull a large dependency into every install.

  • EditorAdapter (core) is the only thing a WYSIWYG integration implements: source in, source out, element by id, selection, change events.
  • @astrolabe/editor is a kit on top of it: template instantiation with unique ids, inspector models derived from manifests and EditorDescriptors, live validation, preview, plus small web components and a textarea adapter.
  • No package depends on a WYSIWYG engine (checked by scripts/check-boundaries.mjs). A TipTap integration lives in examples/tiptap-editor.

Any editor works; the kit stays small. Integrations own their node mapping, guided by the manifest (display, children[].content, visibility).

  • Amended 2026-10-29: @astrolabe/editor-tiptap ships <astl-editor> with TipTap as the default surface and is the only package that imports TipTap; @astrolabe/editor stays free of any WYSIWYG engine (0011).