Commit Graph

176 Commits (dbf6bd986f0a40e170d9b86cc55ecc4b0f5135f7)

Author SHA1 Message Date
David Montero Crespo 02774b383f feat: add Install Libraries modal for managing library installations 2026-03-09 12:53:24 -03:00
David Montero Crespo ccab31d301 feat: add Arduino Mega 2560 support with GPIO test sketch and emulator tests 2026-03-09 10:56:08 -03:00
David Montero Crespo 1018609ed4 feat: add Arduino Mega support to simulator
- Introduced ArduinoMega component for rendering in the simulator.
- Updated SimulatorCanvas to handle Arduino Mega board type.
- Enhanced AVRSimulator to support ATmega2560 architecture, including PWM pin mapping and port management.
- Modified PinManager to accommodate Mega's non-linear pin mapping.
- Updated boardPinMapping utility to include Mega analog pins.
- Adjusted Wokwi import/export functionality to recognize and handle Arduino Mega.
- Updated useSimulatorStore to initialize AVRSimulator with the correct board variant.
2026-03-09 10:08:14 -03:00
David Montero Crespo faa6f6b7b3 feat: add ILI9341 Cap Touch display and related components; implement home screen and example sketches 2026-03-09 02:31:04 -03:00
David Montero Crespo c22a8aff14 feat: add end-to-end test for pong emulation with AVRSimulator 2026-03-09 00:44:21 -03:00
David Montero Crespo 6a10675a5a feat: implement syncElement method for rendering GDDRAM to RGBA ImageData in VirtualSSD1306
test: add tests for SSD1306 rendering path and syncElement functionality
2026-03-08 23:20:33 -03:00
David Montero Crespo a07d219a7d fix: allow wires to render outside the SVG viewport for better visibility 2026-03-08 18:48:48 -03:00
David Montero Crespo e488bed0df fix: remove clamping on board and component position updates for smoother dragging 2026-03-08 16:35:37 -03:00
David Montero Crespo 7f27f239dc feat: add GitHub link with icon to AppHeader component 2026-03-08 16:31:53 -03:00
David Montero Crespo 1206a34e64 feat: implement auto-pan feature for board visibility after project load and normalize pin names for component connections 2026-03-08 16:30:49 -03:00
David Montero Crespo 66b4fa6030 feat: add new components and simulations for logic gates, protocols, and sensors
- Added LogicGateParts.ts for simulating various logic gates (AND, NAND, OR, NOR, XOR, NOT).
- Introduced ProtocolParts.ts for simulating I2C and SPI components including SSD1306 OLED, DS1307 RTC, MPU6050 IMU, DHT22 sensor, HX711 load cell, IR receiver, IR remote, and MicroSD card.
- Implemented BasicParts.ts with a membrane keypad and rotary dialer simulations.
- Enhanced SensorParts.ts with a single NeoPixel and PIR motion sensor.
- Updated index.ts to include new parts for logic gates and protocols.
- Modified vite-env.d.ts to declare new custom elements for the added components.
2026-03-08 16:14:03 -03:00
David Montero Crespo c0164b704b feat: format default values for consistency and remove unused sensor components 2026-03-08 02:21:54 -03:00
David Montero Crespo 2aa7607428 feat: add sensor parts and utilities for simulation
- Introduced new SensorParts.ts to handle various sensors including tilt switch, temperature sensor, gas sensor, flame sensor, heart beat sensor, and sound sensors.
- Implemented stepper motor simulation with full-step decoding.
- Added utility functions for ADC voltage injection in partUtils.ts, supporting both AVR and RP2040.
- Updated BasicParts.ts to avoid re-registering the 7-segment display.
- Enhanced ComplexParts.ts by removing unused ADC helper functions.
- Updated index.ts to include the new SensorParts module.
- Updated Vite environment definitions to include new custom elements for sensors and stepper motors.
2026-03-08 02:20:21 -03:00
David Montero Crespo 318305bac4 feat: Add 74HC595 Shift Register component and simulation logic 2026-03-07 23:24:23 -03:00
David Montero Crespo 41dfd20583 feat: Add Arduino Nano support to simulator and update related components 2026-03-07 23:14:33 -03:00
David Montero Crespo b72846c969 feat: Update .gitignore to include data directory and remove example sketch.ino 2026-03-07 19:31:16 -03:00
David Montero Crespo f2b275c03d feat: Enhance board positioning by integrating boardPosition state in export/import functions and updating component dragging logic 2026-03-07 19:29:23 -03:00
David Montero Crespo 5f2c176648 Merge branch 'master' of https://github.com/davidmonterocrespo24/wokwi_clon 2026-03-07 18:27:03 -03:00
David Montero Crespo eb3ba0c60b feat: Adjust component positioning by applying ARDUINO_POSITION offset during export and import of Wokwi zip files 2026-03-07 18:26:47 -03:00
davidmonterocrespo24 9da181a454 Merge branch 'master' of https://github.com/davidmonterocrespo24/velxio 2026-03-07 21:57:54 +01:00
David Montero Crespo 47e6d2b804 feat: Prevent body scroll on the editor page to enhance user experience 2026-03-07 17:54:51 -03:00
root 60e737c2d4 fix: add trailing slash to compile endpoint to avoid HTTP redirect 2026-03-07 18:18:19 +01:00
David Montero Crespo 5b59ebdc30 Merge branch 'master' of https://github.com/davidmonterocrespo24/wokwi_clon 2026-03-07 14:13:43 -03:00
David Montero Crespo 5f2abc8cd9 feat: Auto-generate control points for wires without them to ensure proper segment dragging 2026-03-07 14:13:35 -03:00
root 34daa301ed fix: use relative /api URL to prevent mixed content errors on HTTPS 2026-03-07 17:55:11 +01:00
David Montero Crespo fef33cc9be feat: Implement interactive wire rendering with segment-based dragging and selection using new `WireRenderer` component and `wireSegments` utilities. 2026-03-07 13:34:42 -03:00
David Montero Crespo 2277389ea5 feat: Implement interactive wire rendering with segment-based dragging and snapping capabilities. 2026-03-07 13:34:25 -03:00
David Montero Crespo 13d87a6961 fix: add overscroll-behavior to body for improved scrolling experience 2026-03-07 02:25:59 -03:00
David Montero Crespo 10a1547060 feat: set fixed dimensions for canvas world to enhance layout stability 2026-03-07 02:17:22 -03:00
David Montero Crespo e81235e086 refactor: remove redundant html and body height and overflow styles 2026-03-07 02:13:10 -03:00
David Montero Crespo 6316d14c55 feat: set html and body to full height and hide overflow; remove min size from simulator canvas 2026-03-07 02:09:14 -03:00
David Montero Crespo 2744b398e3 feat: add zoom and pan functionality with wheel listener in SimulatorCanvas 2026-03-07 02:08:20 -03:00
David Montero Crespo 3ace72d0f8 feat: implement pan and zoom functionality in simulator canvas 2026-03-07 02:00:56 -03:00
David Montero Crespo 88c5f3b19f feat: add Wokwi zip import/export functionality and update dependencies 2026-03-07 00:14:35 -03:00
David Montero Crespo 44293ba000 feat: enhance SEO by adding hidden fallback content for crawlers 2026-03-07 00:03:31 -03:00
David Montero Crespo 41d8e25843 feat: enhance admin setup with email validation and update workflows for fresh lib cloning 2026-03-07 00:00:22 -03:00
David Montero Crespo 290b149855 feat: add admin management features and user role handling
- Implemented `require_admin` dependency to enforce admin access control.
- Added `is_admin` column to the users table for role management.
- Created admin routes and schemas for user and project management.
- Developed AdminPage with user and project management tabs.
- Integrated user editing and deletion functionalities in the admin panel.
- Added setup screen for creating the first admin user.
- Updated frontend to include admin functionalities and user role display.
- Generated Open Graph image for better social media integration.
2026-03-06 23:46:36 -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 ea61bd5475 feat: user nav dropdown in landing page + redirect to editor after OAuth login
- Google OAuth callback now redirects to /editor instead of landing page
- Landing page nav shows avatar, username and dropdown when logged in
  (My Projects, Open Editor, Sign out)
- Skeleton placeholder during checkSession so login button never flickers

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 21:50:35 -03:00
David Montero Crespo 7260c8d092 feat: /project/:id URL, per-project file volumes, and public/private access control
Backend:
- project_files.py: read/write sketch files to /app/data/projects/{id}/
- GET /api/projects/{id}: load project by ID (public = anyone, private = owner only)
- create/update write files to disk volume; delete removes them
- ProjectResponse includes files[] list loaded from disk

Frontend:
- /project/:id canonical route -> ProjectByIdPage
- ProjectPage (legacy /:username/:slug) redirects to /project/:id after load
- SaveProjectModal sends files[] and navigates to /project/{id} after save
- DATA_DIR env var in both compose files

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 20:38:06 -03:00
David Montero Crespo 0c3cb21702 fix: replace Vite favicon with Velxio chip icon across all sizes
Redesign favicon.svg with solid filled shapes (visible at 16px tab size).
Regenerate all PNG/ICO sizes (16, 32, 48, 180, 192, 512) from new design.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 17:36:03 -03:00
David Montero Crespo c7409afa2d feat: update LandingPage component with enhanced visuals and improved content 2026-03-06 17:19:27 -03:00
David Montero Crespo 369735010b Add check_actions script and strategic plan for VELXIO; update submodule commits to dirty state 2026-03-06 17:18:33 -03:00
David Montero Crespo 3301c5967e feat: enhance SEO and public files for Velxio
- Added comprehensive SEO meta tags to `frontend/index.html` including Open Graph and Twitter Card data.
- Updated `frontend/public` with new favicon assets and a PWA manifest.
- Created a favicon generation script to automate favicon creation from SVG.
- Implemented `robots.txt` to allow all crawlers and point to the sitemap.
- Added `sitemap.xml` with public routes and priorities for better indexing.
2026-03-06 16:14:26 -03:00
David Montero Crespo aafb97b2ac home page 2026-03-06 15:32:24 -03:00
David Montero Crespo 26f9e96c37 fix: update build:docker script to remove TypeScript compilation step 2026-03-06 14:12:13 -03:00
David Montero Crespo 862d90c2b7 fix: streamline Docker build process and update build scripts 2026-03-06 13:17:14 -03:00
David Montero Crespo 0d5d440a56 fix: enhance Docker build process and improve file explorer resizing functionality 2026-03-06 11:20:47 -03:00
David Montero Crespo c1fc653de2 feat: update component styles and add serial monitor functionality 2026-03-06 10:24:03 -03: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
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 96131e7451 feat: add wrapper offset props to PinOverlay component for customizable positioning 2026-03-05 21:19:23 -03:00
David Montero Crespo 9b8747349f feat: enhance RP2040 and AVR simulators with serial baud rate handling; update editor toolbar and library manager modal for improved state management and UI 2026-03-05 21:07:10 -03:00
David Montero Crespo 4ba2ccb877 Refactor simulator store to unify serial data handling and add board pin mapping utility
- Simplified serial data handling in `useSimulatorStore` for both AVR and RP2040 simulators.
- Introduced `boardPinMapping.ts` to map wokwi-element pin names to simulator GPIO/pin numbers for Arduino Uno and Nano RP2040.
- Added `compilationLogger.ts` to parse compile results into structured log entries for better console output.
2026-03-05 21:07:03 -03:00
David Montero Crespo 5d175abdcf feat: add Serial Monitor component and integrate with AVR simulator
- Implemented SerialMonitor component to display serial output and allow user input.
- Enhanced AVRSimulator to handle USART communication and transmit serial data.
- Updated useSimulatorStore to manage serial output state and toggle visibility of the Serial Monitor.
- Added example Arduino sketches for serial communication, including Serial Echo and Serial LED Control.
- Introduced I2CBusManager to manage virtual I2C devices and integrated with AVRSimulator.
2026-03-05 06:56:14 -03:00
David Montero Crespo 13cf7be465 fix: update DynamicComponent to check if simulation is running before attaching events; enhance TFT display example with Adafruit libraries and improved UI elements 2026-03-05 02:09:30 -03:00
David Montero Crespo efd4c11e03 feat: add ILI9341 TFT display simulation and enhance component registry loading 2026-03-05 01:52:15 -03:00
David Montero Crespo da47f69cb2 feat: enhance LibraryManagerModal to fetch and display installed libraries dynamically 2026-03-05 01:23:59 -03:00
David Montero Crespo f9dfc2b012 fix: adjust z-index values for DynamicComponent and PinOverlay for improved layering 2026-03-04 23:40:17 -03:00
David Montero Crespo 426c7ab35f feat: establish initial simulator and editor environment with component rendering, wiring, library management, and backend services. 2026-03-04 22:05:23 -03:00
David Montero Crespo 0a8b4fb912 feat: enhance board selector styles for improved usability and appearance 2026-03-04 19:32:19 -03:00
David Montero Crespo 0d4f137a19 fix: update AVRSimulator type to AnySimulator for improved compatibility 2026-03-04 19:28:40 -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 d81aa76260 feat: complete project setup with Wokwi libraries integration and documentation
- Removed outdated WOKWI_LIBS.md and replaced with updated documentation.
- Added ARCHITECTURE.md to describe project structure and data flow.
- Created SETUP_COMPLETE.md for installation and configuration instructions.
- Implemented automatic update script for Wokwi libraries.
- Updated frontend components to utilize local Wokwi libraries.
- Enhanced AVRSimulator to manage peripherals more efficiently.
- Added example screenshot generation instructions for better documentation.
- Updated components metadata and ensured proper integration with Vite.
2026-03-04 18:39:02 -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 c2f07665b4 feat: add react-router-dom for routing and enhance wire rendering with automatic offsets 2026-03-04 18:03:54 -03:00
David Montero Crespo 1269550e8a feat: add logging for component logic and event attachment in DynamicComponent 2026-03-04 13:44:55 -03:00
David Montero Crespo ef7e86bc1e feat: Enhance simulator with new components and event handling
- Updated components-metadata.json with new generation timestamp.
- Added event handling for button presses and releases in DynamicComponent.
- Improved ExamplesGallery with new styles for placeholders and previews.
- Introduced LCD 20x4 display example with corresponding code and wiring.
- Enhanced SimulatorCanvas to subscribe components to pin changes.
- Implemented PartSimulationRegistry for managing component simulation logic.
- Added basic and complex parts simulation including pushbuttons, LEDs, and LCDs.
- Created utility functions for capturing canvas previews and generating SVG previews for example projects.
2026-03-04 13:36:33 -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 85cb535804 feat: enhance wire editing features with dynamic component system and improved rendering 2026-03-03 21:37:19 -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 217736c7cd feat: update architecture documentation and improve component property dialog 2026-03-03 20:42:17 -03:00
David Montero Crespo 8b1a402caf feat: add component metadata types and generator
- Created a new TypeScript file for component metadata types defining structure for dynamically loaded components.
- Implemented a metadata generator script that scans the wokwi-elements repository to extract component information, including properties and categories.
- Added package.json and package-lock.json for dependency management, including TypeScript and related tools.
- Introduced a new file to log ping statistics for testing purposes.
2026-03-03 19:30:25 -03:00
David Montero Crespo 46bccde953 Add backend and frontend test suites for Arduino compilation and simulation
- Implemented a comprehensive backend test suite in `test_compilation.py` to validate the Arduino CLI installation, AVR core presence, compilation service, and API endpoint functionality.
- Created a frontend test suite in `simulation.test.ts` to test the `PinManager` and `AVRSimulator` components, ensuring proper functionality and integration.
- Introduced new components for wire management in the simulator, including `PinOverlay`, `WireInProgressRenderer`, `WireLayer`, and `WireRenderer`, enhancing the visual wiring system.
- Developed utility functions for pin position calculations and wire color management, ensuring accurate connections and visual representation.
- Added types for wire management in `wire.ts`, defining structures for wire endpoints, control points, and signal types.
2026-03-03 16:44:07 -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