Repository navigation
v2.1.2 — housekeeping
Housekeeping. Nothing in the running app changes — same scene, same
kinematics, same numbers. Three things that would have cost more later than
they cost now.
Changed
Both workflows run on Node 24 actions
Every action in both workflows targeted Node 20, which the runner already
forced onto Node 24 with a deprecation warning on every run; when support is
dropped, the tests and the Pages deploy would both have stopped.
| before | after | |
|---|---|---|
actions/checkout |
v4 | v7 |
actions/setup-node |
v4 | v7 |
actions/configure-pages |
v5 | v6 |
actions/upload-pages-artifact |
v3 | v5 |
actions/deploy-pages |
v4 | v5 |
The fourth name in the warning, upload-artifact@v4, was transitive:
upload-pages-artifact@v5 now calls v7 internally. Nothing in the majors
between affects this repo — setup-node's new automatic caching is overridden
by the explicit cache: npm (and package.json has no packageManager
field), and checkout's fork-PR blocking applies to pull_request_target and
workflow_run, which neither workflow uses.
Removed
springMat, which drew nothing
The LineBasicMaterial outlived the last Line in the scene. The mainspring
and the hairspring are both solid (springSteel) and the click spring clones
steel, so springMat was threaded from main.js through buildMovement
into tourbillon.js without ever rendering; its only remaining use was the
unreachable half of springSteel || springMat.
The hairspring material is now simply a springSteel clone, and the
isLineBasicMaterial guard around it goes too. Verified identical —
MeshStandardMaterial, #bfd4ff, roughness 0.22, metalness 0.95 — and the
scene holds 176 meshes and zero lines.
Fixed
Three stale details in the README: the balance radius was still documented as
≈1.5 where the mesh has 1.95 (and is now derived from the cage radius rather
than set on its own), the cage was still described as two cut-out plates, and
the free-mode control list did not mention cage opacity or the top plate.
68 tests.