docs(text): document the public subpaths and answer the external review - #62
Open
thejustinwalsh wants to merge 6 commits into
Open
docs(text): document the public subpaths and answer the external review#62thejustinwalsh wants to merge 6 commits into
thejustinwalsh wants to merge 6 commits into
Conversation
size-limit report 📦
|
thejustinwalsh
force-pushed
the
docs/core-api-surface
branch
2 times, most recently
from
August 11, 2026 23:33
47532da to
e6d17f3
Compare
thejustinwalsh
marked this pull request as ready for review
August 12, 2026 00:30
The README Core API section imports from @pmndrs/text/core and @pmndrs/text/tsl instead of naming internal modules, the render-plan section stops claiming the host is unpublished, and D-249 records the surface split with the first-party rigor lint.
Responds to the external review of the subpath split. The published declarations broke under skipLibCheck: false because the core barrel re-exported the @internal engine-exports bridge and the session constructor leaked its stripped type; the bridge leaves the barrel, the constructor is internal (sessions come from TextEngineHost), and a new dist-declarations check keeps emitted declarations strict-consumer clean. The barrel gains the capabilities Three still consumed privately — firstPartyFontBindingBytes, the font-selection lease helpers, disposal observation, and the TextEngineFeature/FlowVertex frame types — and Three now imports core and tsl through their barrels only, enforced by the tightened per-surface lint. The remaining Three-prefixed private slug interfaces finish the Tsl rename.
The example now imports the msdf technique, takes the singular loadFont result, registers the binding and stack that styles reference, dispatches patches by opcode instead of describing every patch as a byte copy, and describes the Three technique subpaths as raster-contract exports rather than side-effect registrars.
Two new measured entries bundle @pmndrs/text/core and @pmndrs/text/tsl alone, with graph assertions that the renderer-neutral core pulls no three, tsl, or react integration code and pinned budgets at the measured sizes.
The integration is just a Three renderer built on the public surface — nothing about it is privileged, so the names stop claiming otherwise: techniqueWireIds, threeRenderPolicyBytes, loadedFontBindingBytes, and the Three policy's TRANSFORM/STABLE_GLYPH buffer ids.
thejustinwalsh
force-pushed
the
docs/core-api-surface
branch
from
August 12, 2026 00:32
e6d17f3 to
1846b2f
Compare
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.
Docs + external-review response (D-249)
Docs: the README Core API section imports from
@pmndrs/text/coreand@pmndrs/text/tslinstead of naming internal modules; the render-plan section stops claiming the host is unpublished; D-249 records the split; package concepts and OKF digests refresh.External review response (read-only Codex review, trace retained at
.cache/claude-review/20260811-142203-codex-core-cleanup/):skipLibCheck: false— the core barrel re-exported the@internalengine-exports bridge and the session constructor leaked its stripped type. The bridge leaves the barrel, sessions construct only throughTextEngineHost, and a new dist-declarations check in the package gate keeps emitted declarations strict-consumer clean.firstPartyFontBindingBytes, font-selection lease helpers, disposal observation, two frame types), Three imports core/tsl through their barrels only, and the lint tightens to deny deepcore/**andtsl/**imports from the integration surfaces.loadFontresult, binding/stack registration shown, patches dispatched by opcode, and the Three technique subpaths described as raster-contract exports.Three*slug interfaces finish theTslrename; stale comments corrected.@pmndrs/text/coreand@pmndrs/text/tslalone, with graph assertions that the renderer-neutral core pulls no three, tsl, or react code, and pinned budgets (core 207,759 raw / 30,853 Brotli; tsl 25,717 / 3,499).Post-review amendments: the
firstPartynaming is gone — the integration is just a Three renderer built on the public surface, so the names stop claiming privilege (techniqueWireIds,threeRenderPolicyBytes,loadedFontBindingBytes, plainTRANSFORM_BUFFER_ID/STABLE_GLYPH_BUFFER_ID). The stack's intermediate layers were also repaired to pass the CI static gates standalone (per-layer OKF digests, formatting, and an unused import that had only been fixed at the top); every branch now runs the exact CI static suite green locally.Full root check green end-to-end.
Stack created with GitHub Stacks CLI • Give Feedback 💬