velxio/frontend/src/__tests__
David Montero 4ff281bd40 fix(spice): MCU-edge listeners detach on resubscription for QEMU boards (frozen LEDs)
connectMcuEdgesToService resubscribes its per-pin listeners whenever
pinNetMap changes. The subscription swept pin NUMBERS 0..63 and
reverse-mapped them to names ('GPIO2' on ESP32, 'GPIO17' on Pi) to match
against pinNetMap's keys — but those keys are the WIRE pin names ('2',
'4', 'A0'), so after the first solve the match failed for every pin and
the resubscription attached nothing. Any mid-run pinNetMap update then
silently killed the MCU-edge → SPICE path and the canvas froze at the
last solved state while the firmware kept toggling.

Masked until now because nothing perturbed pinNetMap mid-run on the
blink examples; pure ESP-IDF mode (#139) unmasked it — gpio_reset_pin()
leaves the internal pull-up enabled, the worker reports gpio_pull, the
handler requests an electrical resolve, pinNetMap gets a new identity,
and the ESP-IDF blink example's LED froze ON.

Fix: subscribe FROM the pinNetMap names, mapped to PinManager pins with
the same pinNameToArduinoPin the netlist collector uses (STM32 via
stm32PinNameToLinear), and hand schedulePin the netlist name so
handleMcuEdge's v_<board>_<pin> lookup hits the fast alterSource path
instead of a full rebuild per edge. The 0..63 sweep remains as the
pre-first-solve fallback. Also fixed pinNameToArduinoPin's dead 'GPIO'
branch ('GP' tested first turned 'GPIO32' into parseInt('IO32') = NaN).
2026-07-24 07:26:09 +02:00
..
__snapshots__ fix(sim): model slide-switch as a real SPDT + tie ESP32 dual 3V3/5V pins to the rail 2026-07-09 18:58:12 +02:00
fixtures fix(trace): recognise runtime boards and same-hole junctions in pin tracing 2026-07-20 18:46:23 +02:00
helpers fix(stop): preserve display state on Stop, only blank on Reset 2026-05-26 18:54:17 +02:00
AVRSimulator.test.ts fix(sim): keep PwmCallback 2-arg compatible via arity dispatch 2026-06-11 03:29:44 -03:00
PinManager.test.ts fix(sim): keep PwmCallback 2-arg compatible via arity dispatch 2026-06-11 03:29:44 -03:00
RP2040Simulator.test.ts
SignalRouter.test.ts fix(esp32): LEDC signal IDs are 71-86 per ESP32 TRM, not 72-87 2026-05-17 05:42:52 +02:00
ammeter-waveform.test.ts
arduino-arduino-spi.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
arduino-esp32-uart.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
arduino-pico-digital.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
arduino-pico-i2c.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
arduino-pico-mixed-uart.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
attiny85-simulation.test.ts fix(sim): correct ATtiny85 Timer0 PWM register addresses 2026-06-19 04:23:41 +02:00
avr-uart-tx-waveform.test.ts feat(avr/uart): synthesize bit-level TX waveform on PD1/PE1 2026-05-22 19:49:43 +02:00
board-kinds-coverage.test.ts refactor(examples): move Pico W WiFi examples to the pro overlay seam 2026-06-15 15:54:44 +02:00
board-protocols-audit.test.ts fix(interconnect): classify Arduino Mega UART/I2C function-label pins 2026-06-12 08:29:03 +02:00
board-removal-running-reconcile.test.ts refactor(sim): single-board example load rebuilds from scratch 2026-05-31 23:23:41 +02:00
breadboard-nets.test.ts feat: breadboard (full 830-point) + mini breadboard (170-point) parts 2026-07-15 21:50:36 +02:00
breadboard-occupancy.test.ts feat(breadboard): one-hole-one-wire selection rules + jumper colors 2026-07-21 05:49:23 +02:00
breadboard-seating.test.ts fix(breadboard): derive seating at element mount — closes run-before-seating race 2026-07-20 17:39:29 +02:00
breadboard-snap.test.ts feat(breadboard): hover-gated labels + full-footprint seating solver 2026-07-19 05:28:40 +02:00
buzzer-metronome.test.ts fix(sim): monophonic buzzer guard — replace note on pitch change (no stacking) 2026-06-11 02:35:33 -03:00
capacitor-charge-transient.test.ts
chipbus-buskernel.test.ts feat(chipbus): Phase 2 - synchronous settle kernel (settle-before-read) 2026-06-05 02:36:54 -03:00
chipbus-buslogic.test.ts feat(chipbus): Phase 1 - 4-valued logic + drive-strength tri-state buses 2026-06-05 02:18:47 -03:00
chipbus-busnets.test.ts feat(chipbus): Phase 1 - 4-valued logic + drive-strength tri-state buses 2026-06-05 02:18:47 -03:00
chipbus-galaksija-boot.test.ts test(chipbus): a real Galaksija (1983 Z80 home computer) boots over the bus 2026-06-05 11:55:28 -03:00
chipbus-galaksija-computer.test.ts feat(chipbus): Galaksija home computer gallery example + browser perf throttle 2026-06-05 13:49:33 -03:00
chipbus-galaksija-display-snoop-race.test.ts fix(chipbus): Galaksija boots + displays + types live in the browser 2026-06-05 15:47:30 -03:00
chipbus-galaksija-display.test.ts feat(chipbus): Galaksija home computer gallery example + browser perf throttle 2026-06-05 13:49:33 -03:00
chipbus-galaksija-keyboard.test.ts feat(chipbus): Galaksija keyboard - type BASIC over the bus 2026-06-05 14:37:42 -03:00
chipbus-galaksija-ram-display.test.ts fix(chipbus): Galaksija boots + displays + types live in the browser 2026-06-05 15:47:30 -03:00
chipbus-galaksija-reset-race.test.ts fix(chipbus): Galaksija boots + displays + types live in the browser 2026-06-05 15:47:30 -03:00
chipbus-netkey.test.ts feat(chipbus): Phase 0 - net-identity shared key for chip-to-chip buses 2026-06-05 01:18:08 -03:00
chipbus-twochip-integration.test.ts feat(chipbus): Phase 1 - 4-valued logic + drive-strength tri-state buses 2026-06-05 02:18:47 -03:00
chipbus-z80-ram-decode.test.ts test(chipbus): Phase 3 core - Z80 + ROM + RAM + address decode over the bus 2026-06-05 10:23:57 -03:00
chipbus-z80-rom-boot.test.ts test(chipbus): live proof - a real Z80 boots from a ROM over the bus 2026-06-05 10:07:26 -03:00
circuit-simulation-service.test.ts fix(perf): un-freeze the editor during fast-toggling simulations (ESP32 clock) 2026-07-21 01:15:59 +02:00
circuit-verifier-nonfinite.test.ts fix(sim): circuit verifier was silently blind to current faults in prod 2026-06-17 20:37:32 +02:00
circuit-verifier.test.ts feat(sim): P2 wiring ERC slice 2 — VCC-to-GND short + shorted-out parts 2026-06-18 03:32:17 +02:00
component-metadata-bmp280.test.ts
component-to-spice.test.ts fix(sim): model slide-switch as a real SPDT + tie ESP32 dual 3V3/5V pins to the rail 2026-07-09 18:58:12 +02:00
components-metadata-integrity.test.ts refactor(examples): move Pico W WiFi examples to the pro overlay seam 2026-06-15 15:54:44 +02:00
digitalgate-engine-examples.test.ts feat(digital-gate-engine): 4-bit ripple counter gallery example + sequential controller fix 2026-06-05 21:58:42 -03:00
digitalgate-kernel.test.ts feat(digital-gate-engine): evaluate logic gates on the event-driven kernel 2026-06-05 20:21:33 -03:00
digitalgate-mixed-boundary.test.ts fix(sim): model slide-switch as a real SPDT + tie ESP32 dual 3V3/5V pins to the rail 2026-07-09 18:58:12 +02:00
digitalgate-sequential.test.ts fix(sim): model slide-switch as a real SPDT + tie ESP32 dual 3V3/5V pins to the rail 2026-07-09 18:58:12 +02:00
digitalgate-sweep.test.ts feat(digital-gate-engine): sweep all 38 examples + default the flag on 2026-06-05 20:29:32 -03:00
dual-arduino-digital.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
dual-arduino-hw-uart.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
dual-arduino-multi-protocol.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
dual-arduino-software-serial.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
dual-esp32-uart.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
dual-pico-digital.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
dual-pico-multi-protocol.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
dual-pico-serial-passthrough.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
eeprom.test.ts fix(sim): emulate AVR EEPROM (fixes #203) 2026-06-16 04:18:51 +02:00
epaper-part-integration.test.ts
esp32-breadboard-display.test.ts fix(trace): recognise runtime boards and same-hole junctions in pin tracing 2026-07-20 18:46:23 +02:00
esp32-dht22-flow.test.ts fix(esp32): force clean reconnect in Esp32Bridge.connect() — the real run-after-agent fix 2026-07-21 07:01:05 +02:00
esp32-integration.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
esp32-multi-servo-gpio-matrix.test.ts refactor(esp32): retire ledc_update + broadcastPwm + channelGpioMemo 2026-05-19 04:05:34 +02:00
esp32-rectifier-integration.test.ts
esp32-servo-pot.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
esp32-uart-classify.test.ts fix(interconnect): classify ESP32 UART pin names so multi-board Serial works 2026-06-12 07:21:47 +02:00
esp32-wifi-bluetooth.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
esp32-wifi-compile.test.ts
esp32-wifi-webserver-integration.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
esp32c3-blink.test.ts fix(tests): update mocks + assertions for PinManager API changes 2026-05-19 04:52:30 +02:00
esp32c3-simulation.test.ts fix(tests): update mocks + assertions for PinManager API changes 2026-05-19 04:52:30 +02:00
esp32c3-wifi-bluetooth.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
examples-all-buckets-smoke.test.ts refactor(examples): move Pico W WiFi examples to the pro overlay seam 2026-06-15 15:54:44 +02:00
examples-analog-live.test.ts
examples-analog.test.ts
examples-circuits.test.ts
examples-digital.test.ts fix(sim): model slide-switch as a real SPDT + tie ESP32 dual 3V3/5V pins to the rail 2026-07-09 18:58:12 +02:00
examples-gallery-smoke.test.ts
examples-netlist-snapshot.test.ts refactor(examples): move Pico W WiFi examples to the pro overlay seam 2026-06-15 15:54:44 +02:00
examples-pico-doom.test.ts
fat-image.test.ts feat(microsd): SD-over-SPI card storage for AVR, RP2040 and ESP32 2026-06-11 03:59:53 +02:00
firmware-loader.test.ts
flip-flop-parts.test.ts
i2c-complex-scenarios.test.ts
i2c-esp32-multiboard-bridge.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
i2c-esp32-real-firmware.test.ts
i2c-interconnect-bridge.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
i2c-lcd-coupling-gap.test.ts
i2c-multi-board-slave-gap.test.ts
i2c-real-firmware.test.ts
install-libraries.test.ts
instruments.test.ts
integration.test.ts
interactive-parts.test.ts
interconnect-routing.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
issue-122-micropython-esp32.test.ts
issue-139-espidf-mode.test.ts feat(esp32): pure ESP-IDF language mode for the ESP32 family (#139) 2026-07-24 06:37:01 +02:00
key-button-bindings.test.ts feat(simulator): map pushbuttons to keyboard keys 2026-07-18 04:02:01 +02:00
library-compile.integration.test.ts refactor(examples): move Pico W WiFi examples to the pro overlay seam 2026-06-15 15:54:44 +02:00
load-example-transitions.test.ts feat(sim): Stop halts custom chips + LEDs go dark; retro chip examples go board-less 2026-06-04 04:32:44 +02:00
load-ngspice-for-node.test.ts
logic-families.test.ts
logic-gate-parts.test.ts
mcu-edge-pin-name-mapping.test.ts fix(spice): MCU-edge listeners detach on resubscription for QEMU boards (frozen LEDs) 2026-07-24 07:26:09 +02:00
mega-emulation.test.ts fix(sim): keep PwmCallback 2-arg compatible via arity dispatch 2026-06-11 03:29:44 -03:00
microsd-real-firmware.test.ts feat(microsd): SD-over-SPI card storage for AVR, RP2040 and ESP32 2026-06-11 03:59:53 +02:00
mixed-mode-bjt-switch-integration.test.ts
mixed-mode-scheduler.test.ts
motor-parts.test.ts
multi-board-integration.test.ts fix(editor): sync active file group when the active board changes 2026-06-26 23:03:50 +02:00
netlist-builder.test.ts feat(esp32): drive digital inputs from the solved circuit (real-wiring fidelity) 2026-06-24 22:52:52 +02:00
ngspice-interactive.test.ts
ngspice-node-adapter.test.ts
oscilloscope-trigger.test.ts feat(scope/trigger): add Auto / Normal / Single-shot trigger modes 2026-05-22 21:11:03 +02:00
part-simulators-coverage.test.ts test(sim): Phase 1d-tests E + F — part simulator coverage + solver determinism 2026-05-15 23:10:05 +02:00
phase-2-device-models.test.ts
phase-2-lm358-subckt.test.ts
phase-4-wire-resistance.test.ts
pi-single-board-examples.test.ts feat(examples): add single-board Raspberry Pi 3/4/5 GPIO examples 2026-06-02 04:36:58 +02:00
pi3-pico-uart.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
piSlaveScanner.test.ts feat(pi): pluggable slave handler + canvas wire detection for I2C/SPI/UART 2026-05-18 16:26:37 +02:00
pin-position-rotation.test.ts feat(breadboard): green dots on pins plugged into a breadboard 2026-07-20 04:48:16 +02:00
pin-resolver-phase1b.test.ts
pin-resolver.test.ts
protocol-parts.test.ts refactor(ssd1306): drop the i2c/spi aliases; CS-only auto-detect + protocol pin 2026-07-09 22:13:31 +02:00
rp2040-pio-servo.test.ts
rp2040-realtime.test.ts fix(rp2040): keep delay()-based sketches real-time on slower hosts 2026-06-10 18:21:29 +02:00
runtime-burnout.test.ts feat(sim): P4 runtime burnout for resistors + electrolytic capacitors 2026-06-18 04:35:56 +02:00
sd-card-gate.test.ts feat(microsd): SD-over-SPI card storage for AVR, RP2040 and ESP32 2026-06-11 03:59:53 +02:00
sensor-parts.test.ts
serial-batching.test.ts
simulation-parts.test.ts fix(7segment): rebuild per-element sim state when the digit count changes 2026-07-21 15:16:56 +02:00
simulation.test.ts
solver-determinism.test.ts test(sim): Phase 1d-tests E + F — part simulator coverage + solver determinism 2026-05-15 23:10:05 +02:00
solver-perf-baseline.test.ts test(sim): Phase 1d-tests D + G — board-kind coverage matrix + perf baseline 2026-05-15 23:13:48 +02:00
solver-port-contract.test.ts
spice-ac.test.ts
spice-active.test.ts
spice-avr-mixed.test.ts
spice-digital.test.ts
spice-mosfet-diag.test.ts
spice-mosfet-pwm.test.ts
spice-npn-switch-diag.test.ts
spice-npn-switch-integration.test.ts
spice-passive.test.ts
spice-rectifier-integration.test.ts
spice-rectifier-live-repro.test.ts
spice-relaxation-oscillator.test.ts
spice-relay-integration.test.ts
spice-signal-generator-tran.test.ts
spice-slide-switch-spdt-repro.test.ts fix(sim): model slide-switch as a real SPDT + tie ESP32 dual 3V3/5V pins to the rail 2026-07-09 18:58:12 +02:00
spice-smoke.test.ts
spice-transient.test.ts
ssd168x-decoder.test.ts fix(epaper): correct orientation across all boards + Pico VCC wire 2026-06-04 23:15:37 -03:00
ssd1306-render.test.ts fix(sim): SSD1306 page-addressing mode (Tiny4kOLED/U8g2 OLED garbled) 2026-06-19 18:08:01 +02:00
triple-pico-digital-chain.test.ts feat(opencore): extract Pico W WiFi to a pluggable PIO peripheral seam 2026-06-15 08:33:28 +02:00
uc8159c-decoder.test.ts
undo-redo.test.ts fix(simulator): wire colour change from UI was a no-op (recordUpdateWire applyNow) 2026-06-19 19:49:12 +02:00
virtual-i2c-devices.test.ts
voltmeter-waveform.test.ts
waveform-stats.test.ts
wire-auto-route.test.ts fix(router): escape corridors for endpoint-in-obstacle + checked-elbow parity 2026-07-20 21:35:58 +02:00
wire-path.test.ts feat(wires): fuse sub-pixel jogs + snap segment drags to the wire's own runs 2026-07-18 05:39:37 +02:00
wire-reroute.test.ts fix(router): escape corridors for endpoint-in-obstacle + checked-elbow parity 2026-07-20 21:35:58 +02:00