Skip to content

v1.54.0

Choose a tag to compare

@jaapstronks jaapstronks released this 07 Oct 13:29
ae84e51

1.54.0 (2026-10-07)

⚠ BREAKING CHANGES

  • a fork that fills the ImageKit slot passes createImageKitPanel instead of openImageKit and returns { el, detach } instead of opening a dialog. Contract in docs/reference/image-picker-seam.md § The DAM slot.
  • offer text styles per type, drop per-field colour (B464 PR 1) (#1468)
  • quote-slide content is { quoteAlign, quotes: [{ quote, authorName, authorTitle, authorImage1, authorImage1Alt, authorImage2, authorImage2Alt }] }. Stored decks fold on read; an API or MCP caller that posts the flat keys is refused by strict validation.
  • client: client/lib/user/*, client/lib/format/analytics-tracker.js, client/lib/format/analytics-erase-button.js and client/lib/theme/theme-select.js no longer exist. A fork importing them switches to client/views/user/index.js, client/lib/state/auth.js, client/lib/format/user-format.js, client/views/analytics/index.js or client/views/theme-select.js.
  • client: client/lib/slide-library/, client/lib/comments/, client/lib/slide-collections/* and client/views/editor/slide-library-picker.js no longer exist. A fork importing them switches to client/views/slide-library/index.js, client/views/comments/index.js or client/views/list/collections/index.js.
  • slide-types: a custom/slide-types/*.js type whose renderHtml emits a <style> block is refused at load. Move the rules to a stylesheet in custom/styles/ nested under the type's root class.

Added

  • ai: the outline is two calls with one job each, and Claude defaults to Opus 5 (#1443) (4c2cfd9)
  • edit the KPI note on the canvas (B599) (#1465) (72a8480)
  • export callout as editable PowerPoint slide (#1457) (8636a9c)
  • export chapter titles as editable PowerPoint slides (#1454) (c46b356)
  • export chart slides as editable PowerPoint charts (25bb5b3)
  • export comparison slides as editable PowerPoint columns (#1458) (2189482)
  • export KPI metrics as editable PowerPoint cards (c9bcb5f)
  • export: editable PPTX on the theme layouts, layer 0 (B290) (#1435) (6341495)
  • export: image-slide writes a native PowerPoint picture (B588 PR 1) (#1441) (d7cd9e8)
  • export: image-text writes a native PowerPoint slide (B588 PR 2) (#1452) (88498cd)
  • export: PPTX writes an uploaded font's desktop name (B289) (#1433) (384eea2)
  • export: quote writes a native PowerPoint slide (B588 PR 3) (#1453) (4cf4307)
  • export: the layer-0 group exports as editable slides (B587) (#1440) (2890099)
  • export: two PowerPoint rows and the editor's image-slide hint (B586) (#1436) (a688c4e)
  • expose editable PowerPoint exports through MCP (#1459) (4db1a4e)
  • generate missing batch image alts with explicit consent (#1462) (4be6932)
  • give item settings a home outside "All text" (B450) (#1464) (626abdd)
  • inspector enums pick segmented or dropdown from their labels (B457) (#1475) (e4913f2)
  • keep every quote of a quote slide in quotes[] (B599, D314) (#1466) (f31bca8)
  • let the slide-type builder mark the slide heading (B305) (#1463) (88b6d5f)
  • live presenting is a cluster an installation can leave out (B524) (#1424) (d1526e8)
  • offer text styles per type, drop per-field colour (B464 PR 1) (#1468) (cb8588a)
  • publish the text-style offer on the API and MCP surface (B464 PR 3) (#1473) (b41cd3b)
  • seed the sandbox library with real example slides (B352) (#1476) (831eb81)
  • slide-types: a file-JS type's CSS lives only in custom/styles/ (B536) (#1428) (785b993)
  • slide-types: publish an English and Dutch name per core type (B322) (#1431) (a7050d9)
  • slide-types: title-slide offers its layout as a composable view (B535) (#1429) (f1b142c)
  • stock media and the public API are clusters an installation can leave out (B525) (#1422) (28cd2e9)
  • the picker seam owns the DAM dialog, so a refused copy keeps any picker open (B410) (#1474) (b06d114)
  • upload and edit image batches (#1461) (2755709)
  • walk every slide type through the text-style offer (B464 PR 2) (#1472) (6a8ffd9)
  • warn when a fork type field is only editable in "All text" (B600) (#1467) (13aa93b)

Fixed

  • ai-suite: exclude schema configuration from judge prose (#1445) (0b67378)
  • ai: honor total slide budget in split outline (a147edf)
  • ai: reject overlong slide text and request a rewrite (#1446) (c879ce8)
  • client: "Workspace default" names the theme it resolves to (B584) (#1426) (9695f5e)
  • deps: bump brace-expansion from 5.0.9 to 5.0.12 (security) (#1398) (68e4c32)
  • deps: bump undici from 8.9.0 to 8.11.2 (security) (#1366) (c7c6748)
  • fit the current slide in the speaker-notes view on both axes (B594) (#1470) (ec6a7ea)
  • import: one progress model, monotone and without dead time (B595) (#1451) (65a44c5)
  • preserve editable PPTX bullets across mixed text runs (#1460) (8df6f0f)
  • resolve comment and compression slide titles against the org registry (B601) (#1471) (77d21dd)
  • slides: poll without codes names the real follow URL (B583) (#1425) (8b88dd4)
  • tests: browser shutdown waits for Chrome's exit; deck-bundle test owns its root (B545) (#1430) (65b1b6e)
  • themes: playful's accent pair reaches 4.5:1 (B544) (#1434) (2639d7b)

Security

  • deleting a user revokes their pending magic links (B546) (#1432) (0e38cd9)

Changed

  • client: slide library, comments and collections are views (B528 PR 3a) (#1380) (37edd90)
  • client: user, analytics tracker and theme select are views (B528 PR 3b) (#1437) (2597240)
  • keep the next release in 1.x during beta (f37b752)