Repository navigation
1.14.0
jsartoolkitNFT 1.14.0
Highlights
- NFT tracking runs on WebARKitLib's
ARToolKitNFTCore(#697, #683). The tracking logic that the single-thread and threaded bindings each implemented now lives in a pure C++ core in WebARKitLib 0.11.0, which also builds natively. Both Embind classes are thin adapters with the same API, sosrc/, the examples and your code are unchanged. Tracking output is identical, bit for bit, to the build before the refactor, for the Node, ES6, SIMD and threaded builds. The newtools/compare-builds.jschecks this. recalculateCameraLens()on the public API (#706, #630).ARToolkitNFTandARControllerNFTexpose it in all four variants, andgetCameraMatrix()returns the rebuilt matrix after it. The legacy APIs, which already had the method, now refreshgetCameraMatrix()too. The projection setters still only store the planes, and the initial matrix is unchanged.- The published type declarations carry the JSDoc (#707). Editors now show the documentation of the TypeScript API, including the deprecations below.
Deprecations
setThreshold / getThreshold, setThresholdMode / getThresholdMode, setImageProcMode / getImageProcMode, setDebugMode / getDebugMode, getProcessingImage and debugSetup are deprecated (#659, #707). They act on the square-marker ARHandle, which NFT tracking never uses, so they have no effect. They will be removed in the next major version. Nothing changes at runtime.
Fixes
- Threaded build (#697):
- loading markers while a detection search is running no longer stalls detection;
- a worker start failure returns an error instead of calling
exit(-1).
- Marker data after a reload (#697): after
teardown()and loading markers again,getNFTData(id)returns the new marker instead of the old one. - From WebARKitLib 0.11.0, compiled into every build: KPM freed a
new[]buffer withdeleteand leaked each page'simageInfoon teardown, and the worker shutdown left a mutex locked (WebARKitLib#95, WebARKitLib#97). .zftmarkers are decompressed by WebARKitLib's hardenedmarkerDecompress, which rejects truncated, corrupt and oversized files (#674, #687, #453).dist/no longer embeds the absolute path of the machine that built it (#684, #690).- Threaded examples clear the model and the loader when the marker is lost (#698, #699).
python-server.pyserves.mjsfiles as JavaScript (#688).
Behaviour notes
- Log texts. Some log texts change (#697). Info lines still go to
console.log, warnings toconsole.warnand errors toconsole.error.setLogLevel()now sets botharLogLeveland the core'swebarkitLogLevel. In the threaded build, "Detected page %d." is no longer printed, and "Tracking lost" now goes throughARLOGi. - Known limitation (#695). Re-initialising a threaded controller through the raw binding after loading markers hangs. The 1.13.0 build terminated on a freed KPM handle on that path instead. The TypeScript controllers never take it.
Packaging and tooling
- npm package (#643, #703): it no longer ships
coverage/,tests/,.github/or.devcontainer/. - Release assets (#691): the release asset list is kept in sync with the build.
- Dependencies (#673, #708): vitest 5.0.4, sharp 0.35.5, @types/node 24.19.2 and glob 13.
- Python bindings, released separately: libjpeg is now downloaded over HTTPS with a SHA-256 check (#651, #704), and the macOS wheels are built and tagged for arm64 only (#653, #705).
Full changelog: 1.13.0...1.14.0