@platejs/ai
Bug Fixes
- Updated
@platejs/markdown.
@platejs/markdown
Bug Fixes
- Fix classic markdown deserialization for empty list items (#4938)
CHANGELOG · v52.3.21...v52.3.22 · By @zbeyens
@platejs/ai
@platejs/markdown.@platejs/markdown
CHANGELOG · v52.3.21...v52.3.22 · By @zbeyens
platejs
@platejs/core, @platejs/slate, @platejs/utils.@platejs/slate
slate, slate-dom, slate-react. (0af3236)@platejs/utils
@platejs/core, @platejs/slate.Update table border demos for merged-cell neighbor resolution so border toggles target the visual adjacent cell.
@platejs/ai
@platejs/markdown.@platejs/markdown
1 losing their numbering after editor.tf.setValue() (#4926)CHANGELOG · v52.3.18...v52.3.19 · By @zbeyens
@platejs/ai
@platejs/table.@platejs/table
ArrowUp and ArrowDown table navigation to avoid the transient caret flash when moving between table cells. (#4923)CHANGELOG · v52.3.17...v52.3.18 · By @hhhjin
@platejs/ai
@platejs/table.@platejs/link
Fixed custom isUrl handling so it can reject internal paths like /docs and anchor links like #top instead of those shortcuts always being accepted. (#4919)
Fixed link validation so text starting with // is no longer treated as an internal path. This stops comment-style paste content from being autolinked by mistake, including inside code blocks. (#4917)
@platejs/table
CHANGELOG · v52.3.16...v52.3.17 · By @zbeyens
@platejs/code-block
@platejs/code-block release metadata. (3465ee1)@platejs/core
@platejs/core to refresh the release graph for downstream packages. (#4915)@platejs/dnd
@platejs/dnd release metadata. (3465ee1)platejs
@platejs/core, @platejs/utils.@platejs/utils
@platejs/core.CHANGELOG · v52.3.15...v52.3.16 · By @zbeyens
@platejs/core
Added normalizeStaticValue to @platejs/core for normalizing example editor values with deterministic node IDs and stable numeric createdAt metadata before SSR hydration. (#4912)
```ts
import { normalizeStaticValue } from "@platejs/core";
const value = normalizeStaticValue(exampleValue);
```
@platejs/dnd
@platejs/dnd by returning inert drag-and-drop connectors when DOM DnD is unavailable, preventing Expected drag drop context during SSR builds. (#4912)CHANGELOG · v52.3.14...v52.3.15 · By @zbeyens
Render plain video URLs with `ReactPlayer` when the node has a `url` and no upload flag.
Sync registry blocks with the URL video rendering path.
@platejs/code-block
formatCodeBlock to rewrite formatted code into real code_line nodes and trigger a redecorate pass so syntax highlighting persists after formatting. (#4907)CHANGELOG · v52.3.13...v52.3.14 · By @zbeyens
@platejs/core
perf(static): avoid O(n²) findPath in PlateStatic by passing pre-computed path (#4903)
Pass pre-computed path through PlateStatic component tree instead of calling editor.api.findPath() per node. For 1,872 nodes: paragraph-only 593ms → 68.6ms (8.6x), full plugins 1,661ms → 892ms (1.9x).
CHANGELOG · v52.3.12...v52.3.13 · By @liangzr
@platejs/ai
@platejs/slate
CHANGELOG · v52.3.11...v52.3.12 · By @zbeyens
Snapshot insert-mode AI preview state so streamed chunks stay out of undo history and accept, undo, and redo preserve selection.
Sync the AI demo with the insert-mode preview history flow.
platejs
platejs can resolve the current @platejs/* package graph without nested stale installs. (4af5ea4)@platejs/utils
4af5ea4)CHANGELOG · v52.3.10...v52.3.11 · By @zbeyens
@platejs/ai
platejs build edge during package builds (#4897)@platejs/autoformat
platejs build edge during package builds (#4897)@platejs/basic-nodes
platejs build edge during package builds (#4897)@platejs/basic-styles
platejs build edge during package builds (#4897)@platejs/callout
platejs build edge during package builds (#4897)@platejs/caption
platejs build edge during package builds (#4897)@platejs/code-block
platejs build edge during package builds (#4897)@platejs/code-drawing
platejs build edge during package builds (#4897)@platejs/combobox
platejs build edge during package builds (#4897)@platejs/comment
platejs build edge during package builds (#4897)@platejs/csv
platejs build edge during package builds (#4897)@platejs/cursor
platejs build edge during package builds (#4897)@platejs/date
platejs build edge during package builds (#4897)@platejs/diff
platejs build edge during package builds (#4897)@platejs/dnd
platejs build edge during package builds (#4897)@platejs/docx
platejs build edge during package builds (#4897)@platejs/docx-io
platejs build edge during package builds (#4897)@platejs/emoji
platejs build edge during package builds (#4897)@platejs/excalidraw
platejs build edge during package builds (#4897)@platejs/find-replace
platejs build edge during package builds (#4897)@platejs/floating
platejs build edge during package builds (#4897)@platejs/indent
platejs build edge during package builds (#4897)@platejs/juice
platejs build edge during package builds (#4897)@platejs/layout
platejs build edge during package builds (#4897)@platejs/link
platejs build edge during package builds (#4897)@platejs/list
platejs build edge during package builds (#4897)@platejs/list-classic
platejs build edge during package builds (#4897)@platejs/markdown
platejs build edge during package builds (#4897)@platejs/math
platejs build edge during package builds (#4897)@platejs/media
platejs build edge during package builds (#4897)@platejs/mention
platejs build edge during package builds (#4897)@platejs/playwright
platejs build edge during package builds (#4897)@platejs/resizable
platejs build edge during package builds (#4897)@platejs/selection
platejs build edge during package builds (#4897)@platejs/slash-command
platejs build edge during package builds (#4897)@platejs/suggestion
platejs build edge during package builds (#4897)@platejs/tabbable
platejs build edge during package builds (#4897)@platejs/table
platejs build edge during package builds (#4897)@platejs/tag
platejs build edge during package builds (#4897)@platejs/toc
platejs build edge during package builds (#4897)@platejs/toggle
platejs build edge during package builds (#4897)@platejs/yjs
platejs build edge during package builds (#4897)CHANGELOG · v52.3.9...v52.3.10 · By @zbeyens
@platejs/code-block
@platejs/core
editor.api.redecorate() on the base slate extension API so shared plugins can call it without local casts. (d5dfd21)CHANGELOG · v52.3.8...v52.3.9 · By @hhhjin, @zbeyens
@platejs/ai
replacePlaceholders replacing only the first {prompt} and markdown placeholder occurrence in AI prompt templates (#4882)@platejs/csv
@platejs/csv without failing on a CommonJS named export. (#4890)@platejs/docx
shp inside longer tokens such as shppict (#4882)@platejs/docx-io
htmlToDocxBlob failing TypeScript 6 BlobPart checks when wrapping generated Uint8Array output. (#4891)@platejs/layout
@platejs/suggestion
CHANGELOG · v52.3.7...v52.3.8 · By @zbeyens
Keep the code drawing registry template compatible with the TypeScript 6 check path.
@platejs/markdown
CHANGELOG · v52.3.6...v52.3.7 · By @hhhjin
@platejs/docx-io
Fixed Mammoth comment preprocessing so block-level comment text keeps spacing instead of collapsing words together during DOCX import. (#4876)
Fixed decimal-bracket-end ordered lists to keep decimal DOCX numbering instead of falling back to the package default ordered style. (#4876)
Fixed HTML-to-DOCX list rendering so whitespace-only nodes around list items no longer drop visible list item text in generated documents. (#4876)
@platejs/selection
@platejs/table
set_selection. (#4872)Move large-table selection state to root-level DOM sync and editor selectors to reduce selection latency.
Sync toolbar typing with the table-selection update.
Keep color toolbar typing compatible with the non-React test and TypeScript cleanup.
@platejs/markdown
CHANGELOG · v52.3.4...v52.3.5 · By @zbeyens
@platejs/autoformat
match, trigger, type, and text format so as const rule definitions typecheck cleanly. (#4857)@platejs/core
Fix PlateSlate so it passes the Slate remount key directly instead of spreading key through JSX props. (#4857)
Fix usePlateStore so it no longer relies on a conditional hook path that breaks React Compiler. (#4857)
Fix usePluginOption(plugin, 'state') so it returns the plugin option state instead of reporting an undefined option. (#4857)
Update internal @udecode/* dependency ranges to workspace references. (#4857)
platejs
@platejs/* and @udecode/* dependency ranges to workspace references. (#4857)@platejs/slate
Fixed editor.tf.duplicateNodes({ block: true }) to duplicate the selected block even when nodes is omitted. (#4857)
Fixed withHistory(createEditor()) legacy method sync so editor, editor.api, and editor.tf all use the history-aware apply, undo, and redo methods. (#4857)
Fixed queryEditor, isAt, and editor.api.descendant so bottom-up location checks, point start/end checks, and non-path descendant searches behave consistently. (#4857)
Update internal @udecode/* dependency ranges to workspace references. (#4857)
@udecode/cn
@udecode/* dependency ranges to workspace references. (#4857)@udecode/react-utils
Fixed createPrimitiveComponent so setProps is applied without leaking onto DOM elements. (#4857)
Fixed createPrimitiveComponent to preserve merged hook and consumer style props instead of overwriting hook styles when a consumer passes style.
Update internal @udecode/* dependency ranges to workspace references. (#4857)
@udecode/utils
escapeRegExp() to stop escaping plain s characters and only escape actual regular-expression syntax. (#4857)@platejs/utils
@udecode/* dependency ranges to workspace references. (#4857)CHANGELOG · v52.3.3...v52.3.4 · By @zbeyens
@platejs/test-utils
2f71954)@platejs/utils
2f71954)CHANGELOG · v52.3.1...v52.3.2 · By @zbeyens
@platejs/markdown
@platejs/code-drawing
Add inline code drawing for Mermaid, PlantUML, Graphviz, and Flowchart diagrams.
Register code drawing in editor kits, insert actions, slash actions, block menu actions, and transforms.
@platejs/docx-io
Add DOCX import/export package: (#4814)
Import:
importDocx: Convert DOCX files to Plate nodes with comment extractionExport:
exportToDocx: Convert Plate content to DOCX blobdownloadDocx: Download DOCX filesexportEditorToDocx: Export and download in one callDocxExportPlugin: Plugin with editor.api.docxExport and editor.tf.docxExport methodsDOCX_EXPORT_STYLES: Default CSS styles for Word renderingDOCX Static Components (in existing static files):
CalloutElementDocxCodeBlockElementDocx, CodeLineElementDocx, CodeSyntaxLeafDocxColumnElementDocx, ColumnGroupElementDocxEquationElementDocx, InlineEquationElementDocxTocElementDocxAdd DOCX import and export registry wiring.
Add DOCX-friendly static rendering updates.
@platejs/ai
Upgraded AI SDK from v5 to v6: (#4800)
ai peer dependency to ^6.0.0@ai-sdk/react peer dependency to ^3.0.0Enhanced AI capabilities with better table cell handling:
applyTableCellSuggestion utility for handling single-cell table operationsnestedContainerUtils for managing nested containers in table cellsgetMarkdown with improved table structure handling and better cell content serializationapplyAISuggestions with more robust cell manipulation support@platejs/markdown
Enhanced table cell serialization to support multiple blocks within cells: (#4800)
<br/> separators between multiple blocks when serializing to markdownUpgrade copied AI command routes and chat UI for AI SDK v6 with split prompt helpers and table-cell editing prompts.
Sync cursor overlay behavior with the AI SDK v6 interaction path.
@platejs/selection
Added disableSelectAll option to BlockSelectionPlugin. Set to true to disable the plugin's custom selectAll (Cmd+A) behavior and use the editor's default behavior instead. (#4799)
```ts
BlockSelectionPlugin.configure({
options: { disableSelectAll: true },
});
```
@platejs/combobox
Add userId option to editor for collaborative features (#4792)
userId option to usePlateEditor/createSlateEditor optionseditor.meta.userId for accessing the current user IDgetUserId option from TriggerComboboxPluginOptions. Use editor.meta.userId instead.Migration:
// Before
MentionPlugin.configure({
options: {
getUserId: (editor) => "123",
},
});
// After
const editor = usePlateEditor({
plugins: [MentionPlugin],
userId: "123",
});
@platejs/core
Add userId option to editor for collaborative features (#4792)
userId option to usePlateEditor/createSlateEditor optionseditor.meta.userId for accessing the current user IDgetUserId option from TriggerComboboxPluginOptions. Use editor.meta.userId instead.Migration:
// Before
MentionPlugin.configure({
options: {
getUserId: (editor) => "123",
},
});
// After
const editor = usePlateEditor({
plugins: [MentionPlugin],
userId: "123",
});
Read collaborative trigger ownership from `editor.meta.userId`.
@platejs/combobox
Add getUserId option to TriggerComboboxPluginOptions to fix combobox popover opening for all users in Yjs collaboration mode (#4762)
When a user types a trigger character (e.g. / or @), the combobox input now stores the creator's userId. Only the creator will see the auto-focused combobox popover.
SlashPlugin.configure({
options: {
getUserId: (editor) => editor.getOption(YjsPlugin, "userId"),
},
});
MentionPlugin.configure({
options: {
getUserId: (editor) => editor.getOption(YjsPlugin, "userId"),
},
});
@platejs/yjs
Add userId option to YjsPlugin for combobox collaboration support (#4762)
YjsPlugin.configure({
options: {
userId: user?.id,
},
});
Scope Yjs combobox popovers to the user who typed the trigger.
@platejs/ai
@platejs/autoformat
@platejs/basic-nodes
@platejs/basic-styles
@platejs/callout
@platejs/caption
@platejs/code-block
@platejs/combobox
@platejs/comment
@platejs/core
@platejs/csv
@platejs/cursor
@platejs/date
@platejs/diff
@platejs/dnd
@platejs/docx
@platejs/emoji
@platejs/excalidraw
@platejs/find-replace
@platejs/floating
@platejs/indent
@platejs/juice
@platejs/layout
@platejs/link
@platejs/list
@platejs/list-classic
@platejs/markdown
@platejs/math
@platejs/media
@platejs/mention
platejs
@platejs/playwright
@platejs/resizable
@platejs/selection
@platejs/slash-command
@platejs/suggestion
@platejs/tabbable
@platejs/table
@platejs/tag
@platejs/toc
@platejs/toggle
@udecode/cn
@udecode/react-hotkeys
@udecode/react-utils
@platejs/utils
@platejs/yjs
CHANGELOG · v52.0.10...v52.0.11 · By @zbeyens
@platejs/ai
@platejs/yjs
@platejs/markdown
CHANGELOG · v52.0.3...v52.0.4 · By @hhhjin
@platejs/emoji
CHANGELOG · v52.0.1...v52.0.2 · By @zbeyens
@platejs/ai
@platejs/autoformat
@platejs/basic-nodes
@platejs/basic-styles
@platejs/callout
@platejs/caption
@platejs/code-block
@platejs/combobox
@platejs/comment
@platejs/core
@platejs/csv
@platejs/cursor
@platejs/date
@platejs/diff
@platejs/dnd
@platejs/docx
@platejs/emoji
@platejs/excalidraw
@platejs/find-replace
@platejs/floating
@platejs/indent
@platejs/juice
@platejs/layout
@platejs/link
@platejs/list
@platejs/list-classic
@platejs/markdown
@platejs/math
@platejs/media
@platejs/mention
platejs
@platejs/playwright
@platejs/resizable
@platejs/selection
@platejs/slash-command
@platejs/slate
@platejs/suggestion
@platejs/tabbable
@platejs/table
@platejs/tag
@platejs/test-utils
@platejs/toc
@platejs/toggle
@udecode/cn
@udecode/react-hotkeys
@udecode/react-utils
@udecode/utils
@platejs/utils
@platejs/yjs
CHANGELOG · v52.0.0...v52.0.1 · By @zbeyens
@platejs/ai
@platejs/autoformat
@platejs/basic-nodes
@platejs/basic-styles
@platejs/callout
@platejs/caption
@platejs/code-block
@platejs/combobox
@platejs/comment
@platejs/core
@platejs/csv
@platejs/cursor
@platejs/date
@platejs/diff
@platejs/dnd
@platejs/docx
@platejs/emoji
@platejs/excalidraw
@platejs/find-replace
@platejs/floating
@platejs/indent
@platejs/juice
@platejs/layout
@platejs/link
@platejs/list
@platejs/list-classic
@platejs/markdown
@platejs/math
@platejs/media
@platejs/mention
platejs
@platejs/playwright
@platejs/resizable
@platejs/selection
@platejs/slash-command
@platejs/slate
@platejs/suggestion
@platejs/tabbable
@platejs/table
@platejs/tag
@platejs/test-utils
@platejs/toc
@platejs/toggle
@udecode/cn
@udecode/react-hotkeys
@udecode/react-utils
@udecode/utils
@platejs/utils
@platejs/yjs
CHANGELOG · v51.1.3...v52.0.0 · By @zbeyens