pcbjam/wasm/bindings
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
..
calculator_embind.cpp add calculator build 2026-05-28 17:28:17 +02:00
collab_common.h Revert "fix(wasm): never swap to a fiber while an Asyncify context is parked" 2026-07-29 17:29:28 +02:00
collab_presence_core.h comments-ux: figma bubble pins, floating panel, seen/reactions/mentions UI, theme follow (0001 A–E + 0002) 2026-07-24 13:21:22 +02:00
collab_presence_style.h comments-ux: figma bubble pins, floating panel, seen/reactions/mentions UI, theme follow (0001 A–E + 0002) 2026-07-24 13:21:22 +02:00
eeschema_embind.cpp fix(load): open-settle gate — kicadOpenFileBusy probe + collab entry guards for the parked-open embind trap (indirect call signature mismatch) + deterministic collab-load-fuzz e2e 2026-07-30 14:17:48 +02:00
fiber_park.h fix(async): fiber resume guard — the prod board-load trap, red/green 2026-07-31 23:37:05 +02:00
gerbview_embind.cpp fix(load): close the dispatch-interlock hole at open + open gerbers from a project route 2026-07-30 19:08:57 +02:00
kicad_editor_embind.cpp fix(async): fiber resume guard — the prod board-load trap, red/green 2026-07-31 23:37:05 +02:00
kicad_tools_embind.cpp feat: kicad_tools headless CLI 2026-07-10 19:09:01 +02:00
open_gate.h fix(load): close the dispatch-interlock hole at open + open gerbers from a project route 2026-07-30 19:08:57 +02:00
pcbjam_libs_reload.h libs: peer lib edits reach the running editor + "placed symbol updated" toast 2026-07-10 09:26:07 +02:00
pcbjam_theme.h fix(theme): stop the boot theme re-send from resurrecting hidden chrome 2026-07-27 18:48:25 +02:00
pcbnew_embind.cpp fix(async): fiber resume guard — the prod board-load trap, red/green 2026-07-31 23:37:05 +02:00
pl_editor_embind.cpp fix(load): open-settle gate — kicadOpenFileBusy probe + collab entry guards for the parked-open embind trap (indirect call signature mismatch) + deterministic collab-load-fuzz e2e 2026-07-30 14:17:48 +02:00
timer_park.h test(kicad): timer-park repro lever — deterministic concurrent-Asyncify window 2026-07-31 20:34:32 +02:00