Repository navigation
feat: publish as @frsource/box3d-wasm, track Box3D via git dependency, emit types - #1
Merged
Merged
Conversation
FRSgit
marked this pull request as ready for review
October 6, 2026 21:17
The fork is the product: the package, repository, bug tracker and homepage now point at FRSOURCE, the scope is public, and the README says what the fork adds over monteslu/box3d-wasm. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
emcc --emit-tsd writes dist/box3d.d.ts and dist/box3d.deluxe.d.ts at link time, so the published types cannot drift from the binding. The auto-detecting entry gets a hand-written entry.d.ts that re-exports the standard flavour's types, and package.json exports point at them. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
FRSgit
force-pushed
the
feat/frsource-release-automation
branch
from
October 6, 2026 22:12
e97c99e to
192a5fc
Compare
Box3D is now the @erincatto/box3d devDependency pinned to a commit of
github:erincatto/box3d, so pnpm install fetches the engine source and
Renovate bumps the pin as a digest update (committed as feat(engine) and
automerged once CI is green). scripts/fetch-deps.sh and versions.json
are gone, and the build reads the source from node_modules.
The pin moves from 29bf523 to e77352c (2026-10-03), which renamed
b3Body_Get{Local,World}CenterOfMass to b3Body_Get{Local,World}Center.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
emsdk installs emscripten's npm deps with --production, so emcc falls back to the project's tsc (TypeScript 6) and runs it from the emsdk directory. TypeScript 6 walks up from there and, with the cache inside the workspace, finds the project tsconfig.json and exits with TS5112. Caching emsdk one level above the workspace keeps that search empty. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…orkspace actions/cache rejects relative paths that leave the workspace, so the only way to keep emsdk out of the tsconfig.json search path is to drop actions-cache-folder. The uncached install takes about thirty seconds, roughly what restoring the 500 MB cache tarball took. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
emscripten 4.0.18 passes --outFile to tsc when generating the embind declarations, and TypeScript 6 rejects that option as deprecated (TS5101). emscripten stopped passing it in 6.0.0; 6.0.2 is the version the local build and tests were run with. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ence Centered header, quick start, flavour table and a reference that covers every bound option and method: world, bodies, shapes, the nine joint types, queries, events, memory handling and the generated types. Defaults are taken from the pinned Box3D definitions. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Box3D's default shape density is 1000 (water) and contact events are off until enableContactEvents is set. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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.
Summary
Turns the fork into a published package that follows Box3D automatically.
@frsource/box3d-wasmname, repo links,publishConfig.access: public, semantic-release via@frsource/semantic-release-config(main→latest, single channel). The Julynextprerelease channel andsync-upstream.ymlare dropped: Box3D has tagged once in three months, so they would have frozenlatest.id-token: writeand noNPM_TOKEN;@semantic-release/npm13 does the token exchange itself. Node 24 ships npm 11.19 (minimum 11.5.1).@erincatto/box3d: github:erincatto/box3d#<sha>inpackage.jsonreplacesscripts/versions.json+fetch-deps.sh.build.shcompiles fromnode_modules/@erincatto/box3d. pnpm replaces npm because npm refuses a git dependency without apackage.json.renovate.jsonadds the rule the shared preset lacks:feat(engine)commit type so semantic-release releases it,automerge,schedule: at any time.emcc --emit-tsdwritesdist/box3d.d.ts/dist/box3d.deluxe.d.tsfrom the embind registrations;exportspointstypesat them (plusdist/entry.d.tsfor the auto entry). Object-valued params (val) areanyfor now.e77352c(2026-10-03, 29 commits): two renames inglue.cpp(b3Body_Get{Local,World}CenterOfMass→b3Body_Get{Local,World}Center). JS API unchanged.csrc/flat.cppclang-formatted (upstream never ranlint:nativeon it);nprocfallback for macOS inbuild.sh.Verified locally (emsdk 6.0.2, node 22.14, pnpm 12.5.1)
pnpm install --frozen-lockfile, cleanpnpm build(standard + deluxe +.d.ts),pnpm test26/26,pnpm lint,pnpm lint:native.Before merging
@frsource/box3d-wasm: GitHub Actions, ownerFRSOURCE, repositorybox3d-wasm, workflow filenameci.yml, no environment. Tick "allownpm publish": configurations created after 2026-09-03 default tonpm stage publishonly, and semantic-release runsnpm publish. The config expires if the first publish does not happen within 2 days of creating it.npm publishfrom a local build, then add the trusted publisher.🤖 Generated with Claude Code