Commit Graph

18 Commits

Author SHA1 Message Date
a2nr 6e1781926e feat(velxio): Elemes LMS-C embed bridge, DeployProgress UI, BASE_URL customization
- Add EmbedBridge.ts PostMessage bridge for Elemes iframe integration
- Add DeployProgress.tsx component for compile/transfer/flash progress UI
- Add DeployProgress.css styling for overlay progress bar
- Modify SerialMonitor.tsx to support BLE/Hardware toggle by Elemes
- Modify vite.config.ts to use VITE_BASE_PATH=/velxio/
- Modify deploy/nginx.conf to remove root redirect
- Update useSimulatorStore.ts with deployState, hwSerialOutput
- Update App.tsx for /editor route
- Add backend endpoints for Elemes auth, projects, dependencies

This commit allows Velxio to run embedded in Elemes lesson pages via iframe
with PostMessage communication for code loading, circuit state, and serial
monitoring.
2026-08-01 03:14:15 +00:00
David Montero Crespo b736aea86a refactor: rename deploy/ → docker/ (container build, not host deploy)
The folder only holds the in-container nginx + entrypoint that the
standalone Dockerfile copies. Calling it "deploy" implied host-level
production glue, which now lives in github.com/velxio/velxio-prod.
"docker/" makes the build-time vs deploy-time split obvious.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 00:05:55 -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
Richard Almanza 81bd7885fa fix(nginx): add ipv6 listen property to nginx service conf
- hotfix for issues #108 and #89 where standalone dockerimage does not provide velxio UI
2026-05-01 18:47:55 -05:00
David Montero Crespo 641ac8c1de Add comprehensive tests for Cyw43Emulator functionality and lifecycle
- Implemented handshake tests to validate initial bus state and register responses.
- Created end-to-end tests for Pico W LED blinking using MicroPython firmware.
- Added SDPCM framing tests to ensure proper encoding and decoding of control frames.
- Developed IOCTL tests to verify command responses and state changes in the emulator.
- Established a full lifecycle test for WiFi operations, including scanning, connecting, and packet handling.
- Introduced TypeScript configuration for test files to ensure compatibility and strict type checking.
2026-04-29 00:21:26 -03:00
David Montero Crespo f5ef107eaa feat: implement asyncio exception handler and update entrypoint script for process management 2026-04-16 00:57:30 -03:00
David Montero 8cff52bb2e fix: ignore ESP-IDF export.sh non-zero exit to prevent container crash
The openocd-esp32 tool fails with exit code 127 due to missing libusb-1.0.so.0
in the runtime image. With set -e, this caused the entrypoint to exit before
starting uvicorn and nginx, putting the container in a restart loop.

Adding || true allows the ESP-IDF environment to be sourced while tolerating
the non-critical openocd warning.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 07:18:35 +02:00
David Montero Crespo 54f8f2782b feat: add ESP32 WiFi/BLE emulation with ESP-IDF compilation pipeline
Replace arduino-cli with ESP-IDF 4.4.7 for ESP32 compilation — Arduino-compiled
firmware crashes in QEMU (9-28 reboots) while ESP-IDF boots cleanly (0 reboots).
The new espidf_compiler translates Arduino WiFi/WebServer sketches to native
ESP-IDF C code, compiles with cmake+ninja, and merges into 4MB flash images.

Key changes:
- ESP-IDF compiler: translates WiFi.begin/WebServer to esp_wifi/esp_http_server
- ESP-IDF project template with QEMU-optimized sdkconfig (DIO, 40MHz, no WDT)
- WiFi status parser for ESP-IDF serial logs (wifi_status, ble_status events)
- IoT Gateway HTTP reverse proxy for ESP32 web servers
- WiFi/BLE auto-detection from sketch content + visual status icons
- Static IP 192.168.4.15 matching slirp DHCP first-client range
- Docker: new espidf-builder stage with ESP-IDF 4.4.7 toolchain
- 157 tests covering WiFi/BLE for both ESP32 (Xtensa) and ESP32-C3 (RISC-V)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-31 20:53:56 -03:00
David Montero Crespo effd1ee765 feat: update entrypoint.sh to ensure ESP32 core version is 2.0.17; mark subproject commits as dirty 2026-03-24 20:39:56 -03:00
David Montero Crespo c7eeab5891 feat: initialize arduino-cli config and install missing cores; mark subproject commits as dirty 2026-03-24 18:33:21 -03:00
David Montero Crespo dbf6bd986f feat: update entrypoint.sh to install arduino-cli base cores; mark subproject commits as dirty 2026-03-24 18:06:19 -03:00
David Montero Crespo 8ed0438abf feat: update docker-compose to include arduino-libs volume; mark subproject commits as dirty 2026-03-24 17:30:56 -03:00
David Montero Crespo dc335c666e feat: add WebSocket support for ESP32 simulation in nginx configuration; clean up example code by removing unused WDT functions 2026-03-24 17:02:23 -03:00
copilot-swe-agent[bot] c00f094d6b Fix nginx /docs routing conflict, move FastAPI Swagger to /api/docs, complete SEO meta tags
Co-authored-by: davidmonterocrespo24 <47928504+davidmonterocrespo24@users.noreply.github.com>
2026-03-11 18:55:18 +00:00
David Montero Crespo 6ed490b34e
Update nginx.conf 2026-03-06 17:28:52 -03:00
David Montero Crespo eb2d511512
Update nginx.conf 2026-03-06 17:27:43 -03:00
David Montero c7e9c57b82 feat: add production deployment configuration with SSL support
- Add docker-compose.prod.yml for standalone production deployment
- Add nginx-host-velxio.conf for host nginx reverse proxy with SSL
- Update deploy/nginx.conf with security headers, gzip, and health endpoint
- Add deploy/nginx.prod.conf for production nginx configuration

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-06 21:20:44 +01:00
David Montero Crespo a5c6987aca feat: implement user authentication and project management features
- Add LoginPage and RegisterPage for user authentication.
- Create UserProfilePage to display user projects.
- Implement ProjectPage for viewing and editing individual projects.
- Introduce authService for handling user login, registration, and session management.
- Add projectService for managing project data retrieval and manipulation.
- Enhance EditorPage with file management capabilities and save prompts.
- Introduce Zustand stores for managing authentication, editor state, and project state.
- Add reserved usernames utility to prevent certain usernames during registration.
- Update compilation service to handle multiple files for Arduino sketches.
2026-03-06 10:14:50 -03:00