5badf17719
refactor(ui): simplify modal interactions and refresh fixtures
2026-03-22 02:00:28 +13:00
4597573ac5
fix(ui): update preset send/default behavior in edit mode
2026-03-22 01:47:32 +13:00
1550122ced
fix(ui): populate preset patterns when definitions are empty
...
Made-with: Cursor
2026-03-22 00:08:12 +13:00
b7c45fd72c
docs(ui): switch user-facing spelling to colour
...
Made-with: Cursor
2026-03-22 00:00:12 +13:00
9479d0d292
chore(cursor): add commit and spelling rules
...
Made-with: Cursor
2026-03-21 23:54:33 +13:00
3698385af4
feat(ui): help sections, menu order, remove settings, send presets edit-only
...
Made-with: Cursor
2026-03-21 23:51:02 +13:00
ef968ebe39
docs: run/edit mode, profiles behavior, send presets
...
Made-with: Cursor
2026-03-21 23:51:00 +13:00
a5432db99a
feat(ui): gate profile create/clone/delete to edit mode
...
Made-with: Cursor
2026-03-21 23:50:59 +13:00
764d918d5b
data: update local db fixtures and browser test expectations
...
Made-with: Cursor
2026-03-21 23:15:55 +13:00
edadb40cb6
docs: rewrite API reference for current HTTP and driver flows
...
Made-with: Cursor
2026-03-21 23:15:44 +13:00
9323719a85
feat(ui): add run/edit workflow and improve preset color editing
...
Made-with: Cursor
2026-03-21 23:15:31 +13:00
91de705647
feat(profiles): seed new profiles and refresh tabs on apply
...
Made-with: Cursor
2026-03-21 23:15:19 +13:00
3ee7b74152
fix(api): stabilize palette and preset endpoints
...
Made-with: Cursor
2026-03-21 23:15:08 +13:00
98bbdcbb3d
chore: add dev watch command to Pipfile scripts
...
Made-with: Cursor
2026-03-21 23:15:00 +13:00
a2abd3e833
data: refresh db JSON fixtures
...
Made-with: Cursor
2026-03-21 20:17:33 +13:00
550217c443
ui: data-bwignore on AP password fields for password managers
...
Made-with: Cursor
2026-03-21 20:17:33 +13:00
2d2032e8b9
esp32: log startup and UART receive for debugging
...
Made-with: Cursor
2026-03-21 20:17:33 +13:00
81bf4dded5
docs: update msg.json example payload
...
Made-with: Cursor
2026-03-21 20:17:33 +13:00
a75e27e3d2
feat: device model, API, static UI, and endpoint tests
...
Made-with: Cursor
2026-03-21 20:17:33 +13:00
13538c39a6
tests: skip browser tests when no driver; try Firefox after Chrome
...
Made-with: Cursor
2026-03-21 20:17:33 +13:00
7b724e9ce1
tests: point model tests at db/ and align palette assertions
...
Made-with: Cursor
2026-03-21 20:17:33 +13:00
aaca5435e9
chore: gitignore local settings.json (session secret)
...
Made-with: Cursor
2026-03-21 20:17:33 +13:00
b64dacc1c3
Stop ignoring esp32; drop esp32 rules from .gitignore
...
Made-with: Cursor
2026-03-21 20:08:24 +13:00
8689bdb6ef
Restore esp32 MicroPython sources (main, benchmark_peers)
...
Adjust .gitignore to ignore esp32/* except *.py so firmware .bin stays untracked.
Made-with: Cursor
2026-03-21 19:59:52 +13:00
c178e87966
Ignore esp32 folder
2026-03-21 19:53:19 +13:00
dfe7ae50d2
Add led-tool and led-driver submodules
2026-03-21 19:52:59 +13:00
8e87559af6
Add led-tool and led-driver as submodules
2026-03-21 19:52:14 +13:00
aa3546e9ac
Remove obsolete scripts and root config files
...
Drop clear-debug-log, install, run_web, send_empty_json, esp32 helpers,
and root msg.json/settings.json in favor of current layout.
Made-with: Cursor
2026-03-21 19:47:29 +13:00
b56af23cbf
Add scripts: start, copy ESP32 main, install boot service
...
Made-with: Cursor
2026-03-15 23:43:27 +13:00
ac9fca8d4b
Pi port: serial transport, addressed ESP-NOW bridge, port 80
...
- Run app on Raspberry Pi: serial to ESP32 bridge at 912000 baud, /dev/ttyS0
- Remove ESP-NOW/MicroPython-only code from src (espnow, p2p, wifi, machine/Pin)
- Transport: always send 6-byte MAC + payload; optional to/destination_mac in API and WebSocket
- Settings and model DB use project paths (no root); fix sys.print_exception for CPython
- Preset/settings controllers use get_current_sender(); template paths for cwd=src
- Pipfile: run from src, PORT from env; scripts for port 80 (setcap) and test
- ESP32 bridge: receive 6-byte addr + payload, LRU peer management (20 max), handle ESP_ERR_ESPNOW_EXIST
- Add esp32/main.py, esp32/benchmark_peers.py, scripts/setup-port80.sh, scripts/test-port80.sh
Made-with: Cursor
2026-03-15 17:16:07 +13:00
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
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
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
0e96223bf6
Send tab defaults with presets.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-08 19:40:22 +13:00
d8b33923d5
Fix heartbeat LED pin.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-08 19:40:14 +13:00
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
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
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
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
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
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
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
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
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
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
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
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
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
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
3ed435824c
Add Selenium dependency for browser tests
2026-01-27 13:05:04 +13:00