74b4b495f9
feat(patterns): add expanded animation pack with smoke tests
...
Add a broad set of new pattern modules and matching pattern smoke scripts so the new effects can be validated directly on-device.
2026-04-23 20:10:01 +12:00
4575ef16ad
test(led-driver): add espnow peer and ap pm0 scripts
...
Made-with: Cursor
2026-04-21 21:48:42 +12:00
a342187635
feat(patterns): add twinkle pattern defaults
...
Made-with: Cursor
2026-04-21 21:48:42 +12:00
428ed8b884
feat(led-driver): add preset clear command and runtime debug
2026-04-21 00:44:28 +12:00
a22702df4d
feat(patterns): add radiate animation
2026-04-20 23:37:43 +12:00
5a8866add7
feat(esp32): pattern upload route and ws controller ip
...
Made-with: Cursor
2026-04-19 23:27:33 +12:00
a2cd2f8dc2
test(led-driver): add pattern smoke harness
...
Made-with: Cursor
2026-04-19 23:27:29 +12:00
c47725e31a
feat(patterns): add colour cycle, flicker, and flame
...
Made-with: Cursor
2026-04-19 23:27:19 +12:00
22b1a8a6d6
fix(led-driver): phase-lock pattern timers
...
Made-with: Cursor
2026-04-19 21:41:18 +12:00
45a38c05b7
fix(led-driver): persist default preset updates
2026-04-15 00:03:21 +12:00
87bd0338bd
fix(led-driver): stop loading patterns main and sync tick call
2026-04-14 23:13:16 +12:00
0a33f399e1
refactor(led-driver): simplify websocket runtime and test layout
2026-04-14 22:12:31 +12:00
pi
ded6e3d360
docs: align readme and driver api with tcp/wifi
...
Made-with: Cursor
2026-04-12 00:13:49 +12:00
pi
a64457a0d5
chore(led-driver): add http_poll client and UDP/mDNS test helpers
...
Made-with: Cursor
2026-04-11 15:19:07 +12:00
pi
fea4e69140
feat(led-driver): wifi default transport, lazy espnow import, dynamic patterns
...
Made-with: Cursor
2026-04-11 15:10:12 +12:00
pi
aaaf660e9d
feat(driver): discover controller via udp and rediscover on reconnect
...
Made-with: Cursor
2026-04-06 21:28:00 +12:00
pi
cef9e00819
feat(tcp): include type in wifi hello line
...
Made-with: Cursor
2026-04-06 00:21:43 +12:00
pi
7e3aca491c
refactor(led-driver): transport layout, fixed tcp port, server_ip settings
...
Made-with: Cursor
2026-04-05 20:59:30 +12:00
pi
7bfdcd9bee
feat(led-driver): wifi tcp transport, hex mac in utf-8 hello
...
Made-with: Cursor
2026-04-05 20:20:47 +12:00
pi
dc19877132
fix(dev): run mpremote from PATH or python -m
...
Made-with: Cursor
2026-04-05 16:41:23 +12:00
fb53f900fb
refactor(driver): simplify and harden espnow message handlers
2026-03-22 02:53:23 +13:00
044dd815dc
refactor(driver): harden preset parsing and refresh tooling
2026-03-22 02:00:13 +13:00
f3bcc89320
test(driver): cover default targets and color alias handling
2026-03-22 01:52:15 +13:00
4b74f3ef02
fix(driver): gate targeted default and normalize preset colours
2026-03-22 01:47:14 +13:00
8403f36a1f
fix(presets): normalize loaded colours before pattern math
2026-03-22 00:36:53 +13:00
4c7646b2fe
Adjust defaults and preset handling
...
- Switch startup_preset to default key
- Add built-in on/off presets and tweak device defaults
Made-with: Cursor
2026-03-14 02:41:07 +13:00
1616471859
Change startup_preset to default
2026-03-10 22:48:19 +13:00
a06d526ad5
Update Pipfile.lock.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-08 19:39:32 +13:00
d82fd9e47c
Persist global brightness settings.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-08 19:39:29 +13:00
39390b2311
Add patterns package.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-08 19:08:18 +13:00
3080548f47
Add preset persistence and startup default.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-08 18:48:44 +13:00
7cc0a3b7d7
Remove unused preset parameter mapping.
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-08 17:18:48 +13:00
43957adb28
Rename patterns module to presets
...
Rename the driver module and update imports so tests and main entry use the new presets naming, while moving Preset to its own file.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-07 11:40:04 +13:00
f35d8f7084
Add global brightness support to driver
...
Handle per-device global brightness via ESPNow messages and apply it alongside per-preset brightness in all patterns.
2026-01-29 00:02:28 +13:00
337e8c9906
Use shortened preset fields in driver
...
Switch led-driver patterns and main loop to use compact preset keys (p, d, b, c, a, n1..n6) and remove unused settings defaults.
2026-01-28 23:28:54 +13:00
02db2b629c
Add frontend API documentation
...
- Document ESPNow message format
- Explain preset structure and parameters
- Document select format with list and step support
- Explain beat functionality and synchronization
- Include examples and best practices
2026-01-27 00:47:00 +13:00
bee2350129
Update README with latest changes
2026-01-27 00:42:35 +13:00
a75d71d9f4
Update pattern tests for new preset-based API
...
- Replace add() calls with edit() for preset creation
- Update tests to work with merged patterns.py
- Ensure all tests use new Preset object structure
2026-01-27 00:42:33 +13:00
a999b9054e
Add RGB channel order conversion method
...
- Add get_rgb_channel_order() to convert color order strings to channel indices
- Supports proper RGB tuple reordering for different LED strip types
- Used by color conversion utilities
2026-01-27 00:42:30 +13:00
482f287d5c
Remove patterns_base.py after merging into patterns.py
...
- Merge Patterns_Base and Patterns into single patterns.py file
- Consolidate pattern management logic
- Simplify codebase structure
2026-01-27 00:42:28 +13:00
4c36c7cd1c
Add color conversion utilities and message format example
...
- Add convert_and_reorder_colors() for hex to RGB conversion
- Add msg.json example with new list-based select format
- Support color order reordering based on device settings
2026-01-27 00:42:19 +13:00
1f4da28b7b
Add manual mode tests for chase pattern
...
- Test manual mode chase advancing one step per beat
- Verify step increments correctly
- Test with slower beat timing for observation
2026-01-27 00:42:18 +13:00
73f49e21d5
Add comprehensive ESPNow receive tests
...
- Test beat functionality with manual mode patterns
- Test step parameter for synchronization
- Test list-based select message format
- Test color conversion and reordering
- Test preset creation and updates
2026-01-27 00:42:15 +13:00
4ed1e17032
Update ESPNow message handling for list-based select format
...
- Change select format from string to list: ["preset_name"] or ["preset_name", step]
- Support step parameter in select messages
- Update message parsing to handle new format
2026-01-27 00:42:14 +13:00
12041352db
Add beat functionality and synchronization support
...
- Beat: calling select() again with same preset restarts pattern
- Synchronization: reset step when selecting 'off' or switching presets
- Manual mode chase: advance one step per beat, calculate position from step
2026-01-27 00:40:53 +13:00
b7d2f52fc3
Refactor patterns to use preset-based API and fix initialization order
...
- Fix initialization order: initialize self.presets before calling self.select()
- Separate add() and edit() methods: add() creates new presets, edit() updates existing ones
- Update all test files to use add() instead of edit() for creating presets
- Add comprehensive auto/manual mode test
- Remove tool.py (moved to led-tool project)
2026-01-25 23:23:14 +13:00
f4ef415b5a
Fix base pattern class name
2026-01-21 09:57:37 +13:00
eaa6acf100
Remove unused variables
2025-12-04 17:35:38 +13:00
45855cf453
Initial commit
2025-12-03 13:36:19 +13:00
59e42c35e1
Initial commit
2025-12-01 09:33:41 +00:00