Skip to content

Maintenance: update dependencies and build tooling so the project runs on modern Node - #412

Open
eduardolundgren wants to merge 9 commits into
masterfrom
chore/revive-maintenance
Open

eduardolundgren wants to merge 9 commits into
masterfrom
chore/revive-maintenance

Conversation

@eduardolundgren

Copy link
Copy Markdown
Owner

This is an AI-assisted maintenance pass to get the project back into a workable state on modern Node — no new features, no API changes.

What changed

  • Build: the gulp 3 pipeline no longer runs on current Node, so the build is now a small Node script using terser (npm run build). The build/ output layout is unchanged.
  • Tests: nodeunit is unmaintained and fails to install; the existing test files now run through a small compat runner on Node's built-in test runner (npm test, Node >= 18). The timing-based benchmark suite moved to npm run benchmark.
  • Lint: npm run lint (jshint) passes again; mechanical fixes only (semicolons, duplicate declarations, strict equality on numeric comparisons).
  • Examples: dat.gui and three.js now come from npm instead of bower. The fish tank demos were ported off three.js APIs removed years ago and run on three 0.147.0. npm start serves the repo locally for trying the examples.
  • Bug fix: Image.blur returned float data that Image.grayscale (since its buffer-based rewrite) misread as 8-bit RGBA, producing thousands of phantom FAST corners in the BRIEF feature-matching examples. Blur now returns Uint8ClampedArray; a regression test covers the pipeline.
  • CI: Travis config replaced with a GitHub Actions workflow running lint + build + tests on Node 18/20/22.

All examples were manually verified in the browser (camera demos up to the permission prompt).

🤖 Generated with Claude Code

eduardolundgren and others added 8 commits August 11, 2026 08:28
The gulp 3 toolchain no longer runs on modern Node (graceful-fs
natives break on Node >= 12). The build is now a small script using
terser for minification, producing the same build/ output as before
(tracking.js, tracking-min.js and build/data). Bower is long dead, so
its config is gone too; example dependencies (dat.gui, three) now come
from npm devDependencies.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
nodeunit is unmaintained and fails to install on modern Node. The test
files keep their nodeunit-style shape; a small compat runner adapts
them to Node's built-in test runner, and the sandbox util now uses
node:vm instead of nodeunit.utils.sandbox. Run with npm test; the
timing-sensitive benchmark suite moved to npm run benchmark.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Mechanical cleanups so npm run lint passes: missing semicolons on
function expressions, duplicate var declarations, curly braces on
single-statement blocks, dot notation, strict equality on numeric
comparisons, and removal of a dead rotation computation in
Regressor.applyGlobalPrediction whose result was never used. The
.jshintrc now allows == null checks (eqnull) and only flags unused
variables, not unused parameters documented in public signatures.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The examples loaded three.js r67 from a sibling bower directory that
no longer exists. They now load three 0.147.0 (the last version to
ship a UMD build) from node_modules, and the renderers were ported off
APIs removed years ago: ImageUtils.loadTextureCube is replaced by
CubeTextureLoader, the ShaderLib cube skybox hack by scene.background,
and CanvasRenderer/SpriteCanvasMaterial by WebGLRenderer/SpriteMaterial
with a canvas-generated circle texture. FishTankRenderer also resizes
with the window now instead of sizing once at load.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
CI runs lint, build and the unit tests on Node 18/20/22. The README
drops the dead Travis and David badges and bower instructions, and
documents the npm scripts for building, testing and serving the
examples.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Image.blur returned the raw Float32Array from the separable
convolution, but Image.grayscale (since its buffer-based perf rewrite)
reinterprets its input buffer as 8-bit RGBA. Feeding it float data made
it read float bit patterns as pixels, which produced thousands of
phantom FAST corners and garbage BRIEF matches in the feature matching
examples. Blur now converts the convolution result back to a
Uint8ClampedArray. Adds a regression test covering the blur-into-
grayscale pipeline.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@tj-creative

tj-creative commented Aug 11, 2026 via email

Copy link
Copy Markdown

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants