Commit Graph

329 Commits (f495a2ce3a3b15ad3b4038f8deb3fee100f66e0b)

Author SHA1 Message Date
David Montero Crespo f495a2ce3a feat: implement ESP32 QEMU backend manager and frontend simulation interface 2026-04-01 22:41:52 -03:00
David Montero 69aaa070f2 chore: update sitemap.xml with current date
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 19:30:28 +02:00
David Montero f29e964e91 fix: ESP32 Run button auto-compiles and recovers firmware after page refresh
- handleRun now auto-compiles for ESP32/QEMU boards when no firmware is
  available (same behavior as AVR/RP2040 boards)
- startBoard now reloads compiledProgram into the bridge if _pendingFirmware
  was lost (e.g. after a page refresh between compile and run)
- Adds Esp32Bridge.hasFirmware() helper used by the store check

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 18:47:15 +02:00
David Montero ba8b56c647 fix: install ESP-IDF Python requirements in final Docker stage
ESP-IDF 4.4.x requires specific package versions (reedsolo<=1.5.4,
bitstring<4, pyparsing<2.4.0, kconfiglib==13.7.1, etc.) that conflict
with newer defaults. Installing requirements.txt after copying ESP-IDF
ensures the correct versions are used and cmake configure succeeds.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 07:45:47 +02:00
David Montero 372e4aea38 fix: add git and packaging to runtime image for ESP-IDF cmake
- git is required by ESP-IDF cmake to resolve submodules and version info
- packaging Python package is required by ESP-IDF Python dependency checks
  during cmake configure step

Without these, ESP32 compilation fails at cmake configure with:
  "Some Python dependencies must be installed"

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 07:39:46 +02:00
David Montero 447ab872f5 fix: add cmake, ninja-build and libusb to runtime image
- cmake and ninja are required by ESP-IDF compilation pipeline but were
  missing from the final stage, causing all ESP32 compilations to fail
- libusb-1.0-0 fixes the openocd-esp32 shared library warning on startup

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 07:28:01 +02: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 4b8e342a71
Merge pull request #88 from davidmonterocrespo24/feature/wifi-esp32
Feature/wifi esp32
2026-04-01 01:40:09 -03:00
David Montero Crespo e8511f2257
Merge pull request #84 from davidmonterocrespo24/feature/remove-board-from-workspace
feat: allow removing boards from workspace
2026-03-31 23:11:27 -03:00
David Montero Crespo d44ea38dcf
Merge pull request #82 from davidmonterocrespo24/feature/auto-compile-on-play
feat: auto-compile when pressing Play if code changed or no hex loaded
2026-03-31 23:10:25 -03:00
David Montero Crespo f9975d67c5 fix: update gateway IP in documentation and mark submodules as dirty 2026-03-31 23:08:54 -03: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 5dac9bca5c feat: allow removing boards from workspace
Closes #14

- Right-click context menu on boards with "Remove board" option
- Delete/Backspace key removes the active board (when no component selected)
- Confirmation dialog before removal showing connected wire count
- Removing a board also removes all connected wires and cleans up
  file groups, simulators, bridges, and VFS
- Cannot remove the last remaining board (button disabled + guard)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-29 01:55:10 -03:00
David Montero Crespo 67f9bc70c6 feat: auto-compile when pressing Play if code changed or no hex loaded
Closes #81

- Add `codeChangedSinceLastCompile` dirty flag to useEditorStore
- Play button now triggers compilation automatically when no compiled
  program exists or code has changed since last compile
- Show compilation progress during auto-compile before run
- If compilation fails, show errors instead of running stale code
- Keep separate Compile button for manual compile-only workflow
- Play button always enabled (disabled only while running/compiling)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-29 01:46:07 -03:00
David Montero Crespo e99ded70b5 feat: update AboutPage with new external links and improve press section 2026-03-28 23:11:57 -03:00
David Montero Crespo c0b658e6d6 fix: update npm ci to npm install for building libraries and mark submodules as dirty 2026-03-28 22:50:18 -03:00
David Montero Crespo 7da1b2261d
Merge pull request #80 from davidmonterocrespo24/copilot/add-google-analytics-key-events-tracking
feat: add About link to navigation in index.html and Velxio2Page
2026-03-28 22:44:33 -03:00
David Montero Crespo 922d0dd682 feat: add About link to navigation in index.html and Velxio2Page 2026-03-28 22:43:53 -03:00
David Montero Crespo 4d05b6ea7e
Merge pull request #79 from davidmonterocrespo24/copilot/add-google-analytics-key-events-tracking
feat: add About link to AppHeader component
2026-03-28 22:06:01 -03:00
David Montero Crespo 28ba7cb589 feat: add About link to AppHeader component 2026-03-28 22:05:30 -03:00
David Montero Crespo 2b239a8700
Merge pull request #78 from davidmonterocrespo24/copilot/add-google-analytics-key-events-tracking
fix: update Discord invite links across the application
2026-03-28 22:00:59 -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 dac948e7da perf: optimize hero image for faster load times
- Resize image.png from 2816x1536 to 1400x764 (7.3MB → 1.9MB, -74%)
- Add image.webp version (201KB, -97% vs original)
- Update nginx.conf to auto-serve WebP via Accept header negotiation
- Update LandingPage.tsx to use <picture> with WebP source + lazy loading

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 20:33:40 +01: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 4e3d5090e2 feat: add zoom support for touch interactions and enhance pin hit targets 2026-03-28 00:31:00 -03:00
David Montero Crespo 91e9c2d5f6
Merge pull request #73 from davidmonterocrespo24/copilot/add-google-analytics-key-events-tracking
Copilot/add google analytics key events tracking
2026-03-25 03:07:11 -03:00
David Montero Crespo f127ef6cbe Enhance analytics tracking across the application
- Added tracking for simulation events: start, stop, and reset.
- Implemented tracking for library manager interactions, including library installations.
- Enhanced project management tracking with save and create project events.
- Integrated tracking for user authentication events: sign-up and login.
- Added tracking for CTA clicks on landing and SEO pages.
- Updated analytics utility functions to support new tracking events.
- Improved GitHub and Discord link tracking in the app header.
- Refactored existing components to utilize new tracking functions for better user engagement insights.
2026-03-25 03:06:38 -03:00
David Montero Crespo 084ad5cfb9 fix: remove redundant console log in handleLoadExample function 2026-03-25 03:05:38 -03:00
David Montero Crespo 2782282d26
Merge pull request #37 from davidmonterocrespo24/copilot/add-google-analytics-key-events-tracking
Add GA4 key events tracking for core user actions
2026-03-25 02:19:41 -03:00
David Montero Crespo 5d741bfb5e Merge branch 'website' into copilot/add-google-analytics-key-events-tracking
# Conflicts:
#	frontend/src/components/layout/AppHeader.tsx
#	frontend/src/pages/ExamplesPage.tsx
#	frontend/src/pages/LandingPage.tsx
2026-03-25 02:18:52 -03:00
David Montero Crespo 003482b708
Merge pull request #72 from davidmonterocrespo24/website
Website
2026-03-25 00:09:15 -03:00
David Montero Crespo 005f50262f feat: enhance build scripts and add SEO prerendering; improve touch interactions for wire creation 2026-03-25 00:08:46 -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 9b911202fc
Merge pull request #71 from davidmonterocrespo24/website
feat: initialize arduino-cli config and install missing cores; mark s…
2026-03-24 18:33:47 -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 5cac073757
Merge pull request #70 from davidmonterocrespo24/website
Website
2026-03-24 18:21:12 -03:00
David Montero Crespo 8f0c23c857 feat: optimize Dockerfile by deferring arduino-cli core installations to entrypoint.sh for a smaller image size 2026-03-24 18:20:38 -03:00
David Montero Crespo d12a2ad7e4 feat: enhance ExamplesPage to auto-install required libraries; update example projects with library dependencies 2026-03-24 18:19:43 -03:00
David Montero Crespo bf092acd34
Merge pull request #69 from davidmonterocrespo24/website
feat: update entrypoint.sh to install arduino-cli base cores; mark su…
2026-03-24 18:06:56 -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 01b792b02a
Merge pull request #68 from davidmonterocrespo24/website
feat: simplify Dockerfile by removing redundant cp command; mark subp…
2026-03-24 17:59:43 -03:00
David Montero Crespo f4e4f863a9 feat: simplify Dockerfile by removing redundant cp command; mark subproject commits as dirty 2026-03-24 17:59:04 -03:00
David Montero Crespo c1da5c8989
Merge pull request #67 from davidmonterocrespo24/website
feat: update docker-compose to include arduino-libs volume; mark subp…
2026-03-24 17:31:36 -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 894f385df4
Merge pull request #66 from davidmonterocrespo24/website
feat: add libfdt1 dependency in Dockerfile; mark subproject commits a…
2026-03-24 17:29:26 -03:00
David Montero Crespo 528287db95 feat: add libfdt1 dependency in Dockerfile; mark subproject commits as dirty 2026-03-24 17:28:56 -03:00