pcbjam/web/standalone
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Istvan Matejcsok 96abe5d4a5 fix(3d): return the substituted .step path from the model memo, not the ref's .wrl
ensureModelInMemfs memoized materialized refs in a Set<string> and, on a cache
hit, returned `${MODELS_3D_ROOT}/${ref}` — the ref's OWN path. But the wrl→step
fallback writes the body under the .step filename and returns that. So the first
ensure (prescan) wrote M.step and returned it, while the second ensure (the C++
viewer's PCBJAM_3D::EnsureModelFile lazy fallback) hit the early-return and got
back M.wrl — a file never written. KiCad then stat'd the missing .wrl
(S3D_CACHE::checkCache → GetModificationTime), so every component model on a
KiCad-6-vintage (all-.wrl) board failed with "Failed to retrieve file times for
'…​.wrl' (error 44)" and nothing rendered.

Fix: memoize ref → the ABSOLUTE path actually written (Set<string> →
Map<string,string>) and return that; doEnsure reuses an on-disk body via
analyzePath and records the real target. Regression test: a second ensure of a
.wrl ref returns the .step path, not the .wrl.

JS-only, no pcbnew rebuild. Only bit boards that reference .wrl (the CDN is
STEP-only from 10.x) AND double-ensure via prescan + lazy fallback — which is
why .step-ref boards worked.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 18:01:32 +02:00
..
scripts refactor(web): split into GPL standalone editor + thin reference backend 2026-06-09 12:35:46 +02:00
src fix(3d): return the substituted .step path from the model memo, not the ref's .wrl 2026-07-02 18:01:32 +02:00
.env.example feat(standalone): demo follow-ups — waitlist, analytics, move-to-local, file tree, load progress 2026-06-27 07:59:09 +02:00
index.html refactor(web): split into GPL standalone editor + thin reference backend 2026-06-09 12:35:46 +02:00
package.json feat(demo): local dev-demo runner — R2 libs + example gallery, no backend/partykit 2026-06-26 08:16:43 +02:00
postcss.config.js refactor(web): split into GPL standalone editor + thin reference backend 2026-06-09 12:35:46 +02:00
tailwind.config.js refactor(web): split into GPL standalone editor + thin reference backend 2026-06-09 12:35:46 +02:00
tsconfig.json feat: standalone save/load routing + VITE_DOC_SOURCE ydoc mode 2026-06-12 14:05:40 +02:00
vite.config.ts fix(collab): dedupe yjs so @pcbjam/shared + standalone link ONE instance 2026-06-30 09:54:50 +02:00
vitest.config.ts fix(collab): dedupe yjs so @pcbjam/shared + standalone link ONE instance 2026-06-30 09:54:50 +02:00