jimmy and Cursor
c1b0c41ef2
fix(transport): disable UART ESP-NOW bridge by default
...
Require serial_enabled true in settings to open serial_port; default false in
set_defaults for Wi-Fi-only and dev machines.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-03 15:07:16 +12:00
jimmy and Cursor
3bb75d49de
feat(util): add binary envelope packing and message helpers
...
Includes tests for v1/v2 envelope round-trips.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-03 14:56:37 +12:00
jimmy and Cursor
3d77cb448a
chore: add vertical stand OpenSCAD model
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-03 14:56:35 +12:00
jimmy and Cursor
49383c0003
feat(espnow): add espnow-sender utility
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-03 14:56:35 +12:00
jimmy and Cursor
7d821b9c1c
chore(db): add local preset fixtures
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-03 14:56:35 +12:00
jimmy and Cursor
9b7e387ea6
chore(scripts): add dev-run helper
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-03 14:56:34 +12:00
jimmy and Cursor
b4f0d1891e
chore(submodule): bump led-driver and led-tool; register led-simulator
...
led-simulator was already a gitlink; add the missing .gitmodules entry.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-03 14:56:30 +12:00
jimmy
0da30b6d6b
fix(submodule): update led-tool pointer to existing commit
2026-04-30 23:28:39 +12:00
jimmy
6cbb728d9a
feat(patterns): add new pattern suite and improve mobile controls
...
Add a broad set of LED patterns with metadata/tests and update zone/profile preset seeding, while refining mobile/desktop UI behavior for scrolling, brightness controls, and bulk pattern sending.
2026-04-23 20:07:55 +12:00
jimmy
ff92451a76
feat(profiles): seed twinkle preset defaults
...
Made-with: Cursor
2026-04-21 20:43:25 +12:00
jimmy
60485bc06a
feat(ui): add clear device presets action
...
Made-with: Cursor
2026-04-21 00:44:38 +12:00
jimmy
f6f299c3e5
feat(presets): add radiate pattern defaults
...
Made-with: Cursor
2026-04-20 23:38:02 +12:00
jimmy
66485f5c59
chore(led-driver): bump submodule for patterns and tests
...
Made-with: Cursor
2026-04-19 23:28:22 +12:00
jimmy
5f9ff9bcc9
style(ui): presets patterns and layout tweaks
...
Made-with: Cursor
2026-04-19 23:28:08 +12:00
jimmy
35730b36f0
feat(api): improve pattern deploy and device tcp handling
...
Made-with: Cursor
2026-04-19 23:28:01 +12:00
jimmy
d516833cc3
feat(profiles): seed colour cycle flicker and flame presets
...
Made-with: Cursor
2026-04-19 23:27:57 +12:00
jimmy
220be64dec
feat(db): add flicker flame presets and pattern metadata
...
Made-with: Cursor
2026-04-19 23:27:49 +12:00
jimmy
b433477c64
chore(db): trim device registry
...
Made-with: Cursor
2026-04-19 23:27:37 +12:00
jimmy
43b7047c57
chore(submodule): bump led-tool for cli upload flags
...
Made-with: Cursor
2026-04-15 00:46:40 +12:00
jimmy
167417d1ec
feat(ui): add web led-tool usb controls
...
Made-with: Cursor
2026-04-15 00:46:31 +12:00
jimmy
fb8141b320
fix(server): close http listener cleanly on shutdown
2026-04-15 00:00:23 +12:00
jimmy
96712dda88
feat(controller): migrate wifi drivers from tcp to websocket clients
2026-04-14 23:13:26 +12:00
jimmy
f5a7b42e7c
fix(rules): revert unintended submodule changes
2026-04-14 21:54:02 +12:00
jimmy
1b1e9d727e
chore(rules): enforce strict user-scoped changes
2026-04-14 21:50:55 +12:00
jimmy
668d29b786
chore(test): move pytest defaults to pyproject.toml
...
Made-with: Cursor
2026-04-12 02:39:39 +12:00
jimmy
e5f42e099e
chore: remove esp32 firmware tree and dev mpremote helper
...
Made-with: Cursor
2026-04-12 02:39:37 +12:00
jimmy
a9edda38ef
test(browser): fixture, env host and pacing, safer colour inputs
...
Made-with: Cursor
2026-04-12 02:34:46 +12:00
jimmy
edec5ff460
chore(git): ignore pytest cache and ropeproject
...
Made-with: Cursor
2026-04-12 02:34:44 +12:00
jimmy
0fdc11c0b0
ESP-NOW: STA interface, notify browser on send failure
...
- Activate STA interface before ESP-NOW to fix ESP_ERR_ESPNOW_IF
- Notify browser on send failure: WebSocket sends error JSON; preset API returns 503
- Use exceptions for failure (not return value) to avoid false errors when send succeeds
- presets.js: handle server error messages in WebSocket onmessage
Made-with: Cursor
2026-03-08 23:47:55 +13:00
jimmy and Cursor
91bd78ab31
Add favicon route and minor cleanup
...
- Add /favicon.ico route (204) to avoid browser 404
- CSS formatting tweaks
- Pipfile trailing newline
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-20 11:49:11 +13:00
jimmy and Cursor
2be0640622
Remove WiFi station (client) support
...
- Drop station connect/status/credentials from wifi util and settings API
- Remove station activation from main
- Remove station UI and JS from index, settings template, and help.js
- Device settings now only configure WiFi Access Point
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-20 11:49:04 +13:00
jimmy and Cursor
0e96223bf6
Send tab defaults with presets.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-08 19:40:22 +13:00
jimmy and Cursor
d8b33923d5
Fix heartbeat LED pin.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-08 19:40:14 +13:00
jimmy and Cursor
4ce515be1c
Update Python dependencies for device tooling.
...
This adds ampy support and refreshes lockfile versions.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-08 13:51:28 +13:00
jimmy and Cursor
f88bf03939
Update browser tests for mobile preset layout.
...
This keeps UI checks aligned with the new tab/preset flows.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-08 13:51:21 +13:00
jimmy and Cursor
7cd4a91350
Add favicon handler and heartbeat LED blink.
...
This keeps the UI console clean and makes device status visible.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-08 13:51:15 +13:00
jimmy and Cursor
d907ca37ad
Refresh tabs/presets UI and add a mobile menu.
...
This improves navigation and profile workflows on smaller screens.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-08 13:51:09 +13:00
jimmy and Cursor
6c6ed22dbe
Scope presets to active profiles and support cloning.
...
This keeps data isolated per profile while letting users duplicate setups quickly.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-08 13:51:02 +13:00
jimmy
00514f0525
Add in-app settings menu and fix settings API
...
Move WiFi and device name configuration into a modal menu, reuse existing settings endpoints, and harden settings serialization and startup for MicroPython.
2026-01-29 00:54:20 +13:00
jimmy
cf1d831b5a
Align controller backend and data with new presets
...
Update palettes, profiles, tabs, preset sending, and ESPNow message format to match the new preset defaults and driver short-field schema.
2026-01-29 00:04:23 +13:00
jimmy
fd37183400
Update frontend for presets, tabs, and help
...
Align frontend with new preset ID usage and shortened driver fields, improve tab/preset interactions, and refine help and editor UI.
2026-01-28 23:27:50 +13:00
jimmy
5fdeb57b74
Extend endpoint and browser tests for ESPNow and UI
...
Add coverage for /presets/send and updated tab/preset UI workflows in HTTP and Selenium tests.
2026-01-28 04:44:41 +13:00
jimmy
1576383d09
Update tab UI, presets interactions, and help
...
Refine tab presets selection and editing, add per-tab removal, improve layout, and provide an in-app help modal.
2026-01-28 04:44:30 +13:00
jimmy
8503315bef
Add ESPNow preset send backend support
...
Implement ESPNow helper model, WebSocket forwarding, and /presets/send endpoint that chunks and broadcasts presets to devices.
2026-01-28 04:43:45 +13:00
jimmy
928263fbd8
Remove Python cache files from version control
...
- Remove __pycache__ directories that should not be tracked
- These are now ignored via .gitignore
2026-01-27 13:05:22 +13:00
jimmy
7e33f7db6a
Add additional configuration and utility files
...
- Add install script and message configuration
- Add settings controller and templates
- Add ESP-NOW message utility
- Update API documentation
2026-01-27 13:05:09 +13:00
jimmy
e74ef6d64f
Update main application and dependencies
...
- Update main.py and run_web.py for local development
- Update microdot session handling
- Update wifi utility
2026-01-27 13:05:07 +13:00
jimmy
3ed435824c
Add Selenium dependency for browser tests
2026-01-27 13:05:04 +13:00
jimmy
d7fabf58a4
Fix MicroPython compatibility issues in Model class
...
- Fix JSONDecodeError handling (use ValueError for MicroPython)
- Fix sys.print_exception argument issues
- Improve error handling in load() method
- Add proper file persistence with flush() and os.sync()
2026-01-27 13:05:02 +13:00
jimmy
a7e921805a
Update controllers to return JSON and fix parameter handling
...
- Fix decorator parameter order issues with @with_session
- Return JSON responses instead of HTML fragments
- Add proper error handling with JSON error responses
- Fix route parameter conflicts in delete and update endpoints
2026-01-27 13:05:01 +13:00
jimmy
c56739c5fa
Refactor UI to use JavaScript instead of HTMX
...
- Replace HTMX with plain JavaScript for tab management
- Consolidate tab UI into single button like profiles
- Add cookie-based current tab storage (client-side)
- Update profiles.js to work with new JSON response format
2026-01-27 13:05:00 +13:00
jimmy
fd52e40d17
Add endpoint tests and consolidate test directory
...
- Add HTTP endpoint tests to mimic browser interactions
- Move old test files from test/ to tests/ directory
- Add comprehensive endpoint tests for tabs, profiles, presets, patterns
- Add README documenting test structure and how to run tests
2026-01-27 13:04:56 +13:00
jimmy
f48c8789c7
Add browser automation tests for UI workflows
...
- Add Selenium-based browser tests for tabs, profiles, presets, and color palette
- Test drag and drop functionality for presets in tabs
- Include cleanup functionality to remove test data after tests
- Tests run against device at 192.168.4.1
2026-01-27 13:04:54 +13:00
jimmy
80ff216e54
Update preset format with n7/n8 parameters
...
- Add n7 and n8 fields to preset definitions
- Update preset data format
2026-01-17 21:40:38 +13:00
jimmy
1fb3dee942
Update tab storage to 2D grid format
...
- Change presets from flat array to 2D grid layout
- Add presets_flat array for backward compatibility
- Support 3-column grid layout for preset positioning
2026-01-17 21:40:37 +13:00
jimmy
a4502055fb
Add test utilities and scripts
...
- Add test directory with main.py, p2p.py, ws.py
- Add send_empty_json.py WebSocket test script
2026-01-17 21:40:11 +13:00
jimmy
6e61ec8de6
Add P2P communication module
...
- Implement ESP-NOW async communication
- Support sending string, dict, or bytes data
- Use asend for async broadcast messaging
2026-01-17 21:40:10 +13:00
jimmy
48d02f0e70
Update watch script path in Pipfile
...
- Fix watch script to use relative paths
2026-01-17 21:40:08 +13:00
jimmy
cacaa3505e
Add pattern definitions endpoint
...
- Add /definitions endpoint to pattern controller
- Load pattern.json with fallback paths for local dev and MicroPython
2026-01-17 21:40:07 +13:00
jimmy
97ffc69b12
Add drag-and-drop for presets and colors, max_colors validation, and 2D grid layout
...
- Add drag-and-drop to reorder presets in tabs (2D grid layout)
- Add drag-and-drop to reorder colors within presets
- Add max_colors field to pattern definitions
- Hide color section when max_colors is 0
- Validate color count against pattern max_colors limit
- Store presets in 2D grid format (3 columns)
- Remove left panel from tab content, show only presets
- Update color palette to show swatches instead of hex codes
- Improve preset editor UI with visual color swatches
2026-01-17 00:58:50 +13:00
jimmy
d00d21e2b6
Split up main.js
2025-07-08 18:24:54 +12:00
jimmy
deca1b6c37
Add basic draggable item that saves to the server
2025-07-08 17:39:09 +12:00
jimmy
5c35e68ab2
Rename to styles.css
2025-07-07 18:20:11 +12:00
jimmy
8b6bbdeb56
Update wifi.py
2025-05-18 21:31:03 +12:00
jimmy
09bc09cca3
Update web.py
2025-05-18 21:31:00 +12:00
jimmy
e57feda131
Delete index_html.py
2025-05-18 21:30:57 +12:00
jimmy
3242aa464b
Update index.html
2025-05-18 21:30:50 +12:00
jimmy
72b7ba39ef
Update main.js
2025-05-18 21:30:47 +12:00
jimmy
c2a0cfaef4
Update main.css
2025-05-18 21:30:44 +12:00
jimmy
4c3337a232
Update settings.py
2025-05-18 21:30:40 +12:00
jimmy
825ae1f637
Update main.py
2025-05-18 21:30:37 +12:00
jimmy
14a70cb024
Update boot.py
2025-05-18 21:30:34 +12:00
jimmy
425511d41f
Create Pipfile.lock
2025-05-18 21:30:30 +12:00
jimmy
3e5239f3c6
Create patterns.py
2025-05-18 21:30:24 +12:00
jimmy
2fa02086c9
Add src
2025-05-05 22:19:34 +12:00
jimmy
28fa71b8ad
Add dev script and dependencies
2025-05-05 22:18:24 +12:00
jimmy
dc691b522b
Add libraries
2025-05-05 22:17:47 +12:00
jimmy
29d7a5bcfc
Inital slider
2025-05-04 18:06:21 +12:00