30 Commits

Author SHA1 Message Date
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