Editing-experience push — 88 features Major
One wave of small-to-medium UX wins to close the gap with Google Docs / Notion / Word: smart typography (auto-link, em-dash, ellipsis, curly quotes, trademarks); 23 keyboard shortcuts (headings, lists, align, sub/super, highlight, duplicate, move block, cycle case, reading mode, word-count modal, shortcut cheat-sheet) at Google Docs / Word parity with Mac ⌘ auto-detection; restricted-editing templates (Word-style protect-document with editable regions); auto-generated heading anchor IDs with hover 🔗 copy-link; smart paste from Word + Google Docs with toast feedback; markdown round-trip (editor.toMarkdown() / editor.fromMarkdown()); find & replace dialog with live match count and Prev/Next navigation; auto-save with status indicator; auto-grow, sticky toolbar, reading mode (persists across reloads), block drag handles; inline link URL preview; image hover quick-action bar (Alt / Replace / ×); inline alt-text editor on missing-alt images; video IFRAME float toolbar; table column & row drag-resize; print preview + PDF export via browser print; math markup hook for KaTeX/MathJax; right-click “Ask AI” context menu; snippet expansion (:date + Tab); DOCX import endpoint. See the full per-feature list at npm 2.2.3 release notes on richtexteditor.com.
Server-side hardening
New POST /richtextbox/import/docx endpoint (configurable via RichTextBoxOptions.DocxImportEndpoint). Uses DocumentFormat.OpenXml; conservative HTML subset (p, strong, em, u, h1–h6, ul / ol / li, br, table / tr / td) that round-trips with the existing DOCX export. 25 MB upload cap with 413 response; license check; multipart form with optional mode field (insert | replace). Client wrapper: editor.aiToolkit.importDocx({ file, mode }) with file-picker fallback.
Build pipeline: DocumentFormat.OpenXml in trial bundles Fixed
Reported by Kenneth Chen: trial download bundles previously omitted the DocumentFormat.OpenXml PackageReference, leaving DOCX export unusable without a manual NuGet install. The generated demo csproj now declares <PackageReference Include="DocumentFormat.OpenXml" Version="3.1.0" /> so the dependency reaches consumers automatically.
Editor robustness Fixed
Chrome iframe document-swap recovery (closure refs reseat after deferred about:blank load), toolbar null-guard (a single missing-icon button no longer crashes init), persistent caret tracker (image upload inserts at original caret position; reported by Nathan Allen / Kenneth Chen), plugin-button null-safe range fallback (emoji panel / image dialog / gallery work even when the editor has never been focused).