pcbjam/docs/features
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Viktor Vaczi db9d6ee04b feat(wasm): occ-split — lazy occ_service worker; kicad_editor drops OCC (−31%)
Move OpenCASCADE out of the merged editor image into occ_service: a separate
emscripten module (-sASYNCIFY=0, MODULARIZE, in-container -Oz finalize, 2N+8
pre-warmed pthread pool) booted lazily in a dedicated Web Worker on the first
STEP export or STEP/IGES model parse. kicad_editor.wasm ~190 MB -> 130 MB;
sessions that never touch OCC never fetch its 57 MB. STEP export works in the
browser for the first time: the unchanged desktop dialog runs EXPORTER_STEP,
whose wasm shadow suspends into globalThis.occService and the export bytes go
straight to a browser download (never entering the editor heap). STEP/IGES 3D
models parse in the worker via the oce shadow (S3D WriteCache/ReadCache wire).

- wasm/occ-service/: service CMake target (hooked from the kicad fork's
  top-level CMakeLists, wasm/editor pattern), embind entry
  (occExport/occLoadModel), wxConfig pre-js.
- wasm/stubs/{exporter_step,oce_plugin}_stub.cpp: EM_ASYNC_JS worker bridges
  (callee-shadowing; no caller #ifdefs).
- web/standalone: provider installed whenever the kicad_editor bundle boots
  (cross-face safe); ONE shared worker-boot source occ-worker.js (vite ?raw;
  the e2e stub reads the same file) — blob worker with locateFile absolutized
  against the glue URL; export download-name guard.
- deps: OCC builds with RapidJSON so its glTF/GLB writer exists — pinned to
  the vcpkg master snapshot 2025-02-26 (24b5e7a8b27f), the same code official
  KiCad consumes via vcpkg.json's opencascade[rapidjson]; rapidjson's latest
  tag (v1.1.0, 2016) is ill-formed under modern clang.
- tests: occ-export dialog e2e (lazy-fetch boundary + STEP download bytes),
  occ-probe incl. a 9-format matrix (step/stpz/brep/xao/ply/stl/glb/u3d/pdf),
  3d-viewer-models hard-asserts the worker parse; occ provider stub installed
  ambiently by the kicad fixtures.

Validated against desktop kicad-cli 10.0.4: geometric exact equality (bbox
delta 0 um, volume delta 0.0000%) for STEP/GLB/STL/BREP/STPZ across three
boards and option sweeps — with desktop OCC 7.9 vs wasm OCC 7.8; PLY/XAO/PDF
structurally equal; U3D same-size (quantizer float LSBs differ). Full kicad
e2e green on Firefox and Chromium; standalone verified end to end (lazy fetch
only on the Export click; export.step 60,628 B ISO-10303-21; loadModel 700 KB
STEP -> 569 KB scenegraph cache).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 12:39:58 +02:00
..
3d-raytracer fix: 🐛 raytrace deadlock - pre-warm 2N+8 pthread Workers 2026-07-02 13:01:02 +02:00
archive docs: ✏️ cleanup and organize docs 2026-06-05 12:16:13 +02:00
async feat(wasm-eh): migrate the WASM build to native wasm exceptions (+ 3D viewer default-on) 2026-06-30 09:40:26 +02:00
asyncify-arbiter test(asyncify): red-green race harness + ablation flags, unwind-catch shim, spec tightening, decisions docs 2026-06-12 17:02:59 +02:00
browser-tools config: 🔧 move submodules to ee 2026-06-05 13:36:44 +02:00
editor-unification docs(wasm): Part 2 record — rebase onto main done, 3d-viewer drag deadlock resolved (7630c7e pool pre-warm), rerun green 2026-07-02 17:56:02 +02:00
fix-asyncify-O2-and-modal-promise-rejection docs: ✏️ cleanup and organize docs 2026-06-05 12:16:13 +02:00
fork-cleanup refactor(cmake): batch F (gerbview/pl_editor #5 + navlib #6) + docs 2026-06-22 18:50:08 +02:00
gerbview docs: ✏️ cleanup and organize docs 2026-06-05 12:16:13 +02:00
hoist-cpp-catches-simplification docs(hoist): pass-simplification dossier; bump binaryen (FindAll/BranchUtils refactor) 2026-07-01 16:52:17 +02:00
libraries docs: library management feature design notes 2026-06-11 07:50:57 +02:00
occ-split feat(wasm): occ-split — lazy occ_service worker; kicad_editor drops OCC (−31%) 2026-07-03 12:39:58 +02:00
perf feat(wasm-eh): migrate the WASM build to native wasm exceptions (+ 3D viewer default-on) 2026-06-30 09:40:26 +02:00
pl-editor docs: ✏️ cleanup and organize docs 2026-06-05 12:16:13 +02:00
schematic docs: ✏️ cleanup and organize docs 2026-06-05 12:16:13 +02:00
symbol-editor docs: ✏️ cleanup and organize docs 2026-06-05 12:16:13 +02:00
threading feat(wasm-eh): migrate the WASM build to native wasm exceptions (+ 3D viewer default-on) 2026-06-30 09:40:26 +02:00
wasm-exceptions docs(wasm-eh): add native-EH vs JS-EH runtime benchmark report 2026-07-01 14:43:54 +02:00
web-init docs: ✏️ cleanup and organize docs 2026-06-05 12:16:13 +02:00
wx-dom-port fix: 🐛 kicad aui resize 2026-06-22 08:49:22 +02:00