Skip to content

pptx-svelte-viewer ​

Release notes for pptx-svelte-viewer on npm, generated from Conventional Commits by the release pipeline.

4.33.0 - 2026-10-10 ​

Features ​

  • color: Add the Office theme colour palette to the color area (646b6b5)
  • pptx: Add host ribbon tabs to all five PowerPoint bindings (2089f62)
  • text: Add the fonts' design advance widths, regular and bold (15f7eeb)
  • visio: Pick theme colours that follow the page theme (d29c9c7)

Bug Fixes ​

  • pptx: Verify certificate chains with node:crypto, not node-forge (51e6312)
  • pptx: Keep the browser's image drag out of picture moves (817a36a)

Refactor ​

  • geometry: Move the orthogonal connector router out of pptx (7628894)
  • ui: Move Excel and Word colour pickers onto the shared grid (ab332b6)

Styling ​

  • Apply oxfmt to files drifted from the formatter (daeabf2)

4.32.0 - 2026-10-10 ​

Features ​

  • geometry: Share arrow-key nudges and Shift angle snapping (a839871)

Testing ​

  • core: Fuzz the xml, formula, number format and hyperlink parsers (c6911a0)

Dependencies ​

  • deps: Bump the production-minor-and-patch group with 5 updates (#42) (fda493e)

Chores ​

  • deps-dev: Bump the development-minor-and-patch group across 1 directory with 6 updates (#43) (e3a4861)

4.31.1 - 2026-10-09 ​

Bug Fixes ​

  • pptx: Paint the outline gradient of chart line series (#41) (158d44b)

4.31.0 - 2026-10-09 ​

Features ​

  • visio: Add change case and format painter commands (85440e1)
  • visio: Add page themes and glow, soft edge and reflection effects (709bd22)
  • visio: Add re-layout, auto align, layer assignment and guide edits (c4c9cb2)

Bug Fixes ​

  • pptx: Save the size of empty table cell paragraphs (5f73df1)
  • pptx: Follow slide links outside slide shows (#38) (f3e99cb)

4.30.3 - 2026-10-08 ​

Bug Fixes ​

  • ui: Keep a folded ribbon group open for popup buttons (88a9d78)
  • ui: Keep table resize handles off merged cells (e8b99ee)

Documentation ​

  • Refresh the readmes with webp images and the office suite (6a800d0)

4.30.2 - 2026-10-08 ​

Bug Fixes ​

  • pptx: Write cell properties into an empty a:tcPr (22e8a3b)
  • pptx: Place share in the ribbon tab row (8efe00e)

Chores ​

  • pptx: Require ooxml-ui 1.3.0 for the ribbon actions (4c6ace1)

4.30.1 - 2026-10-08 ​

Bug Fixes ​

  • ui: Keep thin pptx strokes at least one device pixel on screen (bb1df44)
  • pptx: Keep unedited empty table cells free of a:tcPr (01d4f3d)
  • pptx: Default an absent c:gapWidth to 150 (e16f565)

Refactor ​

  • pptx: Share the chart XML presence check for a:noFill (ad7bae0)

4.30.0 - 2026-10-08 ​

Features ​

  • chart: Add the neutral chartSpace model (2544c31)
  • chart: Parse chart parts from the shared DOM (49c1b76)
  • opc: Patch property parts in place and model app statistics (66c4cf1)
  • chart: Write chartSpace parts from the neutral model (bf6920f)
  • chart: Accept text bodies given as XML and drop invalid characters (816830f)
  • chart: Render chartSpace parts to svg (eb2c12f)
  • chart: Model display units, data tables and walls (b95531a)
  • ui: Add showCompatibilityToasts root option (992adda)
  • opc: Support shared suite files and embedded editing (41614b1)

Bug Fixes ​

  • chart: Paint coincident linear stops as the native one-step ramp (eabbc5e)
  • pptx: List line breaks in slide titles as spaces in app.xml (45f496a)
  • pptx: Export the neutral SmartArt type names from the public entry (0f081d2)
  • chart: Read the line chart group's own c:smooth (a5cfd0d)
  • pptx: Read chart style numbers from the mc:Fallback (045faf7)
  • pptx: Treat a bare data-label switch as on (637f938)
  • pptx: Declare c15 and c16 prefixes in chart extension writers (7b93a01)
  • pptx: Repair chart parts this library once saved with undeclared prefixes (a5f77af)
  • pptx: Paint chart label fonts in every binding (13493fc)
  • pptx: Build chart style palettes over the deck theme (7ab9527)
  • pptx: Read each table cell paragraph's own layout (bcc61f3)
  • pptx: Lay out table cell paragraphs with their own spacing (c3db7c5)
  • pptx: Save each table cell paragraph's own alignment (0d43f35)
  • pptx: Align every paragraph when a table cell is aligned (1bb7e7d)
  • pptx: Skip chart axis lines and gridlines set to no line (c6a9fcb)
  • pptx: Apply a table cell run's character spacing (6d1ee14)
  • pptx: Size an empty table cell from its end paragraph properties (30da656)

Performance ​

  • xml: Add a lightweight reader for large plain fragments (5e0318f)

Refactor ​

  • pptx: Compile the ui helpers under the strict project (edbff0a)
  • chart: Use the Drawing type names (76bf49c)
  • diagram: Add the neutral SmartArt model types (b8f4e74)
  • geometry: Move the preset shape evaluator out of pptx (c670910)
  • diagram: Move the layout engine out of pptx (91767c0)
  • pptx: Update document properties through opc/properties (a295f6a)
  • diagram: Port the dgm:choose walkers to ordered XML (2dfc037)
  • diagram: Move the SmartArt constraint solver into diagram (bd91ad8)
  • diagram: Move the SmartArt interpreter model into diagram (b24d320)
  • chart: Move the svg painter into the chart area (0f9169d)
  • pptx: Build chart models from the neutral parser (1e38985)
  • pptx: Delete the legacy object-tree chart parser (b4f0f4f)
  • diagram: Move the SmartArt hierarchy arranger into diagram (989744c)
  • diagram: Move the SmartArt layout interpreters into diagram (3725b73)

Testing ​

  • pptx: Compare chart parts with the neutral parser on every deck (58b16be)

4.29.0 - 2026-10-08 ​

Features ​

  • xlsx: Render imported manual legend layouts (5173750)

4.28.0 - 2026-10-07 ​

Features ​

  • xlsx: Author chart series gradients with shared controls (a932dbd)
  • xlsx: Edit gradient stop brightness with shared color logic (a49baa4)
  • xlsx: Add native named gradient preset gallery (47ec692)
  • xlsx: Add rectangular gradient geometry controls (e10c21a)
  • xlsx: Author radial and path fills on chart series (2d3652a)
  • xlsx: Format chart and plot background fills (9237f7f)
  • visio: Rotate shapes with shared pointer geometry (407fa61)
  • xlsx: Render and preserve mixed chart title text (4f3f87e)
  • xlsx: Render and preserve chart title paragraph spacing (4f0d619)
  • xlsx: Wrap chart titles with shared text flow (14a33ed)

Bug Fixes ​

  • chart: Match native scaled linear gradient paint (8bd1171)
  • chart: Paint native rectangular path gradients (af81015)
  • xlsx: Paint native circular chart backgrounds (e2bddbf)
  • xlsx: Preserve chart axis visibility on export (da056bb)
  • xlsx: Preserve direct chart fills on export (c3b3491)
  • pptx: Copy owned package parts when duplicating slides (6940f93)
  • pptx: Generate complete native 3d chart axes (6de35d9)
  • pptx: Write text properties before paragraph content (a5fe6e7)
  • xlsx: Preserve native built-in chart text defaults (f3b9335)
  • xlsx: Inherit and preserve chart text formatting (b292d16)
  • xlsx: Align chart title lines with measured font boxes (8499a58)
  • pptx: Project rectangular chart gradients in every binding (8bc5ee3)
  • ci: Clear lint errors in chart and drawing checks (f331e67)
  • pptx: Preserve rectangular chart gradient paths (27c6ddb)

Performance ​

  • pptx: Share the engine and load metafile conversion lazily (e00b1d7)

Testing ​

  • xlsx: Measure native linear gradient paint profiles (ccc4ceb)

4.27.0 - 2026-10-07 ​

Features ​

  • pptx: Migrate shared renderer and editing into core and ui (ba4cd0d)
  • pptx: Move snapshots and cached drawing bounds into core (f13d837)
  • chart: Share Office chart color palettes (bd436dd)
  • visio: Preserve page hatch orientation and tile phase (8b13665)
  • xlsx: Add shared Change Colors gallery and native palette edits (c0e42f0)
  • chart: Share native chart style definitions (f8a6c9e)
  • xlsx: Render imported native chart appearance (c14f42d)
  • xlsx: Preserve and render native chart series gradients (50a9288)
  • xlsx: Render imported native chart shadows (ab83de0)
  • xlsx: Honor native chart gap width and overlap (42b7d63)
  • xlsx: Add solid chart fill transparency controls (60f5c51)

Bug Fixes ​

  • pptx: Retain grid policy until core exports are released (82e0fd0)
  • pptx: Wrap text in static svg exports (ece906e)
  • ci: Allow migrated UI sources in viewer tests (e1283a1)
  • pptx: Preserve rich data label formatting when saving (0cc1c69)
  • pptx: Finish migrated package dependency wiring (ab8d12d)
  • docx: Preserve tracked run formatting through text edits (ecfde3c)
  • pptx: Preserve combo chart formatting and table subscripts (7518420)
  • pptx: Resolve chart text fonts across runs and scripts (6d00580)
  • pptx: Include bullet text runs in paragraph strut sizing (b10c8cd)
  • pptx: Wrap Korean text at word boundaries (cfa6b1d)

Refactor ​

  • pptx: Move chart grid editing policy into core (0d8e23f)
  • crypto: Share Office GUID generation (7d4ceeb)
  • Use extensionless relative typescript imports (ef81f39)

4.26.0 - 2026-10-07 ​

Features ​

  • pptx: Add PowerPoint's built-in SmartArt layout definitions (9c6cd97)
  • pptx: Apply built-in SmartArt layouts synchronously and save them (4ddf31c)
  • shared: Offer PowerPoint's built-in SmartArt layouts in every binding (29100c4)

Bug Fixes ​

  • shared: Size SmartArt 3D labels to their text and sharpen them (79318b6)
  • shared: Draw SmartArt connectors in the 3D view (5795dcf)

4.25.0 - 2026-10-06 ​

Features ​

  • pptx: Parse chart legend overlay from c:overlay (dce36c6)
  • chart: Move pie, radar, treemap and trendline helpers from pptx viewer (c08a02b)
  • color: Move text contrast and unit rgb helpers from pptx viewer (2dcc341)
  • text: Move tab leader and decimal tab helpers from pptx viewer (3a5bcf0)
  • geometry: Move snap guides and align/distribute from pptx viewer (3400e87)
  • pptx: Forward the viewer's duplicated chart and theme helpers (c22b276)

Bug Fixes ​

  • pptx: Clear the old layout definition on a SmartArt layout switch (086e06c)
  • shared: Make 3D SmartArt editing and layout switching reliable in every binding (43e3e07)
  • shared: Hide the fill swatches when the pointer leaves a 3D SmartArt node (c718e77)
  • ci: Resolve pptx-viewer-core/ui in the binding test and demo configs (dfffe69)
  • xlsx: Harden code-scanning findings across areas (90ee4b3)
  • xlsx: Use Reflect for dynamic property writes and tighten sanitizers (b663413)

Refactor ​

  • Move the library into src/core, next to src/ui (3933a88)

Documentation ​

  • Bring the pptx docs and agent guide up to date with the move (8cc3f5e)

Build & CI ​

  • deps: Adopt ooxml-ui 0.29.1 and ooxml-core 0.21.1 (56e1979)
  • pptx: Move the pptx demos and browser tests to the repository root (a23994d)
  • release: Publish the pptx viewer packages from this repository (21e790f)

Chores ​

  • viewers: Import the pptx-viewer repository with its history (dde62be)

Changelog ​

All notable changes to this project are documented here. This file is generated from Conventional Commits by git-cliff; do not edit it by hand. A release listed with no entries carried no Conventional Commit in this package's scope: scripts/release-plan.mjs re-releases a package whenever any of its files change, not only on conventional ones.

4.24.3 - 2026-10-06 ​

Bug Fixes ​

  • shared: Make 3D SmartArt rotate, edit and recolour like the 2D diagram (by @ChristopherVR) (29473d4)
  • Draw no default table cell border, and let the ooxml sync push to main (#408) (by @ChristopherVR) (11914db)

4.24.2 - 2026-10-05 ​

Bug Fixes ​

  • shared: Draw zero-height and zero-width line shapes (#404) (by @IHAGI-c) (8366e0c)
  • shared: Skip defining the 3D view element without HTMLElement (by @ChristopherVR) (8a08d33)
  • vanilla: Follow the ooxml-ui 0.28 gallery and select contracts (by @ChristopherVR) (2dd5a64)

4.24.1 - 2026-10-05 ​

Testing ​

  • shared: Match control styles without relying on their formatting (by @ChristopherVR) (e32497c)
  • shared: Expect the title bar's actions slot (by @ChristopherVR) (3076cb8)

Build & CI ​

  • deps: Adopt ooxml-core 0.20.0 and ooxml-ui 0.28.0 (by @ChristopherVR) (3f52fa1)

4.24.0 - 2026-10-04 ​

Features ​

  • viewer: Run ribbon galleries on the shared office-ui-gallery (by @ChristopherVR) (ed6a611)

Dependencies ​

  • deps: Update every dependency to its latest version (by @ChristopherVR) (7212b14)

4.23.0 - 2026-10-04 ​

Features ​

  • viewer: Run shared controls on ooxml-ui office-ui elements (by @ChristopherVR) (926b8e9)
  • viewer: Run the title bar on the shared office-ui-title-bar (by @ChristopherVR) (c022507)
  • viewer: Run the status bar on the shared office-ui-status-bar (by @ChristopherVR) (f7ec490)
  • viewer: Run ribbon sections on the shared office-ui-ribbon-section (by @ChristopherVR) (f13c2ae)

4.22.1 - 2026-10-03 ​

Bug Fixes ​

  • viewer: Align sorter bindings and resolve CI failures (by @ChristopherVR) (fe7b4ad)

4.22.0 - 2026-10-03 ​

Features ​

  • core: Reuse shared ooxml chart text and geometry APIs (by @ChristopherVR) (7a27232)

4.21.0 - 2026-10-03 ​

Features ​

  • core: Reuse shared office equation converters (by @ChristopherVR) (303312a)

Bug Fixes ​

  • vanilla: Recover named smartart presentations after reload (by @ChristopherVR) (3504e2f)
  • shared: Only collapse ribbon groups inside the viewer's editor chrome (by @ChristopherVR) (d4d8f9d)

4.20.0 - 2026-10-02 ​

Features ​

  • ui: Align Home, Insert, Draw and Design ribbons with PowerPoint (by @ChristopherVR) (0b12b7c)

Bug Fixes ​

  • vanilla: Stop popups pinning a destroyed viewer and fix the OOM in tests (by @ChristopherVR) (5f7cb7e)
  • ui: Size dialog footer buttons for phone width and fix three stale specs (by @ChristopherVR) (f67add0)
  • ui: Port the ribbon layout onto the shared Home controls (by @ChristopherVR) (9c483d9)
  • ui: Keep the font pickers in one Font group and widen Arrange specs (by @ChristopherVR) (39916a9)
  • ui: Keep Office's three-row column in stacked ribbon groups (by @ChristopherVR) (9834995)

Testing ​

  • shared: Cover the command caret after merging the Transitions pass (by @ChristopherVR) (fd140a3)
  • e2e: Give the localization spec room for French Home labels (by @ChristopherVR) (0608e07)

4.19.1 - 2026-10-02 ​

Bug Fixes ​

  • shared: Parse gallery preview SVG instead of assigning innerHTML (by @ChristopherVR) (b471295)

4.19.0 - 2026-10-02 ​

Features ​

  • shared: Add menus, colours, selects and galleries to the Home strips (by @ChristopherVR) (c30aa60)
  • ui: Shared radio and switch primitives, adopt in all bindings (by @ChristopherVR) (37f8c8f)
  • ui: Match PowerPoint on Transitions, Animations, Review, View, SmartArt (by @ChristopherVR) (cee954b)
  • ui: Finish dialog footers and add the drift e2e (by @ChristopherVR) (0e3ff44)

Bug Fixes ​

  • shared: Validate Home gallery picks and scope popup roles to open (by @ChristopherVR) (94c8655)
  • shared: Keep open Home popups and selects stable across state updates (by @ChristopherVR) (85f2738)

Refactor ​

  • svelte: Use shared Home menus, colours, selects and galleries (by @ChristopherVR) (6ad584e)
  • vanilla: Adopt pptx-ui-dialog-footer in the remaining dialogs (by @ChristopherVR) (a5c3c20)
  • vue: Adopt pptx-ui-dialog-footer in the remaining dialogs (by @ChristopherVR) (3e51932)
  • svelte: Adopt pptx-ui-dialog-footer in the remaining dialogs (by @ChristopherVR) (b7c581a)

Testing ​

  • svelte: Follow the Home popup role that exists only while open (by @ChristopherVR) (59ba33c)
  • shared: Allow the SmartArt Design tab to carry more than two galleries (by @ChristopherVR) (566fa82)

Build & CI ​

  • core: Depend on the unscoped ooxml-core package (by @ChristopherVR) (5ae6159)

4.18.0 - 2026-10-02 ​

Features ​

  • shared: Add pptx-ui-status-bar element for the bottom bar (by @ChristopherVR) (71020c5)
  • shared: Add canonical control tokens for field, focus, checkbox (by @ChristopherVR) (63be0fb)
  • ui: Add inspector reset and clear actions to every binding (by @ChristopherVR) (6618e04)
  • ui: Share the section, sorter and slide rail menus across bindings (by @ChristopherVR) (e25816b)
  • shared: Add Home slides, drawing and arrange shared strips (by @ChristopherVR) (2ba2053)
  • shared: Add the pptx-ui-title-bar element (by @ChristopherVR) (e8d07ad)
  • ui: Align history labels, autosave reason and command search (by @ChristopherVR) (5f7efa1)
  • shared: Add read-only banner, paste options, toast, footer and mobile elements (by @ChristopherVR) (1b59e08)
  • shared: Page keys, switch tokens and primitive ribbon pickers (by @ChristopherVR) (9cdbe51)

Bug Fixes ​

  • shared: Keep modal open when Escape closes a select popup (by @ChristopherVR) (c17d694)
  • bindings: Drop local checkbox and search overrides of the primitives (by @ChristopherVR) (2422862)
  • svelte: Keep the inline editor open across a late bootstrap load (by @ChristopherVR) (f74bf6a)
  • shared: Scope Home strip button styles to shared buttons (by @ChristopherVR) (0abb22c)
  • svelte: Re-translate shared Home strips on locale change (by @ChristopherVR) (43ac2de)

Refactor ​

  • svelte: Use the shared status bar element (by @ChristopherVR) (2981a14)
  • ui: Share the notes toolbar across the five bindings (by @ChristopherVR) (ec28b7e)
  • svelte: Use shared Home slides, drawing and arrange strips (by @ChristopherVR) (f54ed5a)
  • ui: Adopt the shared title bar in all five bindings (by @ChristopherVR) (bb68dec)
  • ui: Share the context menu rendering layer (by @ChristopherVR) (7b63502)
  • ui: Share the mobile bottom bar and top toolbar (by @ChristopherVR) (a84241b)
  • ui: Share the read-only banner, paste options, toasts and dialog footer (by @ChristopherVR) (8d2233b)
  • ui: Share the slide-show toolbar and presenter console strip (by @ChristopherVR) (a937cf5)
  • svelte: Use the shared select and checkbox in dialogs and panels (by @ChristopherVR) (7451bea)

Testing ​

  • Guard SmartArt inline edit and contextual tabs on all bindings (by @ChristopherVR) (c467945)

4.17.1 - 2026-10-02 ​

Bug Fixes ​

  • group-drill: Honour noSelect and noDrilldown when drilling into groups (by @ChristopherVR) (3bf5f38)

4.17.0 - 2026-10-01 ​

Features ​

  • shared: Add pptx-ui-ribbon-view shared View ribbon view (by @ChristopherVR) (5025716)
  • shared,react: Select inside a group like PowerPoint (by @pesnik) (994f0a1)
  • svelte: Select inside a group like PowerPoint (by @pesnik) (c223106)

Bug Fixes ​

  • ui: Update tests for the shared View controls and regenerate the customization reference (by @ChristopherVR) (b663ba3)
  • ui: Centre the Design ribbon commands in the compact ribbon (by @ChristopherVR) (62549ff)

Refactor ​

  • ui: Migrate Draw ribbon controls across five bindings (by @ChristopherVR) (80f8d92)
  • ui: Migrate View ribbon controls across five bindings (by @ChristopherVR) (7c2dd6e)
  • core: Make pptx-viewer-core a thin entry point over @christophervr/ooxml-core/pptx (by @ChristopherVR) (caa5172)
  • ui: Migrate Transitions ribbon controls across five bindings (by @ChristopherVR) (1170313)
  • ui: Migrate Animations ribbon controls across five bindings (by @ChristopherVR) (7fa9c6e)
  • ui: Migrate Insert ribbon controls across five bindings (by @ChristopherVR) (75e81ca)
  • ui: Migrate Home clipboard controls across five bindings (by @ChristopherVR) (877f08b)
  • ui: Migrate Home font controls across five bindings (by @ChristopherVR) (b842cab)
  • ui: Migrate Home paragraph and editing controls across five bindings (by @ChristopherVR) (b5f26b4)

Build & CI ​

  • Build against ooxml-core, retarget scripts and docs at the moved engine (by @ChristopherVR) (9b5146d)
  • Consume the published @christophervr/ooxml-core ^0.1.0 (by @ChristopherVR) (df84fe3)

4.16.1 - 2026-10-01 ​

Bug Fixes ​

  • core: Preserve SmartArt quick styles across save and reload (by @ChristopherVR) (b49b3fa)

Refactor ​

  • ui: Share Design, Review and contextual ribbon views (by @ChristopherVR) (17d7554)

4.16.0 - 2026-09-30 ​

Features ​

  • shared: Add host context menu commands across bindings (by @ChristopherVR) (4e2d20e)
  • shared: Unify theme editor across all five bindings (by @ChristopherVR) (15e3ea7)

Bug Fixes ​

  • ui: Align editor appearance across all five bindings (by @yunfeizhu) (178a1d0)

4.15.0 - 2026-09-30 ​

Features ​

  • shared: Add subtitle settings and migrate Record ribbon (by @ChristopherVR) (a1549a0)

Bug Fixes ​

  • core: Preserve selected layouts and template break order (by @ChristopherVR) (6b5af9b)
  • shared: Preserve chained motion paths and animation triggers (by @ChristopherVR) (41f3c4a)
  • shared: Restore modal focus to shadow-root openers (by @ChristopherVR) (c95f465)

Refactor ​

  • shared: Migrate slide show controls across bindings (by @ChristopherVR) (263b007)
  • shared: Migrate Help ribbon across all five bindings (by @ChristopherVR) (7df8fc9)

4.14.0 - 2026-09-29 ​

Features ​

  • core: Write every used slide master to legacy .ppt export (by @claude) (e629000)

Dependencies ​

  • deps: Update @christophervr/ole2 to 0.3.0 (by @claude) (483e932)

4.13.0 - 2026-09-29 ​

Features ​

  • shared: Picture adjust galleries for corrections, color and artistic effects (by @claude) (f2b4ab5)
  • locales: Translate picture adjust galleries (de, es, fr, zh-CN) (by @claude) (21f0f7a)
  • core: Parse camera, transform and lights of 3D models (by @claude) (c8d2a48)
  • shared: Apply authored 3D model camera, transform and lights (by @claude) (17377ca)
  • svelte: Render authored 3D model camera, transform and lights (by @claude) (0cf6048)
  • shared: Nudge colliding bestFit outside pie labels apart (by @claude) (3a09967)

Bug Fixes ​

  • core: Compress GIF and TIFF pictures written to legacy .ppt (by @claude) (aa2dbde)
  • shared: Honour In/Out direction on Box, Circle, Diamond, Plus exits (by @claude) (757f7c6)
  • shared: Break category + percent pie labels onto two lines, tighten auto pie (by @claude) (499ccd7)
  • core: Keep empty blip extLst and showWhenStopped=1 on save (by @claude) (bbe50b5)
  • shared: Keep nudged bestFit pie labels out of the pie (by @claude) (e2f7c7f)
  • shared: Sync the 3d model scene field over collaboration (by @claude) (8db19cd)

Refactor ​

  • svelte: Take animation direction label keys from shared (by @claude) (fb6be0d)

Testing ​

  • svelte: Cover picture format adjust galleries (by @claude) (22cdb9c)
  • svelte: Cover multi-line pie data labels (by @claude) (711ec4c)

4.12.0 - 2026-09-26 ​

Features ​

  • shared: Smartart 3d edit-layer helpers (by @claude) (4780b3d)
  • svelte: Edit smartart node text over the 3d scene (by @claude) (acde527)

Bug Fixes ​

  • packages: Verify isolated binding imports and repair runtime dependencies (by @ChristopherVR) (6ec8bef)

Refactor ​

  • core: Share legacy Office codecs through ole2 (by @ChristopherVR) (375d9a7)
  • core: Consume shared PPT writer and legacy Excel codecs (by @ChristopherVR) (439460f)

4.11.0 - 2026-09-26 ​

Features ​

  • shared: Draw c:shape bars on the perspective 3D box (by @claude) (730cb8f)

Bug Fixes ​

  • core: Apply a:tint and a:shade in linear light (by @claude) (edaa544)
  • shared: Keep select popups within the viewport (by @ChristopherVR) (f04829c)
  • ui: Unify the AI options checkbox (by @ChristopherVR) (4550665)

Refactor ​

  • shared: Delete the pre-parity hosted 3D chart scenes (by @claude) (55951a1)

Testing ​

  • core: Expect linear-light tint and shade results (by @claude) (025ce79)

4.10.1 - 2026-09-26 ​

Bug Fixes ​

  • shared: Fit SmartArt light rigs' key light under a scene camera (by @claude) (91394b0)
  • shared: Keep a 3D view's scene across a move and a same-task re-attach (by @claude) (5bc411c)

4.10.0 - 2026-09-26 ​

Features ​

  • core: Style regenerated SmartArt shapes by their own style label (by @claude) (67ea2fb)

Bug Fixes ​

  • shared: Page slides with Up, Down, PageUp and PageDown in the editor (by @claude) (c0cc4dc)
  • core: Draw a merged SmartArt text node's labels in its own colour (by @claude) (7e6232d)
  • shared: Blend translucent SmartArt solids once and draw clear as glass (by @claude) (52128d7)

4.9.0 - 2026-09-25 ​

Features ​

  • shared: Draw horizontal 3D bars without right-angle axes on the perspective box (by @claude) (e0c1aad)
  • shared: Draw right-angle-axes 3D line, area and surface charts obliquely (by @claude) (e74306a)
  • core: Write the slide master's placeholders and theme into .ppt (by @ChristopherVR) (95b2e26)
  • shared: Ribbon group/control ids and the style gallery framework (by @ChristopherVR) (adda887)
  • locales: Translate the ribbon gallery and contextual tab strings (by @ChristopherVR) (dad9566)
  • core: Keep a text reflection's end position and direction (by @ChristopherVR) (afb807d)
  • shared: Fill the ribbon style galleries (by @ChristopherVR) (2a743b9)
  • locales: Translate the table, chart, SmartArt and theme gallery names (by @ChristopherVR) (a80c0a8)
  • svelte: Ribbon style galleries, contextual tabs and group customisation (by @ChristopherVR) (670fbf8)
  • locales: Translate the Shape Effects, WordArt and list gallery tiles (by @ChristopherVR) (7b665fe)
  • shared: Picture Styles gallery with PowerPoint's 28 styles (by @ChristopherVR) (2d56881)
  • locales: Translate the Picture Styles gallery names (by @ChristopherVR) (0e1eab2)
  • shared: Find the gallery theme preset a deck's theme matches (by @ChristopherVR) (15d0e41)
  • shared: Play entrances and exits from the deck's behaviour tree (by @ChristopherVR) (18c512e)
  • shared: Offer only the directions PowerPoint has for a preset (by @ChristopherVR) (999208d)
  • shared: Preview entrances and exits with PowerPoint's own tree (by @ChristopherVR) (b3cc6c6)
  • svelte: Offer PowerPoint's directions and preview from its tree (by @ChristopherVR) (5e9c310)

Bug Fixes ​

  • shared: Break East Asian text across runs like PowerPoint (by @ChristopherVR) (56ea24e)
  • shared: Size data-label boxes from the measured text (by @ChristopherVR) (328d0f0)
  • shared: Place bestFit pie labels where PowerPoint does (by @ChristopherVR) (63e1dc3)
  • core: Keep paragraph markup on a rewritten slide (by @ChristopherVR) (ff79c00)
  • core: Recompute Words and Paragraphs in docProps/app.xml on save (by @ChristopherVR) (85ef0d6)
  • core: Write .ppt group members the way PowerPoint reads them (by @ChristopherVR) (8cf3852)
  • core: Write DIFAT sectors for compound files past 109 FAT sectors (by @ChristopherVR) (9e26fe8)
  • core: Write a new p:style between spPr and txBody (by @ChristopherVR) (c7a45b9)
  • shared: Write Shape Styles presets with PowerPoint's zero references (by @ChristopherVR) (fdea69d)
  • shared: Name every Shape Effects, WordArt and list gallery tile (by @ChristopherVR) (0e16dae)
  • svelte: Browse Themes and Edit Theme change the presentation theme (by @ChristopherVR) (d72eb48)
  • svelte: Keep the Insert tab buttons compact inside their group wrappers (by @ChristopherVR) (eb21a41)
  • shared: Stop 3D SmartArt and charts rotating while dragged (by @claude) (1f4e09e)
  • core: Parse every behaviour of an effect with its own timing (by @ChristopherVR) (12ea267)
  • core: Rebuild an edited effect's behaviour tree on save (by @ChristopherVR) (d6e22c7)
  • shared: Reveal wipes, splits and mask reveals the way PowerPoint does (by @ChristopherVR) (87ff378)

Documentation ​

  • Drop orbit wording from 3D view and chart flag docs (by @claude) (a1fa63d)

Testing ​

  • e2e: Pin East Asian breaks to PowerPoint's own lines (by @ChristopherVR) (a358b4f)
  • e2e: Pin pie bestFit labels and label boxes to PowerPoint (by @ChristopherVR) (3480d42)
  • e2e: Pick a Picture Styles tile from Picture Format in every binding (by @ChristopherVR) (27c37ad)
  • e2e: Pin behaviour-tree playback and PowerPoint's wipe edge (by @ChristopherVR) (4cbb061)

Build & CI ​

  • vue,svelte: Keep the node-only @napi-rs/canvas out of the bundles (by @ChristopherVR) (b62783e)

Styling ​

  • shared: Clear the lint warnings in the ribbon gallery modules (by @ChristopherVR) (f178627)

Chores ​

  • npm: Surface every package in an npm search for pptx-viewer (by @ChristopherVR) (ac67fda)

4.8.0 - 2026-09-25 ​

Features ​

  • core: Resolve p:style references on demand for style galleries (by @ChristopherVR) (e4303f7)
  • core: Size smartart engine nodes from their own text (by @ChristopherVR) (34c33cb)
  • core: Lay org-chart assistants out in the smartart engine (by @ChristopherVR) (722a465)
  • core: Fit meet the team and process list grids in the smartart engine (by @ChristopherVR) (6ee431c)
  • core: Keep c:grouping standard distinct from clustered (by @claude) (c3472e2)
  • shared: Lay out right-angle-axes 3D bar charts as PowerPoint does (by @claude) (0985f9d)
  • shared: Draw cylinder, cone and pyramid 3D bars as PowerPoint does (by @claude) (668aa8d)
  • shared: Draw perspective 3D line and area charts as PowerPoint does (by @claude) (0ab4a7d)
  • shared: Draw 3D surface charts in value bands as PowerPoint does (by @claude) (cc87ef4)
  • shared: Draw 3D pie charts as PowerPoint does (by @claude) (553a935)
  • core: Write SmartArt drawing-shape 3D properties back on save (by @claude) (45ec2db)
  • shared: Render SmartArt bevel and scene quick styles in 3D (by @claude) (3bdf7e9)
  • shared: Draw 3D columns without right-angle axes on the perspective box (by @claude) (e65a8c9)
  • core: Keep smartart quick-style 3d across structural edits (by @claude) (a815448)
  • shared: Render structurally edited smartart with its quick-style 3d (by @claude) (2c31bed)
  • core: Read SmartArt label colour from fontRef and keep fill alpha (by @claude) (866c7ee)
  • shared: Light, extrude and fade SmartArt 3D scenes as PowerPoint does (by @claude) (b6864d8)
  • shared: Draw a turned SmartArt diagram past its element box (by @claude) (f46c9b7)
  • core: Rasterise fallback-less svg pictures for .ppt export in node (by @ChristopherVR) (b2f86e8)

Bug Fixes ​

  • shared: Hang CJK punctuation and drop kinsoku like PowerPoint (by @ChristopherVR) (770b708)
  • shared: Draw data-label callouts on line, area, pie, xy and radar (by @ChristopherVR) (a60aa17)
  • core: Author the strips exit at presetID 18 (by @ChristopherVR) (eb1daca)
  • shared: Play strips as a diagonal corner-to-corner sweep (by @ChristopherVR) (1e15f73)
  • shared: Play wedge as two sweeping wedges and circle exit as an iris (by @ChristopherVR) (c7fe573)
  • shared: Play the slide filter through a window, cover/push as a cut (by @ChristopherVR) (a252b87)
  • shared: Restore arc-length glyph placement for wordart envelopes (by @ChristopherVR) (4264ab0)
  • core: Embed every picture format in the .ppt export (by @ChristopherVR) (956f1dc)
  • core: Write placeholder text and master text styles in .ppt export (by @ChristopherVR) (81681c8)
  • core: Keep an authored pPr lvl="0" on a rewritten slide (by @ChristopherVR) (97a8cff)
  • core: Stop the first run's b and err leaking onto later runs (by @ChristopherVR) (4738cd4)
  • core: Do not invent an outline width on a rewritten slide (by @ChristopherVR) (089362a)
  • core: Refresh app.xml notes and untitled titles like PowerPoint (by @ChristopherVR) (52a8a53)
  • core: Write each ruby run property set back as authored (by @ChristopherVR) (94e7b76)
  • shared: Composite pptx-three-view frames as premultiplied alpha (by @claude) (074fd9e)
  • shared: Size the chart title band from the title font (by @claude) (c5f0254)
  • shared: One html2canvas clone pass that snapshots 3D views (by @claude) (56a8a81)
  • react,vue,angular,svelte,vanilla: Use the shared html2canvas clone pass (by @claude) (ca9f608)
  • shared: Read SmartArt label contrast from a gradient fill (by @claude) (d43c866)
  • shared: Fit the perspective 3D chart box to PowerPoint's height and centring (by @claude) (157008a)
  • shared: Size standard-grouping 3D columns as PowerPoint does (by @claude) (907223f)
  • shared: Shade exploded 3D pie cut faces as PowerPoint does (by @claude) (5ad3905)
  • core: Follow ecma-376 for the trapezoid preset inset (by @claude) (eca6c9f)
  • core: Keep smartart drawing fill alpha and preset adjustments (by @claude) (d8d2f37)
  • shared: Paint smartart drawing fill alpha in 2d and 3d (by @claude) (070cda5)
  • svelte: Bind smartart drawing fill-opacity (by @claude) (e304314)
  • core: Drop the old preset's guides when a shape's geometry changes (by @ChristopherVR) (118d8a0)
  • core: Relabel entrance/exit presets from PowerPoint COM ids (by @ChristopherVR) (ade27dc)
  • core: Write PowerPoint's captured behaviour tree for every preset (by @ChristopherVR) (b9fa2d6)
  • shared: Play steps without accel/decel linearly like PowerPoint (by @ChristopherVR) (5c1158b)
  • animation: Ripple letters inside a by-paragraph text build (by @ChristopherVR) (1676539)
  • core: Open PowerPoint's own password-protected .ppt files (by @ChristopherVR) (ca38faa)
  • core: Keep the node canvas import opaque to browser bundlers (by @ChristopherVR) (22f61ea)

Documentation ​

  • core: Record the eleventh smartart engine wave's measured numbers (by @ChristopherVR) (8395cb8)

Testing ​

  • core: Declare the new callout, CJK and org-chart assistant fixtures (by @ChristopherVR) (1ff7f05)
  • core: Lock the ECMA-376 trapezoid inset against the short side (by @claude) (26462a0)
  • core: Declare the by-paragraph letter ripple fixture (by @ChristopherVR) (532a448)
  • core: Pin the browser canvas ahead of the node svg rasteriser (by @ChristopherVR) (8ae3fed)

4.7.0 - 2026-09-25 ​

Features ​

  • shared: Edit points model, sessions and freeform tools (by @ChristopherVR) (481dd57)
  • locales: Translate edit points and freeform tool strings (by @ChristopherVR) (eef2d4a)
  • shared: Keep preset text box and place edit points menu in slide space (by @ChristopherVR) (a4699df)
  • svelte: Edit points and freeform shape / curve tools (by @ChristopherVR) (7cf4b10)
  • shared: Merge shapes engine and on-canvas picture crop geometry (by @ChristopherVR) (0e13020)
  • locales: Translate merge shapes and picture crop strings (by @ChristopherVR) (2388efb)
  • svelte: Merge shapes and on-canvas picture crop (by @ChristopherVR) (46018ee)
  • core: Expose the zoom transition's in/out direction (by @ChristopherVR) (e9d9da5)
  • core: Read and write media-bookmark triggers the way PowerPoint does (by @ChristopherVR) (cbe17f9)
  • shared: Add the "On bookmark" trigger and its bookmark picker model (by @ChristopherVR) (95f07a7)
  • locales: Translate the On bookmark trigger picker (by @ChristopherVR) (e06e9dc)
  • svelte: Pick the media bookmark for an On bookmark trigger (by @ChristopherVR) (585be2e)
  • core: Break smartart engine-vs-legacy geometry ties on fonts (by @ChristopherVR) (9b23ac0)
  • core: Lay smartart hierarchies out as packed outlines, then scale (by @ChristopherVR) (74b7bce)
  • core: Lay smartart snake grids out from their cells' own sizes (by @ChristopherVR) (e9526ff)
  • core: Parse chart-area, plot-area and series gradient fills (by @ChristopherVR) (4db5abc)
  • shared: Paint chart gradient fills in all five bindings (by @ChristopherVR) (7f22964)
  • core: Parse data-label boxes, callout shapes and c15 leader lines (by @ChristopherVR) (763cadd)

Bug Fixes ​

  • shared: Restore absent crop insets as undefined on cancel (by @ChristopherVR) (33b5094)
  • svelte: Accept the shared crop cancel update type (by @ChristopherVR) (8016412)
  • core: Keep runs apart that differ only by an authored baseline="0" (by @ChristopherVR) (aea3c57)
  • shared: Play the zoom transition as PowerPoint's box reveal (by @ChristopherVR) (6194b84)
  • shared: Fit the Bounce End settle curve to PowerPoint's own frames (by @ChristopherVR) (5268384)
  • core: Keep authored buClr on a rewritten paragraph (by @ChristopherVR) (77f1f86)
  • core: Keep an authored tab-stop algn="l" on rewrite (by @ChristopherVR) (e6050da)
  • core: Stop unedited animation metadata growing on save (by @ChristopherVR) (d0fce7c)
  • core: Keep a source commentAuthors part nothing removed (by @ChristopherVR) (03f6967)
  • core: Read media bookmarks where PowerPoint nests them (by @ChristopherVR) (7ec0f27)
  • core: Size smartart engine text from primFontSz rules and groups (by @ChristopherVR) (e957395)
  • core: Measure smartart text with kerned boundwidth aptos metrics (by @ChristopherVR) (9603333)
  • core: Lay smartart engine text out by tx paragraph levels (by @ChristopherVR) (ff90fd8)
  • core: Draw smartart engine boxes that present text after a blank (by @ChristopherVR) (e049efb)
  • core: Match PowerPoint's auto-number schemes past the basics (by @ChristopherVR) (aa10890)
  • core: Render picture-filled text runs instead of solid black (by @ChristopherVR) (e1021f9)
  • shared: Draw a dashed text outline for a:ln/a:prstDash (by @ChristopherVR) (af7eb60)
  • shared: Match PowerPoint's underline variants (by @ChristopherVR) (46ad363)
  • core: Let a paragraph's own rtl beat the level default on its runs (by @ChristopherVR) (4ae3d68)
  • shared: Align decimal and right-to-left tab stops like PowerPoint (by @ChristopherVR) (1575f61)
  • shared: Ignore a paragraph's trailing spaces when aligning it (by @ChristopherVR) (3973465)
  • shared: Clip an overflowing text body at a whole line (by @ChristopherVR) (7f77dcd)
  • shared: Colour and label waterfall bars like PowerPoint (by @ChristopherVR) (44a4fec)
  • shared: Draw PowerPoint's automatic chart titles (by @ChristopherVR) (8f435a4)
  • shared: Lay out pie-of-pie and bar-of-pie like PowerPoint (by @ChristopherVR) (578d524)
  • shared: Format and place display-unit axis labels like PowerPoint (by @ChristopherVR) (73acba4)
  • shared: Lay out chart data tables like PowerPoint (by @ChristopherVR) (0220fd6)
  • shared: Draw data-label callouts and leader lines on bar charts (by @ChristopherVR) (68296ef)
  • core: Parse series gradients through a pure helper (by @ChristopherVR) (1f83eaf)

Documentation ​

  • core: Describe p14:bounceEnd as the bouncing share of the duration (by @ChristopherVR) (80caab6)
  • core: Record the smartart font, hierarchy and snake measurements (by @ChristopherVR) (2187e69)

Testing ​

  • e2e: Cover merge shapes and picture crop in every demo (by @ChristopherVR) (a7e7bed)
  • e2e: Author an On bookmark trigger in every demo and check the save (by @ChristopherVR) (aa3ff3c)
  • core,vanilla: Register the edit-points fixture and type the bookmark test store (by @ChristopherVR) (9114d7c)

4.6.0 - 2026-09-25 ​

Features ​

  • shared: Add a framework-neutral ui customization model (by @ChristopherVR) (7e67dbd)
  • svelte: Expose the ui customization model (by @ChristopherVR) (c5e0852)

Bug Fixes ​

  • vue,angular,svelte: Keep rotation and opacity on chart text labels (by @ChristopherVR) (174039d)
  • shared,react,vue,angular,svelte,vanilla: Leave Tab on chrome controls to focus navigation (by @ChristopherVR) (6561c8d)
  • shared,vue,angular,svelte,vanilla: Target the canvas node, not a thumbnail's (by @ChristopherVR) (84df4fa)

Testing ​

  • shared: Compare the customization reference ignoring table padding (by @ChristopherVR) (8695b36)

4.5.0 - 2026-09-24 ​

Features ​

  • shared,react,vue,angular,svelte,vanilla: Empty-canvas context menu (by @ChristopherVR) (15b9a88)
  • shared,react,vue,angular,svelte,vanilla: Slides pane multi-select + thumbnail menu (by @ChristopherVR) (4078a33)
  • shared,react,vue,angular,svelte,vanilla: Real in-place ribbon animation preview (by @ChristopherVR) (9b98bac)

Bug Fixes ​

  • core: Stop materializing mc:Ignorable for self-declaring a16 elements (by @ChristopherVR) (0e9a23a)
  • core: Stop materializing empty a:pPr / a:endParaRPr on real paragraphs (by @ChristopherVR) (d50a8b6)
  • core: Stop materializing a:rPr@dirty / @smtClean on runs that never authored them (by @ChristopherVR) (d14f95d)
  • core: Stop materializing a:t@xml:space and leaked font @panose (by @ChristopherVR) (2ce4d43)
  • core: Stop dropping authored schema-default line/gradient/transition values (by @ChristopherVR) (374ba48)
  • core: Stop dropping connector arrow-end/dash and ink fallback content (by @ChristopherVR) (de2a0d1)
  • core: Resolve font @panose/@pitchFamily/@charset from the run's own scope (by @ChristopherVR) (751d9fb)
  • core: Match typeface before trusting the baseline font metadata (by @ChristopherVR) (7c5f915)
  • core: Port pyraAcctRatio accent-column split into alg-pyra (by @ChristopherVR) (08792ef)
  • core: Resolve sibTrans transition-point labels in the smartart engine (by @ChristopherVR) (7a353f0)
  • core: Stop declining SmartArt diagrams over zero-area shapes; port hierRoot/hierChild (by @ChristopherVR) (2dae123)
  • core,shared: Render surface charts as PowerPoint's four surface types (by @ChristopherVR) (4a0232b)
  • shared: Group box-whisker boxes by repeated category, not by series (by @ChristopherVR) (076ba4c)
  • core,shared: Aggregate Pareto bars by category, not by value bin (by @ChristopherVR) (67ec333)
  • shared: Bin histograms with Scott's rule, paint bars one colour (by @ChristopherVR) (4bae8f0)
  • shared: Draw funnel bars flat and single-coloured, not tapered (by @ChristopherVR) (82b349a)
  • shared: Squarify treemap layout, colour by branch, sunburst labels (by @ChristopherVR) (2b34646)
  • core: Honor dgm:layoutNode moveWith to stop numbered-list phantom shapes (by @ChristopherVR) (2c247e9)
  • core: Stop fabricating a:rPr lang on runs that authored none (by @ChristopherVR) (ad495de)
  • core: Preserve text run inner-shadow preset/theme colour choice (by @ChristopherVR) (6a48785)
  • core: Stop padding partial gradFill fillToRect/tileRect with zeros (by @ChristopherVR) (2dc54d2)
  • core: Stop dropping a tiny but authored blipFill a:srcRect crop (by @ChristopherVR) (3753725)
  • shared,react: Round normAutofit fontScale to a whole point (by @ChristopherVR) (cda09e4)
  • shared,core: Fix text reflection mirror, inner shadow, glow, soft edge (by @ChristopherVR) (1796d14)
  • core,shared,react: Size inline equations from their own paragraph; assert anchorCtr on painted text (by @ChristopherVR) (16ecb59)

Testing ​

  • core: Fix stale coverage evidence anchors after test renames (by @ChristopherVR) (87c17c6)
  • core: Give the salt-less WHIRLPOOL verifier fixture a CI-safe timeout (by @ChristopherVR) (560c120)
  • shared: Give the salt-less modify-password check a CI-safe timeout (by @ChristopherVR) (9ff5b84)
  • core: Lock in a:blip/a:extLst vendor-extension preservation (by @ChristopherVR) (d2fad1a)
  • shared: Round the normAutofit fixture in buildParagraphs coverage (by @ChristopherVR) (a88422d)

4.4.0 - 2026-09-24 ​

Features ​

  • shared,react,vue,angular,svelte,vanilla: Element context menu format commands + Paste Special (by @ChristopherVR) (ae48518)
  • shared,react,vue,angular,svelte,vanilla: Render online video links as an iframe embed (by @ChristopherVR) (6ba33e2)
  • shared,react,vue,angular,svelte,vanilla: Apply Zoom returnToParent/transitionDur during slide-show playback (by @ChristopherVR) (673afa5)
  • core,shared,react,vue,angular,svelte,vanilla: P15/p14 transition direction, pattern and Through Black options (by @ChristopherVR) (8b5ec7e)

Bug Fixes ​

  • core: Preserve blipFill and exact EMU on shape-with-image-fill save (by @ChristopherVR) (8cd7a59)
  • core: Parse and re-emit ppaction://media hlinkClick on media pics (by @ChristopherVR) (ea64525)
  • core: Stop merging authored runs and losing rPr/hlinkClick data (by @ChristopherVR) (aad7ac3)
  • core: Pass untouched chart parts through unchanged on save (by @ChristopherVR) (3094513)
  • core: Stop inventing a bare shape's p:txBody; keep bullet buFont hints (by @ChristopherVR) (1773570)
  • core: Stop fabricating docProps identity, keep comment authors (by @ChristopherVR) (47a60d8)
  • shared,react: Correct Box/Circle/Diamond/Plus entrance "In" mask reveal (by @ChristopherVR) (cf6ddcf)
  • angular,svelte: Fix two more hand-duplicated trigger label copies found via afterDelay rollout (by @ChristopherVR) (4bbadd2)
  • react,vue,angular,svelte,vanilla,shared: Stop OLE actions nesting a <button> inside slide thumbnails (by @ChristopherVR) (82da5a7)

Reverts ​

  • core: Keep commentAuthors.xml deletion; it was correct behavior (by @ChristopherVR) (93e4f73)

Refactor ​

  • shared,react,angular,svelte,vue: Consolidate trigger options into shared, add afterDelay parity (by @ChristopherVR) (819582f)

Documentation ​

  • shared: Record an inconclusive bounceEnd COM ground-truth attempt (by @ChristopherVR) (6381b47)

Testing ​

  • core,shared: Lock the COM-verified SVG srcRect stretch rule (by @ChristopherVR) (f9029d4)

4.3.0 - 2026-09-24 ​

Features ​

  • shared: Trace glyph outlines for exact wordart envelope warps (work in progress) (by @ChristopherVR) (c91f1cf)
  • core: Embed round-trip ooxml blobs for rich objects in .ppt export (work in progress) (by @ChristopherVR) (2f9aea3)
  • core: Start a per-point diagramml layout engine for smartart (work in progress) (by @ChristopherVR) (11c956f)
  • shared: Add media fullScrn full-slide overlay decision function (by @ChristopherVR) (8ae8ee1)
  • core: Route un-cached SmartArt through the per-point layout engine (by @ChristopherVR) (e020656)
  • core: Parse InkML per-point T (time) channel into pointTimestamps (by @ChristopherVR) (af3b954)
  • svelte: Wire the fullScrn full-slide media overlay (by @ChristopherVR) (066addc)
  • core: Parse zoom return-to-parent and transition duration (work in progress) (by @ChristopherVR) (5b0c9fb)
  • core: Route measurably-better SmartArt layouts through the engine first (by @ChristopherVR) (59e78c9)
  • core: Implement the snake algorithm in the SmartArt layout engine (by @ChristopherVR) (4b27704)
  • core: Implement the cycle algorithm in the SmartArt layout engine (by @ChristopherVR) (ad971a3)
  • shared: Add PowerPoint editor shortcuts to the shared keymap (by @ChristopherVR) (9afcb56)
  • shared: Add a shared PowerPoint font-size ladder stepper (by @ChristopherVR) (8c86424)
  • svelte: Wire PowerPoint editor shortcuts via the shared keymap (by @ChristopherVR) (f58839d)
  • core: Parse p14:bounceEnd and play a Fly In bounce settle curve (by @ChristopherVR) (2c44f37)
  • core: Model onMediaBookmark triggers and fire them on playback (by @ChristopherVR) (b153932)
  • core: Implement the pyra algorithm in the SmartArt layout engine (by @ChristopherVR) (8dfb1d0)
  • shared: Add the 12 p15 preset transitions to the picker catalogue (by @ChristopherVR) (9d4cd08)

Bug Fixes ​

  • core: Declare every namespace prefix a saved part uses (by @ChristopherVR) (bd0a7fc)
  • core: Keep run-level slide jumps as slide relationships on save (by @ChristopherVR) (d2f6924)
  • core: Stop showing chart data labels PowerPoint hides (work in progress) (by @ChristopherVR) (a8de727)
  • core: Write valid build lists and effect behaviours for animations (work in progress) (by @ChristopherVR) (09af92c)
  • shared: Halve-width bug in clustered bar/column gap sizing (by @ChristopherVR) (bfd1953)
  • core: Prune custom-show/section refs on slide delete without opts (by @ChristopherVR) (4046345)
  • shared: Recover per-paragraph rtl lost to the shape-level default (by @ChristopherVR) (cc046bf)
  • core: Stop a bulleted paragraph's marker from shadowing its own algn (by @ChristopherVR) (3a4307b)
  • shared: Combo per-series chart types and stray "-0" axis labels (by @ChristopherVR) (06f2b41)
  • core: Stop dropping empty self-closing image effect elements (by @ChristopherVR) (2ee225e)
  • core: Stop untouched SmartArt colours corrupting on save (by @ChristopherVR) (fc06842)
  • shared: Use sample (not population) variance for stdDev/stdErr error bars (by @ChristopherVR) (982c16c)
  • core: Fix TS18048 possibly-undefined scope in namespace declarations (by @ChristopherVR) (a55c718)
  • core: Resolve spcPct paragraph spacing against 1.2x font size (by @ChristopherVR) (bca61b4)
  • shared: Render area-typed combo series as filled areas (by @ChristopherVR) (54aa4be)
  • core: Reconcile animation write tests with valid build-list output (by @ChristopherVR) (ef4e294)
  • core: Read back .ppt gradient fills and stop dropping pattern fills (by @ChristopherVR) (42ded86)
  • shared: Correct washout/lum brightness-contrast formula (by @ChristopherVR) (dd28449)
  • shared: Decouple metal bevel specular elevation from diffuse (by @ChristopherVR) (981ef88)
  • shared: Drive ink replay timing from real InkML timestamps (by @ChristopherVR) (ab67076)
  • shared: Derive the WordArt can-preset glyph-spacing law from COM (by @ChristopherVR) (440356d)
  • core: Resolve a:tblBg fillRef against the theme format scheme (by @ChristopherVR) (0174572)
  • core: Resolve legacy VML-only OLE preview images (by @ChristopherVR) (98ae67c)
  • svelte: Apply highlighter mix-blend-mode per stroke, not per element (by @ChristopherVR) (cd41fe3)
  • shared: Render the table style tblBg background beneath noFill layers (by @ChristopherVR) (9e4f1e7)
  • shared: Scale tiled picture fills from the image's native size (work in progress) (by @ChristopherVR) (92375c4)
  • core: Size table cell text from the master other-text style (work in progress) (by @ChristopherVR) (481c564)
  • core: Update the OLE in-place-editing compatibility warning (by @ChristopherVR) (9dd216e)
  • core: Stop the SmartArt engine dropping hideGeom item-role shapes (by @ChristopherVR) (9c8c2dc)
  • core: Preserve untouched equation XML on save (by @ChristopherVR) (640bd17)
  • core: Keep a soft line break from becoming a paragraph break (by @ChristopherVR) (fbdb209)
  • core: Stop reformatting and mutating untouched comment timestamps (by @ChristopherVR) (bfc92de)
  • core: Write PowerPoint's real behaviour tree for entrance/exit presets (by @ChristopherVR) (d510300)
  • core: Write PowerPoint's real behaviour tree for emphasis presets (by @ChristopherVR) (0662453)
  • shared: Render real dates for datetime fields, not the field type (by @ChristopherVR) (f3653c2)
  • shared: Apply theme per-script fonts over a run's cascaded font (by @ChristopherVR) (0a00208)
  • shared: Keep gradient/pattern text fills continuous, not per-word (by @ChristopherVR) (cf05400)
  • core: Resolve buBlip picture-bullet images after slide parsing (by @ChristopherVR) (beb20b5)
  • shared: Apply brightness scaled by contrast in a:lum luminance (by @ChristopherVR) (e55b28a)
  • core: Parse and render table-style band fill alpha (by @ChristopherVR) (69f124a)
  • shared: Stop clipping a table whose rows auto-grow past its frame (by @ChristopherVR) (ad4ebb2)
  • core,shared: Settle table-style fill alpha on one unit (by @ChristopherVR) (afa50de)
  • shared: Stop a "repeat until next click" loop on the next click (by @ChristopherVR) (c92d667)
  • shared: Honour presetSubtype for Blinds, Checkerboard, Wheel, Random Bars (by @ChristopherVR) (000efbe)
  • shared: Draw stock HLC/OHLC candles per PowerPoint semantics (by @ChristopherVR) (7ecb42b)
  • shared: Correct trendline math, formatting and legend (by @ChristopherVR) (91cc3c8)
  • shared: Scale a scatter/bubble chart's X axis like Excel (by @ChristopherVR) (16a3e4d)
  • shared,core: Map animation preset 30 to Float, not Spinner (by @ChristopherVR) (e98152e)
  • core: Read the pyramid composite ctrX/w fill idiom as a fraction (by @ChristopherVR) (9cf9fd9)
  • core: Stop pinning inherited bodyPr onto untouched shapes on save (by @ChristopherVR) (7f35589)
  • core: Stop pinning master bullets and dropping bullet inherit markers (by @ChristopherVR) (c406fa9)
  • core: Stop flattening master text-style aliases on every save (by @ChristopherVR) (1cdd778)
  • core: Mirror the master/layout p:bgRef guard onto slide rewrite (by @ChristopherVR) (670d106)
  • shared: Correct CSS mapping for vert/vert270/wordArt vertical text (by @ChristopherVR) (fce308c)
  • shared: Honour numCol column-fill, @anchor and @rtlCol (by @ChristopherVR) (f380f53)
  • shared: Distribute the last line and single lines for algn="dist" (by @ChristopherVR) (730ced1)
  • shared: Size a paragraph's line-height strut on its smallest run (by @ChristopherVR) (940137d)
  • shared: Centre anchorCtr as one shared box, not per-paragraph (by @ChristopherVR) (5982d91)
  • core,shared: Stop empty auto-numbered paragraphs consuming a number and marR being dropped (by @ChristopherVR) (b163cad)
  • core: Stretch SVG picture fills instead of squashing srcRect crops (by @ChristopherVR) (096794f)
  • shared: Play exit preset 30 (Float Out) with the existing fade-out approximation (by @ChristopherVR) (c128d23)
  • angular,core,shared: Finish View > Normal and zoom field wiring after rebase (by @ChristopherVR) (df6bddf)

Documentation ​

  • core: Restate the SmartArt interpreter gate with measured numbers (by @ChristopherVR) (8d706b9)

Testing ​

  • core: Re-anchor coverage evidence to the renamed build-list tests (by @ChristopherVR) (a1b26e5)
  • core: Cover attribute-less grayscl parsing in image colour effects (by @ChristopherVR) (5588bec)
  • core: Register the new table-row-autogrow.pptx fixture (by @ChristopherVR) (e1cebe9)
  • core: Cover the notes master save path for text-less anchor loss (by @ChristopherVR) (8bed413)
  • core: Add extractOwnBackgroundRefNode to mocked loader params (by @ChristopherVR) (8056d5a)

Dependencies ​

  • deps: Update emf-converter to 3.1.0 (by @ChristopherVR) (5eac42f)
  • deps: Update emf-converter to 3.2.0 (by @ChristopherVR) (bc37b25)
  • deps: Update emf-converter to 3.3.0 (by @ChristopherVR) (9c83a17)

4.2.0 - 2026-09-24 ​

Features ​

  • shared: Add pptx-three-view host with one shared WebGL context (by @ChristopherVR) (aaaf21d)
  • shared: Wire chart-events, view-spec, and export snapshot for pptx-three-view (by @ChristopherVR) (089738a)
  • core: Parse 3D scene/extrusion for cached SmartArt drawing shapes (by @ChristopherVR) (e80b086)
  • shared: Add pure chart-3d projection + flat-shading resolvers (by @ChristopherVR) (117cfc5)
  • shared: Build a real Chart3DSpec for bar3D (clustered/stacked) (by @ChristopherVR) (7df9a11)
  • shared: Add the 3D chart's SVG chrome overlay renderer (by @ChristopherVR) (635aea0)
  • shared: Render flat SmartArt quick styles from the cached drawing (by @ChristopherVR) (bb89b9b)
  • shared: Implement mountChart3DView for oblique bar3D boxes (by @ChristopherVR) (4cbb870)
  • shared: Host every 3D chart kind in pptx-three-view (by @claude) (d8a3019)
  • vue: Render 3D charts and SmartArt through <pptx-three-view> (by @claude) (5a35348)
  • svelte: Render 3D charts and SmartArt through <pptx-three-view> (by @claude) (b384697)
  • shared: Use web components for search, select, and checkbox controls (#352) (by @yunfeizhu) (e09b47a)

Bug Fixes ​

  • shared: Draw PowerPoint's auto title for a c:title without text (by @claude) (dd3c6f0)
  • vue,svelte,vanilla: Arm the 3D chart scene only on a selected chart (by @claude) (192fc8e)
  • shared: Keep surfaceChart3D covering 2D surface charts (by @claude) (b208414)

Refactor ​

  • shared: Move the extracted chart DOM renderer into shared (by @ChristopherVR) (0d850d4)
  • shared: Remove the pre-element SmartArt scene runtime (by @claude) (a2bd6c1)

Testing ​

  • shared: Cover the three-view host, controller and sizing (by @ChristopherVR) (ad42c24)

4.1.6 - 2026-09-23 ​

Bug Fixes ​

  • ui: Align File backstage navigation across bindings (#351) (by @yunfeizhu) (2196a0e)

4.1.5 - 2026-09-23 ​

Bug Fixes ​

  • shared: Align search field focus across bindings (#350) (by @yunfeizhu) (fdb941f)

4.1.4 - 2026-09-22 ​

Bug Fixes ​

  • ai: Keep optional sdk imports out of message helpers (by @ChristopherVR) (889c5bc)
  • layout: Render inherited artwork on inserted slides (by @ChristopherVR) (179aa2f)

4.1.3 - 2026-09-21 ​

Bug Fixes ​

  • deps: Align ai sdk runtime and adapters (by @ChristopherVR) (3a7d2e9)
  • autosave: Acknowledge restores and surface delete failures (#339) (by @yunfeizhu) (e0f9569)

Dependencies ​

  • deps: Consolidate compatible workspace updates (by @ChristopherVR) (9c4f29e)

4.1.2 - 2026-09-21 ​

Bug Fixes ​

  • autosave: Harden recovery dialogs (by @yunfeizhu) (29ef529)

4.1.1 - 2026-09-20 ​

Bug Fixes ​

  • autosave: Keep recovery snapshots until discard (79e8e7d)

4.1.0 - 2026-09-19 ​

Features ​

  • docs: Sync embedded demo locale with the docs site language (by @ChristopherVR) (be2b1b2)
  • shared: Define custom-shell collaboration state (by @Sudhansh6) (d81c86e)
  • svelte: Expose custom-shell collaboration state and overlays (by @Sudhansh6) (5d1e71d)
  • svelte: Export custom-shell input and result types (by @Sudhansh6) (5b064e1)
  • shared: ObserveElementHeight for layout that must clear a resizing strip (by @ChristopherVR) (f352097)

Bug Fixes ​

  • collaboration: Preserve paragraph formatting across sync (by @Sudhansh6) (3c132ee)
  • react: Align custom-shell readiness and presence overlays (by @Sudhansh6) (a3e4a8c)
  • demos: Give every custom shell the same localised status readout (by @ChristopherVR) (a7a2686)
  • core: Drop the false PARTIAL_SMARTART_SUPPORT warning (by @ChristopherVR) (7551727)
  • core: Size vertical lin SmartArt rows to full width (by @ChristopherVR) (bb324ca)
  • shared: 3D SmartArt framing and layout source, chart layout fixes (by @ChristopherVR) (810ea3c)
  • shared: Keep the compatibility toast clear of the inspector panel (by @ChristopherVR) (820ca64)
  • svelte: Keep the compat toast off the panel, 3D SmartArt uses cached drawing (by @ChristopherVR) (3d7bbf4)
  • svelte: Keep the compat toast above the notes strip (by @ChristopherVR) (79fed05)
  • shared: Preserve observed native collaborative text edits (by @Sudhansh6) (77bb797)
  • svelte: Bind inline editing to native collaborative sessions (by @Sudhansh6) (7972017)
  • svelte: Retire connected text when its slide changes (by @Sudhansh6) (38465f0)
  • shared: Retain pending text when composition restarts (by @Sudhansh6) (dacd81f)

Performance ​

  • shared: Avoid retaining autosave source objects (by @Sudhansh6) (679c560)
  • core: Avoid partial XML names in text-order scans (by @Sudhansh6) (f6f5871)

4.0.0 - 2026-09-18 ​

Bug Fixes ​

  • core: Switch to emf-converter's unified convertMetafileToDataUrl (by @ChristopherVR) (70a2ea5)

3.22.0 - 2026-09-17 ​

Features ​

  • shared: Support host-owned collaboration sessions (by @Sudhansh6) (cd44eb3)
  • svelte: Borrow host collaboration resources (by @Sudhansh6) (72c4f5f)

Bug Fixes ​

  • shared: Preserve consecutive collaborative text breaks (by @Sudhansh6) (10d1667)
  • build: Keep collaboration on the host Yjs runtime (by @Sudhansh6) (1148601)
  • shared: Unify host session readiness and writeback (by @Sudhansh6) (4635d01)
  • svelte: Share host readiness and preserve paused drafts (by @Sudhansh6) (1cac3d9)

Testing ​

  • svelte: Raise timeout on the full-resolution GIF clamp test (by @ChristopherVR) (28e0aad)

Styling ​

  • svelte: Move the GIF-encode timeout comment above the test (by @ChristopherVR) (18d6f87)

3.21.1 - 2026-09-17 ​

Bug Fixes ​

  • i18n: Translate recording and editor control labels (by @yunfeizhu) (7be4498)
  • core: Embed real images in CLI export-md/export-svg output (by @ChristopherVR) (6617c92)
  • shared: Keep chart axis interval count off a manual plot layout (by @ChristopherVR) (d39b2b0)

Testing ​

  • i18n: Cover translated editor controls across bindings (by @yunfeizhu) (fe99e2b)
  • core: Remove duplicate chart-stacked-line-markers manifest entry (by @ChristopherVR) (5c60b11)

3.21.0 - 2026-09-17 ​

Features ​

  • shared: Chart quick-actions descriptor (Elements/Styles/Filters) (by @ChristopherVR) (90ea1ff)
  • react,shared: Chart quick-action icons (Elements/Styles/Filters) (by @ChristopherVR) (4c9f9e7)
  • svelte: Chart quick-action icons (Elements/Styles/Filters) (by @ChristopherVR) (d7b0e12)

Bug Fixes ​

  • shared: Scale chart auto axis bounds by plot height, not a fixed constant (by @ChristopherVR) (fc56a8a)
  • shared: Cycle PowerPoint's automatic marker-symbol sequence per series idx (by @ChristopherVR) (f55afb4)
  • shared: Honor a chart-level default legend text style (by @ChristopherVR) (1807bd3)
  • core: Treat a bare c:majorGridlines/minorGridlines as present (by @ChristopherVR) (2e06cee)
  • shared: Clear per-series colour overrides when applying a chart style preset (by @ChristopherVR) (1417f28)
  • react,vue,angular,svelte,vanilla: Use opaque colours for chart quick-action buttons (by @ChristopherVR) (9d1df11)
  • shared: Stop the Chart Filters list and series order reshuffling on toggle (by @ChristopherVR) (4a9546f)
  • core,shared: Preserve series formatting across a Chart Filters hide/restore round trip (by @ChristopherVR) (6555181)
  • core: Make editor ids collision-free within a process (by @ChristopherVR) (04a61a0)

Testing ​

  • core: Register the missing chart-stacked-line-markers fixture in the corpus manifest (by @ChristopherVR) (2d7c886)
  • core: Register the stacked line marker fixture (by @Sudhansh6) (87a8423)

3.20.2 - 2026-09-17 ​

Bug Fixes ​

  • core: Honor blipFill rotWithShape for picture-filled shapes (by @ChristopherVR) (3a28d90)
  • core,shared: Recognize implied blipFill picture fills and correct clustered bar overlap width (by @ChristopherVR) (4cbb83d)
  • shared: Reserve axis label space on top and stop defaulting chart-area fill to grey (by @ChristopherVR) (1e9b167)
  • shared: Stop leaked captureStream tracks after video export (by @ChristopherVR) (c0d3cc6)
  • shared: Draw a line and marker legend swatch for line-drawn series (by @ChristopherVR) (7b6837b)

3.20.1 - 2026-09-16 ​

Bug Fixes ​

  • shared: Omit editor chrome from raster export clones (by @Sudhansh6) (fe033c4)
  • export: Reconcile selection cleanup with current main (by @Sudhansh6) (a292a8c)

3.20.0 - 2026-09-16 ​

Features ​

  • shared: Preserve native list editing and pending snapshots (by @Sudhansh6) (ef82b95)
  • svelte: Preserve live lists through text commands and save (by @Sudhansh6) (0db1161)
  • i18n: Export locale subpaths from viewer packages (by @yunfeizhu) (65003c5)
  • shared: Construct image elements from local image files (by @Sudhansh6) (562fb4a)
  • bindings: Expose the shared image file construction helper (by @Sudhansh6) (14f3f08)
  • shared: Handle native images on the focused canvas (by @Sudhansh6) (20c9d66)
  • svelte: Paste native images on the editable canvas (by @Sudhansh6) (a567297)
  • shared: Add optional selection artwork tokens (by @Sudhansh6) (9fe6015)
  • svelte: Support selection control artwork themes (by @Sudhansh6) (4b6c127)
  • Expose slide-transition helpers from every binding's internals entry (by @ChristopherVR) (d232ffb)
  • Add atomic cross-slide element batches (by @yunfeizhu) (1157b68)

Bug Fixes ​

  • shared: Preserve theme colors in native list replacement (by @Sudhansh6) (1b302b3)
  • Preserve live list editing through upstream merge (by @Sudhansh6) (3f8b4f4)
  • shared: Preserve caret scope and native list breaks (by @Sudhansh6) (f19179b)
  • svelte: Scope live list commands to the caret (by @Sudhansh6) (5502112)
  • shared: Retain loaded webfonts during slide edits (by @ChristopherVR) (4f81eb0)
  • tests: Numerous test issues (by @ChristopherVR) (c5b8260)
  • shared: Anchor rotation gestures to their initial press (by @Sudhansh6) (798c83c)
  • svelte: Disable font pickers when their commands cannot act (by @Sudhansh6) (978c2fd)
  • shared: Preserve SVG namespaces in raster exports (by @Sudhansh6) (1e3fdaf)
  • shared: Bound resize hit areas between neighboring anchors (by @Sudhansh6) (61d735d)
  • svelte: Keep neighboring resize handles reachable (by @Sudhansh6) (9b15928)
  • shared: Keep rotate controls inside visible canvas (by @Sudhansh6) (df584e9)
  • svelte: Use shared boundary-aware rotation controls (by @Sudhansh6) (991d2eb)
  • shared: Apply picture alphaModFix once, not filter times opacity (by @ChristopherVR) (3fd154b)
  • shared: Stop padding the painted element box to MIN_ELEMENT_SIZE (by @ChristopherVR) (4caef83)
  • core: Honour a:alpha on solid slide backgrounds and keep it on save (by @ChristopherVR) (3b50c7a)
  • Guard element batches during active pointer gestures (by @yunfeizhu) (da3bf49)
  • core: Blend a:alpha on pattern background colours onto white (by @ChristopherVR) (893a261)
  • Render the degenerate-shape hit target for every element type (by @ChristopherVR) (49a15a4)
  • shared: Model relaxedInset/slope/hardEdge as non-monotonic bevel profiles (by @ChristopherVR) (e3ef9fb)

Refactor ​

  • core: Expose paragraph geometry keys for editing (by @Sudhansh6) (da5b8f5)

Documentation ​

  • shared: Document the foreignObject SVG string's safe-sink boundary (by @ChristopherVR) (c3446d8)

Testing ​

  • core: Register the nested list roundtrip fixture (by @Sudhansh6) (857e0b2)
  • Cover off-center rotation across viewer bindings (by @Sudhansh6) (c243cde)
  • Cover batch update history across viewer bindings (by @yunfeizhu) (fff49e8)
  • Cover gesture isolation and demo handle lifecycle (by @yunfeizhu) (62331e2)

Chores ​

  • Merge main into live list editing (by @Sudhansh6) (a9b760d)
  • Sync upstream validation and ribbon updates (by @Sudhansh6) (c70516c)
  • Merge main and resolve locale documentation conflicts (by @yunfeizhu) (ac9123d)
  • shared: Merge main into resize hit ownership (by @Sudhansh6) (f6d6336)
  • Merge main into native canvas image paste (by @Sudhansh6) (0ebf261)
  • Integrate rotation and selection-control prerequisites (by @Sudhansh6) (e6f9cde)
  • shared: Align boundary controls with current main (by @Sudhansh6) (7fbfc4c)
  • shared: Align selection artwork with boundary controls (by @Sudhansh6) (3b971d3)

3.19.0 - 2026-09-14 ​

Features ​

  • i18n: Add Simplified Chinese reference locale (by @yunfeizhu) (4f65031)
  • core: Preserve smart art diagram parts (by @ChristopherVR) (187e0e1)

Bug Fixes ​

  • shared: Retain list state after upstream rebase (by @ChristopherVR) (268a1f1)
  • core: Retain original duplicate shape ids (by @ChristopherVR) (74d595c)
  • shared: Restore paragraph remap helpers (by @ChristopherVR) (e07554c)
  • shared: Expose freeform geometry helpers (by @ChristopherVR) (96e54a5)
  • core: Evaluate connector and cloud preset geometry (by @ChristopherVR) (5f34ed5)
  • core: Evaluate connector and cloud preset geometry (by @ChristopherVR) (8e2608a)
  • shared: Remove code scanning findings (by @ChristopherVR) (ccf02f2)
  • ui: Keep ribbon controls compact across bindings (by @ChristopherVR) (79ec521)
  • core: Avoid namespace scan backtracking (by @ChristopherVR) (2c3f038)

Documentation ​

  • repo: Sync guides and references with implementation (by @ChristopherVR) (70440f6)

Testing ​

  • core: Stabilize the Vitest 5 suite (by @ChristopherVR) (83b4cc5)
  • repo: Stabilize Vitest 5 concurrency (by @ChristopherVR) (6b151b3)

Dependencies ​

  • deps: Bump the minor-and-patch group with 2 updates (by @dependabot[bot]) (7bed5e5)
  • deps: Bump @lucide/svelte from 1.46.0 to 1.44.0 (by @dependabot[bot]) (ad597e5)
  • deps: Rebase lint-staged update (by @ChristopherVR) (c2a649e)

Chores ​

  • deps-dev: Bump vitest from 4.1.11 to 5.0.0 (by @dependabot[bot]) (5f8fe4f)
  • deps-dev: Update vite requirement from ^8.2.2 to ^8.3.0 (by @dependabot[bot]) (79f3bbe)

3.18.1 - 2026-09-14 ​

Bug Fixes ​

  • i18n: Localize inspector and ribbon controls (by @yunfeizhu) (a657a76)

3.18.0 - 2026-09-13 ​

Features ​

  • shared: Add configurable viewport fit options (by @Sudhansh6) (93e3218)
  • svelte: Add configurable viewport fit options (by @Sudhansh6) (ca86364)
  • shared: Expose public element insertion across viewers (by @Sudhansh6) (2701047)

Bug Fixes ​

  • core: Preserve empty paragraph insertion formatting (by @Sudhansh6) (121f6bf)
  • shared: Preserve empty paragraph insertion formatting (by @Sudhansh6) (b34d0f5)
  • svelte: Preserve empty paragraph insertion formatting (by @Sudhansh6) (256a707)
  • svelte: Preserve unsaved state when notifying content changes (by @Sudhansh6) (23dfbc7)
  • shared: Continue inserted paragraphs from the local list (by @Sudhansh6) (78b8226)
  • shared: Leave empty clipboard paste shortcuts unclaimed (by @Sudhansh6) (aec446f)

Other ​

  • Retain empty paragraph styles with source alignment (by @Sudhansh6) (d979cd2)
  • Integrate semantic list commands with empty paragraph formatting (by @Sudhansh6) (c5d9a6f)
  • Sync main font and SmartArt fixes (by @Sudhansh6) (f2066eb)
  • Sync main paragraph and history fixes (by @Sudhansh6) (a18a2d7)
  • Sync viewport fit changes from main (by @Sudhansh6) (3c3c0bd)
  • Sync public insertion with viewport fit API (by @Sudhansh6) (47df3db)
  • Sync public insertion with empty paragraph formatting (by @Sudhansh6) (d1ad9c9)
  • Integrate preview and save-state fixes into insertion (by @Sudhansh6) (1c33fb5)

Documentation ​

  • Move viewport fitting into developer guides (by @Sudhansh6) (60707eb)

3.17.7 - 2026-09-13 ​

Bug Fixes ​

  • shared: Preserve paragraph properties across text insertion (by @Sudhansh6) (624c880)
  • core: Preserve run styles after text-only edits (by @Sudhansh6) (3cb843c)
  • core: Size percentage bullets from the first text run (by @Sudhansh6) (51e26e1)

Refactor ​

  • core: Expose numbering sequence for paragraph edits (by @Sudhansh6) (a27fb46)

Testing ​

  • svelte: Cover paragraph insertion and edit history (by @Sudhansh6) (695b266)

Chores ​

  • Merge updated SmartArt geometry coverage (by @Sudhansh6) (d0364a9)
  • Merge main before SmartArt cancellation contribution (by @Sudhansh6) (4581de6)

3.17.6 - 2026-09-12 ​

Bug Fixes ​

  • shared: Measure SmartArt overlays in local SVG coordinates (by @Sudhansh6) (e79f3b5)
  • svelte: Position SmartArt editors in local coordinates (by @Sudhansh6) (36c8359)
  • core: Preserve edited table column widths on save (by @Sudhansh6) (fe4539f)

Chores ​

  • Merge main and preserve SmartArt editing coverage (by @Sudhansh6) (f3c32b4)

3.17.5 - 2026-09-12 ​

Bug Fixes ​

  • angular: Edit cached SmartArt drawing nodes (by @Sudhansh6) (7fe9b37)

3.17.4 - 2026-09-12 ​

Bug Fixes ​

  • core: Avoid duplicating rich axis titles on save (by @Sudhansh6) (0a06dce)

3.17.3 - 2026-09-11 ​

Bug Fixes ​

  • Preserve the current deck when an older load finishes (668cfa9)

3.17.2 - 2026-09-11 ​

Bug Fixes ​

  • Read attributed table text without object coercion (by @Sudhansh6) (a847293)
  • shared: Clear absorbed table cell runs during cursor merge (by @Sudhansh6) (bee91d7)
  • svelte: Focus the SmartArt node editor on entry (by @Sudhansh6) (fcb0b45)
  • core: Read attributed chart axis titles (by @Sudhansh6) (4aa3aa1)
  • shared: Render edited single-run chart titles (by @Sudhansh6) (64d6712)
  • core: Read attributed chart title text (by @Sudhansh6) (1f47f85)

3.17.1 - 2026-09-11 ​

Bug Fixes ​

  • Preserve unchanged table text during merge and split (by @Sudhansh6) (22df796)
  • Keep split available for a single merged table cell (by @Sudhansh6) (38727de)

3.17.0 - 2026-09-10 ​

Features ​

  • core: SmartArt fanned-root hanging forests and choose-wrapped text templates (by @ChristopherVR) (f303bbb)
  • core: Size repeater-rendered SmartArt satellites from the diagram-wide userS (by @ChristopherVR) (fc5e931)
  • core: Reserve the fan-axis hang gap in transposed tailed hierarchies (by @ChristopherVR) (0a367d5)
  • core: Size nested SmartArt hub-and-satellite rings from the diagram-wide userS (by @ChristopherVR) (228d624)

Bug Fixes ​

  • shared,vanilla: Space WordArt envelope glyphs across the box and keep paragraph bands apart (by @ChristopherVR) (e165d72)
  • core: Preserve table inline content order on save (by @Sudhansh6) (4f38ac3)
  • shared,core: Resolve the open code-scanning alerts (by @ChristopherVR) (e66f068)
  • core: Preserve empty soft line breaks on load (by @Sudhansh6) (be9f5f5)
  • core: Drop the removed ensureItems argument after the soft-break fix (by @ChristopherVR) (83f9b37)
  • Preserve rich table cells during row and column edits (by @Sudhansh6) (e83c2eb)

Refactor ​

  • shared: Move the WordArt canvas measurement helpers to their own module (by @ChristopherVR) (ed9f400)

3.16.0 - 2026-09-10 ​

Features ​

  • shared: Fit the combined a:camera/a:rot override to PowerPoint's orthographic model (by @ChristopherVR) (4379b7f)
  • core: SmartArt corner-anchored hierarchies and the layout-definition type split (by @ChristopherVR) (b3c9506)
  • shared: Fit the twelve a:bevelT profiles to COM cross-sections and drop the metal/circle routing (by @ChristopherVR) (f5519eb)
  • core: SmartArt anchor-aware predicates, nested cycles and centred-fan hierarchies (by @ChristopherVR) (eee2c98)
  • core: Wire the hierarchy arranger to the resolved-orientation module (by @ChristopherVR) (ab035ea)
  • core: SmartArt hub aspect fitting and ancestor userS resolution (by @ChristopherVR) (9f9b534)

Bug Fixes ​

  • core: Terminate .ppt shape names so PowerPoint opens named shapes (by @ChristopherVR) (7d8f842)
  • shared: Size the WordArt envelope band from the line's real ascent (by @ChristopherVR) (9d6267b)
  • core: Restore the generation-template call sites swept into eee2c98e4 (by @ChristopherVR) (ffee234)

Testing ​

  • core: Make the SmartArt gallery gate opt-in and give the .ppt password test its PBKDF2 budget (by @ChristopherVR) (0ff5e2b)

3.15.0 - 2026-09-10 ​

Features ​

  • shared: Make every dense panel usable at 360px in all five bindings (by @ChristopherVR) (f560f4a)
  • shared: COM-calibrate the a:lightRig elevation table for all 27 rigs (by @ChristopherVR) (e0db035)
  • core: Read OLE embeds back from legacy .ppt decks (by @ChristopherVR) (2f1a9a6)
  • shared: Tile GIF, video, notes-PDF and print captures past the canvas cap (by @ChristopherVR) (4cdd3e5)
  • core: SmartArt hang ratios, cascade reserve, generation margins and hub font fit (by @ChristopherVR) (8ccd7cc)
  • shared: Decide GIF and video capture scale and cap once for all bindings (by @ChristopherVR) (ad3adfa)
  • shared: Warp WordArt envelope glyphs by their real outlines (by @ChristopherVR) (1e67d70)

Bug Fixes ​

  • react,vue,angular,svelte,vanilla: Guard OLE editor state after unmount and steady three e2e specs (by @ChristopherVR) (6bc1e4c)

Documentation ​

  • shared: Record the metal/circle re-measurement and the failed decoupling (by @ChristopherVR) (57fd7c2)

Testing ​

  • core: Pin PowerPoint's property-order dependence for combined rotated group edits (by @ChristopherVR) (dc6692e)

3.14.0 - 2026-09-10 ​

Features ​

  • core: SmartArt composite shape dispatch, per-role font fit and hang ratio (by @ChristopherVR) (b2d985f)
  • shared: Route every raster export through the foreignObject tiled pipeline (by @ChristopherVR) (1ad1993)
  • shared: Sample a bar3D picture fill's first pixel on the first paint (by @ChristopherVR) (8bdb1bc)
  • core: SmartArt repeated-template slots, table hierarchies and cascades (by @ChristopherVR) (725033d)

Bug Fixes ​

  • core: Preserve fractional table row heights (#224) (by @Sudhansh6) (aaa621f)
  • angular,core: Land the transition-split component and media-duration wiring (by @ChristopherVR) (3d0c8c7)

Testing ​

  • react,svelte,angular,shared: Update assertions to the camera-matrix and webfont contracts (by @ChristopherVR) (f2edef8)

3.13.0 - 2026-09-10 ​

Features ​

  • core: Fit SmartArt text and structure from the corpus rules (by @ChristopherVR) (c29d1d1)
  • shared: Load a metric-compatible web font when a deck's font is missing (by @ChristopherVR) (75a1874)
  • shared: Light 3D bevels with SVG lighting filters and derive explicit camera overrides (by @ChristopherVR) (a36c635)
  • core: Decode a picture fill's first pixel and a media file's duration without the DOM (by @ChristopherVR) (a9136fa)
  • core: Write hyperlinks, click actions and OLE embeds into legacy .ppt (by @ChristopherVR) (b8a46fa)
  • shared: Render fragment-based cinematic transitions in every binding (by @ChristopherVR) (4aee13e)
  • core: Fourth SmartArt interpreter snapshot against the COM corpus (by @ChristopherVR) (7b29670)
  • shared: Match PowerPoint on soft edges, pixelate and run-program actions (by @ChristopherVR) (d4339c2)
  • core: Embed real WAV audio in legacy .ppt output (by @ChristopherVR) (dfebe92)

Bug Fixes ​

  • core: Resize a rotated shape or group child axis by axis, as PowerPoint does (by @ChristopherVR) (012929e)
  • core: Re-enable the hierarchy-descendant dispatch guard (by @ChristopherVR) (8d3d462)
  • shared: Export the fragment transition descriptor and keyframes (by @ChristopherVR) (306c8ff)
  • core: Export readCnvPrId and track the two generated fixtures CI needs (by @ChristopherVR) (13bff65)

Documentation ​

  • State the measured SmartArt interpreter status in the limitations row (by @ChristopherVR) (de5c891)

Testing ​

  • core: Declare the two generated fixtures the decoding stream added (by @ChristopherVR) (acda9bf)

3.12.0 - 2026-09-10 ​

Features ​

  • core: Fit SmartArt layouts to PowerPoint's measured geometry (by @ChristopherVR) (4f689ef)

Testing ​

  • vanilla,svelte: Poll for the asynchronous OLE workbook commit (by @ChristopherVR) (17842d4)

3.11.0 - 2026-09-09 ​

Features ​

  • core: Check salt-less modify verifiers instead of unlocking blindly (by @ChristopherVR) (7c7f1da)
  • core: Model the c15 filtered-title and Value From Cells chart extensions (by @ChristopherVR) (880fa81)
  • core: Ship PowerPoint's built-in stock sound gallery for effects and transitions (by @ChristopherVR) (41854e5)
  • core: Write legacy binary .ppt (PowerPoint 97-2003) from the save pipeline (by @ChristopherVR) (d3360c1)
  • core: Edit embedded OLE content in place across all five bindings (by @ChristopherVR) (3f51347)
  • core: Edit legacy Word 97-2003 (.doc) OLE documents in place (by @ChristopherVR) (cfad261)
  • core: Interpret SmartArt layouts against a COM-authored ground-truth corpus (by @ChristopherVR) (d1b43a5)

Bug Fixes ​

  • core: Break the OLE nested-deck import cycle and declare the effect-sound fixture (by @ChristopherVR) (7a99ea6)
  • core: Make SDK-authored .ppt decks open in PowerPoint (by @ChristopherVR) (7433ee5)
  • core: Build the validator enum table through a pure call (by @ChristopherVR) (d4977ea)
  • core: Replace a stray NUL byte inside a string literal (by @ChristopherVR) (40bdda3)
  • shared: Sync the OLE content-dirty flag and settle three stale test premises (by @ChristopherVR) (5302473)
  • core: Place cached SmartArt shapes at their raw offsets and keep a lone column in bounds (by @ChristopherVR) (09ecba9)
  • shared: Give the accessibility title field a name distinct from the chart title (by @ChristopherVR) (37bbe6a)
  • shared: Keep a plain Fly In on its directional preset when a real box is available (by @ChristopherVR) (a026049)

Dependencies ​

  • deps: Merge dependabot #220 (by @ChristopherVR) (cc7fefb)
  • deps: Bump the minor-and-patch group with 3 updates (by @dependabot[bot]) (6e40989)
  • deps: Merge dependabot #212 (by @ChristopherVR) (a69fe7e)
  • deps: Update every dependency to its latest in-range version (by @ChristopherVR) (1f242b7)

Chores ​

  • deps-dev: Update rollup requirement from ^4.63.0 to ^4.63.1 (by @dependabot[bot]) (b099154)

3.10.0 - 2026-09-06 ​

Features ​

  • core: Close the wave-5 OpenXML limitation gaps in parse/save (by @ChristopherVR) (175dbbd)
  • shared: Wave-5 render logic for the closed limitation rows (by @ChristopherVR) (2c9ea37)
  • svelte: Wave-5 limitation closures (3D charts, userShapes, ink, effects) (by @ChristopherVR) (6f96a03)

3.9.0 - 2026-09-05 ​

Features ​

  • core: Openxml parity wave 4/5 (table styles, userShapes, alt text, bldLst) (by @ChristopherVR) (bfd2af8)
  • shared: Parity wave 4/5 decision modules for all five bindings (by @ChristopherVR) (16c6147)
  • svelte: Parity wave 4/5 (accessibility, table styles, chart runs, save options) (by @ChristopherVR) (01f5a2e)

3.8.0 - 2026-09-05 ​

Features ​

  • core: Wave-3 OpenXML parity (chart formatting, table styles, theme refs) (by @ChristopherVR) (1da1637)
  • shared: Wave-3 playback, reveal, chart render and theme swatch logic (by @ChristopherVR) (52e2a16)
  • svelte: Wave-3 parity (staged SmartArt reveal, theme swatches, u=words) (by @ChristopherVR) (e3fe780)
  • shared: Extract p:seq nextAc="seek" click handling (by @ChristopherVR) (66e293b)

Bug Fixes ​

  • svelte: Honour p:seq nextAc="seek" on a mid-flight click (by @ChristopherVR) (cc46e3f)

3.7.0 - 2026-09-05 ​

Features ​

  • core: Close ECMA-376 parse/serialize gaps from the 2026-09 parity audit (by @ChristopherVR) (91ddcb7)
  • shared: Render-side parity for the 2026-09 OpenXML audit gaps (by @ChristopherVR) (266f255)
  • svelte: Map the 2026-09 OpenXML parity wave onto the svelte viewer (by @ChristopherVR) (72f85f8)
  • core: Close the remaining OpenXML parity gaps (wave 2) (by @ChristopherVR) (59fecbf)
  • shared: Framework-neutral logic for the wave-2 OpenXML gaps (by @ChristopherVR) (9ab1d92)
  • svelte: Wire the wave-2 OpenXML parity features (by @ChristopherVR) (14d5ed7)

Testing ​

  • core: Declare the wave-2 e2e fixtures in the corpus manifest (by @ChristopherVR) (593d3ba)

3.6.5 - 2026-09-04 ​

Bug Fixes ​

  • Clip pictures by their own shape geometry in every binding (#202) (by @nikko82) (6027607)

3.6.4 - 2026-09-04 ​

Bug Fixes ​

  • shared,vanilla: Continue appended numbered paragraphs (#211) (by @Sudhansh6) (1c3a8c5)

3.6.3 - 2026-09-03 ​

Bug Fixes ​

  • core: Preserve fractional table font sizes (#210) (by @Sudhansh6) (3f0c1ba)

3.6.2 - 2026-09-03 ​

Bug Fixes ​

  • Use point units in font-size controls (#205) (by @Sudhansh6) (65031d4)
  • react,shared: Toggle shortcuts from selected text (#207) (by @Sudhansh6) (a9d294c)
  • Preserve table-cell font sizes across renderers (#208) (by @Sudhansh6) (8c2d97d)

3.6.1 - 2026-09-03 ​

Bug Fixes ​

  • core,shared: Preserve numbered text through edits (#204) (by @Sudhansh6) (9b5e9aa)
  • shared: Preserve paragraph metadata through text edits (#206) (by @Sudhansh6) (f49cbb7)

3.6.0 - 2026-09-02 ​

Features ​

  • Add a Hide Background Graphics toggle to the background inspector (by @ChristopherVR) (108da7d)

Bug Fixes ​

  • core: Preserve custom-geometry command order through placeholder merges (by @ChristopherVR) (29af002)
  • core: Regenerate slide background when an image is explicitly cleared (by @ChristopherVR) (c43e1ea)
  • Recolour template-layer shapes on a live theme colour-scheme edit (by @ChristopherVR) (34c3935)
  • Keep resize/rotate handles visible while inline-editing text (by @ChristopherVR) (3074929)
  • Apply text formatting to live inline-edit text, not a stale snapshot (by @ChristopherVR) (7815cc2)
  • core: Round-trip Hide Background Graphics (@showMasterSp) on save (by @ChristopherVR) (75ac54f)

3.5.1 - 2026-09-02 ​

Bug Fixes ​

  • shared: Map the wipe direction by travel and feather its edge (by @nikko82) (7f26a8b)

3.5.0 - 2026-09-02 ​

Features ​

  • shared: Animate morph stacking, flips, and crop reveal like PowerPoint (by @nikko82) (a9bba84)
  • shared: Minimum-cost media pairing and named text twins for morphs (by @nikko82) (3abda95)
  • shared: Step an inert stacking-swap counterpart together with the mover (by @nikko82) (e4f9438)
  • react,vue,angular,svelte,vanilla: Replay the leaving slide's transition on backward steps (by @nikko82) (e23838e)
  • shared: I18n keys for the wave-4 parity UI (by @ChristopherVR) (6cc9a86)
  • core: Master/layout CRUD, legacy comment threading, extended ppaction verbs (by @ChristopherVR) (033b024)
  • shared: Master-view CRUD, recent colours, action options, handout-master print chrome (by @ChristopherVR) (3cc928f)
  • svelte: Wave-4 parity UI (chart subtypes, read-only banner, compat toasts, rescale, sldRg, guides) (by @ChristopherVR) (90bc190)
  • shared: Show entry slide, compat toast placement, master-view failure copy (by @ChristopherVR) (79a42ba)
  • svelte: Wave-4 show entry, custom-show actions, master CRUD, mentions (by @ChristopherVR) (00c6546)
  • svelte: Slide master view insert/duplicate/delete/rename commands (by @ChristopherVR) (5980f71)
  • shared: Resolve OLE action verbs against the clicked element (by @ChristopherVR) (680c70c)
  • svelte: Recent-colours row under every picker and OLE verb actions (by @ChristopherVR) (87a93b8)
  • shared: Map F5 and Shift+F5 to the start-show actions (by @ChristopherVR) (94852ed)
  • svelte: Start the slide show on F5 and Shift+F5 (by @ChristopherVR) (8040342)

Bug Fixes ​

  • shared: Play an un-authored morph at PowerPoint's 0.5s fallback (by @nikko82) (0a70ef2)
  • shared: Close the open code-scanning findings at their root (by @ChristopherVR) (455f853)
  • shared: Write morph stacking-order journeys in the stage's z space (by @ChristopherVR) (867b05b)
  • shared: Take the nearest named text twin and drop its dead name veto (by @ChristopherVR) (c6e8062)
  • shared: Sample the morph crop track from the one easing definition (by @ChristopherVR) (349e8bd)

Testing ​

  • shared: Cover the morph media assignment solver (by @ChristopherVR) (cbf671f)

3.4.0 - 2026-09-02 ​

Features ​

  • svelte: Effects panel, pattern fills, placeholder prompts, layout scoping and loop-continuously (by @ChristopherVR) (329357a)
  • shared: Add the pptx.effects.rotateWithShape key and export DEFAULT_FONT_SIZE (by @ChristopherVR) (2021a28)

Bug Fixes ​

  • svelte: Paint open arrowheads as strokes and set the annotation cursor per tool (by @ChristopherVR) (0b9dcb1)
  • svelte: Localise the outer-shadow "Rotate with Shape" label (by @ChristopherVR) (dd4f329)
  • shared: Stop eaLnBrk splitting Latin words mid-word (by @ChristopherVR) (c3eedb9)
  • shared: Resolve Google webfonts from a bundled catalogue instead of probing the API (by @ChristopherVR) (43bda70)

Refactor ​

  • svelte: Repoint onto the wave-2 shared modules (by @ChristopherVR) (6e1b4ee)
  • shared: Make editor-geometry nudge helpers alias editor-keymap (by @ChristopherVR) (87cf256)

Testing ​

  • svelte: Stub the network in the webfont tests, not probe responses (by @ChristopherVR) (95a2b29)

3.3.0 - 2026-09-02 ​

Features ​

  • core: Parse and save bar3D shape, radar style and surface wireframe (by @ChristopherVR) (1f46205)
  • shared: Google fonts webfont fallback for referenced families (by @nikko82) (49571a5)
  • svelte: Load google-hosted webfonts for missing families (by @nikko82) (a5f86bc)
  • shared: Morph matching heuristics for media, twins, and group twins (by @nikko82) (d5ba90b)

Bug Fixes ​

  • core: Close OpenXML round-trip gaps in charts, pictures, tables, text and structure (by @ChristopherVR) (9780265)
  • shared: Equation reverse conversion, chart manual layout and editor decision helpers (by @ChristopherVR) (bffc2b3)
  • shared: Stop the webfont resolver dropping families the injected stylesheet satisfied (by @ChristopherVR) (25a9a78)
  • core: Write gridline elements on generated chart axes (by @ChristopherVR) (0d03c1a)
  • shared: Honour c:majorGridlines when drawing value-axis gridlines (by @ChristopherVR) (8b9dd88)
  • core: Snapshot baked-in a14 corrections next to the live values (by @ChristopherVR) (9e6cc01)
  • shared: Stop re-applying a14 corrections PowerPoint already baked in (by @ChristopherVR) (52766e7)

Refactor ​

  • shared: Extract binding-duplicated engines, option lists and parity descriptors (by @ChristopherVR) (b0acb02)

Testing ​

  • e2e: Pin the webfont fallback probe across the five bindings (by @nikko82) (aabb9dd)

3.2.3 - 2026-09-01 ​

Dependencies ​

  • deps: Bump @lucide/svelte from 1.37.0 to 1.34.0 (#192) (by @dependabot[bot]) (351c48f)

Chores ​

  • deps-dev: Bump the minor-and-patch group with 2 updates (#186) (by @dependabot[bot]) (effb251)
  • deps-dev: Bump happy-dom from 20.12.0 to 20.11.12 (#187) (by @dependabot[bot]) (f386308)
  • deps-dev: Bump rollup from 4.63.1 to 4.63.0 (#190) (by @dependabot[bot]) (8ea2abc)

3.2.2 - 2026-08-29 ​

Bug Fixes ​

  • animation: Preserve authored PowerPoint playback and rendering (#185) (by @primerch) (628be23)

3.2.1 - 2026-08-29 ​

Bug Fixes ​

  • svelte: Shrink mobile bottom bar and rebuild the hamburger menu (by @ChristopherVR) (c8f394d)
  • ui: Stop resize/rotate handles rendering behind their own element (by @ChristopherVR) (1eefded)
  • ui: Stop ribbon Insert/Animation/View tab content stretching and clipping (by @ChristopherVR) (9487346)
  • print: Stop print opening a blank tab and doing nothing (by @ChristopherVR) (6616f81)
  • ui: Stop connector-endpoint detach breaking on Vue and Svelte (by @ChristopherVR) (7fe9401)

3.2.0 - 2026-08-28 ​

Features ​

  • svelte: Add a Protected View banner with per-document dismissal (by @ChristopherVR) (9710dea)

Bug Fixes ​

  • ui: Stop ribbon action buttons from stretching to fill the row height (by @ChristopherVR) (d53ce5b)
  • core: Reindex chart data-point overrides after removing a category (by @ChristopherVR) (7bd64f8)
  • shared: Repair print, drop Package for Sharing, wire Options behavior (by @ChristopherVR) (bcc2ac7)
  • svelte: Repair print, drop Package for Sharing, wire Options behavior (by @ChristopherVR) (9a164d6)

Security ​

  • shared: Drop duplicate Protected View banner strings (by @ChristopherVR) (1c35863)

3.1.1 - 2026-08-28 ​

Bug Fixes ​

  • charts: Offer 3-D chart types in the type-change dropdown (by @ChristopherVR) (4e960f7)

3.1.0 - 2026-08-28 ​

Features ​

  • core: Decrypt RC4-encrypted legacy .ppt files (by @ChristopherVR) (b95adc7)
  • ole: Make embedded OLE objects' Object Name editable (by @ChristopherVR) (e06b32c)
  • shared: Add Pareto as an insertable chart type (by @ChristopherVR) (8fea110)
  • core: Support writing ECMA-376 Standard scheme encryption (by @ChristopherVR) (210d2a2)
  • shared: Apply the shadeToTitle background gradient effect (by @ChristopherVR) (f287389)
  • core: Allow animation drag-to-reorder across deck-native effects (by @ChristopherVR) (6f48a34)
  • Author animation effect sound and after-animation controls (by @ChristopherVR) (78daeb4)
  • shared: Honour p:seq @concurrent/@nextAc/@prevAc and p:cTn @restart (by @ChristopherVR) (3e3427d)
  • shared: Honour animRot/animScale absolute values, tavLst, txEl ranges, p:excl and bldLvl in playback (by @ChristopherVR) (f71396b)
  • shared: Resolve 9 more SMIL animEffect filter families to real reveals (by @ChristopherVR) (e47aa40)
  • Author and embed transition sounds from the ribbon Sound picker (by @ChristopherVR) (ada8cdb)
  • Expose transition speed and morph-option controls in all five bindings (by @ChristopherVR) (122894d)
  • ink: Retain pen-tilt InkML channels and render a calligraphic nib (by @ChristopherVR) (6adab79)
  • shared: Raycast hover tooltip for surface chart marks (by @ChristopherVR) (c943646)
  • shared: Resolve stretch, newsflash and random animEffect filters (by @ChristopherVR) (58c898e)
  • core,shared: Surface p:tavLst attrName, honour colour ramps (by @ChristopherVR) (2ccf45f)
  • shared: Widen native-animation preset playback coverage to 54/200 (by @ChristopherVR) (41e2b52)
  • shared: True 3D bar3D chart scene via three.js, opt-in all bindings (by @ChristopherVR) (ac920da)
  • shared: True 3D line3D/area3D chart scenes via three.js, opt-in all bindings (by @ChristopherVR) (1447517)
  • charts: Give pie3D charts true 3D rendering across all bindings (by @ChristopherVR) (a1b32e7)

Bug Fixes ​

  • Author Draw-tab ink as a PowerPoint-compatible content part (by @ChristopherVR) (d91ce08)
  • animation: Correct swapped exit/emphasis presets, cover 4 more IDs (by @ChristopherVR) (11c2d2e)
  • shared: Capture Draw tool pressure in all five bindings (by @ChristopherVR) (b8a124a)
  • shared: Sample ink pressure curves along the actual Bezier path (by @ChristopherVR) (629ab5d)
  • core: Honour text-run reflection scale/skew/rotation/fade/anchor (by @ChristopherVR) (41dfa76)
  • shared: Render rect path gradients as nested rectangles, not an ellipse (by @ChristopherVR) (f6f479e)
  • shared: Add elliptical tilt foreshortening to pie3D charts (by @ChristopherVR) (63f57ba)
  • shared: Claim morph proximity pairs closest-first, not by document order (by @ChristopherVR) (b68a04d)
  • deps: Converge ai-sdk adapters on a single ai package version, fix two flaky tests (by @ChristopherVR) (4365a02)
  • core: Author Draw-tab ink InkML that real PowerPoint actually opens (by @ChristopherVR) (38633c7)
  • animation: Correct tests left stale by combining independent preset fix waves (by @ChristopherVR) (02371bb)
  • charts: Repair merge conflicts left broken by a diff3 edge case, wire remaining demos (by @ChristopherVR) (42d550d)

Testing ​

  • core: Cover lte/equ ops and multi-hop bounds for SmartArt constraints (by @ChristopherVR) (3d8c5a0)

Chores ​

  • Reformat limitations.md table and a core test after merge (by @ChristopherVR) (d9db1f7)
  • Fix oxfmt comment placement in ppt-import.test.ts (by @ChristopherVR) (7cb2d3d)

3.0.3 - 2026-08-26 ​

Bug Fixes ​

  • Stop duplicate inline-edit text render and fix ribbon popup clipping (by @ChristopherVR) (f084c64)
  • Derive mobile chrome from the browser viewport, not the container (by @ChristopherVR) (29e5ea1)

Dependencies ​

  • deps: Update fast-xml-parser requirement from ^5.10.1 to ^5.11.0 (#177) (by @dependabot[bot]) (a876e0f)
  • deps: Bump @microsoft/api-extractor from 7.59.0 to 7.58.13 (#172) (by @dependabot[bot]) (c773015)
  • deps: Update dompurify requirement from ^3.4.13 to ^3.4.14 (#173) (by @dependabot[bot]) (19afbe1)

3.0.2 - 2026-08-22 ​

Bug Fixes ​

  • shared,angular: Stop the stroke overlay inventing outlines, and finish the Angular whitespace fix (by @ChristopherVR) (20d4d17)

3.0.1 - 2026-08-22 ​

Bug Fixes ​

  • core: Spell the SmartArt role sentinel as a unicode escape (by @ChristopherVR) (a2d4993)

3.0.0 - 2026-08-22 ​

Features ​

  • core: Unify SmartArt layout onto one DiagramML interpreter (by @ChristopherVR) (89116b1)
  • core: Write chart edits back to the embedded workbook (by @ChristopherVR) (dee19fc)
  • core: Solve relative SmartArt constraints and apply org-chart hints (by @ChristopherVR) (65eee20)
  • shared: Print notes pages in every binding, and honour notesStyle in the master preview (by @ChristopherVR) (6f2f54d)
  • core: Author tag elements, model embedTrueTypeFonts, and add a text-style edit path (by @ChristopherVR) (0048d16)
  • core,shared: Serialize data-table styling, and paint 3D chart surfaces (by @ChristopherVR) (bd9595a)
  • core: Honour per-node shapes, style roles and connector text in SmartArt (by @ChristopherVR) (c823fca)
  • core,shared: Model timing templates and play animEffect filters (by @ChristopherVR) (8bf91f2)
  • core,shared: Cross-browser reflections, overlay fills, and remaining text gaps (by @ChristopherVR) (c0b0d6d)

Bug Fixes ​

  • core: Close five OpenXML parse and serialize fidelity gaps (by @ChristopherVR) (641b0b2)
  • core,shared: Correct animation preset IDs against PowerPoint COM ground truth (by @ChristopherVR) (61b0014)
  • shared: Honour a:ln/@algn and per-subpath fill modes (by @ChristopherVR) (d049a8f)
  • shared: Correct autofit and paragraph-spacing semantics (by @ChristopherVR) (86f61e9)
  • shared: Move per-script fonts and measured tab layout out of React (by @ChristopherVR) (dbd3442)
  • shared: Render table cell image fill, zero margins and authored grid spacing (by @ChristopherVR) (d4079d2)
  • svelte: Consume the shared render decisions for the OpenXML fidelity fixes (by @ChristopherVR) (8d6c2be)
  • core,shared: Honour cTn timing attributes, after-animation and effect sound (by @ChristopherVR) (07ee51f)
  • core: Close slide-structure, notes-style and DrawingML parse gaps (by @ChristopherVR) (ee1dbcd)
  • shared: Render data tables, legend entries, image overlays and 3D text (by @ChristopherVR) (ecec502)
  • svelte: Consume the shared decisions for the second parity wave (by @ChristopherVR) (971c76d)

Refactor ​

  • shared: Split oversized text modules and add the circle-in keyframe (by @ChristopherVR) (1c0797f)

Documentation ​

  • core: Record audited OpenXML construct coverage in the manifest (by @ChristopherVR) (812fe61)

Testing ​

  • core: Evidence previously unverified OpenXML constructs, and record what is not implemented (by @ChristopherVR) (4dc6028)

Chores ​

  • core: Complete barrel and runtime wiring for the preceding two changes (by @ChristopherVR) (115379e)

2.23.0 - 2026-08-21 ​

Features ​

  • shared,react: Wire interactive 3D surface chart scene (opt-in) (by @ChristopherVR) (78587a4)
  • svelte: Wire interactive 3D surface chart scene (opt-in) (by @ChristopherVR) (f37c598)

Bug Fixes ​

  • shared: Compute elbow/curved connector routing from actual shape geometry (by @ChristopherVR) (eecc519)
  • core,vue: Compute elbow/curved connector routing from actual shape geometry (by @ChristopherVR) (f2882a1)

Documentation ​

  • core: Correct stale OLE and SmartArt capability text (by @ChristopherVR) (0c7e68d)
  • core: Certify DrawingML line/stroke properties in the OpenXML coverage manifest (by @ChristopherVR) (caa2570)

2.22.1 - 2026-08-21 ​

Bug Fixes ​

  • core: Restore mc:AlternateContent envelope on passthrough template save (by @ChristopherVR) (1659244)
  • core: Stop baking theme effectRef into a literal effectLst on save (by @ChristopherVR) (59a5566)
  • core: Read line-family chart series colors on any chart, not just combo (by @ChristopherVR) (e62dfcf)
  • core: Write line-family chart series colors into a:ln, not a corrupting spPr (by @ChristopherVR) (5b54357)

2.22.0 - 2026-08-21 ​

Features ​

  • shared: Add header-footer dialog draft helpers (by @ChristopherVR) (0f640c8)
  • shared: Add classifyMediaType, the audio/video MIME classifier (by @ChristopherVR) (56520a1)
  • shared: Add resolveTemplateBackgroundRows for the template background card (by @ChristopherVR) (67d327d)
  • shared: Add patchChartData, the type-aware chart data patcher (by @ChristopherVR) (5309296)
  • svelte: Add the missing element lock/unlock toggle (by @ChristopherVR) (e235f66)
  • shared: Add pptx.group.childCount/groupedElement i18n keys (by @ChristopherVR) (f5557e1)
  • svelte: Add the missing group/OLE element info cards (by @ChristopherVR) (8eb1adf)
  • svelte: Add the table quick-style preset swatch gallery (by @ChristopherVR) (b2c8d8c)
  • svelte: Fill out the ribbon overflow "..." menu (by @ChristopherVR) (077c867)
  • svelte: Add SmartArt text-pane keyboard editing (Tab/Enter/Backspace) (by @ChristopherVR) (21abb01)
  • svelte: Add table column/row drag-resize handles (by @ChristopherVR) (37d965c)
  • svelte: Add slide sorter context menu (duplicate/hide/delete) (by @ChristopherVR) (e187e58)
  • svelte: Add editor-canvas pinch-zoom and touch double-tap-to-edit (by @ChristopherVR) (48158f8)
  • svelte: Edit layout/master background from the slide inspector (by @ChristopherVR) (7611027)

Bug Fixes ​

  • shared: Sanitize every download filename, not just callers that remember to (by @ChristopherVR) (7bdf73b)
  • shared: Floor animation timeline bar width to a visible minimum (by @ChristopherVR) (918ac2f)
  • angular,svelte: Render each font-picker option in its own font (by @ChristopherVR) (b1845fa)
  • svelte,vanilla: Commit in-progress SmartArt node text before Tab/Enter (by @ChristopherVR) (2c79a1f)

Refactor ​

  • svelte: Repoint header-footer draft clone/patch onto shared (by @ChristopherVR) (8bafb06)
  • react,vue,svelte,vanilla: Repoint media-type check onto shared (by @ChristopherVR) (bb8e95c)

2.21.4 - 2026-08-21 ​

Bug Fixes ​

  • core: Parse full custom geometry on pictures, not just path data (by @ChristopherVR) (b6cbef6)

2.21.3 - 2026-08-20 ​

Bug Fixes ​

  • ci: Resolve oxlint errors and warnings blocking CI lint job (by @ChristopherVR) (a2031be)
  • core: Correct EOT header parsing for version 0x00020001 containers (by @ChristopherVR) (e43720e)
  • core: Size table graphic frames from their grid extent (by @ChristopherVR) (6d75c18)
  • core: Accept Strict-OOXML lexical percentages in table style tint/shade (by @ChristopherVR) (8fa8111)
  • core: Stabilize Strict-conformance resaves (by @ChristopherVR) (3c43f51)
  • core: Correct the Strict custom/extended-properties namespace mapping (by @ChristopherVR) (d5001f9)
  • core: Stop a paragraph's alignment from leaking onto later paragraphs (by @ChristopherVR) (c18b1e7)
  • core: Keep SmartArt cached line-preset shapes with zero width or height (by @ChristopherVR) (41e3059)
  • shared: Apply autofit shrink-to-fit scale/reduction to paragraph struts (by @ChristopherVR) (4c1d5c8)

2.21.2 - 2026-08-20 ​

Bug Fixes ​

  • svelte,vanilla: Fix the obfuscation key order in the embedded-font test fixture (by @ChristopherVR) (20320c2)
  • shared: Describe stripped invisible characters by code point, not literally (by @ChristopherVR) (9ddca51)

2.21.1 - 2026-08-20 ​

Bug Fixes ​

  • shared: Repoint options numeric-control clamp onto shared helper (by @ChristopherVR) (138dfe5)

Refactor ​

  • shared,react,vue,vanilla: Repoint comment mutations onto shared comments-list (by @ChristopherVR) (0eb28dc)

2.21.0 - 2026-08-20 ​

Features ​

  • shared: Add hover tooltips to every chart mark, not just the region map (by @ChristopherVR) (4ca29f5)

Bug Fixes ​

  • angular: Wire Home ribbon Reset/Fill/Outline through shared commands (by @ChristopherVR) (c06b894)
  • svelte: Make table row/column insert-delete merge-aware (by @ChristopherVR) (111d272)
  • svelte,vanilla: Wire double-click chart title rename (by @ChristopherVR) (48b997c)
  • react,svelte: Block unsafe URL schemes on hyperlink save (by @ChristopherVR) (61b43e6)
  • shared: Stack line/area charts and lock their drag geometry (by @ChristopherVR) (0da8ba5)
  • shared: Extract table column-width redistribution to shared (by @ChristopherVR) (cbd9fc7)

Refactor ​

  • shared: Extract SmartArt node-count bounds table (by @ChristopherVR) (10cd945)
  • shared: Extract animation drag-to-reorder into shared (by @ChristopherVR) (b136d02)
  • shared: Extract SmartArt text-pane handlers to shared (by @ChristopherVR) (911693c)
  • shared: Extract chart legend layout to shared (by @ChristopherVR) (acec62b)
  • shared: Extract animation timeline-bar layout math to shared (by @ChristopherVR) (1a9f66d)
  • shared: Extract table quick-style preset application (by @ChristopherVR) (aa52c10)
  • shared: Extract export base-filename derivation to shared (by @ChristopherVR) (58091bc)

2.20.7 - 2026-08-19 ​

Bug Fixes ​

  • core: Correct OOXML a:tint colour math (ECMA-376 20.1.2.3.32) (by @ChristopherVR) (7cf29f3)
  • shared: Stretch uncropped pictures to fill their frame (by @ChristopherVR) (ff2fee3)
  • core: Don't clone an arbitrary slide onto a new blank slide (by @ChristopherVR) (1bd1bd6)
  • core: Don't bind special placeholders to untyped ones by idx alone (by @ChristopherVR) (d92eb11)
  • core: Resolve layout-switch geometry from the master when omitted (by @ChristopherVR) (a09aa5a)
  • core: Reverse the GUID-derived XOR key for font de/obfuscation (by @ChristopherVR) (7733edf)
  • core: Drop untouched placeholder prompts on repeated layout switch (by @ChristopherVR) (8842223)
  • security: Resolve code-scanning ReDoS and comment-sanitization alerts (by @ChristopherVR) (e58e3f5)

2.20.6 - 2026-08-19 ​

Bug Fixes ​

  • shared: Add collaboration-active-session connected-users view-model (by @ChristopherVR) (7add165)
  • svelte: Mobile Comments double header, Share dialog user list (by @ChristopherVR) (e97fdd6)

2.20.5 - 2026-08-19 ​

Dependencies ​

  • deps: Update y-websocket requirement from ^3.0.0 to ^3.1.0 (#169) (by @dependabot[bot]) (7e9c5a5)
  • deps: Update @lucide/svelte requirement from ^1.28.0 to ^1.31.0 (#166) (by @dependabot[bot]) (3e1a554)

Chores ​

  • deps-dev: Update rollup-plugin-dts requirement (#167) (by @dependabot[bot]) (d6ecdf5)
  • deps-dev: Update vite requirement from ^8.2.0 to ^8.2.1 (#165) (by @dependabot[bot]) (a059a9e)
  • deps-dev: Bump the minor-and-patch group with 2 updates (#162) (by @dependabot[bot]) (2645f25)

2.20.4 - 2026-08-14 ​

Bug Fixes ​

  • vanilla: Repair the properties panel, inline editor, mobile chrome and show performance (by @ChristopherVR) (47265ef)

2.20.3 - 2026-08-14 ​

Bug Fixes ​

  • shared: Run an in-place morph dissolve on the wrapper, not the element (by @ChristopherVR) (d46d2ee)

2.20.2 - 2026-08-14 ​

Bug Fixes ​

  • shared: Sum a morph cross-dissolve instead of stacking two fades (by @ChristopherVR) (86a9e7a)

Testing ​

  • Mask the fields that legitimately move, and size two waits for CI (by @ChristopherVR) (68bae19)

2.20.1 - 2026-08-14 ​

Bug Fixes ​

  • Repair five regressions this review introduced (by @ChristopherVR) (952063b)

2.20.0 - 2026-08-13 ​

Features ​

  • shared: Take the last six chart kinds and the autosave policy (by @ChristopherVR) (efe8438)

Bug Fixes ​

  • core: Repair the XML plumbing four separate defects were hiding behind (by @ChristopherVR) (8beb664)
  • bindings: Stop read-only surfaces clobbering live state (by @ChristopherVR) (e820984)

2.19.0 - 2026-08-13 ​

Bug Fixes ​

  • core: Stop save rewriting what the author never wrote (by @ChristopherVR) (6fb2767)

2.18.0 - 2026-08-13 ​

Features ​

  • shared: Own the decisions the bindings were each making themselves (by @ChristopherVR) (5421272)
  • shared: Model hyperlinks and equations, and own the group rules (by @ChristopherVR) (a6bf4c1)

Bug Fixes ​

  • core: Repair save-pipeline corruption found by the OpenXML parity audit (by @ChristopherVR) (554006e)
  • svelte: Stop shadowing shared table ops and wire the missing gestures (by @ChristopherVR) (c90fb3f)
  • core: Close the round-trip defects the corpus harness exposed (by @ChristopherVR) (2011c66)
  • svelte,vanilla: Wire SmartArt reflow and the shared run rendering (by @ChristopherVR) (37b7e45)

2.17.9 - 2026-08-11 ​

Bug Fixes ​

  • shared: Keep a morph pair travelling when its outline is tweened too (by @ChristopherVR) (0316cf7)
  • shared: Dissolve a re-fitted morph paragraph in place instead of stretching it (by @ChristopherVR) (975c6f6)

2.17.8 - 2026-08-11 ​

Bug Fixes ​

  • shared: Stop Vue and Angular writing an inline pointer-events lock during a show (by @ChristopherVR) (4cb649a)
  • svelte: Stop the show stage writing an inline pointer-events unlock (by @ChristopherVR) (6f0a9f4)

2.17.7 - 2026-08-11 ​

Bug Fixes ​

  • vue: Swap inherited layout artwork when a slide's layout changes (by @ChristopherVR) (1e927ce)

Refactor ​

  • shared: One paragraph-spacing resolver, and delete four more binding copies (by @ChristopherVR) (65f8268)
  • shared: Give the cached-SmartArt projection the whole decision, and React's table styling too (by @ChristopherVR) (411148f)
  • shared: Move find/replace and per-cell table CSS off their React copies (by @ChristopherVR) (5b81728)

2.17.6 - 2026-08-10 ​

Bug Fixes ​

  • shared: Render cached SmartArt shapes and transparent table headers as authored (by @ChristopherVR) (24ec6b4)

2.17.5 - 2026-08-10 ​

Bug Fixes ​

  • core: Read placeholder, list and percentage values as authored (by @ChristopherVR) (dc2d679)
  • shared: Paint an inert morph ghost statically so it stops jittering (by @ChristopherVR) (ce3be84)

2.17.4 - 2026-08-10 ​

Bug Fixes ​

  • shared: Crossfade morph wording instead of fading it out then in (by @ChristopherVR) (50984f1)

2.17.3 - 2026-08-10 ​

Dependencies ​

  • deps: Update dompurify requirement from ^3.4.12 to ^3.4.13 (#151) (by @dependabot[bot]) (7b975ff)
  • deps: Update yjs requirement from ^13.6.31 to ^13.6.32 (#152) (by @dependabot[bot]) (456fdb8)

Chores ​

  • deps-dev: Bump the minor-and-patch group with 2 updates (#150) (by @dependabot[bot]) (ab75bf1)

2.17.2 - 2026-08-08 ​

Bug Fixes ​

  • Dissolve a morph's arriving shapes over the ghost that hid them (by @ChristopherVR) (89536a3)
  • Dissolve a morph's centre panel the way PowerPoint measurably does (by @ChristopherVR) (8c03a9a)
  • shared: Measure per word, and never measure a glyph in isolation (by @ChristopherVR) (a92004b)

2.17.1 - 2026-08-07 ​

Bug Fixes ​

  • shared: Morph a picture's scale, which OOXML stores as a source crop (by @ChristopherVR) (e2743c7)
  • shared: A still of a slide paints no media chrome (by @ChristopherVR) (d99e6fd)
  • svelte: Route the media fallback through the shared surface rule (by @ChristopherVR) (f6b3b8d)
  • shared: Measure each run's PowerPoint width instead of guessing one (by @ChristopherVR) (920d1f3)
  • shared: A media fallback says WHICH badge, not just "a badge" (by @ChristopherVR) (1cbe78f)
  • svelte: Mark missing media as not found, not as playable (by @ChristopherVR) (03e21b0)

Styling ​

  • shared: Escape the measurement cache separator (by @ChristopherVR) (944b312)

2.17.0 - 2026-08-07 ​

Features ​

  • Navigate a running slide show on the wheel in every binding (by @ChristopherVR) (91a19e9)

2.16.0 - 2026-08-07 ​

Features ​

  • shared: Map wheel gestures to PowerPoint's intents (by @ChristopherVR) (1cc7797)

Refactor ​

  • Route four bindings through the shared geometry cascade (by @ChristopherVR) (859ca12)

2.15.3 - 2026-08-07 ​

Bug Fixes ​

  • shared: Stop category-axis labels crowding the plot (by @ChristopherVR) (b511ac4)
  • Let clicks fall through an unfilled shape's interior (by @ChristopherVR) (7e17f9d)
  • Hollow-shape click-through in the remaining four bindings (by @ChristopherVR) (fee05ad)

Refactor ​

  • shared: Single-source the shape geometry cascade (by @ChristopherVR) (396e4a2)

2.15.2 - 2026-08-07 ​

Bug Fixes ​

  • core: Measure parallelogram skew against the short side, not the width (by @ChristopherVR) (fea647f)
  • core: Bulge the teardrop preset's point outwards, not inwards (by @ChristopherVR) (0b23bc4)
  • Render ellipses as ellipses, not pills (by @ChristopherVR) (b6d2598)
  • Stop slicing overflowing text with an identity rect clip-path (by @ChristopherVR) (7393111)

2.15.1 - 2026-08-07 ​

Bug Fixes ​

  • core: Recognize nodeType="afterEffect" when parsing animation triggers (by @ChristopherVR) (554c077)

2.15.0 - 2026-08-07 ​

Features ​

  • shared: Remember the open deck so a refresh reopens it (by @ChristopherVR) (abbe3bd)

Bug Fixes ​

  • shared: Make Set Up Slide Show's Manual advance mode actually work (by @ChristopherVR) (c308423)

2.14.0 - 2026-08-07 ​

Features ​

  • core: Import legacy PowerPoint 97-2003 (.ppt) files (by @ChristopherVR) (6f71bd3)
  • core: Export and import decks as portable JSON (by @ChristopherVR) (965fc05)
  • shared: Insert slides from a template gallery (by @ChristopherVR) (abc7f77)
  • shared: Blackboard mode, element rename and column charts (by @ChristopherVR) (a69ffce)
  • shared: Selectively-subscribable viewer store with per-binding adapters (by @ChristopherVR) (745c554)

Bug Fixes ​

  • core: Stop inferring motion-path auto-rotate from rAng (by @ChristopherVR) (32ee041)
  • core: Read line-series colours from a:ln/a:solidFill (by @ChristopherVR) (714c10a)
  • shared: Animation reveal, stroke paint and comment threading (by @ChristopherVR) (946aea2)
  • svelte: Translate inspector tabs and place the caret at the end (by @ChristopherVR) (b6d302c)
  • angular: Title the Selection Pane control like every other binding (by @ChristopherVR) (801a88a)
  • shared: Keep a drawing gesture from advancing the show (by @ChristopherVR) (e2578cc)
  • shared: Return the keyboard to the viewer after an inline edit (by @ChristopherVR) (351947a)
  • present: Let a blanked screen pass clicks through to the show (by @ChristopherVR) (a8cc5d2)
  • shared: Translate the labels five bindings were rendering in English (by @ChristopherVR) (d1bfad6)
  • cli: Let the scaffolded starters open legacy .ppt decks (by @ChristopherVR) (2cde7f8)
  • shared: Escape SVG gradient markup attributes (by @ChristopherVR) (7e5dd23)
  • shared: Route numeric SVG gradient attributes through the escape barrier (by @ChristopherVR) (58485f3)
  • shared: Stop a morph inventing pairs and hiding what arrives (by @ChristopherVR) (058051d)

Performance ​

  • shared: Drop state writes that carry no new information (by @ChristopherVR) (74ba824)

Refactor ​

  • shared: Place the eight resize handles from one table (by @ChristopherVR) (86feabb)
  • shared: Move the canvas zoom slice onto the viewer runtime (by @ChristopherVR) (054c9eb)

2.13.2 - 2026-08-05 ​

Bug Fixes ​

  • core: Resolve styled full font names and add condensed fallbacks (by @ChristopherVR) (26b1f74)
  • shared: Draw chart text at point size and scale chart SVGs 1:1 (by @ChristopherVR) (da333f9)
  • shared: Suspend the show on window blur, not only tab-hide (by @ChristopherVR) (4a2c254)
  • shared: Fold the origami transition like a sheet of paper (by @ChristopherVR) (f0f9fc2)
  • shared: Cover the fillRect placement fields in the collab schema (by @ChristopherVR) (d455ed7)

2.13.1 - 2026-08-05 ​

Dependencies ​

  • deps: Bump ai from 7.0.48 to 7.0.44 (#134) (by @dependabot[bot]) (08a13e0)
  • deps: Update @lucide/svelte requirement from ^1.27.0 to ^1.28.0 (#142) (by @dependabot[bot]) (1a13fb6)

Chores ​

  • deps-dev: Update vite requirement from ^8.1.5 to ^8.2.0 (#135) (by @dependabot[bot]) (1e7e296)

2.13.0 - 2026-08-01 ​

Features ​

  • Fixed graphs and arrows shapes (by @ChristopherVR) (94813f5)

2.12.1 - 2026-08-01 ​

Bug Fixes ​

  • Let the presenter finish the show, and keep scrubbers out of its panes (by @ChristopherVR) (c7c12bc)

Refactor ​

  • shared: Split arrow markers and dash patterns out of connector-path (by @ChristopherVR) (53d47d1)

2.12.0 - 2026-08-01 ​

Features ​

  • Mark hidden slides in every rail and sorter, and honour custom shows in vanilla and svelte (by @ChristopherVR) (b61f202)
  • Name every animation preset a user can reach, in every locale (by @ChristopherVR) (f99962d)
  • vue: Add the connector arrowhead controls, and make connectors clickable (by @ChristopherVR) (2b0976e)
  • Draw action affordances in every binding, and mark group children (by @ChristopherVR) (39ed47f)
  • Make connectors clickable and give all five the same arrowhead controls (by @ChristopherVR) (e482b12)
  • Give all five the same presenter console, and stop vanilla dropping the show (by @ChristopherVR) (bf861fd)

Bug Fixes ​

  • shared: Paint SVG-only pictures, honour srcRect crops, stop bold leaking (by @ChristopherVR) (ff866db)
  • Give every binding React's slide-show bar, and make slice clicks work (by @ChristopherVR) (31f30f7)
  • Play slide media the way the deck authored it (by @ChristopherVR) (855f140)

2.11.1 - 2026-07-31 ​

Bug Fixes ​

  • shared: Stop a morph gliding one text box into an unrelated one (by @ChristopherVR) (bc4789f)
  • shared: Stop a morph double-painting unchanged shapes, and dissolve text (by @ChristopherVR) (d4b3952)
  • Stop showing users raw OOXML tokens, and make Vanilla's point index work (by @ChristopherVR) (33d63ce)
  • Skip hidden slides in the show, and honour endWithBlackSlide (by @ChristopherVR) (2a9ef49)

2.11.0 - 2026-07-31 ​

Features ​

  • shared: Outline view, motion-path authoring, and chart marker resolution (by @ChristopherVR) (e6a3621)
  • Outline view, motion-path authoring and the missing chart controls (by @ChristopherVR) (278de2f)

Bug Fixes ​

  • core: Stop dropping a:pPr/@lvl when a paragraph's runs share one style (by @ChristopherVR) (03aa4ed)

2.10.0 - 2026-07-31 ​

Features ​

  • shared: Own the equation, media, reading-view and table-grid logic (by @ChristopherVR) (c33af39)
  • Wire reading view, the shared equation pipeline and a table data grid (by @ChristopherVR) (b731b52)

Bug Fixes ​

  • shared: Resolve linked text-box chains inside groups (by @ChristopherVR) (5e09586)

2.9.0 - 2026-07-31 ​

Features ​

  • shared: Give every referenced translation key a real entry (by @ChristopherVR) (8ff4461)
  • shared: Own the logic five bindings had each hand-ported (by @ChristopherVR) (60b9b0d)
  • svelte: Close the ribbon, inspector and ruler gaps against the reference (by @ChristopherVR) (f2e0684)
  • core: Model a gradient / pattern outline in structured form (by @ChristopherVR) (69322c9)
  • shared: Stroke a gradient outline as SVG instead of a flat border (by @ChristopherVR) (fc72324)
  • svelte: Paint a gradient outline with a stroked SVG path (by @ChristopherVR) (dd43f2d)
  • shared: Stroke a patterned outline with a real pattern tile (by @ChristopherVR) (9d8c3bd)
  • svelte: Stroke a patterned outline, not its bare foreground (by @ChristopherVR) (f11c0f5)
  • shared: Translate the File backstage and merge the stray key namespaces (by @ChristopherVR) (e56aa6d)

Bug Fixes ​

  • shared: Honour authored preset adjustments and emit parseable gradient CSS (by @ChristopherVR) (dbf5640)
  • svelte: Apply the gradient tile background-position (by @ChristopherVR) (7c3d664)
  • core: Honour a preset path's own coordinate space, and repair hexagon (by @ChristopherVR) (8e4a91d)
  • core: Rebuild flowChartTerminator from its spec Beziers (by @ChristopherVR) (0e81403)
  • core: Keep an inline field in the position it was authored in (by @ChristopherVR) (beb2067)
  • core: Rebuild sun as a disc plus eight detached rays (by @ChristopherVR) (cd2fcd4)
  • core: Round-trip the Selection Pane hide toggle (by @ChristopherVR) (14bdb23)
  • shared: Resolve a click on a group's child to the group (by @ChristopherVR) (88ef671)
  • shared: Flow linked text-box overflow in every binding (by @ChristopherVR) (abe1bb0)

Refactor ​

  • svelte: Clear the file-size debt, and the duplicate viewer state behind it (by @ChristopherVR) (830bcc9)

Testing ​

  • core: Pin issue #132 fill and adjustment parsing against the reporter deck (by @ChristopherVR) (06cd312)

2.8.0 - 2026-07-31 ​

Features ​

  • shared: Decide which slide-show clicks are a PowerPoint advance (by @ChristopherVR) (12ab5c8)

2.7.1 - 2026-07-31 ​

Bug Fixes ​

  • shared: Match PowerPoint's morph dissolve windows and half-turn direction (by @ChristopherVR) (661c250)
  • shared: Stop morph pairing a shape with the group that wraps it (by @ChristopherVR) (d240498)
  • core: Stop an interactive sequence adding a phantom click step (by @ChristopherVR) (65a4738)
  • shared: Resolve the timed slide auto-advance delay (by @ChristopherVR) (beba8cc)
  • svelte: Wire the backstage browse control and stretch its nav rail (by @ChristopherVR) (339adb2)
  • svelte: Make the slide show's transitions visible on a large display (by @ChristopherVR) (f8a8b8a)
  • svelte: Advance the slide show on a slide's authored timing (by @ChristopherVR) (3ce750a)

Refactor ​

  • shared: Break the morph-matching <-> morph-flatten import cycle (by @ChristopherVR) (92223c5)

2.7.0 - 2026-07-31 ​

Features ​

  • shared: Morph a !!-named shape across a grouping boundary (by @ChristopherVR) (c74847d)

Bug Fixes ​

  • shared: Morph rotates the short way round, like PowerPoint (by @ChristopherVR) (255d0b5)
  • shared: Honour the legacy spd speed, including for morph (by @ChristopherVR) (ab796b9)
  • shared: Keep a morphing object solid instead of dipping to the background (by @ChristopherVR) (5f2b518)

2.6.6 - 2026-07-30 ​

Bug Fixes ​

  • shared: Stop morph id-pairing shapes whose creationId GUIDs differ (by @ChristopherVR) (b9afc84)

2.6.5 - 2026-07-30 ​

Bug Fixes ​

  • core: Stamp the endParaRPr size on an empty paragraph's separator (by @ChristopherVR) (2b18374)
  • shared: PowerPoint-exact line height, blank-line strut, marker indent reset (by @ChristopherVR) (7f7181b)

2.6.4 - 2026-07-30 ​

Bug Fixes ​

  • shared: Restate the static transform in every morph keyframe (by @ChristopherVR) (075a645)

2.6.3 - 2026-07-30 ​

Bug Fixes ​

  • shared: Stop morph pairing nearby shapes of very different sizes; 2s default (by @ChristopherVR) (3d49c67)

2.6.2 - 2026-07-30 ​

Bug Fixes ​

  • shared: Crossfade a morph pair whose GROUP children changed (by @ChristopherVR) (7492f26)

2.6.1 - 2026-07-29 ​

Bug Fixes ​

  • core: Keep grouped text at its authored point size (by @ChristopherVR) (56f676a)
  • shared: Keep authored blank lines and give the bullet its hanging box (by @ChristopherVR) (0a8de56)
  • shared: Make morph animate a near-duplicate slide pair (by @ChristopherVR) (e73ade7)
  • svelte: Render authored blank lines and drop the bullet spacer (by @ChristopherVR) (a964ad1)

2.6.0 - 2026-07-27 ​

Features ​

  • shared: Morph transition render plan and paragraph strut basis (by @ChristopherVR) (94cfddd)

Bug Fixes ​

  • core: Parse morph, fontRef text colour, and unsized bullets correctly (by @ChristopherVR) (7607996)
  • svelte: Play morph transitions and re-base paragraph line boxes (by @ChristopherVR) (8c44caf)

2.5.3 - 2026-07-27 ​

Dependencies ​

  • deps: Update @lucide/svelte requirement from ^1.26.0 to ^1.27.0 (#121) (by @dependabot[bot]) (eec772a)
  • deps: Update emf-converter requirement from ^2.0.0 to ^2.0.2 (#122) (by @dependabot[bot]) (423034a)
  • deps: Update html2canvas-pro requirement from ^2.3.1 to ^2.3.2 (#124) (by @dependabot[bot]) (6ad6bce)

Chores ​

  • deps-dev: Update rollup requirement from ^4.62.2 to ^4.62.3 (#125) (by @dependabot[bot]) (61a7b66)

2.5.2 - 2026-07-27 ​

Bug Fixes ​

  • ci: Resolve workspace: ranges in every published manifest (by @ChristopherVR) (ea35290)

2.5.1 - 2026-07-26 ​

Testing ​

  • e2e: Cover remote presence geometry in every binding (by @ChristopherVR) (adb9b3c)

2.5.0 - 2026-07-26 ​

Features ​

  • shared: Lock the audience display out of edit mode (by @ChristopherVR) (79dc876)
  • shared: Seed a slide as fully built, and keep audience input inert (by @ChristopherVR) (6acdf5e)

Bug Fixes ​

  • core: Keep the click step's own start conditions (by @ChristopherVR) (755a4b2)
  • shared: Play a slide's opening build without a click (by @ChristopherVR) (9d0ecec)
  • svelte: Never show the editor in an audience display (by @ChristopherVR) (4b2c39b)
  • core: Paint useBgFill shapes with the slide background (by @ChristopherVR) (f819817)
  • shared: Ripple a by-paragraph build that also iterates (by @ChristopherVR) (73238d5)
  • svelte: Hold back on a back step, ignore audience input (by @ChristopherVR) (4794bbe)

2.4.0 - 2026-07-25 ​

Bug Fixes ​

  • svelte: Clear the build warnings and repair windows dts bundling (by @ChristopherVR) (40c170a)

Dependencies ​

  • deps: Update @lucide/svelte requirement from ^1.25.0 to ^1.26.0 (#113) (by @dependabot[bot]) (66c656f)
  • deps: Update ai requirement from ^7.0.35 to ^7.0.37 (#115) (by @dependabot[bot]) (71d200d)

Chores ​

  • deps-dev: Update tsdown requirement (#109) (by @dependabot[bot]) (f83aa0a)
  • deps-dev: Update happy-dom requirement from ^20.11.0 to ^20.11.1 (#116) (by @dependabot[bot]) (0a2f499)

2.3.0 - 2026-07-25 ​

Features ​

  • shared: Rule for advancing a show from the presenter slide pane (by @ChristopherVR) (ee2d0f5)

Bug Fixes ​

  • core: Rotate OOXML gradient angles into CSS space (by @ChristopherVR) (eebf128)
  • shared: Rotate OOXML gradient angles into CSS space (by @ChristopherVR) (406d78b)
  • shared: Parse playFrom media commands in linear time (by @ChristopherVR) (60820b1)
  • svelte: Restore double-tap to edit under finger-sized handles (by @ChristopherVR) (956281e)
  • Svelte border width for selected element (by @ChristopherVR) (b1dccd1)
  • core: Honour a:noFill and stop painting hidden fills/lines (by @ChristopherVR) (ae13541)

2.2.1 - 2026-07-24 ​

Bug Fixes ​

  • core: Preserve native bullets and boundary spaces (#107) (7ed0971)
  • svelte: Enable touch resize of elements on mobile (by @ChristopherVR) (6cab6d6)

2.2.0 - 2026-07-24 ​

Features ​

  • shared: Powerpoint-accurate slide-show keyboard map (by @ChristopherVR) (fdf55d4)
  • vanilla: Follow PowerPoint's slide-show shortcuts (by @ChristopherVR) (629903c)
  • svelte: Follow PowerPoint's slide-show shortcuts (by @ChristopherVR) (7d349f3)
  • react: Give the slide-show menu PowerPoint's full command set (by @ChristopherVR) (33c826d)

2.1.0 - 2026-07-23 ​

Features ​

  • shared: Live-patch channel for interim collaboration state (by @ChristopherVR) (efdcc1e)
  • shared: Make a departing collaborator actually leave the room (by @ChristopherVR) (6af3d8c)

Bug Fixes ​

  • svelte: Publish inline-editor typing to peers before commit (by @ChristopherVR) (ad63f5b)
  • svelte: Draw chrome icons with lucide, not text glyphs (by @ChristopherVR) (8df0a37)
  • svelte: Stack the follow bar above the mobile bottom bar (by @ChristopherVR) (7f2140f)
  • svelte: Leave the collab room when the document is destroyed (by @ChristopherVR) (17bd9f1)
  • svelte: Anchor the follow bar top-centre and trim the collab controller (by @ChristopherVR) (daade43)

Other ​

  • Svelte lucide icon sweep + follow bar clears the mobile bottom bar (by @ChristopherVR) (8b99577)
  • Peers leave the room synchronously on frame teardown (no ghost collaborators) (by @ChristopherVR) (ae9acad)

Refactor ​

  • shared: Split the live-patch module and escape its NUL key separator (by @ChristopherVR) (6362b22)
  • svelte: Lift the collab controller's effects into their own module (by @ChristopherVR) (b3b9acd)

2.0.0 - 2026-07-23 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)
  • shared: Ai config, loader and bridge contracts (by @ChristopherVR) (1c40e28)
  • vue: Ai bridge and chat session composables (by @ChristopherVR) (0f5cfd3)
  • shared: Indexeddb-first ai chat history store (by @ChristopherVR) (88920f2)
  • shared: Rebuild AI assistant tools on pptx-viewer-mcp (by @ChristopherVR) (da1c31e)
  • core: Upgrade emf-converter to 2.0.0 (breaking) (by @ChristopherVR) (effa4e5)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)
  • build: Restore pptx-viewer-shared/ai vitest alias after main merge (by @ChristopherVR) (f878be8)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)
  • Friendly 2.0.0 changelog for root and packages (by @ChristopherVR) (f56564d)

Testing ​

  • shared: Opt-in live gpt-4o-mini ai integration test (by @ChristopherVR) (48622f1)

Build & CI ​

  • shared: Keep the ai SDK external across bindings (by @ChristopherVR) (fa5e6b7)
  • Pin Vue/Angular/Svelte to exact TypeScript 6.0.3 (by @ChristopherVR) (3d80082)

1.39.0 - 2026-07-21 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.38.0 - 2026-07-21 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.37.0 - 2026-07-21 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.36.0 - 2026-07-21 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.35.0 - 2026-07-21 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.34.0 - 2026-07-21 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.33.0 - 2026-07-20 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.32.0 - 2026-07-20 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.31.0 - 2026-07-20 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.30.0 - 2026-07-20 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.29.0 - 2026-07-20 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.28.0 - 2026-07-20 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.27.0 - 2026-07-20 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.26.0 - 2026-07-19 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.25.0 - 2026-07-19 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.24.0 - 2026-07-19 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.23.0 - 2026-07-19 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.22.0 - 2026-07-19 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.21.0 - 2026-07-19 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.20.0 - 2026-07-19 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.19.0 - 2026-07-19 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.18.0 - 2026-07-19 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Bug Fixes ​

  • shared: Enforce transition advanceOnClick in Vue/Angular/Svelte/Vanilla (#82) (by @ChristopherVR) (66d489b)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.17.0 - 2026-07-19 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.16.0 - 2026-07-19 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.15.0 - 2026-07-19 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.14.0 - 2026-07-18 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.13.0 - 2026-07-18 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.12.0 - 2026-07-18 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.11.0 - 2026-07-18 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.10.0 - 2026-07-18 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.9.0 - 2026-07-18 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.8.0 - 2026-07-18 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.7.0 - 2026-07-18 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.6.0 - 2026-07-18 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

Documentation ​

  • Correct and expand the per-package npm readmes (by @ChristopherVR) (46f7c57)

1.5.0 - 2026-07-18 ​

Features ​

  • svelte: Export Ribbon/ViewerToolbar + createViewerState factory (by @ChristopherVR) (8a16608)

1.4.0 - 2026-07-18 ​

Dependencies ​

  • deps: Update dependencies to latest and migrate core/shared/locales to TypeScript 7 (by @ChristopherVR) (cc72948)

1.3.0 - 2026-07-18 ​

Bug Fixes ​

  • svelte: Ship jszip and fast-xml-parser as real dependencies (by @ChristopherVR) (20d8cf2)

1.2.0 - 2026-07-18 ​

Features ​

  • svelte: Ribbon and chrome parity with React (by @ChristopherVR) (41b5bf1)
  • svelte: Full React-parity Properties sections in the inspector (by @ChristopherVR) (2afd746)

1.1.0 - 2026-07-17 ​

Features ​

  • svelte: Add theme/language switching and a real Account page (by @ChristopherVR) (499fef4)

Other ​

  • Integrate release version bumps (by @ChristopherVR) (4b3893f)
  • Integrate Svelte theme/language switching and Account page (by @ChristopherVR) (2f1488e)

1.0.0 - 2026-07-17 ​

Features ​

  • svelte: Add hiddenActions prop to hide individual toolbar/ribbon actions (by @ChristopherVR) (dbc6a7d)

Bug Fixes ​

  • svelte: Ship extracted stylesheet instead of runtime-injected CSS (by @ChristopherVR) (80270a1)

0.9.1 - 2026-07-17 ​

Dependencies ​

  • deps: Update outdated dependencies within semver ranges (by @ChristopherVR) (3249d8e)

0.9.0 - 2026-07-17 ​

Features ​

  • file: Use Lucide icons in Svelte and Vanilla (by @ChristopherVR) (a956f1b)

0.8.1 - 2026-07-16 ​

Bug Fixes ​

  • e2e: Relax media pause timing check (by @ChristopherVR) (17e5116)

0.8.0 - 2026-07-16 ​

Documentation ​

  • packages: Add package-specific readme visuals (by @ChristopherVR) (9e20f13)

0.7.0 - 2026-07-15 ​

Features ​

  • viewer: Complete shared e2e parity (by @ChristopherVR) (170bc74)

Bug Fixes ​

  • viewer: Align inspector and status chrome (by @ChristopherVR) (0a4b38a)
  • viewer: Align responsive mobile chrome (by @ChristopherVR) (547f98c)

Testing ​

  • viewer: Enforce framework-neutral e2e parity (by @ChristopherVR) (7389c7e)

0.6.0 - 2026-07-13 ​

Features ​

  • bindings: Close svelte and vanilla parity gaps (by @ChristopherVR) (9cb9d7e)

Bug Fixes ​

  • build: Restore compatibility after dependency updates (by @ChristopherVR) (ddbfae6)

Dependencies ​

  • deps: Update html2canvas-pro to 2.2.3 (by @dependabot[bot]) (0fe015b)
  • deps: Update fast-xml-parser to 5.10.0 (by @dependabot[bot]) (6080273)
  • deps: Update dompurify to 3.4.12 (by @dependabot[bot]) (00a6ca4)
  • deps: Update api-extractor to 7.58.9 (by @dependabot[bot]) (0225e1f)
  • deps: Update minor and patch dependencies (by @dependabot[bot]) (5cd81fb)
  • deps: Update typescript to 7.0.2 (by @dependabot[bot]) (0a7c1f1)

0.5.1 - 2026-07-13 ​

Bug Fixes ​

  • svelte: Raise smart-art-3d-view's flushMount tick budget to de-flake CI (by @ChristopherVR) (cefb575)
  • core: Open Office-encrypted pptx files (by @ChristopherVR) (51aa670)

0.5.0 - 2026-07-11 ​

Features ​

  • core: Add canonical collaboration field-schema (by @ChristopherVR) (cc78c1e)
  • svelte: Full collaboration presence + UI (Share/Broadcast/cursors) (by @ChristopherVR) (b5dda6e)
  • shared: Add the office colour swatch catalogue (by @ChristopherVR) (41135a0)
  • svelte: Add ink-stroke editing state (EditorInkController) (by @ChristopherVR) (9f8d2ec)
  • svelte: Wire pen/highlighter/eraser pointer gestures on the stage (by @ChristopherVR) (25540a6)
  • svelte: Add the Draw ribbon tab (by @ChristopherVR) (90bb39b)

Bug Fixes ​

  • shared: Close CRDT allowlist data-loss gaps, add binary asset map (by @ChristopherVR) (60ad222)
  • svelte: Keep zoom/fullscreen/notes controls always visible in the ribbon (by @ChristopherVR) (00fd396)

0.4.0 - 2026-07-11 ​

Features ​

  • svelte: Add chart insert to the Insert tab (by @ChristopherVR) (b4dbbc3)
  • svelte: Add equation insert to the Insert tab (by @ChristopherVR) (5d8a5fd)
  • svelte: Add SmartArt insert to the Insert tab (by @ChristopherVR) (6a5a12e)
  • svelte: Add media insert factory for the Insert tab (by @ChristopherVR) (3fe31b7)
  • svelte: Add action button insert to the Insert tab (by @ChristopherVR) (22136ca)
  • svelte: Add field insert to the Insert tab (by @ChristopherVR) (e8c4f7f)
  • svelte: Wire the new Insert actions into the ribbon (by @ChristopherVR) (105a338)
  • svelte: Add slide-background/transition/animation editor actions (by @ChristopherVR) (f032a47)
  • svelte: Add Design, Transitions, and Animations ribbon tabs (by @ChristopherVR) (86caaec)
  • shared: Add text wrap/autofit, image adjustments, and table inspector helpers (by @ChristopherVR) (54b2eda)
  • svelte: Add fill/stroke opacity and gradient to the inspector (by @ChristopherVR) (34cb1ab)
  • svelte: Add text properties to the inspector panel (by @ChristopherVR) (7d8819b)
  • svelte: Add image adjustment and crop controls to the inspector (by @ChristopherVR) (fbe0f85)
  • svelte: Add table properties to the inspector panel (by @ChristopherVR) (d87360f)

Documentation ​

  • shared: Add i18n keys for the vanilla Design tab theme gallery (by @ChristopherVR) (593ea23)

0.3.0 - 2026-07-11 ​

Features ​

  • svelte: Add ribbon editor logic (clipboard, slides, arrange, text/paragraph, find-replace) (by @ChristopherVR) (12d53da)
  • svelte: Add tabbed ribbon shell with File/Home/Insert/View tabs (by @ChristopherVR) (4f391ab)

Bug Fixes ​

  • shared,react,vue,angular: Make the Aa Change Case dropdown actually rewrite text (by @ChristopherVR) (d84fd78)
  • svelte: Prune the selection on undo/redo so ribbon buttons re-disable (by @ChristopherVR) (7539b70)

Refactor ​

  • shared: Extract clipboard, shape-preset, and text-format catalogs from react (by @ChristopherVR) (b9d7cc9)
  • svelte: Multi-element selection state (by @ChristopherVR) (a259d5d)
  • shared: Dedupe change-case logic against text-case-transform (by @ChristopherVR) (d007c07)

0.2.0 - 2026-07-11 ​

Features ​

  • svelte: Collaboration and autosave (by @ChristopherVR) (240bc2c)

0.1.3 - 2026-07-11 ​

Documentation ​

  • svelte: Restyle readme to match the established binding readmes (by @ChristopherVR) (5328bc8)

0.1.2 - 2026-07-10 ​

Features ​

  • core: Add signature-node module and shared signature utilities (by @ChristopherVR) (e7cb263)
  • vue: Add pptx-vue-viewer package + bundled pptx-viewer-shared (by @ChristopherVR) (1b7a958)
  • shared: Add Three.js SmartArt 3D model + scene runtime (by @ChristopherVR) (f949213)
  • shared: Add canonical i18n translation dictionary (by @ChristopherVR) (429e386)
  • core,cli: Add react, angular, vue to npm keywords (by @ChristopherVR) (528ec61)
  • svelte: Add pptx-svelte-viewer Svelte 5 binding (viewer) (by @ChristopherVR) (d5c9164)
  • svelte: Render table, chart, smartArt, media, ink, and ole elements (by @ChristopherVR) (5077d82)
  • vanilla,svelte: Opt-in 3D SmartArt renderer (by @ChristopherVR) (15337c9)
  • svelte: PNG and PDF export (by @ChristopherVR) (b1c273e)

Bug Fixes ​

  • Enable vitest globals in all packages to fix expectTypeOf errors (by @ChristopherVR) (6d90d72)
  • test: Add i18n mocks to react tests and bump versions to 1.2.0 (by @ChristopherVR) (2c1c962)
  • deps: Pin @xmldom/xmldom to 0.8.x in core to fix build (by @ChristopherVR) (2ed7b2e)
  • core: Declare jszip and fast-xml-parser as runtime dependencies (by @ChristopherVR) (b6636be)
  • angular: Bundle pptx-viewer-core and fix demo JIT + Vue demo alias (by @ChristopherVR) (78838ec)
  • Missing document links (by @ChristopherVR) (f52bd6f)
  • core: Correct install docs and drop the retired @christophervr/pptx-viewer alias (by @ChristopherVR) (6544b4e)
  • core,angular: Revert xmldom to 0.8.x and fix shared import specifiers (by @ChristopherVR) (29eda31)

Other ​

  • smartart: Snapshot in-progress SmartArt session work (by @ChristopherVR) (0cac22f)
  • Reconcile with origin/main before push (by @ChristopherVR) (b8c46bc)
  • Reconcile with origin/main before push (by @ChristopherVR) (10acef8)
  • Reconcile with origin/main before push (by @ChristopherVR) (0ecd3d9)

Refactor ​

  • react: Consume theme + loader from pptx-viewer-shared (by @ChristopherVR) (1b93d1f)
  • core: Consume emf-converter and mtx-decompressor from npm (by @ChristopherVR) (2f6013d)
  • shared: Extract text-rendering pure logic (line-height, warp, effects) (by @ChristopherVR) (11c8d22)

Documentation ​

  • Restructure root README, elevate limitations, fix outdated claims (by @ChristopherVR) (86dcda9)
  • Rewrite limitations with technical explanations and remove inaccurate claims (by @ChristopherVR) (ac4bc84)
  • readme: Npm-friendly READMEs — hero image, capabilities & install first (by @ChristopherVR) (c843d19)
  • Streamline npm READMEs and add badges, screenshots, demo links (by @ChristopherVR) (92e980d)
  • Sharpen npm descriptions and keywords for discoverability (by @ChristopherVR) (8fea56d)
  • core: Reword README in plain language (by @ChristopherVR) (793c26e)
  • Remove completed ROADMAP and PORTING trackers, scrub stale references (by @ChristopherVR) (8a745a1)
  • core: Remove explicit jszip/fast-xml-parser mention from install section (by @ChristopherVR) (6b72906)

Build & CI ​

  • Independent per-package versioning, tags, and changelogs (by @ChristopherVR) (79595d9)

Dependencies ​

  • deps: Update all dependencies to latest (by @ChristopherVR) (e3287c0)
  • deps: Bump all workspace manifest floors to latest (by @ChristopherVR) (890c33d)
  • deps: Update dependencies within semver ranges (by @ChristopherVR) (d472b58)
  • deps: Declare yjs, y-websocket, and y-webrtc across bindings (by @ChristopherVR) (27a2849)

Chores ​

  • Add license files, NOTICE, and package metadata for npm publishing (by @ChristopherVR) (9464bb8)
  • Bump all packages to v1.1.0 and remove remaining MyClawAssist refs (by @ChristopherVR) (c386511)
  • Bump all packages to 1.x.1 patch versions (by @ChristopherVR) (c75205a)
  • Bump all packages to minor versions for SDK table support (by @ChristopherVR) (2d4b635)
  • Bump dependencies to latest and minor-bump packages for parity work (by @ChristopherVR) (da19fdf)
  • Roll TypeScript back to 5.9.x; quiet new oxlint vitest rules (by @ChristopherVR) (713c020)
  • Relicense from MIT to Apache-2.0 (by @ChristopherVR) (e12f926)
  • Bump vanilla + svelte to 0.1.1; clarify view-only in READMEs (by @ChristopherVR) (0bc44ab)

Changelog ​

All notable changes to pptx-svelte-viewer are documented in this file.

Released under the Apache-2.0 License.