Skip to content

pptx-vue-viewer

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

3.1.4 - 2026-08-29

Bug Fixes

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

3.1.3 - 2026-08-29

Bug Fixes

  • Vertically center the slide canvas to match svelte (by @ChristopherVR) (c5ff901)
  • 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.1.2 - 2026-08-28

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)
  • vue: Repair print, drop Package for Sharing, wire Options behavior (by @ChristopherVR) (1b01af0)
  • vue: Use the canonical Protected View i18n keys in the banner (by @ChristopherVR) (e84718b)
  • vue: Stop MobileToolbar rendering alongside the desktop ribbon (by @ChristopherVR) (9885f93)

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)
  • charts: Stop 3-D charts from flashing their 2D rendering (by @ChristopherVR) (18802e0)

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: 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)
  • vue: Consume the shared render decisions for the OpenXML fidelity fixes (by @ChristopherVR) (f0085f4)
  • 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)
  • vue: Consume the shared decisions for the second parity wave (by @ChristopherVR) (983bbaa)

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)
  • vue: Wire interactive 3D surface chart scene (opt-in) (by @ChristopherVR) (3597bec)

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)
  • vue: Port master/layout background editing to the inspector (by @ChristopherVR) (43cf4c4)
  • shared: Add patchChartData, the type-aware chart data patcher (by @ChristopherVR) (5309296)
  • shared: Add pptx.group.childCount/groupedElement i18n keys (by @ChristopherVR) (f5557e1)
  • vue: Add the missing group/OLE element info cards (by @ChristopherVR) (e117a6c)
  • vue: Add the missing transition click-to-play preview thumbnail (by @ChristopherVR) (2e3c502)

Bug Fixes

  • vue: Stop closing Header & Footer dialog on every field edit (by @ChristopherVR) (b41d0d0)
  • shared: Sanitize every download filename, not just callers that remember to (by @ChristopherVR) (7bdf73b)
  • vue: Route paste through the shared clipboard codec (by @ChristopherVR) (587967d)
  • shared: Floor animation timeline bar width to a visible minimum (by @ChristopherVR) (918ac2f)
  • vue: Repoint chart data-grid ops onto shared, fixing a locale bug (by @ChristopherVR) (a2248c3)
  • vue: Stop the sorter's context menu closing itself on open (by @ChristopherVR) (6576b72)

Refactor

  • react,vue,svelte,vanilla: Repoint media-type check onto shared (by @ChristopherVR) (bb8e95c)
  • vue: Repoint chart type-change patch onto shared patchChartData (by @ChristopherVR) (9bb70cc)

Documentation

  • vue,angular: Fix stale comments claiming already-shipped features (by @ChristopherVR) (e365950)

2.21.6 - 2026-08-21

Bug Fixes

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

2.21.5 - 2026-08-21

Bug Fixes

  • vue: Remove duplicate touch double-tap tracker in table cells (by @ChristopherVR) (c378a29)

2.21.4 - 2026-08-20

Bug Fixes

  • 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.3 - 2026-08-20

Bug Fixes

  • ci: Resolve oxlint errors and warnings blocking CI lint job (by @ChristopherVR) (a2031be)

2.21.2 - 2026-08-20

Bug Fixes

  • shared: Describe stripped invisible characters by code point, not literally (by @ChristopherVR) (9ddca51)

2.21.1 - 2026-08-20

Bug Fixes

  • mobile: Repoint react/vue/angular mobile sheet toggling onto shared (by @ChristopherVR) (d8e6228)
  • shared: Repoint options numeric-control clamp onto shared helper (by @ChristopherVR) (138dfe5)

Refactor

  • react,vue,angular: Repoint chart value-drag onto shared engine (by @ChristopherVR) (1d5fd6a)
  • shared,react,vue,vanilla: Repoint comment mutations onto shared comments-list (by @ChristopherVR) (0eb28dc)
  • react,vue: Repoint SmartArt chrome style onto shared buildChromeStyle (by @ChristopherVR) (2a9602f)

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

  • vue: Use shared per-occurrence find/replace engine (by @ChristopherVR) (81f197d)
  • vue: Disable mobile bottom bar tabs with no slides loaded (by @ChristopherVR) (967f9b3)
  • angular: Wire Home ribbon Reset/Fill/Outline through shared commands (by @ChristopherVR) (c06b894)
  • vue: Clamp animation duration/delay/repeat via shared setters (by @ChristopherVR) (595f9c5)
  • 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)
  • vue: Mobile Comments/Notes double header, Share dialog user list (by @ChristopherVR) (9091398)

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: Bump @ai-sdk/vue from 4.0.66 to 4.0.65 (#163) (by @dependabot[bot]) (996f840)

Chores

  • deps-dev: Bump jsdom from 29.1.1 to 30.0.1 (#171) (by @dependabot[bot]) (cfe38c9)
  • 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)
  • vue: Make the controls that render actually do something (by @ChristopherVR) (11686f0)
  • vue: Thread the ribbon props the toolbar sections require (by @ChristopherVR) (c86209e)
  • vue: Complete the custom-fonts wiring through the settings dialog (by @ChristopherVR) (5e6d71a)
  • vue: Drop a duplicated SettingsCustomFontsSection import (by @ChristopherVR) (e136ad0)
  • core: Close the round-trip defects the corpus harness exposed (by @ChristopherVR) (2011c66)
  • vue: Autosave template edits and render SmartArt labels (by @ChristopherVR) (1e45359)

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)

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)
  • vue: Take the comment id from shared (by @ChristopherVR) (b8d2950)

2.17.6 - 2026-08-10

Bug Fixes

  • shared: Render cached SmartArt shapes and transparent table headers as authored (by @ChristopherVR) (24ec6b4)
  • react: Connect the Home tab's Layout control to the slide it acts on (by @ChristopherVR) (6cb76bb)

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)
  • deps: Bump @ai-sdk/vue from 4.0.58 to 4.0.56 (#154) (by @dependabot[bot]) (684248e)
  • deps: Update vue-tsc requirement from ^3.3.8 to ^3.3.9 (#159) (by @dependabot[bot]) (665ef13)

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)
  • vue: Route the media fallback through the shared surface rule (by @ChristopherVR) (9eec996)
  • 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)
  • vue: Mark missing media as not found, not as playable (by @ChristopherVR) (1931659)

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)
  • vue: Reach the AI assistant on mobile and scale resize handles (by @ChristopherVR) (f2795d5)
  • 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)

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

  • Make an inspector edit exactly one undo step, in every binding (by @ChristopherVR) (48733d4)
  • Let the presenter finish the show, and keep scrubbers out of its panes (by @ChristopherVR) (c7c12bc)

Refactor

  • vue: Drop the orphaned useSelection composable (by @ChristopherVR) (f5f31f3)
  • 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)

Refactor

  • vue: Decompose the two largest view-layer files (by @ChristopherVR) (0bd2568)

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)
  • vue: Close the ribbon, context-menu and field-context gaps (by @ChristopherVR) (8273f08)
  • 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)
  • vue: Paint a gradient outline with a stroked SVG path (by @ChristopherVR) (33d8b10)
  • shared: Stroke a patterned outline with a real pattern tile (by @ChristopherVR) (9d8c3bd)
  • vue: Stroke a patterned outline, not its bare foreground (by @ChristopherVR) (72e2a4c)
  • 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)
  • vue: Apply the gradient tile background-position (by @ChristopherVR) (eafb597)
  • 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)

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)

Bug Fixes

  • vue: Advance the slide show on a slide's authored timing (by @ChristopherVR) (781d0d1)
  • vue: Paint a video's poster frame and hide its transport in a show (by @ChristopherVR) (59c2852)

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)
  • vue: Make the slide show's transitions visible on a large display (by @ChristopherVR) (8c6acd9)
  • shared: Resolve the timed slide auto-advance delay (by @ChristopherVR) (beba8cc)

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)

Testing

  • vue: Expect PowerPoint's 1.2 default line-height (by @ChristopherVR) (1023888)

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)
  • vue: Render authored blank lines and drop the bullet spacer (by @ChristopherVR) (1e4d270)

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)
  • vue: Play morph transitions and re-base paragraph line boxes (by @ChristopherVR) (99df808)

2.5.3 - 2026-07-27

Dependencies

  • 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)

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)
  • vue: Never show the editor in an audience display (by @ChristopherVR) (dc1e2ee)
  • core: Paint useBgFill shapes with the slide background (by @ChristopherVR) (f819817)
  • shared: Ripple a by-paragraph build that also iterates (by @ChristopherVR) (73238d5)
  • vue: Hold back on a back step, ignore audience input (by @ChristopherVR) (45c82cf)

2.4.0 - 2026-07-25

Dependencies

  • 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)
  • core: Honour a:noFill and stop painting hidden fills/lines (by @ChristopherVR) (ae13541)

2.2.2 - 2026-07-24

Bug Fixes

  • core: Preserve native bullets and boundary spaces (#107) (7ed0971)

2.2.1 - 2026-07-24

Bug Fixes

  • vue: Rebuild the mobile bottom bar as React's five-tab nav (by @ChristopherVR) (5c704ed)

2.2.0 - 2026-07-24

Features

  • shared: Powerpoint-accurate slide-show keyboard map (by @ChristopherVR) (fdf55d4)
  • vue: Follow PowerPoint's slide-show shortcuts (by @ChristopherVR) (4ff2da9)
  • vanilla: Follow PowerPoint's slide-show shortcuts (by @ChristopherVR) (629903c)
  • react: Give the slide-show menu PowerPoint's full command set (by @ChristopherVR) (33c826d)
  • locales: Translate the new slide-show menu commands (by @ChristopherVR) (21952d7)

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

  • vue: Render the mobile bottom bar with lucide icons (by @ChristopherVR) (341cdb4)
  • vue: Draw toolbar and backstage icons with lucide (by @ChristopherVR) (0ca967a)
  • vue: Draw presentation-mode icons with lucide (by @ChristopherVR) (a6cf141)
  • vue: Draw panel and inspector icons with lucide (by @ChristopherVR) (860a057)
  • vue: Publish inline-editor typing to peers before commit (by @ChristopherVR) (4aafe84)
  • vue: Leave the collab room when the document is destroyed (by @ChristopherVR) (aa12464)

Other

  • Vue icon-parity sweep (glyphs to lucide-vue-next) (by @ChristopherVR) (577b1c5)
  • Live collaboration preview for drag/resize geometry and inline typing (by @ChristopherVR) (26a7069)
  • 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)

2.0.1 - 2026-07-23

Bug Fixes

  • vue: Stop double-applying zoom to remote cursor/selection overlays (by @ChristopherVR) (1ca4e67)

2.0.0 - 2026-07-23

Features

  • vue: Rename unstable subpath to internals and unify collab API (by @ChristopherVR) (8bcf4e7)
  • shared: Ai config, loader and bridge contracts (by @ChristopherVR) (1c40e28)
  • vue: Ai bridge and chat session composables (by @ChristopherVR) (7143ee7)
  • 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

  • build: Restore pptx-viewer-shared/ai vitest alias after main merge (by @ChristopherVR) (f878be8)

Documentation

  • 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.24.5 - 2026-07-19

Bug Fixes

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

1.24.4 - 2026-07-19

Bug Fixes

  • core: Write sp3d colours as valid hex and preserve scene3d (#67, #86) (by @ChristopherVR) (d30f5a7)
  • core: Parse and render group rotation and flip (#70) (by @ChristopherVR) (5bb820a)
  • core: Resolve table-style borders from tcBdr (#71) (by @ChristopherVR) (1e8c072)
  • shared: Render per-point chart dPt fills and pie varyColors (#72) (by @ChristopherVR) (6184c10)
  • core: Parse gradient and pattern fills on SmartArt dsp shapes (#73) (by @ChristopherVR) (6b94c9a)
  • core: Decode real InkML contentPart traces to SVG paths (#74) (by @ChristopherVR) (8204f7c)
  • core: Resolve themed bullet colour via parseColor (#75) (by @ChristopherVR) (ba311d5)
  • core: Honour fly-in/out animation direction via presetSubtype (#76) (by @ChristopherVR) (316a7db)
  • core: Parse p15 prstTrans transitions and stop spurious cut (#77) (by @ChristopherVR) (a32260e)
  • core: Serialize justLow/dist/thaiDist paragraph alignment (#78) (by @ChristopherVR) (59a882a)
  • core: Flag embedded media as embedded, not linked (#79) (by @ChristopherVR) (0decc64)

1.24.3 - 2026-07-19

Bug Fixes

  • core: Themed background text, colour and geometry fidelity (by @ChristopherVR) (a8fc2be)
  • shared: Render freeform fills via clip-path and correct flip/rotate order (by @ChristopherVR) (7122f43)

1.24.2 - 2026-07-19

Bug Fixes

  • core: Stop truncating interleaved custom-geometry paths (#66) (by @ChristopherVR) (9bbac7d)

Performance

  • core: Cache layout/master XML during background resolution (by @ChristopherVR) (9eea305)

1.24.1 - 2026-07-18

Bug Fixes

  • core: Load themed backgrounds and inherited placeholders (#66) (by @ChristopherVR) (bed627b)

1.24.0 - 2026-07-18

Features

  • shared: PowerPoint File > Options parity model (by @ChristopherVR) (b1f041d)
  • vue: PowerPoint-style File > Options dialog (by @ChristopherVR) (3fe2b3f)

1.23.2 - 2026-07-18

Documentation

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

1.23.1 - 2026-07-18

Bug Fixes

  • core: Preserve OMML sibling order through parse, save, and markdown (by @ChristopherVR) (54e5de5)
  • core: Resolve ReDoS and prototype pollution in OMML sibling-order scan (by @ChristopherVR) (2eef210)

Refactor

  • shared: Emit core's ordered-key convention for interleaved OMML (by @ChristopherVR) (81db024)

1.23.0 - 2026-07-18

Features

  • vue: Export RibbonToolbar for independent composition (by @ChristopherVR) (00a57ca)

Dependencies

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

1.22.1 - 2026-07-18

Bug Fixes

  • vue: Single slide region and marker-free static stages (by @ChristopherVR) (fa3b635)

1.22.0 - 2026-07-18

Features

  • vue: Tabbed default inspector at React parity (by @ChristopherVR) (c057f5c)
  • vue: Port React TagsSection with tag persistence on save (by @ChristopherVR) (cd110c4)

Bug Fixes

  • vue: Show "All saved" for settled autosave state like React (by @ChristopherVR) (b154e59)
  • vue: Stop the 24px tap-target floor from ballooning small controls (by @ChristopherVR) (f8a0ed8)

1.21.0 - 2026-07-17

Features

  • vue: Add theme/language switching and a real Account page (by @ChristopherVR) (234dd01)

Other

  • Integrate release version bumps (by @ChristopherVR) (4b3893f)
  • Integrate Vue theme/language switching and Account page (by @ChristopherVR) (0f8915a)

1.20.0 - 2026-07-17

Features

  • vue: Add hiddenActions prop to hide individual toolbar/ribbon actions (by @ChristopherVR) (2e917df)

1.19.1 - 2026-07-17

Dependencies

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

1.19.0 - 2026-07-17

Features

  • core: Preserve DrawingML image color effects (by @ChristopherVR) (5ed726d)
  • core: Model PresentationML view geometry (by @ChristopherVR) (3b07978)
  • core: Round-trip ChartML markers and data points (by @ChristopherVR) (ae8edc5)
  • shared: Build package sharing readmes (by @ChristopherVR) (01a9bd6)
  • vue: Expose collaboration building blocks (by @ChristopherVR) (4679574)
  • core: Add DiagramML definition headers (by @ChristopherVR) (314f9fa)
  • core: Complete DrawingML alpha effects (by @ChristopherVR) (3a402f4)
  • core: Add ChartML print settings (by @ChristopherVR) (f519b19)
  • shared: Compute virtual thumbnail ranges (by @ChristopherVR) (9edde91)
  • core: Edit DiagramML constraints and rules (by @ChristopherVR) (01f1ed2)
  • core: Complete PresentationML print properties (by @ChristopherVR) (671f348)
  • core: Add ChartML protection (by @ChristopherVR) (e09b1a9)
  • core: Export print and protection types (by @ChristopherVR) (ea228d6)
  • shared: Group slides by section (by @ChristopherVR) (b8eb51d)
  • core: Edit DiagramML layout algorithms (by @ChristopherVR) (42e7dd3)
  • core: Complete ChartML pivot sources (by @ChristopherVR) (afb317a)
  • core: Complete DrawingML audio metadata (by @ChristopherVR) (226c917)
  • core: Complete PresentationML embedded fonts (by @ChristopherVR) (5d54284)
  • core: Edit DiagramML layout control flow (by @ChristopherVR) (74fb263)
  • core: Complete PresentationML kinsoku (by @ChristopherVR) (9cc5604)
  • core: Edit ChartML pivot formats (by @ChristopherVR) (87a646a)
  • shared: Compute live document statistics (by @ChristopherVR) (13159a2)
  • core: Export rich elements as SVG (by @ChristopherVR) (508fc6c)
  • core: Persist chart palette and axis positions (by @ChristopherVR) (69b05bd)
  • shared: Resolve image source effects (by @ChristopherVR) (7400764)
  • vue: Add vector SVG export and printing (by @ChristopherVR) (e75d4ec)
  • vue: Apply live viewer settings (by @ChristopherVR) (d7c2bb6)
  • core: Render funnel charts in SVG exports (by @ChristopherVR) (efb6c36)
  • core: Author SDK funnel ChartEx parts (by @ChristopherVR) (73265f4)
  • core: Author SDK waterfall ChartEx parts (by @ChristopherVR) (e5ff15b)
  • shared: Render chart axis tick formatting (by @ChristopherVR) (5c22a9b)
  • core: Author SDK treemap ChartEx parts (by @ChristopherVR) (9264fad)
  • core: Round-trip sunburst hierarchy (by @ChristopherVR) (3cc868e)
  • vue: Add action settings inspector (by @ChristopherVR) (7a35918)
  • bindings: Wire deep inspector panels (by @ChristopherVR) (1ce5e9b)
  • core: Round-trip PowerPoint slide Zoom (by @ChristopherVR) (624c853)
  • core: Author SDK box-whisker ChartEx parts (by @ChristopherVR) (202496f)
  • shared: Render ChartEx sunburst hierarchy (by @ChristopherVR) (0507e6f)
  • core: Author histogram and Pareto ChartEx parts (by @ChristopherVR) (b8d779c)
  • core: Round-trip PowerPoint section Zoom (by @ChristopherVR) (67a162f)
  • vue: Expose header and footer editor (by @ChristopherVR) (bc80f9d)
  • shared: Add media trim timeline helpers (by @ChristopherVR) (c8cc257)
  • shared: Render ChartEx distribution options (by @ChristopherVR) (f0d2c22)
  • core: Author SDK region-map ChartEx parts (by @ChristopherVR) (9d0c676)
  • shared: Render Summary Zoom section tiles (by @ChristopherVR) (5266e10)
  • core: Round-trip PowerPoint Summary Zoom (by @ChristopherVR) (27c5671)
  • shared: Honor category axis ordering and ticks (by @ChristopherVR) (45f7c1f)
  • core: Author embedded 3D models (by @ChristopherVR) (7189466)
  • vue: Preview relationship backed media (by @ChristopherVR) (e37a7f9)
  • core: Preserve ChartEx waterfall layout semantics (by @ChristopherVR) (10feb1b)
  • vue: Wire media inspector sources (by @ChristopherVR) (fb67f2f)
  • core: Author InkML content parts (by @ChristopherVR) (b8df789)
  • shared: Render semantic Pareto charts (by @ChristopherVR) (6fc6a5e)
  • core: Author user-defined tag parts (by @ChristopherVR) (245dc7c)
  • core: Preserve classic date axis semantics (by @ChristopherVR) (f9391cd)
  • core: Author customer data parts (by @ChristopherVR) (8d99be8)
  • vue: Complete animation authoring parity (by @ChristopherVR) (644aa2b)
  • vue: Persist animation timeline edits (by @ChristopherVR) (f336634)
  • shared: Render continuous date axes (by @ChristopherVR) (d644399)
  • shared: Render slide background patterns (by @ChristopherVR) (2794b71)
  • shared: Resolve picture bullet markers (by @ChristopherVR) (172a5c0)
  • core: Preserve chart axis crossing semantics (by @ChristopherVR) (3fbcbc0)
  • vue: Add functional record commands (by @ChristopherVR) (ab79910)
  • vue: Wire review and record commands (by @ChristopherVR) (ee37e65)
  • vue: Render picture bullet markers (by @ChristopherVR) (ea73fe6)
  • shared: Render X-direction chart error bars (by @ChristopherVR) (c3f825b)
  • shared: Render chart axis crossings (by @ChristopherVR) (38a2591)
  • core: Preserve ChartEx hierarchy and geography (by @ChristopherVR) (4b8e3ab)
  • shared: Render hierarchical ChartEx treemaps (by @ChristopherVR) (999f8f9)
  • shared: Render ChartEx geography options (by @ChristopherVR) (c2edbd7)
  • shared: Render multi-level chart axes (by @ChristopherVR) (d5d7008)
  • vue: Complete File backstage parity (by @ChristopherVR) (57d3341)

Bug Fixes

  • vue: Package presentations for sharing (by @ChristopherVR) (d382fe5)
  • core: Validate DiagramML iterator bounds (by @ChristopherVR) (cb375ce)
  • core: Correct DrawingML custom dash stops (by @ChristopherVR) (9b7bd11)
  • shared: Render complete image colour effects (by @ChristopherVR) (2dc9969)
  • core: Export complete image colour effects (by @ChristopherVR) (e1468d3)
  • viewer: Restore thumbnail colours and suppress bullets (by @ChristopherVR) (4563d2d)
  • vue: Render image color wash (by @ChristopherVR) (4624c64)
  • shared: Preserve SVG roots in print documents (by @ChristopherVR) (a7e4d97)
  • shared: Sync media reference content types (by @ChristopherVR) (b0a6703)
  • core: Parse all show property boolean forms (by @ChristopherVR) (0dc7329)
  • core: Preserve structured custom geometry paths (by @ChristopherVR) (423fb41)
  • core: Resolve theme effect placeholder colours (by @ChristopherVR) (3e9e348)
  • core: Preserve combo secondary axis mapping (by @ChristopherVR) (73085fd)
  • core: Resolve theme line placeholder colours (by @ChristopherVR) (e5cdfce)
  • core: Normalize multi-path custom geometry (by @ChristopherVR) (1cc46cd)
  • core: Resolve theme fill placeholder colours (by @ChristopherVR) (55fe588)
  • shared: Honor combo secondary axis constraints (by @ChristopherVR) (c324247)
  • shared: Honor disabled slideshow animations (by @ChristopherVR) (970693c)
  • shared: Retain boundary log axis ticks (by @ChristopherVR) (5cd7cdc)
  • core: Preserve SmartArt rich text ordering (by @ChristopherVR) (ab56204)
  • core: Persist authored OLE payloads (by @ChristopherVR) (0c24f45)
  • core: Resolve ChartEx data references (by @ChristopherVR) (6faab07)
  • core: Persist chart axis direction (by @ChristopherVR) (47f70c1)
  • core: Retain SmartArt cached shape skew (by @ChristopherVR) (d219b0e)
  • core: Author editable OpenXML ink (by @ChristopherVR) (0e81e91)
  • shared: Honor chart axis tick direction (by @ChristopherVR) (ca45bef)
  • core: Preserve SmartArt custom geometry (by @ChristopherVR) (782a2aa)
  • core: Persist notes on new slides (by @ChristopherVR) (330d54e)
  • core: Author handout master package parts (by @ChristopherVR) (0427da1)
  • core: Preserve custom geometry command order (by @ChristopherVR) (695a2fe)
  • core: Allocate string Zoom fallback IDs (by @ChristopherVR) (2fbb6e8)
  • core: Preserve SmartArt text paragraphs (by @ChristopherVR) (78a51bd)
  • core: Retain SmartArt extension order (by @ChristopherVR) (4475ba2)
  • core: Load embedded 3D model payloads (by @ChristopherVR) (f052f8c)
  • shared: Hydrate 3D model assets on load (by @ChristopherVR) (e64f3a8)
  • core: Reconcile SmartArt legacy text edits (by @ChristopherVR) (13253b5)
  • core: Project SmartArt rich text to shapes (by @ChristopherVR) (5b106a6)
  • shared: Keep chart helpers target portable (by @ChristopherVR) (db9d675)
  • core: Resolve SmartArt run text styles (by @ChristopherVR) (6737afd)
  • vue: Connect media sources to inspectors (by @ChristopherVR) (51c3e83)
  • core: Evaluate SmartArt layout rules (by @ChristopherVR) (4a918fd)
  • core: Guard SmartArt text order annotation (by @ChristopherVR) (44d7013)
  • core: Preserve chart series option shape (by @ChristopherVR) (87c0df4)
  • shared: Sync InkML collaboration fields (by @ChristopherVR) (f2929cb)
  • vue: Expose zoom to fit across view menus (by @ChristopherVR) (6c3fcd2)
  • vue: Keep zoom binding inside view sections (by @ChristopherVR) (08960ff)
  • Typecheck issues and lint (by @ChristopherVR) (406b264)

Performance

  • vue: Virtualize large slide decks (by @ChristopherVR) (946debe)

Refactor

  • core: Name OpenXML coverage by capability (by @ChristopherVR) (1e25a7f)
  • core: Keep chart protection codec internal (by @ChristopherVR) (da3fcc1)
  • shared: Generalize section grouping (by @ChristopherVR) (ffc7fec)
  • vue: Share section grouping (by @ChristopherVR) (43be0f0)
  • vue: Share document statistics (by @ChristopherVR) (8febe01)
  • shared: Collect used presentation fonts (by @ChristopherVR) (3d92599)
  • vue: Share used font collection (by @ChristopherVR) (35ba700)
  • shared: Scan browser font availability (by @ChristopherVR) (cde4ef8)
  • vue: Share font availability scan (by @ChristopherVR) (d4d3e54)
  • shared: Validate protection passwords (by @ChristopherVR) (85690c9)
  • shared: Centralize viewer setup metadata (by @ChristopherVR) (da95839)
  • shared: Centralize subtitle recognition helpers (by @ChristopherVR) (ac211d7)

Testing

  • core: Record Wave 11 OpenXML coverage (by @ChristopherVR) (54da8fa)
  • core: Require evidence for OpenXML coverage (by @ChristopherVR) (c1d27e0)
  • core: Record implemented OpenXML capabilities (by @ChristopherVR) (a04f5ed)
  • core: Record print protection and rule coverage (by @ChristopherVR) (804c74e)
  • core: Record font audio pivot and algorithm coverage (by @ChristopherVR) (199a137)
  • core: Record line layout and pivot coverage (by @ChristopherVR) (f4e21db)
  • core: Assert structural chart SVG output (by @ChristopherVR) (e52c3c7)
  • core: Assert typed authored ink reload (by @ChristopherVR) (d12827f)
  • vue: Normalize media inspector suite (by @ChristopherVR) (956aec9)

Styling

  • vue: Format media source fallback (by @ChristopherVR) (7d4db03)

Chores

  • repo: Capture pending workspace updates (by @ChristopherVR) (5d274f1)

1.18.0 - 2026-07-16

Documentation

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

1.17.1 - 2026-07-15

Testing

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

1.17.0 - 2026-07-13

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 terser to 5.49.0 (by @dependabot[bot]) (0d8b25e)
  • deps: Update dompurify to 3.4.12 (by @dependabot[bot]) (00a6ca4)
  • deps: Update minor and patch dependencies (by @dependabot[bot]) (5cd81fb)
  • deps: Update typescript to 7.0.2 (by @dependabot[bot]) (0a7c1f1)

1.16.1 - 2026-07-13

Bug Fixes

  • core: Open Office-encrypted pptx files (by @ChristopherVR) (51aa670)

1.16.0 - 2026-07-11

Features

  • core: Add canonical collaboration field-schema (by @ChristopherVR) (cc78c1e)
  • shared: Add the office colour swatch catalogue (by @ChristopherVR) (41135a0)

Bug Fixes

  • shared: Close CRDT allowlist data-loss gaps, add binary asset map (by @ChristopherVR) (60ad222)

Refactor

  • vue: Re-arm sync gate on reconnect, dedupe onto shared modules (by @ChristopherVR) (b11ace7)

1.15.0 - 2026-07-11

Features

  • shared: Add text wrap/autofit, image adjustments, and table inspector helpers (by @ChristopherVR) (54b2eda)

Documentation

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

1.14.1 - 2026-07-11

Bug Fixes

  • shared,react,vue,angular: Make the Aa Change Case dropdown actually rewrite text (by @ChristopherVR) (d84fd78)
  • react,vue,angular: Drop stray space when splitting a wrapped line (by @ChristopherVR) (1a43c81)

Refactor

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

1.14.0 - 2026-07-11

Other

  • Reconcile with origin/main before push (by @ChristopherVR) (0ecd3d9)

1.13.1 - 2026-07-10

Bug Fixes

  • shared: Sanitize print-document/SVG assembly with DOMPurify (by @ChristopherVR) (84527b6)

1.13.0 - 2026-07-09

Features

  • Addressing CodeQL issues (by @ChristopherVR) (ec1be4f)

Bug Fixes

  • core: Close residual ReDoS/path-traversal gaps from the last CodeQL pass (by @ChristopherVR) (9b17db9)
  • shared: Harden print-document HTML assembly against injection (by @ChristopherVR) (e6add81)

1.12.0 - 2026-07-09

Features

  • vue: Expose internal composables via pptx-vue-viewer/composables-unstable (by @ChristopherVR) (7f9d507)

Other

  • Reconcile with origin/main before push (by @ChristopherVR) (c4a7e32)
  • Reconcile with origin/main before push (by @ChristopherVR) (ef5fc85)
  • Reconcile with origin/main before push (by @ChristopherVR) (030b28b)

1.11.0 - 2026-07-09

Features

  • shared: Add vermilion light/dark theme presets to all bindings (by @ChristopherVR) (1b6e816)

Other

  • Reconcile with origin/main before push (by @ChristopherVR) (10acef8)

1.10.2 - 2026-07-09

Other

  • Reconcile with origin/main before push (by @ChristopherVR) (b8c46bc)

1.10.1 - 2026-07-09

Bug Fixes

  • core: Preserve SmartArt node geometry when round-tripping (by @ChristopherVR) (cc5bd78)

1.10.0 - 2026-07-08

Features

  • shared: Add smartart preset data builder (by @ChristopherVR) (872b0ff)

Bug Fixes

  • vue: Theme-aware backgrounds and larger slide thumbnails (by @ChristopherVR) (142e125)
  • vue: Always show the speaker-notes footer strip (by @ChristopherVR) (6b50f3b)
  • vue: Live smartart gallery previews and styled insert tables (by @ChristopherVR) (7c7a687)

Testing

  • vue: Align NotesPanel spec with controlled expanded prop (by @ChristopherVR) (c215056)

1.9.1 - 2026-07-08

Documentation

  • core: Remove explicit jszip/fast-xml-parser mention from install section (by @ChristopherVR) (6b72906)

1.9.0 - 2026-07-07

Features

  • shared: Ribbon parity with PowerPoint - localize all tabs, add command search, advance slide controls (by @ChristopherVR) (6bd1e5a)
  • shared: Add Review tab Language and Accessibility buttons across all frameworks (by @ChristopherVR) (2dfd7bf)

1.8.0 - 2026-07-07

Features

  • shared: Autosave disabled status with reason, recovery helpers (by @ChristopherVR) (8ccc7eb)

1.7.2 - 2026-07-07

Bug Fixes

  • vue: Stop text boxes clipping their own glyphs (bfb01b9)
  • core: Handle absolute relationship target paths in layout/master resolution (by @ChristopherVR) (5ea40c2)

1.7.1 - 2026-07-06

Dependencies

  • deps: Update tailwindcss to ^4.3.2 and @angular/common to ^22.0.5 (by @ChristopherVR) (ae1b615)

1.7.0 - 2026-07-05

Features

  • react,vue: Add editing section, paragraph dropdowns, text shadow to toolbar (by @ChristopherVR) (13232d0)
  • vue,angular: Add line spacing, text direction, columns, and editing controls (by @ChristopherVR) (71e1c69)
  • react,vue,angular: Remove Text and Arrange tabs, merge into Home (by @ChristopherVR) (6183ff3)
  • react,vue,angular: Add Drawing group, Slides controls, and Record tab (by @ChristopherVR) (8b68ba7)

Bug Fixes

  • vue: UseIsMobile container ref resolved too early, missed late mount (by @ChristopherVR) (e81999a)

1.6.0 - 2026-07-05

Features

  • core,cli: Add react, angular, vue to npm keywords (by @ChristopherVR) (528ec61)
  • shared: Progressive imperative API for all viewer bindings (by @ChristopherVR) (877339d)

1.5.3 - 2026-07-04

1.5.2 - 2026-07-04

1.5.1 - 2026-07-04

1.5.0 - 2026-07-04

1.4.0 - 2026-07-04

Features

  • Reworking the UI to align more on MS powerpoint UI (by @ChristopherVR) (39386c0)

1.3.1 - 2026-07-04

Bug Fixes

  • core: Fabricate diagram parts so inserted SmartArt survives save (by @ChristopherVR) (0d1341f)
  • shared: Preserve equation and field metadata in remapTextToSegments (by @ChristopherVR) (9675d18)
  • vue: Block inline text editing on equation elements (by @ChristopherVR) (4b52d06)

1.3.0 - 2026-07-04

1.2.0 - 2026-07-04

Features

  • shared: Add i18n keys for ribbon, shortcuts panel, and text formatting (by @ChristopherVR) (6e97c3b)

Bug Fixes

  • vue: Mount the version-history and compare panels (by @ChristopherVR) (064ff67)
  • vue: Fix SmartArt colour-scoping, hover popover, and dead Insert SmartArt wiring (by @ChristopherVR) (51167ce)
  • vue: Repair merge corruption in PowerPointViewer.vue, wire up Insert Equation (by @ChristopherVR) (e3e780b)

Refactor

  • vue: Extract format painter and inline editing into composables (by @ChristopherVR) (119434a)
  • vue: Extract ribbon UI state, ink drawing and theme editing (by @ChristopherVR) (2ad1f66)
  • vue: Extract signature, custom-shows and version-history wiring (by @ChristopherVR) (c8e7834)
  • vue: Extract editor keyboard shortcuts into a composable (by @ChristopherVR) (e75773a)
  • vue: Extract collaboration + broadcast session wiring (by @ChristopherVR) (9690dae)
  • vue: Extract mobile bottom-bar chrome into a composable (by @ChristopherVR) (590e561)
  • vue: Extract remaining small dialog/menu wiring composables (by @ChristopherVR) (71e3b9e)
  • vue: Extract the ribbon-props adapter into composables (by @ChristopherVR) (da1a8fc)
  • vue: Extract export/download wiring into a composable (by @ChristopherVR) (adc699d)
  • vue: Extract table-cell and SmartArt inline-edit provide contexts (by @ChristopherVR) (3a0ea58)
  • vue: Extract presentation-mode and comments wiring (by @ChristopherVR) (db281d3)
  • vue: Route ribbon/toolbar/shortcut labels through i18n (by @ChristopherVR) (7d391a4)

1.1.89 - 2026-07-03

Documentation

  • Remove completed ROADMAP and PORTING trackers, scrub stale references (by @ChristopherVR) (8a745a1)

1.1.85 - 2026-07-03

Testing

  • vue: Install a real vue-i18n instance globally for component tests (by @ChristopherVR) (47edca1)

1.1.83 - 2026-07-03

Features

  • vue: Interoperable presence schema, webrtc transport, granular sync (by @ChristopherVR) (9b53df5)

Dependencies

  • deps: Declare yjs, y-websocket, and y-webrtc across bindings (by @ChristopherVR) (27a2849)

1.1.81 - 2026-07-03

Features

  • Document localization and add demo language pickers (by @ChristopherVR) (a07ad82)

1.1.80 - 2026-07-02

Features

  • shared: Add canonical i18n translation dictionary (by @ChristopherVR) (429e386)

Bug Fixes

  • react: Expose i18n dictionary via pptx-react-viewer, not the private shared package (by @ChristopherVR) (09f49fe)
  • vue: Expose i18n dictionary via pptx-vue-viewer, not the private shared package (by @ChristopherVR) (8577907)

1.1.76 - 2026-07-02

Bug Fixes

  • 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)

1.1.73 - 2026-06-27

Bug Fixes

  • Missing document links (by @ChristopherVR) (f52bd6f)

1.1.60 - 2026-06-25

Other

  • smartart: Snapshot in-progress SmartArt session work (by @ChristopherVR) (0cac22f)

1.1.54 - 2026-06-25

Refactor

  • shared: Extract text-rendering pure logic (line-height, warp, effects) (by @ChristopherVR) (11c8d22)

1.1.33 - 2026-06-21

Dependencies

  • deps: Update dependencies within semver ranges (by @ChristopherVR) (d472b58)

1.1.32 - 2026-06-21

Bug Fixes

  • angular: Replace bare file input with styled dropzone in demo (by @ChristopherVR) (d47a4a5)

1.1.31 - 2026-06-21

Bug Fixes

  • angular: Bundle pptx-viewer-core and fix demo JIT + Vue demo alias (by @ChristopherVR) (78838ec)

1.1.30 - 2026-06-21

Features

  • shared: Add Three.js SmartArt 3D model + scene runtime (by @ChristopherVR) (f949213)
  • vue: Opt-in Three.js SmartArt renderer (by @ChristopherVR) (2d59be3)

Bug Fixes

  • vue,ci: Fix Rolldown build panic and isolate per-framework CI failures (by @ChristopherVR) (7d282ee)

Documentation

  • Sharpen npm descriptions and keywords for discoverability (by @ChristopherVR) (8fea56d)
  • core: Reword README in plain language (by @ChristopherVR) (793c26e)
  • vue: Reword README in plain language (by @ChristopherVR) (3afac93)

1.1.24 - 2026-06-20

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)
  • vue: Export to PNG/PDF + image & table inspector panels (by @ChristopherVR) (6e8ca87)
  • vue: Port React's full Office-style ribbon toolbar (by @ChristopherVR) (2341157)

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)
  • build: Make all packages build + publish cleanly; align Vue README (by @ChristopherVR) (7db5de6)
  • Format issues (by @ChristopherVR) (cc84180)
  • 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)

Refactor

  • react: Consume theme + loader from pptx-viewer-shared (by @ChristopherVR) (1b93d1f)
  • core: Consume emf-converter and mtx-decompressor from npm (by @ChristopherVR) (2f6013d)
  • vue: Remove em-dashes from code comments and prose (by @ChristopherVR) (e306df9)

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)
  • vue,angular: Point Try-demo links at per-framework demos (by @ChristopherVR) (b5e6915)
  • Remove em-dashes and clarify demo link in viewer packages (by @ChristopherVR) (f52afff)

Build & CI

  • react,vue: Self-contained, minified, precompressed dist + vue CI (by @ChristopherVR) (aa28df9)
  • vue: Adopt Tailwind 4 pipeline for chrome visual parity with React (by @ChristopherVR) (451dacc)
  • Independent per-package versioning, tags, and changelogs (by @ChristopherVR) (79595d9)

Dependencies

  • deps: Update all dependencies to latest (by @ChristopherVR) (e3287c0)
  • deps: Update dependencies and CI actions to latest (by @ChristopherVR) (b1a84a2)
  • deps: Bump all workspace manifest floors to latest (by @ChristopherVR) (890c33d)

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)

Released under the Apache-2.0 License.