Modern block types New
Three new block families: callouts (info / success / warning / danger / note admonitions), multi-column layouts (2–4 responsive columns), and toggle / collapsible blocks (native <details>). Insert from the slash menu or toolbar; customise callout variants via config.calloutTypes.
Slash commands New
Type / for a searchable insert menu covering headings, lists, the new block types, equations, diagrams, tables, chips, and tools. Keyboard-first, with section grouping and fuzzy search.
Equation editor New
execCommand('insertmath') opens a TeX / LaTeX dialog with live preview and edit-in-place, emitting stable .rte-math-inline markup that renders via KaTeX or MathJax loaded on the host page.
Mermaid diagrams New
execCommand('insertdiagram') authors diagrams-as-code (flowchart, sequence, gantt, pie…) rendered to SVG. Uses config.diagramResolver (server render) or a host window.mermaid, falling back to a source block; the source round-trips in data-diagram.
Web-bookmark cards New
execCommand('insertbookmark') turns a URL into a rich link-preview card (favicon, title, description, domain). Zero-backend by default, or wire config.bookmarkResolver for full unfurls. http(s)-only with escaped metadata and rel="noopener".
Smart chips New
Google-Docs-style date, person, and link chips. insertdatechip drops an interactive date pill; insertchip opens a Date / Person / Link menu (person / link use config.chipResolver). Atomic, injection-safe, and round-tripping.
Inline Markdown autoformat New
Typing the closing delimiter converts the span in place: **bold** → bold, *italic* → italic, `code`, ~~strike~~. Complements the existing block shortcuts; word-boundary gated so math and identifiers are left alone. config.markdownInlineEnabled.
Emoji :shortcode: autocomplete New
GitHub / Slack-style inline emoji: a complete :fire: becomes the emoji, or : + a query opens a keyboard-navigable popup (↑/↓, Enter/Tab, Esc). ~140 curated codes; extend via config.emojiShortcodes.
Read-aloud (text-to-speech) New
execCommand('readaloud') reads the selection or document aloud, highlighting each sentence as it’s spoken. Browser-native via the Web Speech API — no backend, no key. The speech-out complement to dictation, and an accessibility win.
Email HTML export New
editor.getEmailHTML() returns email-client-safe HTML: computed styles inlined onto every element, classes / ids stripped, content wrapped in a centred table for Outlook / Gmail. execCommand('emailexport') opens a copy-ready dialog.
Spell check New
execCommand('spellcheck'). Native browser spell-check by default (zero infra); wire config.spellCheckResolver (LanguageTool / server / LLM) for a review panel with click-to-replace suggestions.
Block drag-handles New
A Notion-style handle appears on hover to drag-reorder top-level blocks; on by default (config.blockDragHandles = false to disable). The handle and drop indicator live outside the editable, so saved HTML is unaffected.
Foldable headings New
Obsidian / Notion-style section folding — click the gutter chevron on a heading to collapse every block beneath it, up to the next heading of the same or higher level. Fold state lives in runtime-only CSS classes and getHTMLCode / getJSON are wrapped to strip them, so saved markup stays clean and folded content is never lost. API: editor.toggleHeadingFold() / foldAtCaret() / unfoldAll(); slash /fold section.
Typewriter & focus modes New
Two distraction-free writing modes. Typewriter mode pins the caret line to a fixed vertical anchor and scrolls the editable as you type (iA Writer / Typora style); focus mode dims every block except the one the caret is in. Purely presentational — nothing to serialize. Toggle via editor.toggleTypewriterMode() / toggleFocusMode() or slash /typewriter · /focus mode. Off by default.
Copy / Download as Markdown New
Notion-style export of the whole document to Markdown — one-click copy to clipboard or save as a .md file (filename derived from the first heading). Surfaces the core toMarkdown() engine as editor.getMarkdown() / copyAsMarkdown() / downloadMarkdown() plus slash /copy as markdown · /download as markdown. Read-only.
Local draft autosave & recovery New
Persists the document to localStorage as you type and, on the next load, offers to restore the unsaved draft after a crash or refresh (Gmail style). The draft is never auto-applied — the server content shows until you click Restore; stale drafts past the TTL are pruned; also saves on beforeunload. Opt-in via config.localDraft = true (or { key, intervalMs, ttlMs, promptRestore }). API: saveLocalDraft() / hasLocalDraft() / restoreLocalDraft() / clearLocalDraft().
AI ghost-text autocomplete New
GitHub-Copilot / Notion-AI-style inline completion — after a typing pause a greyed suggestion appears after the caret continuing your sentence; Tab accepts, Esc (or simply typing on) dismisses. Ambient and hands-free, distinct from the command-driven AI Toolkit. Bring-your-own-key: set config.ghostTextResolver({ before, after, full }) returning a string or promise — no model ships and no network call is made on its own. Serialization-safe (the suggestion is a contenteditable=false span the caret stays before; getHTMLCode / getJSON strip it) and undo-friendly (accept lands on the native undo stack). API: requestGhostText() / acceptGhostText() / dismissGhostText(); slash /ai complete.