Commit Graph

44 Commits

Author SHA1 Message Date
David Montero Crespo daf6000a11
Update README.md 2026-07-13 00:25:16 -03:00
David Montero Crespo 90285cdda7
Update Star History section with responsive chart 2026-07-13 00:24:34 -03:00
David Montero ddafe34fd9 docs(readme): name the container in the quick-start docker example
Self-hosted feedback: a user on Orange Pi 5B copied the README quick-
start `docker run` line and then couldn't find the container with
`docker logs` because the command didn't pass `--name`, so Docker
assigned a random adjective-noun name. Same friction as filing an
issue with no container id.

Aligns the quick-start with the detailed "Option A" block lower in
the README that already had --name velxio. Also points at
`docker logs -f velxio` so the next person knows how to tail without
hunting for the auto-generated name.
2026-05-26 17:52:53 +02:00
David Montero Crespo 28d9cbc490 chore(oss): drop dead auth/DB dependencies from OSS image
After Phase 4 of the OSS / pro split, the OSS code base imports zero
auth/DB modules (verified with grep across backend/app/). But the
requirements.txt + config.py + .env.example + docs still listed
SQLAlchemy, aiosqlite, JWT/bcrypt, OAuth, SECRET_KEY etc. as if they
were live. Self-hosters running `pip install -r requirements.txt`
were pulling ~30 MB of packages the code never imports.

Changes:

* backend/requirements.txt — drop sqlalchemy, greenlet, aiosqlite,
  python-jose, passlib[bcrypt], bcrypt, authlib, email-validator,
  python-multipart. Keep fastapi, uvicorn, websockets, pydantic,
  pydantic-settings, httpx, mcp, esptool, wasmtime — everything OSS
  actually uses.
* backend/app/core/config.py — Settings reduced to FRONTEND_URL only.
  Comment explains the overlay path that adds the rest at Docker
  build time.
* backend/.env.example — same trim: only FRONTEND_URL, with a comment
  explaining why this file is almost empty.
* README.md — "Auth & Project Persistence" section rewritten to
  describe .vlx export/import. Env-var table reduced to a single row.
  Stack table updated: no SQLAlchemy, no JWT, persistence = .vlx
  files.
* CLAUDE.md — intro line updated (Auth: None, persistence: .vlx).
  Key-file-locations rewritten to list the OSS-stateless backend +
  the new lib/proRoutes / proSession / proSaveAction seams, with an
  explicit "removed in the split" note pointing to velxio-prod.
  Stores section drops useAuthStore (overlay-only now). Backend
  gotchas drop the bcrypt + email-validator + model-import notes.
  Implemented-features list replaces "Auth + URL persistence + user
  profile" with portable .vlx export/import.
* docs/ESP32_EMULATION.md — two `docker run` examples dropped the
  `-e SECRET_KEY=...` arg (no longer needed).

OSS build verified end-to-end (285 SEO pages prerender, 20 stateless
routes, zero sqlalchemy imports).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 17:06:27 -03:00
David Montero Crespo 7b760f860a docs: add missing third-party repo references to README 2026-05-11 13:05:21 -03:00
davidmonterocrespo24 04eb36d0a2 fix(docker): VOLUME defaults so standalone runs get the perf caches too
A user reported on Discord that an ESP32 Blink compile on a fresh
`docker run -d ghcr.io/.../velxio:master` (no -v flags) takes 8-9
minutes — every single time. Same hardware that the local project
checkout flies through in 5-30 seconds with the new persistent build
dir + ccache pipeline.

Root cause: `docker run` without `-v` mounts gets nothing persistent.
ccache + persistent build dir live in /var/cache/ccache and
/var/lib/velxio-build, both wiped on every `docker rm` (which the
user explicitly did when troubleshooting). docker-compose users get
the volumes via the compose file; standalone users got nothing
because the Dockerfile didn't declare them.

This PR closes that gap.

Dockerfile.standalone
- VOLUME ["/app/data", "/root/.arduino15", "/root/Arduino",
          "/var/cache/ccache", "/var/lib/velxio-build"]
  Anonymous volumes are now created automatically when the user runs
  the image without -v. They survive `docker stop`/`docker start`/
  `docker rm` (only `docker rm -v` or `docker volume prune` removes
  them). Users can still pass `-v` for named volumes — explicit
  mounts always win over the VOLUME directive.
- Replace `ccache --set-config max_size 8G` (RUN, written to
  /var/cache/ccache/ccache.conf which the volume mount masks at
  runtime) with `ENV CCACHE_MAXSIZE=8G` etc. — env vars override any
  conf-file value on every ccache invocation, so the 8 GB cap
  actually applies at runtime regardless of what's in the volume.

README.md
- Update both the quick-start docker run and the detailed self-host
  section to include all five volumes.
- Add a note explaining what each volume is for and that without them,
  cold compile times are 5-7 min vs the 5-30 s warm path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 23:19:34 +02:00
davidmonterocrespo24 9d5d2e8a4a fix(docs): RISC-V emulation goes through QEMU, not a TypeScript browser core
The marketing copy and docs claimed ESP32-C3 / XIAO-C3 / SuperMini /
CH32V003 ran on a "browser-native RV32IMC core written in TypeScript",
but production runs through QEMU lcgamboa (libqemu-riscv32) with the
esp32c3-picsimlab machine — same backend pattern as Xtensa ESP32, just
a different libqemu binary. The TypeScript ISA layer
(RiscVCore.ts / Esp32C3Simulator.ts / RiscVSimulator.ts) is kept only
as Vitest unit-test infrastructure for RV32IMC instruction decoding;
it cannot handle the 150+ ROM functions ESP-IDF needs at boot and is
not wired into the production emulation path.

Files updated:

Marketing pages
- LandingPage: board-group label, FAQ answer, architecture description
  no longer claim "browser-native" or "no backend needed" for RISC-V.
- AboutPage: arch card retitled "RISC-V via QEMU", body explains the
  libqemu-riscv32 / lcgamboa backend.
- Velxio2Page: arch group engine label, multi-board feature item,
  competitive-comparison card all corrected.
- ArduinoEmulatorPage: two RISC-V cards corrected.
- ESP32SimulatorPage: ESP32-C3 cross-link card corrected.
- ESP32C3SimulatorPage: hero subtitle, trust strip, supported-boards
  intro, JSON-LD description corrected.
- ElectronicsSimulatorPage: install-needed FAQ corrected.
- examples.ts: c3-blink description and code-comment corrected.

SEO surfaces
- index.html: JSON-LD SoftwareApplication description, OS-fallback FAQ
  body, supported-boards <ul> bullets, feature list bullets corrected.
- seoRoutes.ts: /esp32-c3-simulator title + description corrected;
  homepage description corrected.

Docs page
- DocsPage RiscVEmulationSection: intro paragraph rewritten — RISC-V
  goes through QEMU lcgamboa with libqemu-riscv32 / esp32c3-picsimlab,
  TypeScript layer is Vitest-only.
- DocsPage Esp32EmulationSection callout: section now applies to all
  ESP32 family (Xtensa + RISC-V), pointer to RISC-V doc clarified.

README
- "Boards" table: production-engine column for ESP32-C3 family and
  CH32V003 changed from "RiscVCore.ts (browser)" to "QEMU lcgamboa
  (backend)".
- "ESP32-C3 / XIAO-C3 / SuperMini / CH32V003" subsection retitled
  "(RISC-V via QEMU)" — body explains libqemu-riscv32 backend and
  flags the TypeScript layer as Vitest-only.

The two remaining "browser-native" hits in the codebase
(Velxio25Page:176, index.html:348) are about ngspice-WASM SPICE
analog simulation, which genuinely is browser-native — left alone.

Build verified: npm run build:docker succeeds, 246 SEO pages prerender.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 21:56:29 +02:00
David Montero Crespo f0577e222e docs(readme): rewrite install section for the 3 paths
- Add a comparison table up top so users pick the right path quickly.
- Option A (Docker): include the arduino-libs named volume so cores
  don't reinstall on every container restart (was a 5-10 min hidden cost).
- Option B (Compose): note expected first-build time (~10-15 min for
  ESP-IDF + frontend) so users don't think it's stuck.
- Option C (Manual): drop --recurse-submodules (npm pulls the wokwi libs),
  add ATTinyCore install, flag that ESP32 emulation needs Docker (or the
  separate ESP-IDF setup) since QEMU .so files only ship in the image.
- Update Project Structure: third-party/ is reference-only, deploy/ is now
  docker/.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 00:08:30 -03:00
David Montero Crespo 531c337d19 fix(install): unblock self-hosting + drop forced wokwi clones
Resolves several install pain points reported by users (#108, #120) and
removes the obligatory upstream-clone step that confused contributors and
slowed down every Docker build.

Install fixes:
- nginx: server_name → catch-all default_server, drop Debian's stock site
  so reverse-proxied users no longer get the "Welcome to nginx" page.
- entrypoint: auto-generate SECRET_KEY at first boot, persisted under
  data/.secret_key. backend/.env is now optional in docker-compose.yml.
- backend: add greenlet>=3.0.0 (SQLAlchemy async dep that was missing on
  some Python builds — caused uvicorn startup failures on WSL).

Wokwi libs come from npm:
- @wokwi/elements 1.9.2, avr8js 0.21.0, rp2040js 1.3.2 are pinned in
  frontend/package.json. Vite aliases removed.
- Dockerfile.standalone no longer clones avr8js / rp2040js / wokwi-elements
  / wokwi-boards. Frontend stage is just COPY + npm install + build:docker.
- Board SVGs vendored under frontend/public/boards/ (10 deduped against
  existing files, 2 truly new). third-party/wokwi-* clones become reference-
  only credits — generate-component-metadata.ts skips gracefully when absent.

Production config split out:
- docker-compose.prod.yml, deploy/nginx.prod.conf, nginx-host-velxio*.conf,
  update-third-party.bat removed. Production deployment lives in its own
  repo: https://github.com/velxio/velxio-prod (host nginx + HTTPS + backups
  + pinned upstream commit).

Verified locally: 1161 frontend tests pass, build:docker completes clean.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 00:04:11 -03:00
David Montero Crespo 9cd5061732 refactor: rename wokwi-libs/ → third-party/
The directory grew well beyond Wokwi-only contents: it now hosts
lcgamboa's QEMU fork (qemu-lcgamboa), Espressif's esp32-camera, the
ngspice WASM build, fritzing-parts, picowi, an alternative QEMU
(qemu-esp32), the 100_Days_100_IoT_Projects examples repo, and
Wokwi's own avr8js/rp2040js/wokwi-elements/wokwi-features/wokwi-boards.
"wokwi-libs" was misleading — half the contents have nothing to do
with Wokwi. "third-party/" is the standard convention for vendored
external dependencies.

Mechanical changes:

  Path rename:
    wokwi-libs/ → third-party/
    update-wokwi-libs.bat → update-third-party.bat
    docs/WOKWI_LIBS.md → docs/THIRD_PARTY.md

  Submodule reconfiguration:
    .gitmodules — 4 path= and section names updated
    .git/modules/wokwi-libs/ → .git/modules/third-party/
    each submodule's .git file rewired to ../../.git/modules/third-party/<name>

  Reference updates (~80 files): vite.config.ts aliases, Dockerfile
    COPY paths, GH Actions workflow steps, build_qemu_*.sh, all
    docs/* and test/*/autosearch/* entries that mention the path,
    package-lock.json file: dependencies, .gitignore patterns,
    sitemap.xml + index.html SEO blurbs, scripts/generate-component-*,
    .dockerignore, .idea/vcs.xml. Bulk replaced both `wokwi-libs/`
    (path) and bare `wokwi-libs` (textual mentions in docs/comments).

Verified:
  - npx tsc -b --noEmit produces no new errors related to these paths
  - vite.config.ts aliases now point at ../third-party/avr8js etc.
  - All 4 git submodules (avr8js, rp2040js, wokwi-elements,
    wokwi-features) are linked under third-party/ with their
    worktrees re-populated and config files referencing the new path
  - `grep -r wokwi-libs` returns zero hits outside node_modules,
    .vite, frontend/dist, third-party/ (upstream submodule contents),
    *.pyc caches, and *.dll.pre-camera rollback binaries

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 00:58:57 -03:00
davidmonterocrespo24 fd1cd03a26 docs(readme): add missing wokwi-boards clone to manual setup
A user (st_stefanov on Discord) reported the manual setup steps clone
avr8js, wokwi-elements, and rp2040js but skip wokwi-boards. The frontend
imports board.svg assets from wokwi-libs/wokwi-boards/boards/* (ESP32
DevKit V1, ESP32-S3, ESP32-C3, Pi Pico W, etc.), so without that repo
the Vite build fails on missing imports.

Dockerfile.standalone:77 already clones it; the README's Option C
(manual setup) was the only path missing the line. wokwi-boards is
asset-only — no npm install or build step needed.
2026-04-25 05:03:47 +02:00
David Montero Crespo ca6520e48d feat: Update I2C event handling and improve MPU-6050 slave emulation; enhance README and tests 2026-04-08 00:02:54 -03:00
David Montero Crespo 051d90374c Merge remote-tracking branch 'origin/master' into copilot/add-google-analytics-key-events-tracking 2026-03-28 22:00:49 -03:00
David Montero Crespo a346190086 fix: update Discord invite links across the application 2026-03-28 21:58:17 -03:00
David Montero Crespo 7095717dc6
Merge pull request #77 from davidmonterocrespo24/copilot/add-google-analytics-key-events-tracking
Copilot/add google analytics key events tracking
2026-03-28 16:27:28 -03:00
David Montero Crespo 6eedd45b81 feat: add About page with content and styling; update routing and SEO metadata 2026-03-28 16:26:29 -03:00
David Montero Crespo 7c9efe15ce
Update README.md 2026-03-28 15:55:43 -03:00
David Montero Crespo 4f4f226940
Actualizar README.md 2026-03-28 14:37:23 -03:00
David Montero Crespo 44dc7ef289
Add visitor badge and various shields to README 2026-03-24 02:15:11 -03:00
David Montero Crespo cf54fa90a3 Refactor code structure for improved readability and maintainability 2026-03-23 23:24:14 -03:00
David Montero Crespo 11c7d0570c fix: mark subprojects as dirty in QEMU, RP2040, and Wokwi elements libraries 2026-03-23 13:33:50 -03:00
David Montero Crespo 8c1c0e105d Refactor code structure for improved readability and maintainability 2026-03-16 14:28:16 -03:00
David Montero Crespo 2b19181c2b Refactor code structure for improved readability and maintainability 2026-03-16 14:22:23 -03:00
David Montero Crespo a99a9d512f feat: enhance ESP32 emulation with QEMU integration and update documentation 2026-03-14 14:35:59 -03:00
David Montero Crespo 05e3c54f18
Merge branch 'master' into feat/raspberryPi_emuation 2026-03-12 02:14:15 -03:00
David Montero Crespo f678c19318 feat: add Discord community link to README and navigation 2026-03-12 02:12:36 -03:00
David Montero Crespo 7f5b7368b5
Update README.md 2026-03-11 16:07:13 -03:00
copilot-swe-agent[bot] 4de28c25a2 Merge doc/ into docs/ — eliminate duplicate documentation folders
- Move ARCHITECTURE.md, MCP.md, SETUP_COMPLETE.md, WOKWI_LIBS.md, examples/, img1-4.png from doc/ to docs/
- Delete doc/ directory
- Update README.md: doc/img*.png -> docs/img*.png
- Update CLAUDE.md: doc/ARCHITECTURE.md -> docs/ARCHITECTURE.md
- Update frontend/README.md: ../doc/ -> ../docs/
- Update scripts/generate-example-screenshots.md: doc/examples/ -> docs/examples/
- Update docs/SETUP_COMPLETE.md internal self-references

Co-authored-by: davidmonterocrespo24 <47928504+davidmonterocrespo24@users.noreply.github.com>
2026-03-11 17:03:51 +00:00
David Montero Crespo 9089705cfb feat: add Product Hunt badge to README for increased visibility 2026-03-08 16:37:56 -03:00
David Montero Crespo c7f9d6d029 feat: Revise README to enhance project support section and add sponsorship links 2026-03-07 21:44:39 -03:00
David Montero Crespo 6d3614e40f Add commercial licensing and AGPLv3 license files; update submodule references to dirty state; create strategic plan document for Velxio project 2026-03-06 22:32:05 -03:00
David Montero Crespo 746e735487 docs: update README with velxio.dev live URL, Docker run command, and full self-hosting guide
- Add live demo badge and link to velxio.dev at the top
- Add Docker single-container run command with volume mount
- Add env vars reference table
- Simplify and modernize overall structure
- Update package.json name and homepage to velxio.dev

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 22:12:50 -03:00
David Montero Crespo 2a4415753e fix: update project name from OpenWokwi to Velxio in documentation and configuration 2026-03-06 14:29:15 -03:00
David Montero Crespo 581c688998 fix: update PayPal donation link in README.md 2026-03-05 21:39:33 -03:00
David Montero Crespo 336f0460cd feat: enhance wire offset calculation to maintain pin connections with L-shaped stubs 2026-03-05 21:33:02 -03:00
David Montero Crespo 7944ce2de3 feat: add support for RP2040 board, including simulator and compilation enhancements 2026-03-04 19:28:33 -03:00
David Montero Crespo f139187382 docs: reorganize documentation structure and update links to reflect new directory layout 2026-03-04 19:19:24 -03:00
David Montero Crespo bdb890eaf7 docs: update project documentation for clarity and consistency in feature descriptions 2026-03-04 19:16:00 -03:00
David Montero Crespo 5ca8a82985 feat: Enhance PinManager with PWM and Analog support
- Added PWM duty cycle tracking and callback registration to PinManager.
- Introduced methods for handling analog voltage injection and callbacks.
- Updated updatePort method to notify digital pin listeners.
- Improved listener management with clearAllListeners method.

feat: Expand BasicParts with new components

- Registered new components: 6mm Pushbutton, Slide Switch, DIP Switch 8, LED Bar Graph, and 7-Segment Display.
- Implemented event handling for each component to interact with the AVR simulator.

feat: Introduce ComplexParts with advanced components

- Added RGB LED with PWM support for color mixing.
- Implemented Potentiometer and Slide Potentiometer for analog input.
- Created Photoresistor Sensor to simulate light levels.
- Developed Analog Joystick for two-axis control and button press.
- Added Servo motor simulation with pulse width modulation.
- Implemented Buzzer using Web Audio API for sound generation.
- Created LCD 1602 and 2004 simulations with command/data processing.
2026-03-04 18:27:14 -03:00
David Montero Crespo cf95aeacd8 feat: update README for GitHub star link and add example project screenshot guidelines 2026-03-03 22:31:16 -03:00
David Montero Crespo b7e9bf64c4 feat: implement examples gallery and editor page with routing and example loading functionality 2026-03-03 22:25:52 -03:00
David Montero Crespo a8bb0b6ad9 feat: add interactive wire segment editing and utility functions 2026-03-03 21:14:01 -03:00
David Montero Crespo 5490ad42c8 fix: update README for English localization and clarity 2026-03-03 20:18:37 -03:00
David Montero Crespo a8c4f143af feat: Implement Arduino Simulator with component management and simulation features
- Added SimulatorCanvas component for rendering the simulator interface.
- Integrated Wokwi components (Arduino, LED, Resistor, Pushbutton, Potentiometer) into the simulator.
- Created PinManager to handle pin state changes and notifications.
- Developed AVRSimulator class for emulating Arduino Uno functionality.
- Implemented hex file loading and compilation service.
- Added CSS styles for the simulator interface.
- Established Zustand stores for managing editor and simulator states.
- Created utility functions for parsing Intel HEX format.
- Set up Vite configuration for the frontend project.
- Added batch scripts for starting backend and frontend servers, and updating Wokwi libraries.
2026-03-03 00:20:49 -03:00