234 lines
19 KiB
Markdown
234 lines
19 KiB
Markdown
# Changelog
|
||
|
||
All notable changes to Velxio will be documented in this file.
|
||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||
|
||
## [3.0.1] - 2026-07-18
|
||
|
||
### Added
|
||
- Added keyboard mapping for pushbuttons – assign a key from the component property dialog; keycap badge shows the mapping on the canvas.
|
||
- Introduced global message dialog and confirm modal replacing native `confirm()` and `alert()` calls across the editor, file explorer, and other modals.
|
||
- Preserved in-progress workspace across login redirect using sessionStorage (stashed as `.vlx` and restored after authentication).
|
||
- Added full 830-point and mini 170-point breadboard parts with Fritzing artwork (CC-BY-SA 3.0) and computed pin geometry.
|
||
- Added built-in internal connectivity for breadboard strips and power rails (netlist merging).
|
||
- Added new 4-pin I2C SSD1306 OLED module and gallery examples for Uno, ESP32, Pico, and STM32.
|
||
- Added auto-detecting SSD1306 part that automatically selects I2C or SPI protocol based on wiring.
|
||
- Added ESP32 WiFi + MQTT (PubSubClient) gallery example that round-trips through a public broker.
|
||
- Added ESP32-S3 ILI9341 TFT display example.
|
||
- Added multi-board “Run All” button with split-menu to run only the active board.
|
||
- Added wire color discoverable UI on desktop: context menu with color swatches and floating palette when a wire is selected.
|
||
- Added featured component sorting – breadboards now lead the component picker.
|
||
- Added per-component pin hover highlighting (only the pin under the cursor lights up, matching the breadboard behaviour).
|
||
- Added runtime burnout for resistors, electrolytic capacitors, and LEDs (sustained overload destroys the part; charred visual and open circuit).
|
||
- Added pre-flight circuit verifier rules: missing power, dangling two‑terminal parts, power shorts, over‑voltage warnings for boards and electrolytic capacitors.
|
||
- Added Pico W WiFi emulation (paid feature): virtual DHCP/ARP net, IoT gateway, internet bridge, and full associaton.
|
||
- Added AVR EEPROM emulation (fixes hangs on `EEPROM.read/write/update`).
|
||
- Added ATtiny85 USI I2C bridge enabling SSD1306 OLED support via TinyWireM.
|
||
- Added feedback mechanisms: star banner follow-up for users who dismissed the first prompt, and circuit verification results now appear in the output console.
|
||
|
||
### Changed
|
||
- Redesigned the examples page: compact toolbar, denser grid with 5:3 thumbnails (no black bars), and filter chips with dropdown selects.
|
||
- Unified editor toolbar controls now collapse by container width instead of viewport, preventing overlap when the AI chat panel is open.
|
||
- Removed redundant file-tabs bar from the toolbar; file switching is now done exclusively from the left explorer.
|
||
- Breadboards now always sit behind all other components (z‑index -1) to reflect their physical role.
|
||
- Pin overlays stack within their component group and no longer leak through covering components.
|
||
- Board pins stay clickable – hover handlers moved to the component wrapper, not the drag overlay.
|
||
- Slide-switch model corrected from SPST to genuine SPDT with pin‑1/pin‑3 throws and a common wiper.
|
||
- NTC temperature sensor SPICE model fixed (pull‑up on top, NTC to GND) so the decode matches the example sketch.
|
||
- SPICE pre-flight and runtime electrical re-solve now triggered on all output pin edges (ESP32, STM32, Raspberry Pi) and on component burnout.
|
||
- Circuit verifier findings are now logged to the output console instead of a toolbar toast.
|
||
- Virtual file system upload now auto‑starts the Pi and waits for the shell before sending files.
|
||
- The Run button shows a spinner and stays disabled while circuit verification is in progress.
|
||
- Non‑English locales (zh‑cn, pt‑br) now load correctly on direct navigation.
|
||
- `/en/*` routes are redirected to the prefix‑free path instead of rendering a blank page.
|
||
- Star banner flags are now separate for dismissal and click‑through, allowing one follow‑up prompt.
|
||
- Built‑In breadboard and minimap artwork switched to the Fritzing parts‑library (CC‑BY‑SA 3.0).
|
||
- ESP32 digital inputs are now driven from the real SPICE solve for accurate `digitalRead()`; AVR inputs include modeled internal pull‑up resistors; RP2040 and STM32 also benefit from SPICE‑driven inputs.
|
||
- Pico W board now loads the `RPI_PICO_W` firmware variant (with `network` module) when a CYW43 peripheral is present.
|
||
|
||
### Fixed
|
||
- Fixed keyboard‑mapped buttons firing while typing in the Monaco code editor (focus sink detection improved).
|
||
- Fixed board pins being unclickable when the cursor moved from the drag overlay onto a pin square.
|
||
- Fixed wire colour changes from the UI being a no‑op (`applyNow` was `false`).
|
||
- Fixed `recordUpdateWire` being undefined in `SimulatorCanvas` causing JavaScript reference errors.
|
||
- Fixed rotated component pin positions being wrong for wire starting, undo/redo, and import (three separate bugs).
|
||
- Fixed Delete/Backspace key inadvertently triggering board removal instead of only deleting selected components.
|
||
- Fixed ESP32 UART pin classification missing for multi‑board Serial interconnect (TX/RX, TX2/RX2 now properly mapped).
|
||
- Fixed ESP32‑C3 digital inputs not resolving from SPICE (spiceDrivenInputs enabled).
|
||
- Fixed ESP32 dual 3V3/5V pins (e.g., DevKitM‑1) not being tied to the supply rail.
|
||
- Fixed ATtiny85 pin name mapping and Timer0 PWM register addresses (blink/PWM works).
|
||
- Fixed AVR EEPROM not instantiated – `EEPROM.read/write` no longer hangs.
|
||
- Fixed SSD1306 page‑addressing mode (default memory mode set to 2) so Tiny4kOLED and U8g2 render correctly.
|
||
- Fixed breadboard holes not connecting during netlist building (5‑hole strips and power rails now merge).
|
||
- Fixed breadboard pins invisible for dense components – only the pin under the cursor lights up (consistent with other components).
|
||
- Fixed Pico W WiFi emulation: gSPI framing, F2 byte order, host‑wake IRQ, event frames (BDC headers), and virtual DHCP/ARP.
|
||
- Fixed Pico W MicroPython file writing (UTF‑8 byte length for LittleFS) – multi‑byte characters no longer truncate files.
|
||
- Fixed ESP32‑C3/‑S3 compiling with wrong target (`esp32` instead of `esp32s3`) and missing GPIO pins 40‑48.
|
||
- Fixed ESP32 firmware download fast‑path for WiFi emulation (inDiscardableWriteData).
|
||
- Fixed SPICE re‑solve not being triggered on ESP32/STM32/Pi output pin edges (LED stayed stuck on).
|
||
- Fixed SPICE re‑solve not being triggered when a component burns out (burnt part stayed in the circuit).
|
||
- Fixed circuit verifier being blind to current faults in production (branch currents not enumerated via ngspice AllVecs).
|
||
- Fixed circuit pre‑flight verification never running on Run button click (click event mistaken for `skipVerify` argument).
|
||
- Fixed verification findings being wiped when Run auto‑compiled after verification.
|
||
- Fixed tooltip/text fields not being respected when Backspace was used to delete wires (AI chat, etc.).
|
||
- Fixed window blur not releasing keyboard‑mapped buttons (no stuck keys after Alt‑Tab).
|
||
- Fixed minimap red viewport rectangle not updating during canvas drag (now live‑tracked via `requestAnimationFrame`).
|
||
- Fixed Docker build artifact upload exhausting Actions storage quota (disabled).
|
||
- Fixed QEMU/ROM downloads failing on transient deploy blips (added retries).
|
||
- Fixed backend E2E tests failing on fork PRs due to missing secrets (gated gracefully).
|
||
- Fixed non‑English locale bundles not loading on direct navigation (i18next initialisation and case matching corrected).
|
||
- Fixed `/en/*` routes rendering blank (redirected to prefix‑free canonical path).
|
||
- Fixed UI: toolbar controls overlapping on narrow bar when AI chat panel was open (container query collapse).
|
||
- Fixed UI: neon decorative outlines replaced with solid tokenized `#0071e3` accent across editor and landing page.
|
||
- Fixed UI: “Circuit check” findings preserved across Run auto‑compile, no longer cleared.
|
||
- Fixed UI: breadboards now always behind components, and pin overlays stack correctly with their group.
|
||
- Fixed UI: pinned overlays pickers (Add Component, board picker) now render above AI chat panel (z‑index 9000).
|
||
- Fixed UI: rotated component pin boxes incorrect after import/undo/load (re‑measure after layout).
|
||
- Fixed UI: star banner tracking distinguished between dismissal and actual click‑through.
|
||
- Fixed UI: file tab bar removed from toolbar to free up horizontal space.
|
||
- Fixed examples: ESP32 Blink LED example now includes a series resistor.
|
||
- Fixed examples: 8 MicroPython WiFi examples changed from plain Pico to Pico‑W board type.
|
||
- Fixed examples: slide‑switch wiring in digital and circuit examples updated to match corrected SPDT model.
|
||
|
||
## [3.0.0] - 2026-06-11
|
||
|
||
### Added
|
||
- Custom retro CPU chips (Z80, 8080, 4004, 4040, 8086) with programmable ROM, board-less operation, and in-editor assembly support
|
||
- MicroSD card emulation over SPI for AVR, RP2040, and ESP32 with FAT16 image and upload panel
|
||
- Library Manager with per-board manifests, content-addressed cache, version management, uninstall, and autocomplete
|
||
- ePaper display emulation for SSD168x (B/W, tri-colour), UC8159c (ACeP 7-colour), and UC8179 (mono) panels
|
||
- Undo/redo for canvas operations (components, wires, moves, rotations, property changes)
|
||
- PinResolver abstraction enabling SPICE-resolved digital inputs for mixed-mode simulation
|
||
- Full ngspice WASM migration: one solver path across browser and Node tests
|
||
- SignalRouter for ESP32 GPIO Matrix routing, replacing the per‑peripheral ad‑hoc cache
|
||
- Oscilloscope trigger modes (Auto / Normal / Single) with edge selection and position control
|
||
- RP2040 real-time performance: IdleSpinDetector elides busy‑wait loops, WFI sleeps are bounded
|
||
- ESP32‑CAM emulation with real webcam frame bridge via QEMU
|
||
- Multi‑board wire‑aware interconnect (UART, I2C, SPI, digital pins) across all supported boards
|
||
- GitHub Sync, Share/Embed modal, BOM CSV export, schematic PNG export (Pro features)
|
||
- Desktop app welcome page, grace/license gating, native menubar bridge, in‑app update toast
|
||
- i18n support for 9 locales (en, es, pt‑br, it, fr, zh‑cn, de, ja, ru) across the UI
|
||
- Extension hooks for private overlays: auth/DB split, session, save action, agent chat slot
|
||
- .vlx project export/import for stateless OSS self‑hosters
|
||
- Board options modal, per‑target compilation console with status grouping
|
||
- Live compile log streaming for ESP‑IDF (cmake/ninja output) and arduino‑cli
|
||
- Visual LED test harness (CDP‑driven) and netlist snapshot tests for all gallery examples
|
||
- Over 100 new gallery examples (Pico Doom, ESP32‑CAM preview, ePaper dashboards, retro CPU demos, 100 Days of IoT, analog circuits, etc.)
|
||
|
||
### Changed
|
||
- Library Manager redesigned: single unified tab with state‑aware row actions (Add to project, In project toggle, Uninstall/Remove)
|
||
- Compilation system: async job model with status polling, request dedup, concurrency semaphore, persistent ESP‑IDF build directory
|
||
- ESP‑IDF builds now use ccache with 8 GB cap, per‑variant persistent directories, and graceful fallback for incomplete manifests
|
||
- Server‑side library resolution scoped to content‑addressed cache; global volume retired
|
||
- ePaper rendering improved: native‑window compose, proper rotation, byte‑aware orientation, paged window union
|
||
- Canvas interactions enhanced: wires follow component rotation, minimap with draggable viewport, drag‑to‑move parts during simulation
|
||
- Bundle size reduced via manualChunks: main entry dropped from ~23 MB to ~2.68 MB; wokwi‑elements, PiTerminal, mcu‑emulators split
|
||
- Landing page refreshed with AI agent section, updated pricing tiers, licensing cards, and live editor hero screenshot
|
||
- Pricing copy updated to multiplier messaging (Pro = 20×, Pro Max = 50×)
|
||
- Desktop app hides marketing nav, redirects / → /editor, shows splash screen during boot
|
||
- CHANGELOG.md entries reflect all new features and changes for v3.0.0
|
||
|
||
### Fixed
|
||
- ESP32: WiFi/HTTP client link by enabling mbedTLS PSK; BLE stack switched to Bluedroid; LEDC duty routing for multi‑servo; flash image trimming (10× smaller JSON); sdkconfig defaults for cleaner serial output
|
||
- RP2040: delay()‑based sketches now run in real‑time on slow hosts; SPI0 routing fixed for Arduino init; UART TX waveform synthesized
|
||
- AVR: serial RX queue so `Serial.readStringUntil` sees full input; UART TX waveform at bit level; INPUT_PULLUP pin state; LED visualization through SPICE
|
||
- Multi‑board: initSimulator no longer wipes Interconnect’s UART wrapper; board removal reconciles `running` flag
|
||
- Canvas: wires follow component rotation; undo/redo state restored; component deletion cascades to wires; sensor panel opens on desktop click; wire color palette works
|
||
- i18n: index.html SEO fallback div removed after mount; missing locale keys for admin/user pages added
|
||
- Desktop: openExternal works via cascade of IPC paths; native menu routes navigate in‑window
|
||
- CI: Frontend Tests restored by patching RP2040 mocks and install‑libraries payload; backend e2e re‑enabled; worker heap limit bumped; cache storage growth limited
|
||
- Library: ArduinoJson and other src/‑layout libraries compile correctly by preserving directory structure
|
||
- ePaper: BUSY polarity per controller family; RAM Y‑counter wraps at window end; orientation correct across all boards
|
||
- Visual LED: RGB LED, 7‑segment, and PWM fade now correctly driven through SPICE‑resolved pins
|
||
- PinManager: updatePort respects DDR mask so INPUT_PULLUP does not falsely mark pin as output
|
||
- Many other bug fixes across compilation, simulation, UI, and platform compatibility
|
||
|
||
### Performance
|
||
- Bundle size reduced by 88% for main entry via manualChunks
|
||
- ESP‑IDF warm compiles drop from 5–7 min to 5–30 s with ccache + persistent build dir
|
||
- Compilation dedup prevents multiple ninja jobs from racing on the same sketch
|
||
- Spice/I2C waveform rendering speed improved by batching SPI bytes in the worker
|
||
- Minimap and canvas rendering optimised for mid‑range hardware
|
||
|
||
### Removed
|
||
- Legacy SpiceEngine (eecircuit‑engine) and CircuitScheduler replaced by ngspice WASM
|
||
- Dead auth/DB dependencies from OSS image (SQLAlchemy, JWT, etc.)
|
||
- Per‑board LEDC update fallback after SignalRouter rollout
|
||
- Unused files: `wireOffsetCalculator`, `wirePathGenerator`, `wireSegments`
|
||
- Global arduino‑libraries volume no longer needed for library resolution
|
||
|
||
## [2.0.1] - 2026-04-22
|
||
|
||
### Added
|
||
- Enhanced electrical simulation with ngspice-WASM engine for accurate analog circuit analysis
|
||
- Expanded component catalog with 44 SPICE-compatible parts including logic gates, transistors, op-amps, regulators, and electromechanical components
|
||
- Added 40 new circuit examples demonstrating analog, digital, and electromechanical concepts
|
||
- Introduced custom web components for electronic elements (relays, resistors, capacitors, inductors, transistors)
|
||
- Implemented ESP32 ADC waveform simulation with periodic 12-bit waveform look-up tables and interpolation
|
||
- Added voltmeter and ammeter instrument components for real-time circuit measurements
|
||
- Created comprehensive end-to-end tests for electrical simulation including capacitor charging, rectifier behavior, and waveform analysis
|
||
- Added GitHub Actions workflow for circuit simulation testing on every push and PR
|
||
|
||
### Changed
|
||
- Renamed all components to use 'velxio-' prefix for consistency
|
||
- Enabled electrical simulation by default (always-on SPICE mode) instead of requiring manual activation
|
||
- Enhanced LED brightness simulation to reflect actual current flow from SPICE calculations
|
||
- Updated backend to handle unhandled asyncio exceptions and prevent process crashes
|
||
- Improved component metadata generation to prevent CI drift and enforce up-to-date metadata
|
||
- Refactored property synchronization in simulation parts to use event-based system
|
||
- Expanded ADC pin mapping to support all 18 board types for full microcontroller integration
|
||
|
||
### Fixed
|
||
- Fixed sitemap generation to include all circuit examples for better SEO visibility
|
||
- Resolved floating input node issues in RC low-pass filter circuits that caused SPICE singular matrix errors
|
||
- Updated proxy configuration to use 127.0.0.1 for improved compatibility
|
||
- Fixed metadata regeneration to properly include custom components in the component picker
|
||
- Improved backend entrypoint script to ensure clean container restarts when processes die
|
||
|
||
## [2.0.1] - 2026-04-17
|
||
|
||
### Added
|
||
- Added ATtiny85 support with examples and simulation tests
|
||
- Added BMP280 sensor component with circuit preview and SVG representation
|
||
- Added example detail pages with improved SEO and sitemap generation
|
||
- Added MicroPython support for RP2040 (Pico), ESP32, ESP32-S3, and ESP32-C3 boards
|
||
- Added ability to upload precompiled firmware files (.hex, .bin, .elf) directly into the emulator
|
||
- Added ability to remove boards from workspace with confirmation dialog
|
||
- Added I2C sensor support with slave emulation for MPU6050, BMP280, DS1307, and DS3231 sensors
|
||
- Added ESP32 WiFi/BLE emulation with ESP-IDF compilation pipeline
|
||
- Added VS Code extension skeleton for local simulation
|
||
- Added comprehensive documentation for ESP32 GPIO sensor simulation, Docker infrastructure, and MicroPython implementation
|
||
- Added auto-compile feature that triggers compilation when pressing Play if code changed or no firmware loaded
|
||
- Added share functionality for projects and examples with visibility toggle
|
||
- Added component metadata overrides and enhanced property controls
|
||
- Added new CI/CD workflows for backend unit tests, end-to-end tests, and automated Discord release notifications
|
||
- Added Docker multi-architecture support (amd64 + arm64) and pre-built ESP-IDF toolchain image
|
||
|
||
### Changed
|
||
- Enhanced auto-compile to use board's file group for WiFi detection instead of legacy global files
|
||
- Updated CircuitPreview component and implemented ShareModal using createPortal
|
||
- Enhanced Arduino pin tracing in DynamicComponent and updated LittleFS WASM initialization
|
||
- Enhanced ESP-IDF compiler library resolution logic and added support for dynamic library detection
|
||
- Enhanced wire connection handling and GND checks for components
|
||
- Enhanced logging for library loading and WiFi progress
|
||
- Updated Docker build processes with optimized build contexts and multi-architecture support
|
||
- Changed WiFi SSID normalization to match QEMU access points for reliable ESP32 WiFi connection
|
||
- Refactored I2C slave tests for ESP32 with improved event handling and ACK/NACK responses
|
||
|
||
### Fixed
|
||
- Fixed container restart issue by monitoring both backend and nginx processes
|
||
- Fixed project saving to use active board files/kind and improved error messages
|
||
- Fixed ESP32 boot stability with deterministic instruction counting
|
||
- Fixed ESP32 Run button to auto-compile and recover firmware after page refresh
|
||
- Fixed LED ground check to require cathode wired to GND (or LOW GPIO) to light up
|
||
- Fixed MPU6050Slave I2C handling with improved WHO_AM_I read tracking
|
||
- Fixed ESP32 WiFi SSID/channel alignment with QEMU access_points array
|
||
- Fixed RISC-V toolchain paths for ESP32-C3 compilation
|
||
- Fixed ESP-IDF Python requirements installation in Docker
|
||
- Fixed SaveProjectModal to prevent saving to `/api/projects/none` when project ID is invalid
|
||
- Fixed ESP32 compilation by adding missing dependencies (cmake, ninja-build, git, packaging, libusb)
|
||
|
||
[2.0.1]: https://github.com/davidmonterocrespo24/velxio/releases/tag/v2.0.1
|
||
|
||
[3.0.0]: https://github.com/davidmonterocrespo24/velxio/releases/tag/v3.0.0
|
||
[3.0.1]: https://github.com/davidmonterocrespo24/velxio/releases/tag/v3.0.1 |