301e1c64bf
test: cover audio, sequences, pattern direction, and settings
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-17 18:32:12 +12:00
c286e504eb
feat(ui): numpad, audio readout, and sequence beat controls
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-17 18:32:12 +12:00
964cfc6d91
feat(audio-sequences): beat phase sync and aligned playback
...
Add bar-phase tracking, audio reset/anchor APIs, BPM holdover, beat-phase
sequence switching, sync-phase endpoint, and sample sequence data.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-17 18:32:10 +12:00
7ecb5c3b3e
chore(submodules): bump led-driver for pattern reverse
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-17 18:32:07 +12:00
879db2a7df
chore(submodules): bump led-driver and led-tool
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-16 21:14:57 +12:00
96d1e1b5fd
feat(ui): pattern modes, bundles, and zone content kind
...
Add profile/preset/sequence JSON import and export; map preset mode to
wire n6 with a mode dropdown for multi-mode patterns; zone edit shows
presets or sequences only with content_kind on save; update catalogue
and tests for merged pattern names.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-16 21:12:42 +12:00
6286297646
feat(patterns): register northern wave, candle glow, starfall, ice sparkle
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-16 15:11:33 +12:00
ca3fef3f8a
feat(patterns): winter icicles blizzard rime in controller catalogue
...
Register pattern metadata and test presets for new led-driver effects; bump led-driver submodule.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-16 15:10:02 +12:00
6c9e06f33b
feat(zones): profile-scoped groups, zone modes, sequence brightness
...
- Optional profile_id on groups; UI and API for shared vs profile-only groups\n- Zone content_kind (presets vs sequences); edit modal shows matching sections; devices via groups only\n- Server sequence playback folds zone brightness into preset wire b (per MAC where needed)\n- Related preset/sequence/audio/beat-route and client updates
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-13 01:58:00 +12:00
c1c3e5d71b
feat(ui): edit tab zones, audio readout, live reload
...
- Zones/presets/sequence strip and Pipfile dev command fix
- Optional live reload and beat test audio asset + generator
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-13 00:44:20 +12:00
c64dd736f2
feat(api): parallel group sends and batch identify
...
- asyncio.gather for group brightness and driver-config Wi-Fi pushes
- Batch identify envelope for group members
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-13 00:44:13 +12:00
cad0aa7e59
feat(sequences): multi-lane playback and per-lane manual beats
...
- Add sequence_playback with beat and time advance, zone targeting fixes
- Per-lane manual beat routing in beat_driver_route (parallel lanes)
- Sequence API, editor JS, fix sequence model filename, tests
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-13 00:44:08 +12:00
0ae39ab94b
chore(release): beta-1.03
...
Co-authored-by: Cursor <cursoragent@cursor.com >
beta-1.03
2026-05-10 16:55:07 +12:00
822d9d8e01
feat(audio): move beat routing server-side and extend presets
...
Route beat-triggered manual selects from the controller server, add preset background and beat-counter UI support, and bump led-driver to include the matching pattern/runtime fixes.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-09 20:08:05 +12:00
1db905eaae
feat(patterns): add supports_manual metadata in db/pattern.json
...
Allow staging db/pattern.json by replacing blanket db/ ignore with a whitelist for tracked db files.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-09 17:06:56 +12:00
3d6ef5c7b4
chore(git): stop tracking runtime db state files
...
Co-authored-by: Cursor <cursoragent@cursor.com >
beta-1.01
2026-05-06 20:35:50 +12:00
78a4ce009c
feat(ui): refresh preset data flow and bump driver pointer
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-06 20:28:56 +12:00
7ccab6fbc4
feat(zones): persist per-zone brightness and update submodules
...
Store zone brightness in model/data flow, apply it in the zones UI, and record updated led-driver, led-simulator, and led-tool submodule pointers.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-04 22:49:06 +12:00
pi
827eb97203
feat(settings): server global brightness and Wi-Fi driver resync
...
- Serve GET /settings as JSON by removing duplicate HTML route (use /settings/page for the standalone UI).
- Save global_brightness via PUT; broadcast to connected drivers; push saved level when outbound WS connects.
- Zones UI loads brightness from GET /settings only (no localStorage).
- Bump led-driver submodule for settings.save on brightness with save flag.
- Extend API doc and endpoint tests for global_brightness.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-03 22:15:30 +12:00
pi
3cca0cffc5
chore: bump led-tool and led-driver submodules
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-03 21:27:32 +12:00
pi
d36828bde2
feat(ui): persist header brightness slider in localStorage
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-03 21:27:31 +12:00
pi
ed0048c795
chore(service): avoid network-online stall and speed pipenv boot
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-03 21:27:31 +12:00
pi
b316edbaf9
fix(wifi): stagger driver ws dials and extend initial retry window
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-03 21:27:31 +12:00
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
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
3d77cb448a
chore: add vertical stand OpenSCAD model
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-03 14:56:35 +12:00
49383c0003
feat(espnow): add espnow-sender utility
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-03 14:56:35 +12:00
7d821b9c1c
chore(db): add local preset fixtures
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-03 14:56:35 +12:00
9b7e387ea6
chore(scripts): add dev-run helper
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-03 14:56:34 +12:00
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
0da30b6d6b
fix(submodule): update led-tool pointer to existing commit
2026-04-30 23:28:39 +12:00
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
ff92451a76
feat(profiles): seed twinkle preset defaults
...
Made-with: Cursor
2026-04-21 20:43:25 +12:00
60485bc06a
feat(ui): add clear device presets action
...
Made-with: Cursor
2026-04-21 00:44:38 +12:00
f6f299c3e5
feat(presets): add radiate pattern defaults
...
Made-with: Cursor
2026-04-20 23:38:02 +12:00
66485f5c59
chore(led-driver): bump submodule for patterns and tests
...
Made-with: Cursor
2026-04-19 23:28:22 +12:00
5f9ff9bcc9
style(ui): presets patterns and layout tweaks
...
Made-with: Cursor
2026-04-19 23:28:08 +12:00
35730b36f0
feat(api): improve pattern deploy and device tcp handling
...
Made-with: Cursor
2026-04-19 23:28:01 +12:00
d516833cc3
feat(profiles): seed colour cycle flicker and flame presets
...
Made-with: Cursor
2026-04-19 23:27:57 +12:00
220be64dec
feat(db): add flicker flame presets and pattern metadata
...
Made-with: Cursor
2026-04-19 23:27:49 +12:00
b433477c64
chore(db): trim device registry
...
Made-with: Cursor
2026-04-19 23:27:37 +12:00
43b7047c57
chore(submodule): bump led-tool for cli upload flags
...
Made-with: Cursor
2026-04-15 00:46:40 +12:00
167417d1ec
feat(ui): add web led-tool usb controls
...
Made-with: Cursor
2026-04-15 00:46:31 +12:00
fb8141b320
fix(server): close http listener cleanly on shutdown
2026-04-15 00:00:23 +12:00
96712dda88
feat(controller): migrate wifi drivers from tcp to websocket clients
2026-04-14 23:13:26 +12:00
f5a7b42e7c
fix(rules): revert unintended submodule changes
2026-04-14 21:54:02 +12:00
1b1e9d727e
chore(rules): enforce strict user-scoped changes
2026-04-14 21:50:55 +12:00
668d29b786
chore(test): move pytest defaults to pyproject.toml
...
Made-with: Cursor
2026-04-12 02:39:39 +12:00
e5f42e099e
chore: remove esp32 firmware tree and dev mpremote helper
...
Made-with: Cursor
2026-04-12 02:39:37 +12:00
a9edda38ef
test(browser): fixture, env host and pacing, safer colour inputs
...
Made-with: Cursor
2026-04-12 02:34:46 +12:00