pcbjam/docs
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Gergő Törcsvári e561507898
fix(async): fiber resume guard — the prod board-load trap, red/green
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
2026-07-31 23:37:05 +02:00
..
debugging docs: ✏️ cleanup and organize docs 2026-06-05 12:16:13 +02:00
features fix(async): fiber resume guard — the prod board-load trap, red/green 2026-07-31 23:37:05 +02:00
research docs: ✏️ cleanup and organize docs 2026-06-05 12:16:13 +02:00
build.md refactor: collapse dual-mode plumbing — the DOM port is the only WASM build 2026-06-12 20:19:48 +02:00
ci-build-slowness-findings.md docs: CI build perf findings + parked wasm-exceptions experiment 2026-06-11 07:50:57 +02:00
README.md docs: ✏️ cleanup and organize docs 2026-06-05 12:16:13 +02:00
wasm-exceptions-experiment.md feat(wasm-eh): migrate the WASM build to native wasm exceptions (+ 3D viewer default-on) 2026-06-30 09:40:26 +02:00

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.md files stay next to the code they describe (they're linked below). Cross-cutting guides live under docs/. Per-feature design notes live under features/.

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

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

Feature design docs

Per-feature design notes and porting records live under features/:

Archived / historical

features/archive/ holds docs whose work is done or superseded (each carries a status banner):

  • webgl — WebGL-GAL strategy/plan (since implemented in kicad/common/gal/webgl/)
  • ipc-api — IPC-API guard cleanup TODO (revert not yet actioned)