velxio/docs/roadmap.md

9.6 KiB
Raw Blame History

Roadmap

What's shipped, what's underway, what's planned.


Implemented

Editor

  • Monaco Editor with C++ and Python syntax highlighting, autocomplete, minimap, dark theme
  • Multi-file workspace — create, rename, delete, and switch between .ino, .h, .cpp, .py, .chip.c files
  • Per-board file groups — each board on the canvas has its own file set
  • Unsaved-changes indicator on file tabs, close-with-confirm dialog
  • Resizable file-explorer panel with collapse toggle

Compilation

  • Arduino compilation via arduino-cli (AVR, RP2040, ATtiny, ESP32)
  • ESP-IDF compilation via idf.py with ccache + persistent build dirs (incremental rebuilds in 25 s)
  • Multi-file sketch support; first .ino is promoted to sketch.ino
  • Compilation console with full toolchain output, warnings, and errors
  • Async compile endpoint for long builds (returns a job ID, poll for status)
  • Custom-chip compile pipeline (C -> WebAssembly via Emscripten)

Boards (19, across 5 CPU architectures)

AVR8 (browser, avr8js)

  • Arduino Uno (ATmega328P @ 16 MHz)
  • Arduino Nano (ATmega328P @ 16 MHz)
  • Arduino Mega 2560 (ATmega2560 @ 16 MHz)
  • ATtiny85 (8 MHz internal / 16 MHz external PLL)

RP2040 (browser, rp2040js)

  • Raspberry Pi Pico (RP2040 @ 133 MHz)
  • Raspberry Pi Pico W (RP2040 + simulated CYW43439 WiFi)

Xtensa LX6/LX7 (backend, lcgamboa QEMU)

  • ESP32 DevKit V1, ESP32 DevKit C V4
  • ESP32-CAM, Wemos Lolin32 Lite
  • ESP32-S3 DevKit, XIAO ESP32-S3
  • Arduino Nano ESP32

RISC-V RV32IMC (backend, lcgamboa QEMU)

  • ESP32-C3 DevKit
  • XIAO ESP32-C3
  • ESP32-C3 SuperMini

ARM Cortex-A (backend, upstream QEMU)

  • Raspberry Pi Zero (Cortex-A7)
  • Raspberry Pi 1B+ (Cortex-A7)
  • Raspberry Pi 2B (Cortex-A7)
  • Raspberry Pi 3B (Cortex-A53, raspi3b machine)
  • Raspberry Pi 4B (Cortex-A72)
  • Raspberry Pi 5 (Cortex-A76)

Languages

  • Arduino C++ on every board
  • MicroPython on Pico / Pico W / all ESP32 / ESP32-S3 / ESP32-C3 variants
  • Python 3 on every Raspberry Pi (real Pi OS Trixie under QEMU)
  • ESP-IDF C on all ESP32 variants

Simulation peripherals

  • AVR — PORTB/C/D, Timer0/1/2, USART (auto baud), ADC, hardware SPI + I2C
  • RP2040 — all 30 GPIO, UART0/UART1, ADC + temp sensor, I2C0/1, SPI0/1, PWM, WFI fast-forward
  • ESP32 (Xtensa) — 40 GPIO with GPIO3239 fix, UART0/1/2, ADC (03300 mV), I2C, SPI, RMT/NeoPixel, LEDC 16-channel PWM, WiFi (SLIRP NAT), BLE advertising
  • ESP32-C3 (RISC-V) — GPIO 021, UART0, ADC1, WiFi/BLE via same SLIRP path
  • Pi family — GPIO 027 via RPi.GPIO shim over ttyAMA1, user Serial on ttyAMA0, qcow2 overlay, multi-board UART bridge

Electrical (analog) simulation

  • ngspice WASM engine (lazy-loaded, ~39 MB chunk, behind a toolbar toggle)
  • NetlistBuilder — Union-Find on wires, SPICE card emission per component
  • AVR <-> SPICE bridge — digital outputs become Thevenin sources, ADCs read solved node voltages
  • ESP32 QEMU <-> SPICE bridge — same pattern for QEMU backends
  • Analog instruments: voltmeter, ammeter, oscilloscope (multi-channel + logic analyzer), function generator (sine/square/triangle/sawtooth)
  • Component models: resistors, capacitors, inductors, diodes (1N4148/4007/Zener/Schottky/LED), transistors (NPN/PNP, MOSFET N/P), op-amps (LM358/TL081/LM741), comparators
  • Mixed-signal sanity — pot wired to A0 reads the real voltage; op-amp follower between pot and A0 still works

Custom Chips

  • C-to-WASM SDK with vx_* primitives (GPIO, ADC, DAC, I2C/SPI slave, UART, timers, framebuffer, log)
  • 30+ example chips in the gallery: Intel 4001/4002/4004/4040/8080/8086 + 8251/8253/8255/8259, Z80, 74HC595, CD4094, 24C01, 24LC256, MCP3008, PCF8574, DS3231, 32K/1M ROM, 64K RAM, latch 8282, …
  • In-browser runtimeChipRuntime per instance, WASI shim, deterministic clock
  • Bus bridges — I2C slave and SPI slave appear as real peripherals to the MCU
  • Backend variant — chips can also run inside QEMU for ESP32-bound projects

Components

  • 152+ catalog components across 11 categories (boards, sensors, displays, input, output, motors, logic, analog, passive, electromech, other)
  • Component picker with search, category filters, and live previews
  • Drag-and-drop repositioning, 90° rotation
  • Property dialog: pin assignment, color, value, protocol selector
  • Pin selector for explicit pin-to-board mapping
  • Auto-generated metadata from upstream wokwi-elements source + Velxio-native override file

Wire System

  • Click-to-connect wire creation with L-shape preview
  • Orthogonal routing, 20px grid snap
  • 8 signal-type wire colors (VCC, GND, digital, analog, PWM, I2C, SPI, USART)
  • Segment-based wire editing (drag perpendicular to segment orientation)
  • Parallel-overlap auto-offset (no overlapping wires)
  • Pin overlay with cyan/green hover states
  • Auto-recalculation when components move (with retries for async-mounting board pins)

Multi-Board Canvases

  • Multiple boards on the same canvas, each with its own simulator instance, file group, Serial Monitor
  • Shared electrical netlist — a wire between two boards is one SPICE node
  • UART bridge between boards (TX of A → RX of B)
  • Deterministic board IDs (first of a kind gets the bare boardKind)

Serial Monitor

  • Live serial output, per-board
  • Auto baud-rate detection (reads UBRR for AVR, peripheral registers for RP2040 / ESP32)
  • Send-to-RX from the UI
  • Autoscroll toggle
  • Multi-UART support on ESP32 (UART0/1/2)
  • Pi: ttyAMA0 user serial, ttyAMA1 reserved for GPIO protocol

Library Manager

  • Browse and install the full Arduino library index from the UI
  • Live search, installed tab, version display
  • Persists installs in /root/Arduino (Docker volume velxio-arduino-user-libs)

Portable Project Persistence

  • .vlx file format — single-file JSON snapshot of boards, file groups, components, wires, VFS contents, electrical-sim state
  • Save button = download .vlx; Open button = restore
  • Versioned for forward compatibility
  • Zero server-side state in OSS — your projects live wherever you put your .vlx files
  • 380+ built-in examples across 7 collections:
    • Circuits (190) — pure analog, mixed-signal, transient demos
    • 100 Days of Code (57)
    • E-Paper Displays (70)
    • Retro Intel/Zilog Processors (43)
    • Analog (15)
    • Digital (7)
    • Pico W WiFi (4)
  • Filter by board, category, difficulty
  • One-click load into editor

IoT Gateway

  • HTTP proxy bridging a real browser to a simulated ESP32 web server
  • AsyncWebServer / WebServer / HTTPClient all reachable from the host

MCP Server

  • stdio mode (backend/mcp_server.py) — Claude Desktop
  • SSE mode (backend/mcp_sse_server.py, port 8002) — Cursor, web agents
  • 7 tools: compile_project, run_project, import_wokwi_json, export_wokwi_json, create_circuit, update_circuit, generate_code_files

Apps

  • Web (OSS + Pro) — at velxio.dev
  • Desktop (Tauri) — Pro, 30-day trial, deep-link sign-in, license cache + grace banner, ESP32 QEMU prompt

Deploy

  • Single-container Docker image (Dockerfile.standalone) published to GHCR + Docker Hub on push to master
  • 5 named volumes for fast restarts (arduino libs, user libs, ccache, ESP-IDF build dir, sketch data)
  • nginx reverse proxy in front of FastAPI inside the container
  • Docker Compose for build-from-source

In Progress

  • Wire validation — short detection, missing-GND warnings, dangling-pin flags
  • Streaming compile output — line-buffered toolchain log over WebSocket instead of waiting for the full process to finish
  • Wokwi diagram.json import improvements — better part-mapping fallbacks for parts not in the Velxio catalog

Planned

Near-term

  • Undo / redo — for code edits and canvas changes
  • Breadboard component — half-size + full-size, auto-rail wiring
  • More boards — STM32 Blue Pill (Cortex-M3), RP2350 (Pico 2), AVR-DA family, Teensy 4.x

Mid-term

  • Oscilloscope improvements — FFT view, persistent traces, math channels
  • Logic analyzer — protocol decode (I2C, SPI, UART, 1-Wire)
  • TypeDoc-generated API site — auto-published to GitHub Pages
  • More sensor models — VL53L0X (ToF), MAX30102 (heart rate), ADS1115 (16-bit ADC)
  • EEPROM emulation for AVR — persistent read/write across simulation restarts
  • WebGPU canvas — for projects with 200+ components

Long-term

  • Multiplayer — share and co-edit simulations in real time
  • Embedded tutorial system — step-by-step guided projects inside the editor
  • Mobile / tablet — responsive layout with touch wiring
  • Hardware-in-the-loop — bridge a real serial device to a simulated canvas
  • AI Co-pilot — Pro Max — already in beta on velxio.dev

Recently shipped

  • 2026-05 — Retro Intel/Zilog chip collection (17 chips, 2 bundled demos, 2 /examples entries)
  • 2026-05 — Desktop overlay (welcome page, grace banner, ESP32 QEMU prompt)
  • 2026-05 — Landing page "Try Simulator Free Online" CTA + download slot
  • 2026-04 — ESP32 IoT gateway (real browser <-> simulated WebServer)
  • 2026-04 — Multi-board UART bridge (Arduino <-> ESP32 <-> Pi 3 on the same canvas)
  • 2026-03 — ngspice analog co-simulation behind the electrical-sim toggle
  • 2026-03 — Custom-chip backend runtime for QEMU ESP32

Contributing

Feature requests, bug reports, and pull requests are welcome at github.com/davidmonterocrespo24/velxio.

All contributors must sign a Contributor License Agreement (CLA); a CLA check runs automatically on PRs so the dual-licensing (AGPLv3 + Commercial) stays valid.