| Filename | Latest commit message | Latest commit date |
|---|---|---|
Companion to kicad f0ce20ef64 (libcontext swap_suspended guard), which this
pins. The v0.1.20 diagnostics decoded the crash that survived v0.1.13–19:
TOOL_MANAGER Resume()s a coroutine whose body is asyncify-parked inside
handleSleep, the swap rewinds the stale fiber suspension, and the runtime is
poisoned. Full chain of evidence in docs/features/async/16-fiber-resume-guard.md
(+ round-3 addendum in 15-timer-park-repro.md).
- wasm/bindings/fiber_park.h + kicadTestFiberPark{Start,Prime,Poke,State}
exports (pcbnew + merged kicad_editor): stages Call→yield→legitimate
resume→sleep park→mid-park Resume, the exact prod state machine. The
first yield matters: it primes a real (then stale) suspension, matching
long-lived tool loops rather than a first-slice park.
- tests/kicad/fiber-resume-park.spec.ts: asserts the healthy contract on
polled state only (embind returns across fiber swaps are unwind
placeholders). RED on the unguarded build — fiber/sleep buffer
cross-restores, a jump-ghost beacon, the parked body zombified. GREEN with
the guard: mid-park poke refused ([collab-fcontext] jump-refused beacon),
park completes, post-yield resume works, no trap signatures.
- Regression sweep green: timer-park-repro, collab-load-fuzz, load-pcb,
pcbnew-collab, collab-undo, eeschema-collab (19 passed).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019SE4o46Lnq3hF574FFq8x4
|
||
| .. | ||
| debugging | ||
| features | ||
| research | ||
| build.md | ||
| ci-build-slowness-findings.md | ||
| README.md | ||
| wasm-exceptions-experiment.md | ||
Documentation Map
A central index of the documentation in this repo. The goal of the project is to build KiCad with WASM and run it in a browser.
Note: per-area
README.mdfiles stay next to the code they describe (they're linked below). Cross-cutting guides live underdocs/. Per-feature design notes live underfeatures/.
Start here
- Project README — overview, prerequisites, quick start, project structure
- CLAUDE.md — project/agent context and contribution conventions
Build
- docs/build.md — Docker-based KiCad WASM build system (two-phase build, outputs, memory)
- docker/README.md — Docker build environment, branch-specific containers, troubleshooting
- wasm/README.md — WASM compatibility layer (overrides/shims without patching KiCad)
Debugging & Asyncify
- docs/debugging/DEBUG.md — debugging guide: Asyncify stalls vs crashes, shim/codegen coupling, stub-bisection
- docs/debugging/learning.md — Asyncify + consecutive modal dialogs: the lock pattern
- docs/research/threading_1.md — deep dive: the Asyncify single-slot
currDatacollision bug and the fix - docs/research/threading_2.md — external research: JSPI/WasmFX/state-machine alternatives, QEMU analysis
Architecture
- wasm/README.md — WASM compatibility layer structure
- web/README.md — web app (create/open KiCad projects), tech stack, URL routing, WASM artifact serving
Testing
- tests/README.md — Playwright test infrastructure, element registry, logs, screenshots
- tests/WHATWORKS.md — wxWidgets-in-WASM feature coverage matrix and KiCad readiness
- tests/GL_README.md — Emscripten legacy GL immediate-mode quirks (color-per-vertex)
- tests/gal-regression/README.md — GAL visual regression suite (native OpenGL vs WebGL WASM)
Feature design docs
Per-feature design notes and porting records live under features/:
- web-init — web app spec
- schematic — eeschema WASM bring-up
- symbol-editor — symbol editor (eeschema kiface launcher)
- gerbview — Gerber viewer port
- pl-editor — page-layout editor port (incl. file-dialog usability fixes)
- browser-tools — tool-activation / coroutine deep dives
- fix-asyncify-O2-and-modal-promise-rejection — RTree wasm overflow bug investigation
Archived / historical
features/archive/ holds docs whose work is done or superseded
(each carries a status banner):