Releases
Release history and changelog for @eigenpal/docx-js-editor
Minor Changes
6094eaf: Built-in agent panel + chat primitives + expanded toolkit so consumers can plug a streaming AI agent into the editor in ~50 lines. See
docs/agents.md.Agent panel
<DocxEditor agentPanel={{ render }}>— controllable right-hand dock with toolbar toggle, drag-to-resize, persisted width, animated open/close. Render-prop receives{ close }; controlled mode (open+onOpenChange) lets a parent drive it.- New
agent-sparkleicon and i18n keys across en / de / pl / pt-BR.
Chat primitives (opinionated, optional)
<AgentChatLog>,<AgentComposer>,<AgentSuggestionChip>,<AgentTimeline>— Google-Docs-style UI for message list, composer, starter chips, and a collapsible tool-call timeline (per-row spinner while streaming, auto-collapses to "N steps" on done).- New types:
AgentMessage,AgentToolCall.
Toolkit (
@eigenpal/docx-editor-agents)- Four new tools:
apply_formatting,set_paragraph_style,read_page,read_pages. useDocxAgentToolshook withinclude/excludefilters;executeToolCallenforces them.AgentToolDefinition.displayNamefor friendly UI labels.- New subpath exports — package stays runtime-agnostic, AI SDK helpers are opt-in:
/server—getToolSchemas,executeToolCall,getToolDisplayName(OpenAI function-calling format)/react—useDocxAgentTools/ai-sdk/server—getAiSdkTools()returningstreamText({ tools })shape/ai-sdk/react—toAgentMessages()adaptinguseChat'sUIMessage[]toAgentMessage[]
WordCompatBridgeparity contract — compile-time assertion thatEditorBridgecoversRange.font.*andParagraphFormat.style.
Bug fixes
- Rapid sequential
addCommentcalls now all persist. The unifiedsetCommentssetter read a stalecommentsRef.currentfor every call; a 30-comment burst kept only the last. Now assignscommentsRef.currentsynchronously in uncontrolled mode.
Spec / Word-API hardening
paraIdallocator — newParaIdAllocatorExtensionassigns fresh 8-char hexw14:paraIds on Enter / paste / split. Without this the agent's anchors silently drifted whenever the user typed Enter. MarkedaddToHistory: false.apply_formattingvalidatesunderline.styleagainst ECMA-376 §17.3.2.40ST_Underlineandhighlightagainst §17.3.2.15ST_HighlightColor. Out-of-spec values return a structured error instead of round-tripping invalid OOXML.set_paragraph_stylereturnsfalsefor ids not instyles.xml— matches Word'sItemNotFoundbehavior.
Public API additions
@eigenpal/docx-js-editor:<AgentPanel>,<AgentChatLog>,<AgentComposer>,<AgentSuggestionChip>,<AgentTimeline>, matching prop types,AgentMessage,AgentToolCall.DocxEditorRefgainsapplyFormatting,setParagraphStyle,getPageContent.@eigenpal/docx-editor-agents: new/ai-sdk/serverand/ai-sdk/reactsubpaths (peer depai, optional)./serverand/reactunchanged.displayNameonAgentToolDefinition.Known limitations (v1.1)
- Missing Word
Range.font.*properties:superscript,subscript,allCaps,smallCaps,doubleStrikeThrough,colorThemetint/shade. - No paragraph-level mutators (
alignment,lineSpacing,spaceBefore,spaceAfter) wired through the toolkit yet.
9c0721b: Add
disableFindReplaceShortcutstoDocxEditorso host apps can let the browser handle native Cmd/Ctrl+F and Cmd/Ctrl+H shortcuts.c81fdd3: # Live agent chat + server-side MCP support
A Word-API-style bridge that lets an AI agent read a DOCX, comment on it, suggest tracked changes, and scroll the view — live in a running editor, or server-side against a parsed file. Same tool catalog, same shape, two transports.
The pattern
Locate, then mutate. The agent calls a locate tool (
read_document,read_selection,find_text) which returns paragraphs tagged with their stable Wordw14:paraId. It passes those paraIds to mutate tools. paraIds survive concurrent edits and tool-loop iterations; ordinal indices don't.Ten agent tools
OpenAI function-calling format (also accepted by Anthropic / Vercel AI SDK):
- Locate —
read_document,read_selection,find_text,read_comments,read_changes - Mutate —
add_comment,suggest_change(one tool, three modes via empty-string semantics: replacement / deletion / insertion at paragraph end),reply_comment,resolve_comment - Navigate —
scroll
Exported from
@eigenpal/docx-editor-agentsasagentTools,getToolSchemas(),executeToolCall(name, args, bridge).Two bridges, same interface
Everything wires into an
EditorBridgeinterface. Two implementations ship:// Live editor in a browser import { useAgentChat } from '@eigenpal/docx-editor-agents/bridge'; const { executeToolCall, toolSchemas } = useAgentChat({ editorRef, author: 'AI' }); // Server-side, against a parsed DOCX import { DocxReviewer, createReviewerBridge } from '@eigenpal/docx-editor-agents'; const reviewer = await DocxReviewer.fromBuffer(buffer, 'AI'); const bridge = createReviewerBridge(reviewer); const result = executeToolCall('add_comment', { paraId, text }, bridge);Both expose the same 10 tools to the agent. The bridge layer abstracts the transport.
MCP server (built-in, spec 2025-06-18)
import { McpServer, createReviewerBridge, DocxReviewer } from '@eigenpal/docx-editor-agents'; import { McpServer as _ } from '@eigenpal/docx-editor-agents/mcp'; const server = new McpServer(bridge, { name: 'my-saas', version: '1.0.0' }); const reply = server.handle(jsonRpcMessage); // sync, transport-free, never throws- Transport-agnostic core: wire
server.handle()to HTTP-SSE, WebSocket, your queue worker, or a managed stdio process. The library does not pick a transport. - stdio adapter for customers who want to run the server inside a worker pool:
runStdioServer(bridge)(Node-only). - Spec compliance:
initialize/tools/list/tools/call/ping. Tool failures use the spec's{isError: true, content: [...]}envelope inside a successful JSON-RPC response; JSON-RPC errors are reserved for protocol-level problems. Includes UTF-8-safe chunk decoding (multi-byte codepoints don't break across stdio chunks) and a buffer cap to prevent memory DoS.
A local-install stdio bin was prototyped and removed: one-document-per-config is the wrong shape for a contract-review product. The right deployment is a hosted MCP service the customer operates with their own auth + storage.
Events
bridge.onContentChange(listener)andbridge.onSelectionChange(listener)(both return unsubscribe functions) let host apps and MCP servers react to edits without owning the single React callback prop.ContentChangeEventships{ commentCount, changeCount, comments, changes }.SelectionChangeEventships the currentSelectionInfoornull. (Reviewer bridge: never fires — no caret in headless mode.)
New on
DocxEditorRefaddComment({ paraId, text, author, search? }) → number | null replyToComment(commentId, text, author) → number | null resolveComment(commentId) → void proposeChange({ paraId, search, replaceWith, author }) → boolean findInDocument(query, { caseSensitive?, limit? }) → FoundMatch[] getSelectionInfo() → SelectionInfo | null getComments() → Comment[] onContentChange(listener) → () => void onSelectionChange(listener) → () => voidscrollToParaIdwas already public.New on
@eigenpal/docx-corefindParagraphByParaId(doc, paraId)returns the PM range for a paragraph by paraId.Word JS API parity contract
WordCompatBridge(exported type from the package root) formally documents every Office.js Word API method we mirror. A compile-time static assertion enforces thatEditorBridgesatisfies it. If we drop or change a method that's part of the public Word-API mirror, typecheck breaks.Demos
examples/agent-use-demo(roast-my-doc) — server-side demo of the canonical "build your own MCP-shaped agent server" pattern: parse →createReviewerBridge→agentTools→ tool-call loop withexecuteToolCall→toBuffer(). The route's preamble shows the one-line diff to convert it to a real MCP server.examples/agent-chat-demo(chat with your doc) — live editor + chat panel. DemonstratesuseAgentChatagainst a running<DocxEditor>.
Both demos support
ALLOWED_ORIGINSenv var for production deployments (open by default for local dev), forward clientAbortSignalto OpenAI calls, and cap upload size.Hardening
proposeChangerefuses to layer onto an existing tracked-change run (would produce invalid OOXML).- Ambiguous
searcharguments return an error instead of silently mistargeting. scrolldoes not steal the user's caret.- Comment IDs and tracked-change revisionIds use the shared monotonic counter to avoid collisions in OOXML.
- Mark guards if a host StarterKit omits
comment/insertion/deletionextensions.
Spec
specs/live-agent-chat.md.- Locate —
8dba7e8: # Word-style split button for text + highlight color (issue #130)
Closes #130.
The font-color and highlight-color toolbar buttons are now Word-style split buttons. Two halves:
- Apply half (icon + swatch): click to re-apply the last color you picked. No dropdown.
- Arrow half (▾): click to open the full color picker (theme grid, standard colors, custom hex, "no color").
Pick a color once, then for every subsequent occurrence just click the swatch — one click instead of three.
API surface (consolidated)
The package previously shipped two color pickers — a simple
ColorPickerand a fullerAdvancedColorPicker. The two have been merged into a singleColorPickerwith two new props:splitButton?: boolean— defaulttrue. Setfalseto render a legacy single-button shape.defaultColor?: ColorValue | string— initial "last picked" color used by the apply half before the user picks anything. Defaults: text → red, highlight → yellow, border → black.
The "last picked" memory is independent of the current selection's color (matches Word). Picking "Automatic" / "No color" does NOT update it.
Breaking changes
The legacy
ColorPicker(the simpler grid picker that ran inline, not via dropdown) has been removed. Its typesColorOptionand the oldColorPickerPropsshape are no longer exported.AdvancedColorPickerhas been renamed toColorPicker. Update imports:- import { AdvancedColorPicker } from '@eigenpal/docx-js-editor'; + import { ColorPicker } from '@eigenpal/docx-js-editor';The exported
ColorPickerPropsandColorPickerModetypes now correspond to the renamed component (formerlyAdvancedColorPickerProps/AdvancedColorPickerMode).CSS class names changed from
docx-advanced-color-picker-*→docx-color-picker-*. If you targeted these in user CSS overrides, update the selectors.
Migration
No changes needed inside the library — text-color, highlight-color, table-cell-fill, and table-border-color buttons all use the new
ColorPickerautomatically. If you importAdvancedColorPickerdirectly, switch toColorPicker. If you used the legacy simplerColorPicker, the newColorPickeris a drop-in for any case that benefits from the fuller picker; otherwise build a small custom picker — the legacy one was thin enough to inline.
Patch Changes
71a1836: Replace hardcoded
816page-width literals inDocxEditorwith the existingDEFAULT_PAGE_WIDTHconstant exported fromPagedEditor, and fold the two duplicatedpageWidthfallback expressions into a singlepageWidthPxvalue shared byUnifiedSidebarandCommentMarginMarkers.f31fd5a: Fix document outline overlap and ruler behavior
- Outline panel no longer sits on top of the page. On wide viewports the page stays where it was (centered, or translated left by the comments sidebar) — only the layout's min-width grows so the centered page never overlaps the panel. On narrow viewports the page + outline scroll horizontally as a unit instead.
- Outline panel header lines up with the doc's top margin and uses a transparent background so the page's left-side shadow stays visible when the viewport is squeezed.
- Vertical ruler stays pinned to the viewport's left edge during horizontal scroll instead of scrolling out of view.
- Horizontal ruler is now sticky inside the scroll container, so it scrolls horizontally with the doc and stays put on vertical scroll. Padding tracks the outline (right shift) and comments sidebar (left shift) so the ruler centers against the same axis as the page.
- Editor surround uses
--doc-bguniformly so the over-scroll/rubber-band area matches the gutter.
6a0b9a9: Fix crash when accepting a tracked replacement.
The
paragraphChangeTrackerplugin walkedtr.stepsusing each step's rawfrom/to/posagainsttr.doc(the final doc after every step has been applied). Those coords are valid only in the doc as it was when that step ran, so a later doc-shrinking step could leave the earlier step's coords past the final doc end and crashFragment.nodesBetweenonundefined.nodeSize.Concretely:
acceptChangeemits[RemoveMarkStep, ReplaceStep]when the range contains both aninsertionmark and adeletion(a tracked replace). The replace shrinks the doc, the mark step'stobecomes invalid intr.doc, and the editor crashes.Remap each step's coords through
tr.mapping.slice(stepIndex + 1)before using them withtr.doc, and skip steps whose range was fully consumed by a later deletion. Adds a regression test reproducing the accept-tracked-replacement crash shape.95f8df1: Add Brazilian Portuguese (pt-BR) locale support with 100% translation coverage.
This PR introduces:
- New
packages/react/i18n/pt-BR.jsonfile - 619 translated UI strings (100% coverage)
- Proper locale structure following existing patterns
- All keys in sync with en.json source
The translation covers core UI elements including:
- Common actions (cancel, save, edit, etc.)
- Toolbar and formatting controls
- Color picker and dialog interfaces
- Table operations and context menus
- Error messages and status indicators
- New
Patch Changes
- 1a9d8eb: Fix caret rendering at the wrong height after changing font size/family in an empty paragraph. The paragraph measurement cache key didn't include
defaultFontSize/defaultFontFamily, so empty paragraphs with different default fonts collided on the same key and the cache returned a stale measurement until the user typed a character. - 1a9d8eb: Fix font/size/color/highlight changes silently dropping when applied in an empty paragraph (e.g. right after pressing Enter). The mark commands set stored marks before updating the paragraph node, but every transform step clears stored marks — so the chosen value was wiped before dispatch and typed text fell back to the editor default. Reordered so node updates run first.
- 14d7623: ci(release): fix Slack notification release link to use per-package tag (changesets fixed-group ships @eigenpal/docx-js-editor@X.Y.Z, not vX.Y.Z)
Minor Changes
91a6f97: Add
fontFamiliesprop toDocxEditorto customize the toolbar's font dropdown.Pass either bare strings or full
FontOptionobjects (or a mix). Strings render in the "Other" group;FontOption[]enables CSS fallback chains and category grouping. Omitting the prop preserves the existing 12-font default. Closes #278.<DocxEditor fontFamilies={[ 'Arial', { name: 'Roboto', fontFamily: 'Roboto, sans-serif', category: 'sans-serif' }, ]} />
Patch Changes
- b10a517: Fix three toolbar tooltips/labels that ignored the
i18nprop and rendered as English regardless of locale: the comments-sidebar toggle, the outline-toggle button, and the Editing / Suggesting / Viewing mode dropdown (including its descriptions). The translation keys already existed inde.jsonandpl.json; the components were just bypassinguseTranslation(). Now wired through correctly.
What's Changed
- feat: group consecutive suggestion-mode deletions by @mthenw in https://github.com/eigenpal/docx-editor/pull/241
- refactor: cursor-based sidebar expansion for comments and tracked changes by @jedrazb in https://github.com/eigenpal/docx-editor/pull/244
- Update README.md by @jedrazb in https://github.com/eigenpal/docx-editor/pull/250
- fix: table context menu actions and dialog-backed cell splitting (#243 + review fixes) by @jedrazb in https://github.com/eigenpal/docx-editor/pull/253
- feat: add collaborative prop for Yjs integration by @sicko7947 in https://github.com/eigenpal/docx-editor/pull/247
- feat(examples): realtime collaboration demo with Yjs + y-webrtc by @jedrazb in https://github.com/eigenpal/docx-editor/pull/254
- feat: forward ProseMirror decorations to the layout-painter (closes #256) by @jedrazb in https://github.com/eigenpal/docx-editor/pull/258
New Contributors
- @sicko7947 made their first contribution in https://github.com/eigenpal/docx-editor/pull/247
Full Changelog: https://github.com/eigenpal/docx-editor/compare/v0.0.27...v0.0.34
What's Changed
- fix: ensure DocumentName input is always controlled by @jedrazb in https://github.com/eigenpal/docx-editor/pull/231
- fix: header/footer editor line spacing mismatch with layout view by @jedrazb in https://github.com/eigenpal/docx-editor/pull/228
- feat: show replacement tracked changes as single sidebar card by @jedrazb in https://github.com/eigenpal/docx-editor/pull/232
- feat: i18n support with locale prop and community translations by @jedrazb in https://github.com/eigenpal/docx-editor/pull/233
- fix: unicode double-click word selection by @mthenw in https://github.com/eigenpal/docx-editor/pull/235
- fix: suggest mode applying spurious underline/strikethrough by @jedrazb in https://github.com/eigenpal/docx-editor/pull/236
- feat: add Polish and German translations by @jedrazb in https://github.com/eigenpal/docx-editor/pull/240
New Contributors
- @mthenw made their first contribution in https://github.com/eigenpal/docx-editor/pull/235
Full Changelog: https://github.com/eigenpal/docx-editor/compare/v0.0.32...v0.0.33
What's Changed
- fix: improve pagination accuracy for table-heavy documents by @jedrazb in https://github.com/eigenpal/docx-editor/pull/214
- fix: track mark-only changes in ParagraphChangeTrackerExtension by @TimurKr in https://github.com/eigenpal/docx-editor/pull/220
- fix: comment system bugs — add/resolve/reply/visibility by @jedrazb in https://github.com/eigenpal/docx-editor/pull/219
- fix: correct twips→pixels conversion in header/footer measurement by @jedrazb in https://github.com/eigenpal/docx-editor/pull/224
- fix: mode="suggesting" prop does not activate track changes by @jedrazb in https://github.com/eigenpal/docx-editor/pull/225
- fix: clean up orphaned comments when their text is deleted by @jedrazb in https://github.com/eigenpal/docx-editor/pull/227
New Contributors
- @TimurKr made their first contribution in https://github.com/eigenpal/docx-editor/pull/220
Full Changelog: https://github.com/eigenpal/docx-editor/compare/v0.0.31...v0.0.32
- feat: add comment event callbacks (onCommentAdd, onCommentResolve, onCommentDelete, onCommentReply)
- feat: add showOutlineButton prop (#209)
- feat: export Comment type publicly
What's Changed
- fix(clipboard) Fix clipboard image paste by @erophames in https://github.com/eigenpal/docx-editor/pull/133
- fix: batch fix 10 OOXML compliance and rendering bugs by @jedrazb in https://github.com/eigenpal/docx-editor/pull/178
- fix: skip Space key interception during IME composition by @minkichoe in https://github.com/eigenpal/docx-editor/pull/180
- fix: hide list indicators when w:vanish set on numbering level rPr by @jedrazb in https://github.com/eigenpal/docx-editor/pull/173
- feat: wire multi-column layout rendering from section properties by @jedrazb in https://github.com/eigenpal/docx-editor/pull/175
New Contributors
- @minkichoe made their first contribution in https://github.com/eigenpal/docx-editor/pull/180
Full Changelog: https://github.com/eigenpal/docx-editor/compare/v0.0.26...v0.0.27
What's Changed
- refactor: make two-level toolbar the default layout by @jedrazb in https://github.com/eigenpal/docx-editor/pull/140
Full Changelog: https://github.com/eigenpal/docx-editor/compare/v0.0.24...v0.0.25
What's Changed
- fix: draw top border on table continuation across pages by @jedrazb in https://github.com/eigenpal/docx-editor/pull/136
- fix: scrollbar area + Google Docs-style page indicator by @jedrazb in https://github.com/eigenpal/docx-editor/pull/137
- feat: composable two-level toolbar layout by @jedrazb in https://github.com/eigenpal/docx-editor/pull/138
- feat: default doc icon, editable name prop, strip .docx extension by @jedrazb in https://github.com/eigenpal/docx-editor/pull/139
Full Changelog: https://github.com/eigenpal/docx-editor/compare/v0.0.23...v0.0.24
What's Changed
- Upgrade React and React DOM type definitions by @jedrazb in https://github.com/eigenpal/docx-editor/pull/134
- chore(deps-dev): bump @happy-dom/global-registrator from 13.10.1 to 20.8.3 by @dependabot[bot] in https://github.com/eigenpal/docx-editor/pull/111
- chore(deps-dev): bump eslint from 9.39.4 to 10.0.3 by @dependabot[bot] in https://github.com/eigenpal/docx-editor/pull/110
- fix: plugin overlay blocks editor mouse clicks by @jedrazb in https://github.com/eigenpal/docx-editor/pull/135
Full Changelog: https://github.com/eigenpal/docx-editor/compare/v0.0.22...v0.0.23
What's Changed
- chore(deps): bump actions/setup-node from 4 to 6 by @dependabot[bot] in https://github.com/eigenpal/docx-editor/pull/107
- docs: add AGENTS_README.md for AI coding agents by @jedrazb in https://github.com/eigenpal/docx-editor/pull/114
- feat: add editor mode prop (editing/suggesting/viewing) by @jedrazb in https://github.com/eigenpal/docx-editor/pull/117
- chore(deps): bump actions/checkout from 4 to 6 by @dependabot[bot] in https://github.com/eigenpal/docx-editor/pull/108
- fix: resolve OOXML auto color and render header/footer borders by @jedrazb in https://github.com/eigenpal/docx-editor/pull/118
- fix: selective save now syncs comments, headers/footers, and core properties by @jedrazb in https://github.com/eigenpal/docx-editor/pull/119
- fix(layout-painter): prevent header image clipping and duplicate inline image rendering by @erophames in https://github.com/eigenpal/docx-editor/pull/115
- feat: add Google Docs-style hyperlink popup on link click by @jedrazb in https://github.com/eigenpal/docx-editor/pull/120
- fix: hyperlink color, selection, and selectability by @jedrazb in https://github.com/eigenpal/docx-editor/pull/127
- feat: add table row/column quick-action insert buttons by @jedrazb in https://github.com/eigenpal/docx-editor/pull/125
- feat: add Page Setup dialog (page size, orientation, margins) by @jedrazb in https://github.com/eigenpal/docx-editor/pull/124
- feat: add RTL (right-to-left) text direction support by @jedrazb in https://github.com/eigenpal/docx-editor/pull/123
- fix: OOXML roundtrip, rendering, and editing improvements by @jedrazb in https://github.com/eigenpal/docx-editor/pull/121
- fix: use DOCX border space values instead of hardcoded padding by @jedrazb in https://github.com/eigenpal/docx-editor/pull/128
- feat: add text box / shape rendering support by @jedrazb in https://github.com/eigenpal/docx-editor/pull/122
- refactor: deduplicate parser utilities (-972 lines) by @jedrazb in https://github.com/eigenpal/docx-editor/pull/129
New Contributors
- @dependabot[bot] made their first contribution in https://github.com/eigenpal/docx-editor/pull/107
- @erophames made their first contribution in https://github.com/eigenpal/docx-editor/pull/115
Full Changelog: https://github.com/eigenpal/docx-editor/compare/v0.0.21...v0.0.22
What's Changed
- Fix: disable sourcemaps to reduce package from 16MB to 3.5MB by @jedrazb in https://github.com/eigenpal/docx-editor/pull/106
Full Changelog: https://github.com/eigenpal/docx-editor/compare/v0.0.20...v0.0.21
What's Changed
- fix: publish from packages/react and generate npm README with absolute URLs by @jedrazb in https://github.com/eigenpal/docx-editor/pull/99
- feat: add AdvancedColorPicker with theme color matrix by @jedrazb in https://github.com/eigenpal/docx-editor/pull/100
- fix: individual border presets and replace cell fill picker with AdvancedColorPicker by @jedrazb in https://github.com/eigenpal/docx-editor/pull/101
- fix: correct default line spacing from 1.15x to 1.0x per OOXML spec by @jedrazb in https://github.com/eigenpal/docx-editor/pull/102
- feat: selective XML save — patch only changed paragraphs in document.xml by @jedrazb in https://github.com/eigenpal/docx-editor/pull/103
- fix: scroll page to follow cursor during arrow key navigation by @jedrazb in https://github.com/eigenpal/docx-editor/pull/105
- Redesign demo badge and update repo URLs by @jedrazb in https://github.com/eigenpal/docx-editor/pull/104
Full Changelog: https://github.com/eigenpal/docx-editor/compare/v0.0.19...v0.0.20
What's Changed
- fix: compile Tailwind utilities into dist/styles.css by @jedrazb in https://github.com/eigenpal/docx-editor/pull/98
Full Changelog: https://github.com/eigenpal/docx-editor/compare/v0.0.18...v0.0.19
What's Changed
- fix: preserve hyperlink relationships in OOXML output by @jedrazb in https://github.com/eigenpal/docx-editor/pull/96
- fix: bundle docx-core into docx-js-editor by @jedrazb in https://github.com/eigenpal/docx-editor/pull/97
Full Changelog: https://github.com/eigenpal/docx-editor/compare/v0.0.17...v0.0.18
What's Changed
- fix: use font-specific OS/2 ratios for OOXML line spacing by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/74
Full Changelog: https://github.com/eigenpal/docx-js-editor/compare/v0.0.14...v0.0.15
What's Changed
- chore: clean up repo structure by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/56
- fix: E2E test suite — 0 failures, 0 skipped by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/59
- fix: correct cursor/selection positioning at non-100% zoom levels by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/58
- docs: plugin system docs, hello-world example, and DX fixes by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/60
- fix: toolbar dropdowns clipped by overflow container by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/67
- fix: improve large document performance (page virtualization + measurement caching) by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/61
- fix: collapse duplicate paragraph borders (Word-style) by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/69
- refactor: remove VariablePanel and VariableInserter from editor UI by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/70
- fix: cursor height, font inheritance on Enter, and <11pt line metrics by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/71
- fix: show all document paragraph styles in style dropdown by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/72
Full Changelog: https://github.com/eigenpal/docx-js-editor/compare/v0.0.13...v0.0.14
What's Changed
- fix: image save — EMU conversion, new image media, table structure by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/46
- fix: preserve table/row/cell/image properties on save round-trip by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/50
- chore: lightweight packaging — peer deps, code splitting, lazy loading by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/51
- Fix/nested tables cause oom by @fahdarafat in https://github.com/eigenpal/docx-js-editor/pull/52
- fix: nested table rendering and table cell click handling by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/55
New Contributors
- @fahdarafat made their first contribution in https://github.com/eigenpal/docx-js-editor/pull/52
Full Changelog: https://github.com/eigenpal/docx-js-editor/compare/v0.0.12...v0.0.13
What's Changed
- fix: toolbar icons, table dropdown visibility, and mobile layout by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/43
Full Changelog: https://github.com/eigenpal/docx-js-editor/compare/v0.0.9...v0.0.10
What's Changed
- feat: page break support + File/Insert menu bar by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/34
- feat: simplify image toolbar, add selection/drag, fix OOXML round-trip by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/35
- feat: mobile-friendly scrollable toolbar and complete props documenta… by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/39
- feat: add document outline sidebar and table of contents by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/38
- fix: prevent image OOM crash, constrain to page, fix menu dropdown by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/40
- fix: eliminate cumulative layout drift from twips rounding by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/41
- feat: per-paragraph ruler with indent handles and drag tooltip by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/42
Full Changelog: https://github.com/eigenpal/docx-js-editor/compare/v0.0.8...v0.0.9
What's Changed
- Fix: show text cursor when hovering over page content by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/19
- fix: respect direct w:ind override on list paragraphs by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/23
- Fix table border presets and dropdown focus loss by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/20
- Fix comment timestamps using commentsExtensible.xml by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/21
- feat: improve mobile rendering and loading indicator by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/27
- Fix header/footer editor crash and add edit support for empty areas by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/28
- Feat/contextual spacing by @jedrazb in https://github.com/eigenpal/docx-js-editor/pull/29
Full Changelog: https://github.com/eigenpal/docx-js-editor/commits/v0.0.8