ChangelogRelease history
Changelog
Published package versions and complete core release history.
Current published package set
0.30 and 0.31: the editor for any page (the <opf-editor> element, a toolbar of named items and items of your own) and the fixes this site's adoption of it found.
These packages are available under @openpresentation on npm. Publication dates are UTC and were verified on 2026-11-02.
| Package | Version | Published (UTC) | Changes |
|---|---|---|---|
| opf | 0.31.0 | Remove the gallery-schema-mismatch runtime refusal. | |
| opf-render | 0.31.0 | Released with the set at the shared version 0.31.0; no package changes. | |
| opf-pptx | 0.31.0 | Released with the set at the shared version 0.31.0; no package changes. | |
| opf-editor | 0.31.0 | A toolbar item of your own. CE-30, found by openpresentation.org adopting the editor. The playground's top bar (the page pptx.gallery embeds) is one row again. | |
| cli | 0.31.0 | Remove the gallery-schema-mismatch runtime refusal. |
OPF is pre-1.0; minor releases can add schema forms that consumers need to handle.
Full package histories: renderer · editor · PowerPoint exporter.
Core package history
Every published version of @openpresentation/opf, newest first.
v0.31.0
Core 0.31.0: Remove the gallery-schema-mismatch runtime refusal
- Remove the
gallery-schema-mismatchruntime refusal. @openpresentation/opf-editor: A toolbar item of your own.@openpresentation/opf-editor: CE-30, found by openpresentation.org adopting the editor.@openpresentation/cli: Remove thegallery-schema-mismatchruntime refusal.
v0.30.0
Core 0.30.0: The embeddable editor's title bar is a toolbar of named items
- No change to core; released with the set at the shared version 0.30.0.
@openpresentation/opf-editor: The embeddable editor's title bar is a toolbar of named items.@openpresentation/opf-editor: More of the editor for embeds.
v0.29.1
Core 0.29.1: Editor handle methods work before the editor has mounted
- No change to core; released with the set at the shared version 0.29.1.
@openpresentation/opf-editor: Editor handle methods work before the editor has mounted.setDensitybefore the mount no longer throwscreateSlideNavigator is not a function, and the density, view, export mode and file name set before it are kept (#912).
v0.29.0
Core 0.29.0: The Studio and a faster editor startup
- The editor draws its first preview faster than 0.26.10 again: the playground's sample deck in 2.3 s and a 300-slide deck in 3.4 s.
- A block that a stacked column draws at its full height is no longer reported as a too-small cell (
small-cell). @openpresentation/opf-editor: the Presentation and Slide Studio,createOpfEditor(el, { layout: "studio" }).@openpresentation/opf-editor: a host that mounts only the source pane loads no renderer; hosts get one copy of CodeMirror and a source worker that loads from npm.@openpresentation/opf-editor: the Design panel shows options instead of explaining them.@openpresentation/opf-editor: the layout pickers group layouts by the Gallery's groups (agenda-splitandthree-columnare no longer Custom layouts).@openpresentation/opf-editor: the data grid takes the keyboard focus on click while canvas text is being edited.@openpresentation/opf-render:toSvg(deck, slides)binds and composes only the slides it draws.
v0.28.0
Core 0.28.0: The MCP server joins the release set
@openpresentation/mcpjoins the release set: seven packages at one shared version.- A chart in the Chart.js or ECharts shape is one
opf/schemafinding with a fix that shows the author's own values asdata: { columns, rows }. - Every schema's
$commentsaysv1is the pre-1.0 line;docs/schema-versioning.mdexplains how to pin it. - Content takes the size and height it asks for before anything shrinks, and peers share one size.
- One readable type scale, headings without stranded words, typographic quotes and code in fitted panels.
design.listBullettakes"none"for lists that are a label and its explanation.- The
opf/unresolved-referencehint names the nearest records that exist. @openpresentation/gallery: newagenda-splitandthree-columnlayouts.
v0.27.0
Core 0.27.0: Validate runs with no runtime code generation on edge runtimes
validateruns with no runtime code generation on edge runtimes.- Ids, id-addressed paths,
documentHash,expectHashand patch scope, new@openpresentation/opf/idsentry (all also on the package root). @openpresentation/gallery: Version aligned with the 0.27.0 set.@openpresentation/opf-render: Version aligned with the 0.27.0 set.@openpresentation/opf-pptx: Version aligned with the 0.27.0 set.@openpresentation/opf-editor: Id-addressed patch events and the revision guard on the session.@openpresentation/opf-editor: An embeddable editor.
v0.26.10
Core 0.26.10: The layout editor's touch targets are 44px under a coarse pointer, at
- No change to core; released with the set at the shared version 0.26.10.
@openpresentation/opf-editor: The layout editor's touch targets are 44px under a coarse pointer, at any width.@openpresentation/opf-editor: The presenter no longer loses full screen, or reads the user's Esc as its own exit, when a presentation is closed and opened again quickly: a closed presenter whose full screen request is answered after a newer one asked no longer requests…
v0.26.9
Core 0.26.9: Release 0.26.9
- No change to core; released with the set at the shared version 0.26.9.
v0.26.8
Core 0.26.8: The hanging indent of wrapped lines
- No change to core; released with the set at the shared version 0.26.8.
@openpresentation/opf-editor: The hanging indent of wrapped lines (0.26.7) no longer makes the source pane and the JSON editor slow: the stylesheet capped the hang with a percentage, which made the style and layout of every line very expensive (filling an 848-line…
v0.26.7
Core 0.26.7: Mobile and touch
- No change to core; released with the set at the shared version 0.26.7.
@openpresentation/opf-editor: Mobile and touch (320 to 430px).@openpresentation/opf-editor: Source pane withworkeron: the syntax check in the worker no longer returns early when the text equals the last applied text, so after a quick fix and one Undo the "designneeds a value" problem shows again at once instead of at the…
v0.26.6
Core 0.26.6: Release 0.26.6
@openpresentation/opf/sourceis smaller again (201,836 to 175,768 bytes gzipped in a browser bundle):explainanddescribeFindingread the rule list from a light metadata module instead of the validation rule implementations, so…describeFindingnames where a repeated key is in plain words instead of a raw path segment: "titleappears twice in slide 1", "indesignof slide 2", "at the top level" (it said "in0" for a slide, because the parent of the key was…@openpresentation/opf-editor: Source editor, phase 4.@openpresentation/opf-editor: Source editor keyboard.
v0.26.5
Core 0.26.5: Problems in plain words
- Problems in plain words.
describeFindingwrites the message and anexthint of everyopf/*rule in plain words (fields in backticks, no JSON Pointers, concrete values from the finding and the document), andexplain(ruleId)returns a rule's summary…- YAML and Markdown syntax findings are written in plain words and point at the place that matters (VALIDATOR-HINTS section 9): a tab for indentation is "Line 3 is indented with a tab.
@openpresentation/opf-editor: Source editor completions, phase 3.@openpresentation/opf-editor: Source editor phase 3.
v0.26.4
Core 0.26.4: Release 0.26.4
@openpresentation/opf/source:locateandpathAtnow read YAML and Markdown as well as JSON, so a finding in a.opf.yamlor.opf.mdtext has a range (JSON Pointer to range, caret to path, tolerant of text with syntax errors).@openpresentation/opf-editor: Source editor, keyboard and IntelliSense parity phase 2 (YAML and Markdown get the quality JSON has): completion of keys, values, enums, catalog ids, templates and snippets in YAML (block and flow style, afterkey:, after a list dash)…
v0.26.3
Core 0.26.3: The published schemas
- The published schemas (
spec/schemas, served atopenpresentation.org/schema/...) compile under Ajv in its default strict mode again, with noaddKeyword("x-opf-catalog")and no--strict=false. 0.26.2 put a non-validating…
v0.26.2
Core 0.26.2: Release 0.26.2
@openpresentation/opf/schema(new, browser-safe subpath): the field model of a document, read from the JSON Schemas, for source editors, the CLI and agents.@openpresentation/opf/source(new, browser-safe subpath): text addressing and JSON syntax recovery for source editors.- A finding for an unknown property (
opf/schema, keywordadditionalProperties) carries up to threesuggestionsof the nearest property names that the same object's schema declares (edit distance 2, or 1 for names of three characters or… opf/json-syntaxfindings (validate(text),parse, the CLI) now name the root cause in plain words instead of the parser's code name, once per cause and in position order (at most five):messageis the cause (`design` needs a value.@openpresentation/opf-editor: Source editor keyboard parity, phase 1.
v0.26.1
Core 0.26.1: Editor keyboard parity
- No change to core. The set is released together: the editor gains source-pane keyboard parity (Tab and Enter accept a suggestion, Ctrl+Space opens the completion list, move line, indentation, multiple cursors, paste and Format document) and a presenter fix.
- Core, the CLI, the renderer, the PowerPoint exporter and the Gallery have no package changes at 0.26.1.
v0.26.0
Core 0.26.0: One repository, one version
- Core, the CLI, the renderer, the PowerPoint exporter, the editor and the Gallery are released together from OpenPresentation/opf at one shared version, 0.26.0. They depend on each other as ^0.26.0, so an install never mixes minors. No behavior change.
- The Gallery package moves from 5.0.0 to 0.26.0 with identical records; the new
latestis 0.26.0, and consumers of @openpresentation/gallery use ^0.26.0 (^5.0.0 does not match it). - The renderer, PowerPoint exporter and editor
releaseLane.githubRepositoryis OpenPresentation/opf and gains adirectory.
v0.25.0
Core 0.25.0: Layouts as one list of regions
- Breaking, with no migration path: a layout record is one ordered list of regions.
areas,columns,rowsand theregionsmap are removed fromopf-layout/v2; a record has adirection(roworcolumn) and aregionsarray of regions ({ name, size?, ...rules }) and splits ({ direction, regions, size?, anchor? }, up to three levels). sizeis a share of the parent (default 1;autoonly in a column),acceptsis optional, andanchoron the record or a split is inherited by the regions under it. Core compiles the list to the grid the engine already used, so every rendered pixel is unchanged.- Core and the CLI use Gallery 5 (catalog generation 4), and the optional peer ranges move to the 0.25 minor: renderer and PPTX
^0.25.0.
v0.24.2
Core 0.24.2: Examples with their supporting photos
- The examples embed their supporting photos and name technical assets that exist, so every example converts with opf convert.
- The CLI reports an image it cannot read as a pptx/unresolved-asset warning with opf-pptx 0.24.1 or later. No code changes in core; 0.24.1 was tagged but never published.
v0.24.0
Core 0.24.0: Gallery 4 and theme variants
- Breaking for documents that name the dark theme: Gallery 4 removes it because dark is now a design.variant of every theme. design.theme "dark" is an unresolved reference; use a theme with a dark variant, for example { "theme": "classic", "variant": "dark1" }.
- Theme records accept an optional variants list for pickers. A document keeps the chosen variant in design.variant, never the entry id. Minimal, Classic and Bold carry the variants light, light-alt, dark and dark-alt.
v0.23.0
Core 0.23.0: Color variants
- design.variant (deck or slide) and tone on picture and gradient backgrounds map the one twelve-slot color scheme as PowerPoint’s color map does: a background slot such as "dark1", or { background, accents } to reorder the accents.
- Every neutral is derived from the scheme: borders, gridlines, axis lines, chart text and the code panel no longer use a fixed slate, so cards, tables and charts change color, not geometry.
v0.22.2
Core 0.22.2: Native body text from the CLI and convert
- opf convert --body-text measured|native and --slide-numbers static|live (the bodyText and slideNumbers options of convert) reach the PPTX exporter. native is opt-in: a wrapped title is the Title placeholder and a text, bullets or numbered-list region is one body that PowerPoint and Keynote re-wrap. A footer such as {{slide.number}} / {{deck.slideCount}} is fixed text by default, so Keynote shows the words too.
v0.22.1
Core 0.22.1: Peers for a 0.22 install
- The optional renderer and PPTX peers of core and the CLI are ^0.22.0, so npm installs a 0.22 tree without ERESOLVE. Runtime behavior is unchanged from 0.22.0.
v0.22.0
Core 0.22.0: Presentation-size tables, footer zones and tag alignment
- Table cell text asks for the body size (about 19 pt) instead of 12 pt, and the whole table shrinks together toward composition.minFontSize when it does not fit. A table cell style gains bold, and a rich numeric cell keeps the column alignment.
- Header and footer zones sit on the content inset as three columns with a small gutter; an empty zone lends its width to its neighbours, so a lone left footer spans the content width. The new opf/furniture-wraps warning reports a zone that wraps past two lines.
- The slide tag (eyebrow) follows titleAlignment, like the title, instead of contentAlignment.
v0.21.0
Core 0.21.0: Chart colors and a computed value axis
- Chart series take the deck color scheme: accent1 to accent6, then the same accents mixed 40% toward white. chart.colors sets a series color by position (a hex color, a scheme slot or role, or a variable); chart.highlight still wins.
- Core composes the value axis of column, bar, line and area charts, and chart text is 20 px (15 pt) in a roomy chart instead of 14 px.
- Docs for first use: a runnable first deck, skill glossaries and plain PPTX limits.
v0.20.5
Core 0.20.5: Independent release-qualification controls
- Separate deliberate malformed-XML qualification controls from strict font inspection. Runtime and export payload behavior are unchanged from 0.20.4.
v0.20.4
Core 0.20.4: Safer validation and current runtime contracts
- Preserve rich citations and embedded theme bindings; handle invalid content kinds, number formats, no-break text and edited-object caches without losing authored data.
- Keep exported files safe from concurrent overwrites, preserve asset names and refresh current API, editor, fonts and CLI guidance.
v0.20.3
Core 0.20.3: Validation results display label
- Validation reports use the display label Validation results. Public FindingReport and Finding types, schema IDs, URLs and validation rules are unchanged.
v0.20.2
Core 0.20.2: Metrics center within their blocks
- Metrics center horizontally within their blocks by default. Explicit slide, deck, layout and host alignment values still win; ordinary text, lists and tables keep their alignment.
v0.20.1
Core 0.20.1: Nested-array grids and shared content defaults
- Nested-array layout areas, optional grid tracks and grouped content use the Gallery 3 contract. Lists start at 32 reference pixels without an authored size; attributed quotes use measured heights, structural borders use quiet neutral defaults and numeric table columns align right. Node and CLI PPTX imports forward default or explicit catalogs.
- The first published 0.20 core requires Gallery 3. The earlier 0.20.0 preparation was never published.
v0.19.0
Core 0.19.0: Adaptive grid templates and independent Gallery 2
- Grid-template layouts bind flat content to regions without dropping it, with adaptive flow, list columns and pagination. The 28 intent layouts come from Gallery 2; v1 layout records and placeholder APIs are removed without aliases.
- Layouts expose regions and heading areas, support explicit region pins, collapse empty regions and continue pagination on the same layout. Old v1 records have no migration API or aliases.
- PNG and SVG slide numbering uses the largest output slide number, and an explicit {n} output pattern preserves selected slide numbers.
v0.18.4
Core 0.18.4: Measured script preview geometry
- Script-specific preview size and line-ascent policy now follows the reviewed native measurements for Angsana New, DilleniaUPC, Sakkal Majalla, Malgun Gothic, Nirmala UI and Arabic Typesetting. Native PPTX font names and sizes remain unchanged; decomposed Hangul jamo remains a documented limitation.
v0.18.3
Core 0.18.3: Strict coordinated font pins and publish checks
- Linked sibling checks install the renderer’s exact script and emoji font pins.
- Correct the publishing check that read pnpm’s warning as its version. Core 0.18.2 never reached npm publication and is excluded from this history.
v0.18.1
Core 0.18.1: One import, the consistent API, and logos on the organization
- Breaking, pre-1.0, with no aliases: one import for every runtime. import * as opf from "@openpresentation/opf" works in Node, Bun, Deno, browsers and workers through conditional exports; in Node the root also has convert, open and save, and the file functions reject with node-only in a browser build. The @openpresentation/opf/node subpath is removed, and defaultCatalog stays at @openpresentation/opf/catalog.
- Breaking: importData is ingest (ImportDataOptions is IngestOptions). The Node build has the CLI's verbs with its defaults: ingest, fill, edit, stats, paginate and embed, plus the new edit(deck, patch) and fill(template, data).
- Breaking: the convert options take their 0.18 names: chartex is charts, imageFormat is images, pdfMode: "raster" is raster: true, svgFonts is text (fonts, system or paths), fontDirs joins fonts, and filename is name. The old names reject with invalid-option.
- Breaking: logos live on the organization. organization.logo has full, stacked, icon and wordmark, each a path or asset or { onLight, onDark }, and a zone places one with image: "var:organization.logo.icon". The LogoSet on design.logo and zone logo: true are removed; design.logo is a var: override or false. Zones lay their parts out in a row.
- 0.18.0 was tagged but never published: its publish run stopped before npm publish, because a core test spawned the CLI before the workflow had built it. 0.18.1 is the first published 0.18 core and ships what the 0.18.0 changelog describes. Renderer, PPTX, editor and CLI 0.18.0 follow it.
v0.17.0
Core 0.17.0: Header and footer variables, parse and stringify, and the Node file API
- Breaking, pre-1.0, with no aliases: header and footer values are text. HeaderFooterItem loses organization, speaker, section, slideNumber and slideNumberFormat, and the {current} and {total} syntax, so a zone's text holds {{organization.name}}, {{slide.section}}, {{slide.number}} / {{deck.slideCount}} in the order you want. Unknown keys in a zone are now schema errors.
- Add the slide-scoped variables {{slide.number}}, {{slide.section}} and {{deck.slideCount}}, which work in any string of a slide, and resolveSlideVariables to substitute them. Renderer, PPTX and editor 0.17.0 draw, export and edit them.
- Breaking: readDeck and writeDeck become parse and stringify (parse throws OPFValidationError with findings located by line and column), and the CLI's library entry @openpresentation/cli/api is removed.
- Add @openpresentation/opf/node, core's Node-only file API: convert (any deck or PPTX file to PDF, PPTX, PNG, SVG, zip, Markdown, YAML or JSON), open and save, with typed errors, plus the opf convert command. The renderer and PPTX packages are optional peers of core. CLI 0.17.0 was tagged but never published; 0.17.1 is the first 0.17 CLI.
v0.16.0
Core 0.16.0: Nested placeholder groups, Table.alt and Markdown decks
- Layout records can nest placeholder groups, arranged inside one cell of the record's composition, up to three levels deep; the default catalog's chart-3x, dashboard and similar layouts use them. Slide content stays flat and fills the leaf regions in reading order.
- Table.alt is the text alternative of a table (an empty string marks it decorative). The preview names the table, PowerPoint stores it as the frame's description, and Markdown writes a table with an alt as an opf-block.
- Markdown decks (deck.opf.md) are a native input and output: core has readDeck and writeDeck for JSON, YAML and Markdown, and the CLI reads and writes them in every command. opf/language-tag warns on malformed or non-canonical language tags.
- importData has literal overloads and typed chart types, so an imported table or chart composes into a Presentation without assertions.
v0.15.1
Core 0.15.1: Catalog groups, no built-in records, backgrounds and images
- Breaking, pre-1.0, with no aliases and no migration: catalogs are groups (default, custom, named) keyed by kind and id, references are id or name:id, and core ships no catalog records in its main entry; the pinned gallery snapshot is the opt-in @openpresentation/opf/catalog.
- Add embed, copySlides and updateFromCatalog, the host catalogs option on every entry point, opf/unresolved-reference and opf/undeclared-catalog findings, and opf embed in the CLI (replacing opf bundle).
- Languages are BCP-47 tags; chart types and social platforms are schema vocabularies. Pictures are image backgrounds and image blocks (fit, focus, shape, treatments, overlay, edge placement); design.imageFit replaces the image fill default, and the slide image option and the image-bleed layout are removed.
- 0.15.0 was tagged but never published to npm; 0.15.1 is the same package.
v0.14.0
Core 0.14.0: Format audit and short-verb API
- Breaking, pre-1.0, with no aliases: validatePresentation, lintPresentation and auditPresentation become one validate returning Finding records, the renderer, PPTX and editor take one fonts handle and say presentation instead of document, and the 50 deprecated chart-type records and 6 plural audience records are deleted. Layout records use the deck's design vocabulary and one content-kind vocabulary, and a narrative is a catalog pointer instead of an inline plan.
- Add built-in variables from the deck's metadata, Chart.alt, chart.highlight, combo charts, TimelineEvent.status, Metric.sentiment, Quote.role and Quote.photo, rich title, subtitle and quote text, code.highlight, a text watermark, the 1:1, 4:5 and 9:16 slide sizes, and color-role resolution shared by the preview, the PPTX export and validate. Decks that use none of them validate and compose as before.
- Add OPF as YAML (@openpresentation/opf/yaml: fromYaml, toYaml) with opf from-yaml and opf to-yaml in the CLI source. Renderer 0.14.0, PPTX 0.14.0 and editor 0.14.2 require core ^0.14.0; CLI 0.14.0 bundles it.
v0.13.0
Core 0.13.0: Chart and table data
- Add NumberFormat on chart, dataset and table columns (a column may be a DataColumn with a name and a format), top-level datasets that charts and tables reference by id and field, chart.mapping to choose the category, scatter X and series columns by name, and data provenance on charts and datasets that no engine reads. Documents that use none of them validate and compose as before.
- Behaviour changes: chart values follow one strict number rule (a finite number or a plain decimal string), so a non-strict text cell such as "12%" or "Q1" becomes a gap with a chart-value-not-numeric warning once the renderer and PPTX adopt it; a two-column scatter plots column 2 against row numbers; an unknown dataset, field or mapping column fails validation.
- Add the data helpers (chartNumber, resolveChartData, resolveTableData, number-format conversion to and from Excel codes), lint fixes for non-numeric chart columns, opf import-data --dataset, two example decks that are self-contained, a script-font supplement fix for Armenian, Georgian and Amharic decks, and Node 22 or later. Renderer 0.13.1, PPTX 0.13.2 and editor 0.12.1 require core ^0.13.0, and CLI 0.11.0 bundles it.
v0.12.2
Core 0.12.2: Open-ended Node range
- Change engines.node from 24.x to >=22, so npm installs the latest release on Node 22 and 26 instead of the 0.9.0 package that matched an old Node range.
- No schema, catalog, API or geometry change from 0.12.1. Renderer 0.12.2, PPTX 0.12.4 and editor 0.11.3 carry the same install fix and require core ^0.12.2; CLI 0.10.1 carries it too and still bundles core 0.12.0.
v0.12.1
Core 0.12.1: Singular audience ids
- Deprecate the six plural audience ids as aliases of the singular ids: executives to executive, investors to investor, customers to customer, sales-team to sales, marketing-team to marketing and regulators to regulatory. Each record keeps resolving and gains a deprecation object; validatePresentation warns and lintPresentation reports opf/deprecated-catalog-id.
- The 81 bundled examples and the engine defaults move to the singular ids; the audience is not drawn, so no example geometry or composition changes.
- Additive catalog data: no schema property or exported API is removed or renamed. Renderer 0.12.0, PPTX 0.12.2 and editor 0.11.2 keep their core floor ^0.12.0 and install with it. CLI 0.10.0 still bundles core 0.12.0.
v0.12.0
Core 0.12.0: Templates, numbering, references and mirrored right-to-left decks
- Add templates and typed variables, numbered lists, references with citations, footnotes and captions, and chart axis titles, legends and data labels; documents that do not use them are unchanged.
- Add the Markdown and outline converter, content conversions, one JSON Patch module, diff, merge and format, and opf audit with stable rule ids.
- Move geometry: composed font sizes snap to PowerPoint's 0.01 pt grid, a space that does not fit at the end of a wrapped line hangs, promoted regions compose in reading order and right-to-left decks compose mirrored.
- Renderer 0.12.0, PPTX 0.12.0 and editor 0.11.0 raise their core floor to ^0.12.0 and install together with it. CLI 0.10.0 bundles core 0.12.0.
v0.11.4
Core 0.11.4: Design fields compose
- Compose design.logo and organization.logo on cover and section slides (light and dark variants), header and footer logo parts, design.listBullet image, design.contentDirection, design.chartPrimary and fontScheme.accent; the schema gains HeaderFooterItem.logo and the API gains resolveLogo().
- A cover's tag and subtitle follow the title alignment, picture bullets draw at the size PowerPoint draws them (0.65 of the font size), and furniture images align to the edge of their zone.
- Renderer 0.11.9, PPTX 0.11.7 and editor 0.10.6 raise their core floor to ^0.11.4 and install together with it. CLI 0.9.1 is unchanged and still bundles core 0.11.3.
v0.11.3
Core 0.11.3: Canonical layout catalog
- Grow the bundled layouts catalog from 30 to 100 records: the 70 legacy pptx.gallery layout slugs become canonical ids, and 25 of them carry a composition or contentBox contract.
- Record the pinned pptx.gallery catalog snapshot in spec/catalogs/manifest.json and validate it against the companion schemas; chart-type records may carry a deprecation object.
- Additive: no schema property, catalog record or exported API is removed or renamed.
v0.11.2
Core 0.11.2: Centered covers and font-file rules
- Vertically center cover slides (heading-only slides with no body payload) between the header and footer furniture; 103 of 805 bundled example slides move in y only.
- Preview Aptos with the metric-compatible Intos replacement, add a metric Gelasio tier for Georgia, and record the rules that fonts ship as pinned files under verified permissive licenses.
- Renderer 0.11.2, PPTX 0.11.1 and editor 0.10.1 raise their core floor to ^0.11.2 and install together with it. CLI 0.9.0 is unchanged.
v0.11.1
Core 0.11.1: Shared font-fidelity contract
- Add the OPF font policy table, script font resolution, paragraph direction, per-item alignment, formatted slide-number and date furniture, socials furniture and design.slideImage geometry.
- Additive: no schema, catalog or exported API is removed. The chart-type records deprecated in this release still resolve.
- CLI 0.9.0 is unchanged and still bundles core 0.11.0.
v0.11.0
Core 0.11.0: Color references and catalog bundling
- Add ColorRef on styled table cells and documented run colors; top-level variables with var: references; optional payload id and extensions.
- Add bundlePresentation and opf bundle to inline catalog records transitively; export resolveColorRef and normalizeHexColor.
- Ship format-card documentation and a validated color-references fixture outside the examples corpus until the next renderer golden update.
v0.10.1
Core 0.10.1: Consistent layout and content contracts
- Correct metric layout placeholders, add quote and timeline layouts, align content classifications and preserve text-style bullets as valid text payloads.
- Keep stable number layout IDs while using metric placeholders. Add quote-1x and timeline-1x; document picture/image and media/video mappings.
- Coordinate editor 0.7.1, renderer/PPTX 0.8.1 and CLI 0.8.1. Browser and package checks remain separate from native PowerPoint visual fidelity.
v0.10.0
Core 0.10.0: Offline lint and shared accepted layout
- Add local lint with source locations, catalog context and explicit design contracts; CLI 0.8.0 exposes opf lint for humans and agents.
- Share accepted metric, timeline, card and text geometry while preserving authored whitespace and selected readability floors.
- Require Node 24 and expose grid-score-v8 explanations. Shared furniture and prepared font-shaping drafts remain separate; native compatibility is independently verified.
v0.9.0
Core 0.9.0: Shared code layout and source-preserving pagination
- Measure code source, filename and language together, retaining literal tabs, blank lines and exact source boundaries.
- Share accepted code geometry with preview and editable PowerPoint export; paginate complete source fragments according to the selected readability floor.
- Use deterministic grid-score-v3 with bounded fitting and explicit overflow diagnostics. Full automatic layout repair and Auto arrange remain under development.
v0.8.0
Core 0.8.0: Shared quote layout and readable pagination
- Measure quote body, attribution and source together, with accepted lines shared by preview and native export.
- Persist selected readability floors during pagination and expose optional candidate scores and decision explanations.
- Adopt deterministic grid-score-v2 and stricter generated content payload types. Full automatic layout repair remains under development.
v0.7.0
Core 0.7.0: Styled and merged tables
- Add table cells with value, optional style, rowSpan and colSpan while retaining scalar and rich-array cells.
- Validate merge ownership and covered null positions; preserve connected vertical merges during pagination.
- Share anchor geometry and editable .value paths across the coordinated renderer, editor and PPTX packages.
v0.6.0
Core 0.6.0: Content-aware table layout
- Share table row geometry and fitting across composition, rendering and native export.
- Grow multiline rows into available space and reduce spare height before shrinking readable text.
- Preserve complete rows, report real overflow and keep short-table geometry unchanged.
v0.5.0
Core 0.5.0: Rich table content
- Accept rich TextRun arrays in table cells and headers alongside existing scalar values.
- Measure actual run styles for overflow and pagination, preserving complete rows and repeated headers.
- Generated types include the additional rich-array form; exhaustive scalar-only consumers need updating.
v0.4.1
Core 0.4.1: Complete embedded image example
- Replace the truncated PNG in the asset-source-forms example with a complete project-authored image.
- Verify the corrected example against the renderer baseline and coordinated image/export checks.
v0.4.0
Core 0.4.0: Shared composition and local tools
- Add nested composition, weighted tracks, measured rich text and lists, overflow diagnostics and explicit pagination.
- Expose browser-safe composition, pagination and CSV/TSV/JSON data conversion APIs.
- Add six portable authoring, layout, preset, editing, export and inspection skills in the repository.
- Use smaller structural TypeScript schema/catalog declarations; the narrative index uses records instead of templates.
v0.3.0
Core 0.3.0: Examples, documentation and reference warnings
- Add non-fatal warnings for unknown catalog identifiers and broken catalog cross-links.
- Ship validated example decks, reference documentation and the pinned repository README through package exports.
- Document design precedence, content forms and the boundary between the open format and downstream services.
v0.2.2
Core 0.2.2: Flexible content shorthand
- Accept mixed slide-root payloads as implicit blocks when no explicit type, blocks or regions are present.
- Allow a single audience string alongside the existing array form.
v0.2.1
Core 0.2.1: Public package and raw specification
- Publish raw schemas, catalogs, references and layout previews through the canonical OPF package.
- Add typed spec-file manifests and provenance-enabled publication.
- Correct the United Kingdom chart catalog identifier to united-kingdom. The internally prepared 0.2.0 version was never published.
v0.1.0
Core 0.1.0: Initial npm release
- Publish the Open Presentation Format package with schemas, catalogs, generated types and local validation.
- Establish the .opf.json convention for complete presentation documents.
Source metadata
The documentation snapshot and published package history are tracked separately. Full upstream changelog tracks the current repository.