Repository navigation
RR-55: CLI and registry scripts on the 0.14 sibling APIs (merge after render/pptx 0.14 publish) - #442
Merged
Merged
Conversation
michaeljgrimm
force-pushed
the
codex/rr-55-short-verb-api
branch
from
October 7, 2026 07:23
43d051c to
2c6c2eb
Compare
michaeljgrimm
force-pushed
the
codex/rr-55-cli-peers
branch
from
October 7, 2026 07:55
c703f63 to
24478ea
Compare
The CLI calls opf-render and opf-pptx through their 0.14 APIs and its peer
ranges are ^0.14.0; the registry-consumer scripts move with it.
CLI: loadFonts handle passed as { fonts } to paginate, renderSlideSvg, svgToPng,
svgToPdf and toPptx; fromPptx(bytes, { signals: true }) reads { presentation,
signals }; a thrown peer error's findings are reported as findings; the PDF
probe, the signals version guard and every 0.13 code path are removed.
Scripts: published-matrix consumer and engines-installed.mjs, browser-check,
developer quickstart, layout-contract, native-quote, native-feature-matrix,
native-powerpoint, probe-code-native, code and metric and quote geometry and
browser checks, registry gallery editor, site showcase, deployed-font check,
packed ecosystem consumer and the installed-parity font host use the 0.14 names.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
michaeljgrimm
force-pushed
the
codex/rr-55-cli-peers
branch
from
October 7, 2026 11:01
24478ea to
a77a4ed
Compare
…flict with the plan When release-plan.json names a CLI whose optional peer ranges (opf-render, opf-pptx) the plan's own render and pptx do not satisfy, installing it beside them fails with ERESOLVE and its commands call the previous sibling APIs. The registry consumer, the developer quickstart, the registry fidelity run and the registry toolchain leave it out and print a notice naming the mismatch. The condition is exact: scripts/release-plan-cli.mjs reads the plan CLI's peerDependencies from the registry (injectable reader) and checks them with a small semver implementation. A failed registry read is an error. The CLI runs again as soon as the plan names one whose ranges the plan satisfies. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The three pinned SVG digests are unchanged; only the renderer and core labels move (0.12.0 to 0.14.0), so files.mjs compares them again instead of skipping. Generated with UPDATE_GOLDEN=1 against the published opf-render 0.14.0 (66866e5). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The CLI's devDependency peers move to the published 0.14.0 packages; the lock changes only their entries and the core they depend on (0.13.0 to 0.14.0). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
release-plan.json names core 0.14.0 (f9e9433), opf-render 0.14.0 (66866e5c), opf-pptx 0.14.0 (ac946771) and opf-editor 0.14.1 (head to be set when it publishes); the CLI entry and bundledCore stay for `release-train prep cli`. The quickstart version block and the pages that name the current set follow. The docs and skills that still showed the removed or renamed names now show the 0.14 API: loadFonts and the fonts handle ({ fonts }), deck-level renderSvg and renderSlideSvg, editor.presentation and .presentation results, the browser loadFonts and canvas `fonts` option, and the compatibility matrix rows. The published-matrix engines-installed.mjs exports presentationOf again: the harness of the plan core's release tag (opf-v0.14.0) reads an editor session through it. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
0.14.0 and 0.14.1 were never published; the editor head stays the placeholder until 0.14.2 is on npm. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
release-plan.json records opf-editor 0.14.2 at its npm gitHead (d4216427) for verificationRefs and exampleRefs; the matrix consumer package.json and lock are refreshed by prepare-consumer.mjs --update-lock to the published 0.14 set. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
michaeljgrimm
marked this pull request as ready for review
October 7, 2026 18:42
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: e06f37eb-499f-4749-9252-0b7884e5e175) |
…rer API editor.document -> editor.presentation, and renderSvg returns one SVG per slide in 0.14 (joined before matching). The downstream block only runs when the published siblings share core's line, so 0.14 is its first run. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: 8fad50df-6861-4f54-b982-e70aa05fb3a1) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The CLI (
packages/cli) and the registry-consumer scripts on the published 0.14 set. Based on main (core 0.14.0 release, #444). Ready to merge: every package it needs is on npm.The set
release-plan.jsonnow names core 0.14.0 (f9e9433), opf-render 0.14.0 (66866e5c), opf-pptx 0.14.0 (ac946771) and opf-editor 0.14.2 (d4216427; 0.14.0 and 0.14.1 were never published).verificationRefsandexampleRefsare the npm gitHeads. The CLI entry (0.11.0) andbundledCoreare untouched:release-train prep climoves them.CLI
^0.14.0, devDependencies0.14.0,pnpm-lock.yamlrefreshed (17 lines: the CLI importer's two peers and the core they depend on).prepareNodeFontsisloadFonts(the handle goes as{ fonts }topaginate,renderSlideSvg,svgToPng,svgToPdf,toPptx);renderSvg(deck, { slideIndex })isrenderSlideSvg(deck, index, ...);fromPptx(..., { signals: true })returns{ presentation, signals }; a thrownOPFRenderError,OPFPptxErrororOPFValidationErrorwithfindingsis reported as those findings.pdf.vectorSupportedis gone (vector is the default).signals.versionis the version the signals carry.peer-too-oldand the install command (the CLI checks features:loadFonts,renderSlideSvg,inventoryTypefaces).render-hashes.json) are generated withUPDATE_GOLDEN=1against the published opf-render 0.14.0: the three digests are unchanged, only the labels moved (0.12.0 to 0.14.0), sofiles.mjscompares them again instead of skipping.changes/rr-55-cli-peers.md.Registry scripts
Moved to the 0.14 names, and their published 0.13 variants deleted: the published-matrix consumer and
engines-installed.mjs(plain re-exports),browser-check,test-packed-ecosystem, the developer quickstart, layout-contract, native-quote, native-feature-matrix, native-powerpoint,probe-code-native, the code, quote and metric geometry and browser scripts (fonts:tofontFamilieswhere 0.14 ignored it), the registry gallery editor (lazyFontsBaseUrlnow decides whetherlazy-fonts.jsonships), the site showcase, the deployed-font check, the installed-parity font host, and the two evidence fixtures that still used{ family }font roles.probe-code-layout-gap,probe-metric-layout-gap,probe-payload-fit-gapsandreview-metric-corpuspin old versions on purpose and are unchanged. The matrix consumerpackage.jsonand lock are refreshed byprepare-consumer.mjs --update-lock.The plan-CLI gate
The plan still names CLI 0.11.0, whose optional peers are
opf-render ^0.13.1andopf-pptx ^0.13.2. Installing it beside the planned 0.14 libraries fails with ERESOLVE (reproduced with npm), and its commands call the 0.13 APIs.scripts/release-plan-cli.mjsdecides on that exact condition: it reads the plan CLI'speerDependenciesfrom the registry (injectable reader) and skips it only when the plan's render or pptx do not satisfy them. A read failure is an error, never a silent skip. The registry consumer (test-packed-ecosystem --registry), the developer quickstart,test-registry-fidelityand the registry toolchain leave the CLI out and print: "release plan's CLI 0.11.0 requires opf-render ^0.13.1, opf-pptx ^0.13.2; the plan has opf-render 0.14.0, opf-pptx 0.14.0: skipped until a compatible CLI is in the plan". They run the CLI again as soon asprep cliputs CLI 0.14.0 (peers^0.14.0) in the plan; no shim. Unit tests:pnpm check:release-plan-cli(8 tests: semver, mismatch, match, missing peers, read failure, this checkout's ranges).packages/cli/test/packed.mjs --registryinstalls the plan CLI alone and is not gated.Docs sweep
docs/,skills/,README.mdand the package READMEs describe the current API:loadFontsand{ fonts }, deck-levelrenderSvgandrenderSlideSvg,.presentationon editor sessions and results, the browserloadFontsand canvasfontsoption,validate/Findings. Files:docs/quickstart.md,docs/font-fidelity.md,docs/live-editor.md,docs/dynamic-composition.md,docs/compatibility-matrix.md,docs/design-resolution.md,docs/templates-and-variables.md,docs/yaml.md,docs/cli.md,packages/cli/README.md,skills/opf-export/references/rendering.md,skills/opf-edit/references/editor.md,skills/opf-layout/references/geometry.md, plus the current-set lines of README and six more pages.docs/programs,docs/evidence,docs/plans, changelogs and the compatibility matrix's history rows are untouched.Results (Node 24.21.0, Windows, against the published 0.14 packages)
pnpm --filter @openpresentation/cli test: 91node:testtests,cli.mjs92 checks (1 symlink check skipped on this account),files.mjs84 checks with the golden compared.pnpm test:cli:packedandpnpm test:cli:packed:peers(render and pptx 0.14.0 from npm) pass.node scripts/check-changed.mjson the 44 changed files: biome,check:changes,check:engines-range,check:font-tracker,check:gallery-tracker,check:release-plan-cli,check:release-report,check:runners,check:text,check:works-percent, typecheck and CLI tests pass.check:schema-docsandtest:skillspass.test-packed-ecosystem --registry(includestest-installed-code --registry),test-packed-browser registry(canvas, rich-text, layout, block, list, create, styled-table),test-layout-contract-registry(100 layouts),test-registry-fidelity,test-installed-code-guards --registry, quote geometry (6), code geometry (8) and browser (8), metric guards, metric geometry (60) and browser (50),pnpm test:developer-quickstart.prepare-consumer.mjs(tsc NodeNext, Bundler, emit), the TypeScript consumer,browser-check.mjsin Chromium, and the full font-switch matrix throughengines-installed.mjswith theopf-v0.14.0harness (61 of 61 decks, 18 switches, 274 states) pass.build-registry-gallery-editorandbuild-site-showcase --registryagainst the final plan (both passed earlier with the editor tarball in the slot).🤖 Generated with Claude Code
Note
Medium Risk
Breaking change for CLI optional peers and many integration scripts; incorrect peer gating or API mismatches could break CI/registry checks until the CLI train catches the plan.
Overview
RR-55 moves the CLI and registry consumer tooling onto the coordinated 0.14 sibling APIs and bumps
release-plan.json(core/renderer/pptx/editor pins and verification refs). The CLI now requires peers^0.14.0, loads fonts once vialoadFonts, passes{ fonts }through render/export/import, usesrenderSlideSvgper slide, readsfromPptx(..., { signals: true })as{ presentation, signals }, defaults PDF to vector (dropspdf.vectorSupported), and surfaces thrown libraryfindingsin reports; 0.13 peers fail withpeer-too-old.Registry scripts, parity harnesses, gallery editor build, published-matrix consumer, and smoke tests are updated to the same names (
validate,renderSvg,editor.presentation, etc.); old 0.13 shims and duplicated published variants are removed. Docs and README pins/examples are swept to 0.14.0 and the new font/render API. Acheck:release-plan-cligate skips installing/running plan CLI 0.11.0 beside 0.14 libraries when peer ranges conflict, untilprep clilands a compatible CLI.Reviewed by Cursor Bugbot for commit 368cb75. Configure here.