velxio/frontend/src/components/simulator
David Montero f619a2cc7e feat(boards): expose Raspberry Pi 4 and Pi 5 in the picker (UI + pin wiring)
The BoardKind type and the QEMU backend already supported
raspberry-pi-4 (Cortex-A72) and raspberry-pi-5 (Cortex-A76) by reusing
the Pi 3 arm64 image set, but the frontend had no way to actually
select either: the board picker, the canvas renderer, the serial
monitor, the oscilloscope channel list, and the editor toolbar all
hard-coded "raspberry-pi-3" as the only Pi entry.  ComponentRegistry
even registered Pi 4 / Pi 5 metadata pointing at the velxio-raspberry-pi-3
custom-element tag — a placeholder that meant both boards rendered as
a Pi 3 in the picker thumbnail and on the canvas.

Add dedicated boards top-to-bottom:

  * `RaspberryPi4Element.ts` / `RaspberryPi5Element.ts` — Velxio-style
    schematic SVG (authored from scratch, not traced).  Pi 4 is the
    green PCB with BCM2711 SoC, 4× USB-A, USB-C power, dual µHDMI;
    Pi 5 is the darker green PCB with BCM2712 + RP1 southbridge,
    2.5 GbE, USB-C 5V/5A, PCIe FFC connector, dedicated power
    button.  Both carry a small "velxio" mark in the corner.

  * `pi40PinHeader.ts` — shared `buildPi40PinHeader()` helper that
    returns the 40-pin BCM layout.  Every Pi from the 1B+ onwards
    uses the same physical pin positions and same BCM GPIO
    assignment, so Pi 3 / Pi 4 / Pi 5 elements all consume this
    helper and example wires drawn against one model transfer to
    the others without re-routing.

  * React wrappers `RaspberryPi4.tsx` / `RaspberryPi5.tsx` render the
    custom elements at absolute positions (mirrors how
    RaspberryPi3.tsx handles the Pi 3 illustration).

  * Wire-up across the editor surface:
      - BoardOnCanvas: BOARD_SIZE entry + switch case.
      - BoardPickerModal: description, icon, kinds list.
      - ComponentPickerModal: thumbnails now instantiate the dedicated
        custom element (was velxio-raspberry-pi-3 fallback).
      - SerialMonitor / EditorToolbar: pill labels, icons, colours.
      - Oscilloscope: GPIO channel list (28 BCM pins).
      - SimulatorCanvas: remote-boards filter for run/stop sync.
      - SPICE boardPinGroups: same 5V / 3V3 / GND as Pi 3.
      - boardPinToNumber: accepts physical pin numbers ("1"-"40"),
        BCM names ("GPIO14") and power labels for any Pi 3/4/5 id.
      - ComponentRegistry: dedicated tagNames + per-board thumbnails
        (green for Pi 4, darker green for Pi 5).

  * EditorToolbar's Pi 3 special cases (Linux/Python compile path,
    Run/Stop routing) now use `isPiBoardKind()` so Pi 4 and Pi 5
    inherit the same behaviour automatically, and any future Pi
    family member (Zero / 1 / 2) lands in the right code paths the
    moment its backend boots.

QEMU backend was already wired (qemu_manager.py:71/82 + manifest entry
'raspberry-pi-3-virt' shared across arm64 Pis), so this commit makes
both boards selectable end-to-end without any backend follow-up.
2026-05-23 04:46:59 +02:00
..
BoardOnCanvas.tsx feat(boards): expose Raspberry Pi 4 and Pi 5 in the picker (UI + pin wiring) 2026-05-23 04:46:59 +02:00
BoardOptionsModal.css feat(board-options): per-board options modal + persistence 2026-05-18 21:50:45 -03:00
BoardOptionsModal.tsx feat(board-options): per-board options modal + persistence 2026-05-18 21:50:45 -03:00
BoardPickerModal.tsx feat(boards): expose Raspberry Pi 4 and Pi 5 in the picker (UI + pin wiring) 2026-05-23 04:46:59 +02:00
CameraToggle.tsx
CanvasMinimap.css fix(minimap): hit-test against clamped rect + shrink to 100x75 2026-05-14 22:53:34 +02:00
CanvasMinimap.tsx fix(minimap): hit-test against clamped rect + shrink to 100x75 2026-05-14 22:53:34 +02:00
CircuitVerificationModal.tsx Add end-to-end tests for ESP32 I2C functionality and circuit verification 2026-05-12 16:55:15 -03:00
ComponentPalette.css
ComponentPalette.tsx
ComponentPropertyDialog.css
ComponentPropertyDialog.tsx feat(editor): translate Oscilloscope + property dialog + selection bar + console + custom chips + sensor + board picker (Editor block 9) 2026-05-09 12:25:30 -03:00
InstallLibrariesModal.css
InstallLibrariesModal.tsx feat(editor): translate InstallLibrariesModal + SerialMonitor (Editor block 8) 2026-05-09 11:35:22 -03:00
LibraryManagerModal.css
LibraryManagerModal.tsx feat(editor): translate ComponentPicker + LibraryManager modals (Editor block 7) 2026-05-09 11:29:07 -03:00
Oscilloscope.css feat(scope/trigger): add Auto / Normal / Single-shot trigger modes 2026-05-22 21:11:03 +02:00
Oscilloscope.tsx feat(boards): expose Raspberry Pi 4 and Pi 5 in the picker (UI + pin wiring) 2026-05-23 04:46:59 +02:00
PinOverlay.tsx
PinPickerDialog.tsx feat(i18n): translate small editor remates + admin internals (Blocks 11+12) 2026-05-09 16:22:16 -03:00
SelectionActionBar.tsx feat(simulator): wire color palette from PR #170 + Copilot suggestions 2026-05-11 12:14:36 -03:00
SensorControlPanel.css
SensorControlPanel.tsx fix(sensor-panel): per-sensor state when switching between same-type sensors 2026-05-16 22:28:52 -03:00
SerialMonitor.tsx feat(boards): expose Raspberry Pi 4 and Pi 5 in the picker (UI + pin wiring) 2026-05-23 04:46:59 +02:00
SimulatorCanvas.css
SimulatorCanvas.tsx feat(boards): expose Raspberry Pi 4 and Pi 5 in the picker (UI + pin wiring) 2026-05-23 04:46:59 +02:00
WireInProgressRenderer.tsx
WireLayer.tsx
WireModeBanner.tsx
WireRenderer.tsx