velxio/frontend/src/components/simulator
David Montero Crespo 2a4d19e9c2 fix(esp32): matrix keypad — active-row model, idempotent install, gap-free listeners
Validated live against the ESP32 alarm-keypad project. Three fixes over
the initial implementation:

- Active-row model: the write-pin callback only fires on OUTPUT-latch
  changes (after the first pass re-driving the row LOW is a no-change
  write), and dir alone misses the first pass. A matrix scan drives one
  row at a time with the latch LOW, so 'the row that most recently went
  active (dir=OUTPUT, or latch write LOW)' IS the scanned row.

- Idempotent install: the canvas effect re-attaches on every boards[]
  mutation (each serial line); reinstalling wiped the pressed-key set
  mid-scan. Same wiring now keeps the existing state dict.

- Gap-free listeners: the keypad's button-press listeners were attached
  on a 300ms setTimeout per effect run, opening a listener-less window
  on every re-run in which a press was lost entirely. Attach
  synchronously and drop the sendSensorDetach cleanup (detach+reattach
  on unrelated re-renders is exactly the wipe the idempotent install
  guards against).
2026-08-19 22:19:27 +02:00
..
BoardOnCanvas.tsx fix(picker+inspector): dedupe Pi cards, wire Zero/1/2 as real boards, readable many-pin inspectors 2026-08-07 23:03:05 +02:00
BoardOptionsModal.css style(ui): unify every interactive surface on the single #0071e3 accent 2026-06-21 05:34:25 +02:00
BoardOptionsModal.tsx feat(ui): replace native confirm() dialogs with reusable modal 2026-07-18 01:59:18 +02:00
BoardPickerModal.tsx feat(boards): runtime board-registration seam for private overlays 2026-07-22 21:21:21 +02:00
BoardSensorControls.tsx feat(simulator): tilt and battery controls for boards that carry an IMU or a gauge 2026-08-09 23:48:56 +02:00
CameraToggle.tsx fix(canvas): collapse the Camera/Mic buttons to icon-only when the toolbar is cramped 2026-08-11 20:01:56 +02:00
CircuitVerificationModal.tsx fix(editor): modals above the agent side panel (z 8000 -> 9000) 2026-08-15 08:48:23 +02:00
ComponentCameraToggles.tsx ux(canvas): component camera toggles say "Camera", like the board toggle 2026-08-07 22:46:00 +02:00
ComponentPalette.css style(ui): unify every interactive surface on the single #0071e3 accent 2026-06-21 05:34:25 +02:00
ComponentPalette.tsx
…
ComponentPropertyDialog.css feat(sd): live Card contents in the SD panel - list and download what the sketch wrote 2026-08-04 16:29:54 +02:00
ComponentPropertyDialog.tsx feat(sd): parts with their own TF slot get the SD upload panel 2026-08-03 18:34:46 +02:00
FlashModal.tsx flash: compile before flashing, stale-build warning, i18n dialog, entitlement seam (#207) 2026-08-18 20:21:57 +02:00
InstallLibrariesModal.css fix(editor): modals above the agent side panel (z 8000 -> 9000) 2026-08-15 08:48:23 +02:00
InstallLibrariesModal.tsx fix(editor): portal toolbar modals to body — container queries broke their overlays 2026-08-15 08:19:30 +02:00
LibraryManagerModal.css fix(editor): modals above the agent side panel (z 8000 -> 9000) 2026-08-15 08:48:23 +02:00
LibraryManagerModal.tsx feat(micropython): install libraries from the micropython-lib index (#214) 2026-08-18 21:50:10 +02:00
MicrophoneToggle.tsx fix(canvas): collapse the Camera/Mic buttons to icon-only when the toolbar is cramped 2026-08-11 20:01:56 +02:00
Oscilloscope.css style(ui): unify every interactive surface on the single #0071e3 accent 2026-06-21 05:34:25 +02:00
Oscilloscope.tsx
…
PartInspectorDialog.css feat(inspector+gallery): example links in the Properties tab; dynamic board tabs in /examples 2026-08-07 06:00:40 +02:00
PartInspectorDialog.tsx feat(datasheet): Product-page links carry UTM attribution and report the click 2026-08-09 08:16:47 +02:00
PinOverlay.tsx feat(breadboard): green dots on pins plugged into a breadboard 2026-07-20 04:48:16 +02:00
PinPickerDialog.tsx
…
SdCardPanel.tsx feat(sd): source files stay off the card - only project DATA files auto-copy 2026-08-04 19:58:31 +02:00
SeatedPinMarkers.tsx feat(breadboard): green dots on pins plugged into a breadboard 2026-07-20 04:48:16 +02:00
SelectionActionBar.tsx
…
SensorControlPanel.css style(ui): unify every interactive surface on the single #0071e3 accent 2026-06-21 05:34:25 +02:00
SensorControlPanel.tsx fix(sensors): illumination sliders are logarithmic, like the quantity they set 2026-08-18 22:42:25 +02:00
SerialMonitor.tsx fix(gateway): keep in-browser WiFi boards reachable through the IoT gateway 2026-08-14 19:45:39 +02:00
SimulatorCanvas.css fix(editor): the toolbar strip's label collapse is measured too, and each layout is judged by its own widths 2026-08-18 05:49:45 +02:00
SimulatorCanvas.tsx fix(esp32): matrix keypad — active-row model, idempotent install, gap-free listeners 2026-08-19 22:19:27 +02:00
WireInProgressRenderer.tsx feat(wires): avoid other wires + live routed preview + system-owned shapes 2026-07-20 20:08:25 +02:00
WireLayer.tsx
…
WireModeBanner.tsx
…
WireRenderer.tsx feat(breadboard): Wokwi-style parts-on-breadboard — hole snapping + invisible seating wires 2026-07-18 08:47:25 +02:00