{}OPF
DocsReferenceView source

Mac owner checkpoint — 10 September 2026

Runtime update (September 10): use Node 24 only for new development and verification; see migration instructions. Historical Node 20/24 results and commands below describe prior checkpoints. Keep distinct browser/OS/native gates and the existing Office recovery prerequisite.

The active goal covers the full OpenPresentation ecosystem, with font/layout reliability before vector PDF, then SVG/Mermaid, followed by coordinated new releases and public-site verification. This checkpoint does not complete that goal. Read the full 8 September handoff, 10 September wrap-up, ecosystem objective, font roadmap and text placement plan.

PR backlog and current state

The seven-repository audit found only core PR #60 open initially. Its TypeScript 7 compatibility changes were reviewed, updated to current main and tested on the exact updated head. Node 20/24 coordinated CI, Mac/Windows portability and Bugbot passed. Local TypeScript 7/core tests and clean packed TypeScript 5.9/7 NodeNext/Bundler consumers passed. Merge: e882f357cd7860b3e0905fdf0b2fb3ff8c2464d8; issue #41 is closed.

The separate Windows agent subsequently opened PPTX PR #17, retaining the owned verifier's process handle so Windows PowerShell 5.1 preserves its exit code. The exact head 95f5b9e0387dabb467a26d0fbbbdbe0171439a55 passed Linux/Windows Node 20/24 and Bugbot. Reviewed and merged as 24e7b2f12462df246e35a8a714a47923ecbd2bfe. The GitHub coordination handoff requests immutable native findings and preserved failures.

The initial audit found no open Dependabot security alerts in core, renderer, PPTX, editor or the three sites. Published versions remain core 0.9.0, CLI 0.7.0, renderer/PPTX 0.7.0 and editor 0.6.0. All three public origins returned HTTP 200 with successful production deployment records. That is a state check, not fresh deployed workflow certification. No npm version, release plan or deployment changed in this checkpoint.

Verified font preparation

Renderer PR #13, commit 91fe43e25dca9e4f04a2a18b1c6ee74e7e3d2863, adds prepareNodeFonts and an immutable manifest for 33 existing open faces/eight license notices. Exact package versions and file/notice hashes are checked before use. Shared options carry measurement, embedded SVG bytes and raster paths; system fonts are disabled. Visual substitutions remain explicit and authored documents are preserved.

The old raster default omitted semibold, italic and bold italic from the nine-face base registry. A direct probe preserves the three failing outputs and shows all nine matching after correction. All 143 changed corpus slides were inspected in 18 paired sheets and six at full size. The separate baseline preserves all 662 unchanged hashes and identical source. Complete renderer suites/805 slides pass under Node 20.20.2 and 24.21.0. Nine exact base faces pass actual offline Chromium loading and advance checks; accepted-text and rich-spacing browser checks also pass. Portable renderer evidence includes failures, paired images, hashes and reproduction instructions.

Core's coordinated font harness now passes the same preparation options through pagination, editor composition, SVG/PNG and PPTX. Fresh candidate installations verify source preservation, edit/undo, rendering, editable export and heading reimport. The new declaration consumer checks the shared API and immutable catalog. TypeScript 5.9 and 7 pass. Historical registry harnesses remain version-pinned and do not call unpublished APIs.

Both Node 20 and 24 Mac installed-browser runs pass seven suites: canvas, rich text, layout, blocks, lists, creation and styled tables, totaling 230 assertions and eight trusted interaction scenarios. The initial Mac styled-table run failed because Control+End left all text selected. A direct Chromium control reproduced that behavior; Meta+ArrowDown collapses the selection at the end. The harness now uses the native platform shortcut and asserts the selection before typing. The original failure screenshot/log remain in Mac evidence. Product editing behavior was not changed.

Font preparation merged after successful exact-head review and CI: renderer #13 as e4d0dc0070616bc3b63a10124ce92cb4aff40e21 and core #62 as 028178311dc7f29667086809c83eb09405cefc4a. No release occurred.

Merged physical font variants

Core adds optional FontFaceSelection metadata to TextStyle. Renderer #14 selects exact static weights through preferred-family grouping and preserves the physical legacy-family style flags. PPTX #20 consumes those flags across measured editable payloads. Previously Roboto 500/600/800 selected neighboring 400/700 files; SemiBold/ExtraBold could receive incorrect synthetic bold flags. All six reproduced selection/style discrepancies are corrected in the new source probes. Explicit custom namespaces, duplicate/ambiguous guards and providers without metadata retain documented behavior.

Source tests cover all nine base faces and seven payload slides on both Node runtimes. Actual offline Chromium advances match within 0.1 pixels; full renderer/converter Node 24 suites pass. The 805-slide base-font checkpoint stays unchanged. Seven complete before/after payload pairs were inspected. Fresh candidate checks repeat the physical-face tests from installed tarballs and verify shared layout, edit/undo, raster output, editable export and reimport. The candidate evidence records package/browser results and the separate native evidence review.

Physical variant changes merged after exact-head CI and review: core #64 as a3ad7053e1bd6b7ba7ee8c98cc679caed741c433, renderer #14 as 44ff76fe19ae9de80d2aaa962aa7e43fabce02bc, and PPTX #20 as cb297be6038b4ec6a84761693b6a7c9e4a4f518d. The current coordinator pins the merged renderer, PPTX 8bf8aab4a69e2f89b489ff64cde2ae6b7c46de7e (including the quote-role fix), and editor 6e0b7d2f1b4369fc0a228391cf36e913e05188f8. These source pins remain separate from historical registry verification refs. Versions and release-plan.json still describe the published set.

Remaining work and ownership

The Windows agent owns bounded native harness work and Office evidence. The user reviewed recovery and resumed Office activity on that computer. PPTX #18 bounds accepted-text workers and guarantees parent-owned temporary font cleanup; #19 bounds the six metric decks and preserves existing fidelity gates. Core #63, exact evidence e862a5f48bbb9e34aa6e5115922848292e23797f, contains 1,585 byte-verified files. Both Node runtimes pass 24 accepted-text cases, 144 editable lines, 72 exact original/saved/edited imports, 24 equal save/reopen PNG pairs and 96 original-text ink masks. The Mac independently checked those masks and records. The result is scoped to the recorded graph and does not identify every native glyph's font file.

The original retained baseline on both runtimes reproduces eight metric tab outliers (maximum 0.0673828125 points) and one portrait/right Latency ink overflow at x=497 beyond 496.8. Their 144 imports each pass; character bounds, mask coverage and collisions pass. The Mac independently decoded 96 complete metric slides and 276 isolated masks, checked raw tab arithmetic and import hash bindings, and reproduced the failures. Precise saved DrawingML tab coordinates do not establish why COM/native shaping differs. The Mac owns the shared runtime investigation; avoid duplicate Windows runtime edits.

Core #65/PPTX #21 completed the eight-workbook native chart edit matrix on both runtimes. Exact evidence a4e7e9b9b5810144b1f116d45a92bc71e1484c78 has 2,289 verified files. Independent Mac review executed 384 imports and 384 separate cache parses, checked live edits, all 128 original/reopened PNG pairs and all sixteen selected-slide raster changes. PowerPoint's loaded pie category getter returns null even in an independently native-created control; this is explicitly unavailable, while live edits and cached XML provide separate exact observations. The original dialog/crash/stale-cache failures remain retained.

Core #66 merged as 626bc8c80495733264a692401e6a8c96663dd62f after nine checks passed. Its bounded metric layout uses accepted outlines and raster clearance while preserving literal source/tabs, physical font selection and readability floors. Both Node runtimes pass 96 actual offline browser cases; the width-only control also passes and does not reproduce the native Calibri failure. Fresh Windows evidence in core #68, exact 5d39217f0716453bf3762057852006b4787de73b, independently confirms that the portrait/right Latency ink overflow is gone. The Mac checked 96 full native rasters, 276 isolated masks and 288 actual original/saved/edited imports. Six leading-tab discrepancies remain per runtime (max 0.0226745605469pt against 0.02pt); the full fidelity gate still fails. PPTX #23 corrects only the verifier's accepted-anchor assumption; tolerances and independent ink/source gates are unchanged. Core #68 merged as fb56cd247091f45a739eb3e752126db9e69fbe4d.

Core #67/PPTX #22 retain bounded native table/code/quote checks, exact evidence 2024141c116e81608d3c6632b02c7bcbcd2a2bcc with 2,646 verified files. Tables/code pass their scoped gates. Stronger quote comparison exposed 36 portrait first-body-line-to-subtitle failures. PPTX #24 fixes inference beside complete roles and adds missing tags to default estimated-font headings without changing native geometry. It merged as 8bf8aab4a69e2f89b489ff64cde2ae6b7c46de7e after all Linux/Windows Node 20/24 and Bugbot checks. Independent Mac runs of 108 table, 48 code and 72 quote imports pass on both Nodes; all 36 prior role failures are retained and now corrected. Six actual browser suites and sixteen loaded/default regression cases pass. Quotes still reimport as generic text lines, not semantic quote payloads.

The Akasia assessment records exact v0.0.2 open files and public upstream metric agreement across all twelve styles. It retains 14 missing reference codepoints and a Black Italic decomposed-mark Fontkit/Chromium difference of 0.421875px at size 32 on both Nodes. A source/NFC cluster control isolates the difference. Three full slides were inspected with existing sparse layout/contrast limitations explicit. No proprietary reference binary comparison, new mapping or font pack is shipped; Akasia remains experimental.

Core #69 merged the Akasia assessment and metric follow-up. Core #70, exact evidence 28ae661a606d0a70ff39d98aac32e84240dbbb23, adds fresh native quote runs after PPTX #24 and native-created tab controls from merged PPTX #26. All 182 files were checked against immutable Git blobs; the Mac independently reimported 72 quote slides on each supported Node runtime. Exact current body/footer order, multiplicity and title edits pass. The 0.02pt tab gate still fails in the native-created control; no offset/tolerance workaround is justified by this evidence.

The natural-rich-text candidate closes the estimated fragment-gap defect, preserves measured origins and adapts editor selection/caret mapping to traced SVG spans. Core harness 0f937d3ee94644ee3df312b7dbbf36b6efe27e70, renderer product 57be896e761af102961521acd7dd6104273296bf and editor product eeaee72f011ccb3d36259236d46fc9a4124a1eed define the tested source graph. The portable evidence records the 30-case browser checks, source edit/undo and clean installed-package checks. All 188 raster changes were visually reviewed with six full-size pairs; 617 hashes remain unchanged. The separate rich-flow checkpoint preserves historical baselines. This increment remains unpublished.

Renderer #15 merged as c92198b0d0acc94892385a8594fe2879461d64b0 and editor #12 as a0aa911188f8a6364b66c7a19cece64580c1d9f8, with Node 20/24 CI and independent review passing. The follow-up source graph uses renderer 6520f091a95aa95be5993580adf5df567eb439c8 and editor f0871842088d2180ed7de606c379d7921e7fbf0e. It resolves Linux measured SVG advance drift through geometric precision and explicit accepted horizontal advances, keeping raw font metrics distinct from constrained output. Independent review also fixed inherited code-role guards for traced spans; real text-node selection now covers code body/filename/language. Core #71/PPTX #27 retain nine native output family/style matches and blocked image controls. The Mac verified all 389 files, 28 fresh font-slide imports on each Node, and all seven full-size PDF rasters. Native image acceptance remains blocked pending reviewed Office recovery; no further COM retry or cleanup claim.

Core #72 merged the rich-flow coordination and native follow-up as 804c6d362fd175940b8dd3170976ae6ffe87ed8c after all supported-runtime checks and independent review passed. The subsequent scalar whitespace candidate is described in its plan and portable Mac evidence. It preserves spaces, tab segments and exact hard-break source ranges through fitting, SVG and editable PPTX reimport, fixes blank scalar selection and preserves untouched mixed endings across separate editor input events. A single wholesale replacement keeps the existing replacement-range newline policy. The 805-slide candidate changes 279 hashes, all reviewed in 35 paired sheets plus six full-size pairs; 526 are unchanged. Historical baselines and failures remain retained. The candidate is unpublished and does not close native Office or general visual-quality gates.

Continue the font roadmap: native follow-up for physical variants, real measurement integration in user workflows, text features, bounded repair/readability, diagnostic paths, multilingual shaping/coverage, Akasia/Aptos evaluation and native portability. Estimated rich-run gaps and scalar whitespace loss are corrected by the current candidates; sparse cards, missing marker glyphs and unresolved assets/data remain visible; the 805-slide hashes do not certify quality. Keep optional font packs openly licensed with provenance and bounded downloads. No silent content loss or synthetic compatibility claims.

Vector PDF remains gated on font/layout acceptance; sanitized SVG and the complete Mermaid support matrix follow afterward. Publication must use new versions in dependency order, then clean registry workflows, installed-package browser tests and all three deployed sites. The current releases and prior failures must remain distinguishable from source candidates throughout.

Readability floor source checkpoint

The preceding whitespace PRs merged: core #73 c51b02571eab6ee61d03560aa1f539072b2d381b, renderer #16 c7a7387f6e27cc21eeeec3015492afe289ec4ce3, editor #13 aea29cf6998127fda96a5cbcd6b608db4c4890e3 and PPTX #28 4c75ff713a19dff072e8f3660c368499973b78ab. The subsequent audit found no open PRs or Dependabot alerts across all seven repositories. The Windows coordination note is posted; its request remains conditional on user-reviewed Office recovery.

The next candidate fixes selected readability floors and bounds fitting to 65 candidate sizes, retaining source, run ratios and the prior relative shrink constraint. Core product is ade2a4f0a8afa93f546a3b1e18f2ed23b84d0ac7. Portable Mac evidence records the reproduced failures, corrections, both runtime suites and fresh installed editing/undo/export checks. The independent 48-case SVG/PPTX size matrix passes from source and installed packages on both runtimes. Renderer #17 retains all 33 reviewed paired sheets for 262 changes, six full-size pairs and the exact predecessor. Editor #14 and PPTX #29 coordinate CI only. CI/review acceptance and merge status must be checked live; no package or site release has occurred.

The floor checkpoint covers scalar/rich/list/table glyphs and shared heading allocation. It does not close small template footers/page numbers, all chart/timeline internals, missing nested marker coverage, Auto arrange, general visual quality or native Office gates. Continue reliability before vector PDF and then sanitized SVG/Mermaid. The overall goal remains active.

Shared timeline source checkpoint

Readability merged after all CI/review gates passed: core #74 2aeb86012c15193dba78ae81be838c9d7e09ac67, renderer #17 53b90878b8a9610117ac5191ebfaaa549cc2f3ea, editor #14 f71c1cdb3e9e25c9a62e25b0e711792820e6545e and PPTX #29 13b2229e3172e48ee489e68cac8432471993d7a9. Core exact head 82e5a86d597e99c5e3c032d8b3aea717fb0393e3 passed all nine checks, including coordinator run 34535898793; review comments were empty. A fresh seven-repository audit found no open PRs.

The new timeline implementation fixes core/renderer acceptance disagreement, omitted metadata and synthetic shorthand source paths. Product graph: core cc4b5245ba1c197746a2c307b78ff58f45df02cc, renderer 1e5cd95a76e356c09ae5da0c8604809a202b1f40, editor 78184f161bdb243822f2b21699ee0ab759c4c7bd, PPTX 6f06406d9615b35a66f39e6424b35b1d32a73052. Portable evidence includes source and installed browser checks on both runtimes, exact current-native-text semantic timeline reimport, bounded search and strict overflow/pagination controls. The independently reproduced predecessor matches all 805 hashes; 83 candidate changes were reviewed in eleven paired sheets and six full-size pairs, with 722 unchanged. New timeline baselines are separate from prior checkpoints.

This checkpoint is unpublished. Verify live PR/CI status before claiming merge acceptance. Native tab tolerance still fails and image acceptance remains blocked pending Windows Office recovery. The narrow portrait browser control fits but remains heavily wrapped; Auto arrange and overall quality are not complete. Continue font/layout reliability before vector PDF, then SVG/full Mermaid, coordinated new releases and three deployed-site workflow checks.

Shared timeline is merged: core #75 166cebd8d8af4a80cef3e06ece8e0f8f2d1cecb8, renderer #18 f863c9c9b234a36720e2500e19b0384e340f1cfb, editor #15 6a3b85aecd7ee96bbcd67d60e02a4c3e32ba93bb, PPTX #30 9646c0ddf6880dde1d41ecdf21446d347cd88bf4. Final core head c2379f870ee0eadabfcda2f738226bf8184451f3 passed all nine checks, including coordinator 34540948071; no core review comments. Final PPTX d03e2daebaf9fb6c5d01a7461da22695da2bcb9f passed Linux/Windows Node 20/24 and Bugbot (run 34540943584). Its guard-order review was fixed before merge. The editor blank-field finding was disproven by its existing generic source-text fallback and actual pointer/bounds controls; the additional blank-when evidence is retained. Both runtime editor CI passed and the finding was resolved before merge. A fresh seven-repository audit returned zero open PRs.

The next shared header/footer plan begins on codex/shared-furniture-20260910. Read-only Node 20/24 wide/portrait controls reproduce fixed 13px furniture at selected floors 16/32 and missing authored header/footer words in PPTX. They remain in artifacts/furniture-predecessor and the source probe/output files in /private/tmp/opf-furniture-gap-before-node*.json. No furniture product changes have been made yet. The core branch is based on the merged timeline checkpoint. The exact timeline core raster predecessor archive is retained at /private/tmp/opf-timeline-predecessor.tgz (SHA-256 ad60806239f3aa3d6a9e0993a74d7781225a75998736213f019e34eb7f78a9bd), with its original candidate manifest; the accepted timeline raster corpus remains available. Published versions, release plans and deployments are unchanged. The overall goal is still active.

The final Windows handoff records the timeline/readability merge graph and keeps new native work conditional on reviewed Office recovery. Portable header/footer predecessor evidence preserves the next defect before changes. All four active runtime checkouts now use codex/shared-furniture-20260910 based on their merged timeline checkpoints.

Shared furniture implementation checkpoint

The first source implementation is committed: core 864b73e356c45211a28f3ca5afe0702b55868fa4, renderer 4e11b9557b589e3a9d04c7c97b4a0c66bce83d94, editor e0c817fb372a5639f9fd1c829e85bf21fb1ba241, PPTX d06bc9c72aef16fdbe345704309f53ed97321417. The preceding statement that no furniture product changes exist is historical. Portable draft evidence records this exact candidate, its failures and current limits.

Core resolves inherited/local/disabled furniture, preserves literal strings and metadata sources, measures accepted parts at the selected floor and reserves body space (grid-score-v9, furniture-flow-v1). Pagination evaluates final output page numbers and separates optional repeated metadata mappings from its existing body slices. Core's 507 tests and legacy pagination pass on Node 20/24. Thirty-two offline browser cases per runtime pass source editing, empty fields, generated-value selection guards, dates and undo/redo; all four reviewed full-size screenshots match across runtimes. Sixteen PPTX exports per runtime match accepted text boxes, font sizes, source lines and fitted images; all sixteen outputs are byte-identical across runtimes. Existing editor and converter suites pass on both runtimes.

Semantic furniture reimport is not implemented. PPTX currently draws accepted parts with stable shape names and preserves blank lines, but has no furniture provenance tags. Continue that work before creating the coordinated PRs or claiming a complete author/edit/export/reimport workflow. The plan identifies standard common-slide customer data as a possible topology carrier for empty/false definitions, to assess and test without stale source words. Missing/duplicate/changed groups, current native text/images, generated metadata disagreement and inheritance/overrides need explicit controls.

Renderer Node 24 non-golden checks pass. Its old timeline baseline correctly reports 657 changed / 148 unchanged slides with an unchanged source digest. The candidate manifests are in opf-render/artifacts/furniture-golden-after; this initial run did not request PNG artifact retention. Regenerate the same candidate with OPF_GOLDEN_ARTIFACTS=1 or --update into a distinct review directory, retain/verify predecessor PNGs, then inspect all changes and full-size pairs before promoting any new baseline. The old timeline baseline remains untouched. Clean candidate package/installed workflows, coordinated CI, PR review and merging remain pending. The large-font portrait browser specimen wraps the organization heavily despite passing bounds.

A fresh seven-repository audit still returned no open PRs. The latest three comments on core #71 contain no new Windows recovery evidence; the existing tab failure and blocked image state remain unchanged. No COM retries occurred. Versions, registry releases, sites and the full-goal acceptance status remain unchanged; continue reliability before vector PDF, then SVG/full Mermaid and coordinated publication.

The full candidate PNG corpus has now been regenerated into opf-render/artifacts/furniture-golden-review: all 805 PNG hashes match its manifest, and that manifest exactly matches the retained first comparison. Paired visual review is still pending. The four source commits and evidence checkpoint abf3e27563364b4a6e1a095558740be8bd0da85c are pushed to their matching furniture branches; no furniture PRs exist yet.

Concurrent working-tree edits to docs/plans/ecosystem-objective-2026-09-09.md and docs/plans/font-roadmap.md add an accepted Node 24-only runtime maintenance milestone after current in-flight checks and before release. These edits were discovered after the source checkpoint and left intact and unstaged. The current Node 20/24 checks are finished; follow the updated roadmap for subsequent work rather than starting more duplicate Node 20 runs. Audit and align the four packages/CLI, three sites, CI/packaging, clean installation, tooling and Windows coordination on Node 24 while retaining distinct browser/OS/native gates. Preserve historical evidence and published artifacts. This newly observed roadmap does not mean the engine declarations or active CI matrices have been migrated yet.