6 Commits
Author SHA1 Message Date
chromaglow 0887505092 tests: build file paths with fileURLToPath so the suite runs on Windows (#230)
URL.pathname gives '/C:/dir%20with%20space/...' on Windows, so every test that
reads a model or fixture failed there (75 of 265). import() specifiers keep the
URL; disk reads take a filesystem path.
2026-10-10 13:35:51 -05:00
matthewtrahan a1c64e5f04 engine: raster swap's grip rule scales with height -- max(0.1 mm, 5% of the grip's z); compare.js matches 2026-09-30 18:31:14 -05:00
matthewtrahan 8023b51ce4 engine: short walls as a last resort -- a low strut under 7 mm no longer prints into air
Issue #121 (a headset's ring-and-strut lattice): strut undersides are 4-6 mm long,
under PROP.minSpan, so every one was dropped as a stub. After the walls and wedges,
the regions still bare get one more placement pass (web/fins/shortwalls.js) where a
wall may be as short as minSpanShort (4 mm) while it stays at most maxShortAspect (6x)
as tall as it is long. Toothpicks (5 mm x 126 mm) are still refused.

Last resort, not the normal pass: in the normal pass a short wall "serves" a face and
stands a wedge or raster row down (5 tests caught it, e.g. a tube lost 14 wedge tines).
Only bare regions are touched, so served parts are byte-identical. A short wall within
sideClear of any built wall/wedge is dropped (bounding boxes). `lastResort: false`
skips the pass, like `raster: false`; the raster tests use it for their baseline.

Sweep vs main (NOCHECK): 852/864 byte-identical, 0 blocking, 9 cases +2 pts coverage.
2026-09-29 09:12:31 -05:00
matthewtrahan b6bf589af7 prototype: drop the generated example models -- probe runs on real/; bowl/dome/torus become raster test fixtures 2026-09-28 08:14:34 -05:00
matthewtrahan abca1dbdd4 tests: raster:false test asserts something real; grip/wedge test adds X45 2026-09-27 21:43:50 -05:00
matthewtrahan f1613206cc tests: pin raster placement and square tines 2026-09-27 21:43:50 -05:00