velxio/frontend/src/simulation/spice
David Montero bc0731f74a fix(sim): the other models that own a pad, and a button with no circuit
Auditing the catalog for parts in the same situation as the DHT22 and the
HC-SR04 turned up three things.

Two more models own a real pad and were not declared: a matrix keypad's
COLUMNS (the QEMU worker even keeps a `_keypad_cols_owned` set, idles them
HIGH and drives them on each scan) and an ePaper panel's BUSY line. Neither is
broken with plain wiring today, only because the connector's older
`sourcedNets` gate happens to skip a net nothing else sits on — put a pull-up
on a keypad column and that gate stops holding, which is exactly how a
level-shifted HC-SR04 lost its echo. Their DC / CS / RST stay absent on
purpose: the host drives those.

Ownership is therefore no longer "is this a single-wire sensor?" but "which
fields does this model declare as pads it drives", which also lets a field
hold a LIST of pads (the keypad's columns).

And `pushbutton-6mm` did nothing at all, on every board. Three parts hand
control of their pin to the electrical solve rather than seeding it; two of
them are modelled by SPICE and the 6mm variant was not, so it stood down for a
circuit that never modelled it. It is the same switch as the full-size one, so
it now shares that mapper through a MAPPER_ALIASES table. Verified in a real
browser: on production the button visibly depresses while the sketch keeps
reading `released`; with this build it reads PRESSED and returns.

The last part is the guard: a test reads the parts themselves and fails if any
part that defers to SPICE has no model, so the next variant is covered the day
it is written. It catches pushbutton-6mm when the alias is removed.
2026-08-23 08:18:18 +02:00
..
adapters
…
models
…
ports
…
wasm
…
CircuitSimulationService.ts fix(sim): stop dropping sibling pin edges — only bit 0 of a multi-pin write reached the canvas 2026-08-16 20:02:58 +02:00
MixedModeScheduler.ts
…
NetlistBuilder.ts fix(spice): per-voltage supply rails — VIN/5V no longer clamped to the 3.3V logic rail 2026-08-15 08:29:39 +02:00
boardPinGroups.ts fix(spice): every overlay board was solved as a 5 V Arduino 2026-08-23 03:07:43 +02:00
collectPinStates.ts fix(spice): per-voltage supply rails — VIN/5V no longer clamped to the 3.3V logic rail 2026-08-15 08:29:39 +02:00
componentToSpice.ts fix(sim): the other models that own a pad, and a button with no circuit 2026-08-23 08:18:18 +02:00
connectAnalogInputsToMcu.ts fix(spice): overlay boards were skipped before a single volt was injected 2026-08-22 05:13:41 +02:00
connectChipInputsToSolve.ts
…
connectDigitalInputsToMcu.ts fix(sim): one sensor-record merge, one ownership rule, and a board preference 2026-08-23 01:47:23 +02:00
connectMcuEdgesToService.ts fix(spice): every overlay board was solved as a 5 V Arduino 2026-08-23 03:07:43 +02:00
electricalResolveHook.ts
…
probes.ts fix(spice): per-voltage supply rails — VIN/5V no longer clamped to the 3.3V logic rail 2026-08-15 08:29:39 +02:00
runNetlist.ts fix(sim): circuit verifier was silently blind to current faults in prod 2026-06-17 20:37:32 +02:00
start.ts fix(perf): un-freeze the editor during fast-toggling simulations (ESP32 clock) 2026-07-21 01:15:59 +02:00
storeAdapter.ts fix(spice): every overlay board was solved as a 5 V Arduino 2026-08-23 03:07:43 +02:00
types.ts fix(spice): per-voltage supply rails — VIN/5V no longer clamped to the 3.3V logic rail 2026-08-15 08:29:39 +02:00
unionFind.ts fix(spice): per-voltage supply rails — VIN/5V no longer clamped to the 3.3V logic rail 2026-08-15 08:29:39 +02:00
valueParser.ts
…
waveformStats.ts
…