WYSIWYG editing Image gallery upload Content templates
Release notes · Updated April 2026

What’s new in RichTextBox

A running log of releases for the RichTextBox.AspNetCore NuGet package plus the shared editor runtime. Major features, breaking changes, and migration notes are called out at the top of each release.

Current preview
April 24, 2026
1.0.0-preview.12

npm: @richscripts2/[email protected]

Dictation New

New plugins/dictation.js adds a toolbar microphone button that converts speech to text via the Web Speech API. Interim transcripts render live under the cursor; auto-punctuation, BCP-47 language setting, continuous vs one-shot modes.

Enable: <richtextbox enable-dictation="true" dictation-lang="en-US" /> · Live demo

Mobile toolbar mode New

Opt-in stylesheet rte_mobile.css + Tag Helper attribute that lights up the editor’s built-in mobile toolbar: 44×44 tap targets (WCAG 2.5.5), horizontally-scrolling toolbar strip, sticky header above the virtual keyboard, bottom-sheet mounting for dropdowns / dialogs / review drawer, 16px content font to suppress iOS auto-zoom.

Enable: enable-mobile-toolbar="true" · Live demo

Paste from Word — improved list fidelity Fixed

Rewrote the _ConvertWordLists routine. Previously all Word lists became <ul> at level 1; now ordered vs unordered is detected from the marker span, nesting depth is parsed from mso-list: l{N} level{M}, and bullet glyphs are stripped correctly (·, , , §, etc. plus HTML entities).

Tag Helper: enable-mobile-toolbar now wires config.toolbarMobile

The attribute now configures the editor’s built-in auto-switch (set toolbarMobile="mobile", provide a compact toolbar_mobile item list, bump maxWidthForMobile to 720px). Desktop viewers see the full toolbar you configured; narrow viewports automatically swap in.

Preview
April 24, 2026
1.0.0-preview.11

DOCX export New

Server-side HTML → .docx converter built on MIT-licensed DocumentFormat.OpenXml. MapRichTextBoxUploads() automatically maps POST /richtextbox/export/docx. Supports paragraphs, h1h6, blockquote, pre, lists (nested), tables, inline formatting, hyperlinks, data-URI images, text-alignment / color / background-color style attrs.

Client: editor.aiToolkit.exportDocx({ url, fileName, title }) helper triggers a browser download via Blob + anchor · Live demo

Migration note. The package now has a transitive dependency on DocumentFormat.OpenXml 3.1.0. If you pin dependencies, add it to your csproj explicitly.

Revision history: named versions + diff API New

Three new JS methods on editor.revisionHistory:

  • promptAndSnapshot(defaultLabel?) — native prompt + snapshot.
  • rename(id, label) — rename an existing snapshot.
  • listNamed() — only user-labeled snapshots (“Draft sent to legal”, “v1 final”).
  • diff(idA, idB){ oldEntry, newEntry, oldText, newText, lines[] } so callers can build side-by-side diff UI.

Each entry carries a new isNamed boolean that round-trips through localStorage and the optional server endpoint.

Preview
April 23, 2026
1.0.0-preview.10

Streaming AI responses New

The OpenAI and Anthropic resolvers now implement IStreamingRichTextBoxAiResolver. MapRichTextBoxUploads() also maps POST /richtextbox/ai/stream which relays provider text deltas as Server-Sent Events. Non-streaming providers fall back to a single frame transparently.

Client: editor.aiToolkit.streamRequest({ url, body, onDelta, onResponse, onDone, onError }) consumes the SSE via fetch + ReadableStream, with XHR fallback. Returns { promise, abort() }. · Demo

Yjs concurrent typing (preview) Preview

editor.collab.attach({ doc, provider, textSync: true }) now binds the editor’s full HTML to a shared Y.Text. Concurrent inserts / deletes merge via CRDT — two users typing in different parts of the document both see their edits survive.

Known tradeoff: remote updates re-set the body (caret snaps to start) and HTML character offsets don’t align with rendered caret offsets. Per-node binding (y-xml-fragment style) is planned. This preview closes the “two users typing” RFP checkbox today. · Demo

Accessibility Statement New

Published our WCAG 2.2 AA self-assessment — what works, known gaps called out honestly, supported AT combinations (NVDA, JAWS, VoiceOver, TalkBack), and a reporting channel at [email protected]. A third-party audit + VPAT 2.5 is on the 2026 roadmap.

Preview
April 23, 2026
1.0.0-preview.9

First-party AI provider resolvers New

Three drop-in IRichTextBoxAiResolver implementations so the AI Toolkit lights up without writing HTTP client boilerplate:

  • AddRichTextBoxOpenAiResolver(...) — also works with OpenAI-compatible endpoints (Groq, Together, local Ollama) via BaseUrl.
  • AddRichTextBoxAnthropicResolver(...) — Claude. Handles the content-block response array automatically.
  • AddRichTextBoxAzureOpenAiResolver(...) — deployment-scoped with separate Endpoint + DeploymentName.

Shared AiResolverOptions: ApiKey, Model, BaseUrl, MaxTokens, Temperature, SystemSuffix, Timeout. Mode-specific system prompts centralized in AiResolverPromptTemplates. All three use HttpClientFactory, support cancellation, log failures via ILogger<T> (API key never logged).

Live demo

Preview
April 22, 2026
1.0.0-preview.8

v2.0 Collaboration & Review plugins New

Six plugins ship together, all toggleable via Tag Helper attributes — the full review stack that TinyMCE 7 and CKEditor 5 gate behind their premium tiers:

  • Slash commands (enable-slash-commands) — type / to insert headings, lists, tables, code blocks, AI actions.
  • @Mentions (enable-mentions) — trigger-character framework for @, #, [[wiki]]; async data sources with debounce.
  • Track Changes (enable-tracked-changes) — Word-style human suggesting mode, per-author accept / reject.
  • Threaded comments (enable-comments) — anchored to selection ranges, with replies, resolve, delete.
  • Revision history (enable-revision-history) — snapshot browser with LCS line diff.
  • Yjs presence (enable-collab) — live cursors + shared review ledger via a peer-dependency Yjs provider.

All six share a single editor.reviewLedger store so AI suggestions, human tracked-change suggestions, and comments show up interleaved in the same Review drawer.

Upgrade to the latest preview

Install or upgrade via NuGet:

dotnet add package RichTextBox.AspNetCore --version 1.0.0-preview.12

Feedback & issues: [email protected]