tests/apps/Makefile.wasm: pre-js shims are link dependencies (editing
wx.js/wx-dom.js now relinks apps); $^ link rules filter to %.o/%.a so
the new deps stay out of wasm-ld inputs. Seed baseline-screenshots-dom
(251 screenshots) from the green WX_PORT=dom full-suite run (251/0).
Cross-port visual comparison notes in docs/features/wx-dom-port/
(10 bugs found by the protocol, all fixed in wxwidgets).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The asyncify single-slot work, executed red-green (full ledger:
docs/features/asyncify-arbiter/redgreen.md; decisions record:
docs/features/async/07-decisions-and-outcome.md):
- tests/apps/standalone/asyncify-races/ + tests/asyncify/ + dedicated
playwright config: 8 scenarios reproducing the KiCad asyncify failure
family with the kicad-faithful startup topology (pre-park fiber swap →
park throw through the live trampoline). Built in 3 variants; the
SHIM_DISABLE_TRAMPOLINE_HEAL / SHIM_DISABLE_HANDLESLEEP ablation builds
keep the historical hang and index-out-of-bounds crash reproducible
forever (mutation-style pins for the existing shims).
- scripts/common/shims/handlesleep.js: catch the "unwind" park sentinel
in the wakeUp path — when main's last pre-park suspension was a sleep,
the main-loop park throw escaped through that sleep's promise reaction
as an uncaught rejection (the calculator/gerbview console errors).
- scripts/common/inject-dyncall-shims.sh: SHIM_DISABLE_* ablation knobs.
- Spec tightening (the acceptance bar): 'uncaught exception: unwind'
tolerance DELETED from pcbnew/eeschema specs; load-pcb gained a hard
clean-console gate over 5 asyncify corruption signatures.
- wxwidgets pointer bump: modal LIFO resolvers, pump resolve-on-error,
sync clipboard IsSupported (014f67e6c1).
Final state: asyncify suite 7/7, wx e2e 291/292 (1 skip), KiCad e2e 40
passed / 2 skipped with ZERO corruption signatures in any log across all
six apps.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Two research dossiers under docs/features:
- async/: Asyncify currData contention — the clipboard crash and post-idle
tool hang as one disease (single global suspension slot, three producers),
asyncify internals walkthroughs, prior art, arbiter designs A/B.
- wasm-exceptions/: -fexceptions vs -fwasm-exceptions — measured invoke-driven
share of the asyncify tax on pcbnew (59% raw / 64% gzip; download 64.5->36 MB
if migrated), KiCad dialog-in-catch audit (85 direct / 93 review of 636,
catch_audit.py included), binaryen toolchain status (partial EH support since
v125; TryTable unsupported), and a catch-arm-hoisting pre-pass design that
would obsolete the KiCad-side refactor. Cross-linked with the parked
KICAD_WASM_EH end-to-end experiment (docs/wasm-exceptions-experiment.md).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- ci-build-slowness-findings.md: the full investigation log — measured
phase breakdowns of the 4h05m baseline, the v121 lock convoy, the
badly-built official Binaryen Linux tarballs (4-13x slow asyncify),
allocator/THP/arm64 dead ends, and the validated 1h14m41s result.
- wasm-exceptions-experiment.md: -fwasm-exceptions would shrink the
asyncify set at the root (pcbnew 338 MB -> 92 MB raw) but is blocked
by an LLVM br_table codegen bug in emscripten 4.0.2; full resume
recipe + plumbing patch included.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Rename docs/ to features/ with per-feature folders. Add script to generate
patches for root repo and submodules.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Documents:
- Current LEGACY_GL_EMULATION implementation
- GLU tesselator status (solved with earcut)
- Where KiCad uses legacy GL (OPENGL_GAL + 3D Viewer)
- The GAL API abstraction (~40 clean methods)
- Strategy options: keep emulation vs create WEBGL_GAL
- Recommendation for short/medium term approach
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix empty clip region bug in wx.js clipRect function
- Add dropdown mouse interaction tests
- Add *.log to gitignore
- Make build script clean by default (use --no-clean to skip)
- Add wxGLCanvas canvas element fix documentation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update build script with bakefile_gen Docker instructions and PCRE fix
- Add wxWidgets submodule with OpenGL/WebGL support for WASM
- Document comprehensive WASM test plan and wxGLCanvas implementation
- Document legacy GL emulation strategy for KiCad (423+ legacy GL calls)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>