feat: add high-performance animation module#101
Merged
Djelibeybi merged 2 commits intomainfrom Jan 24, 2026
Merged
Conversation
343b2c7 to
11db1d0
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #101 +/- ##
==========================================
+ Coverage 91.66% 92.30% +0.63%
==========================================
Files 45 50 +5
Lines 5254 5637 +383
Branches 649 692 +43
==========================================
+ Hits 4816 5203 +387
+ Misses 280 278 -2
+ Partials 158 156 -2 ☔ View full report in Codecov by Sentry. |
11db1d0 to
d4a1317
Compare
Adds animation module optimized for real-time effects at 30+ FPS: Core features: - Direct UDP sending bypassing connection layer - Prebaked packet templates (zero allocation per frame) - Synchronous send_frame() for minimum overhead - Multi-tile canvas support for LIFX Tile devices - Automatic tile orientation remapping Architecture: - Animator: High-level class with for_matrix/for_multizone factories - FrameBuffer: Canvas mapping and tile region extraction - PacketGenerator: Device-specific packet generation (Matrix/MultiZone) - PacketTemplate: Prebaked packets with color slot updates Public API: - Exports Animator and AnimatorStats from main lifx package - Colors are provided as plain tuples: tuple[int, int, int, int] Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> Signed-off-by: Avi Miller <me@dje.li>
d4a1317 to
4e9ee47
Compare
When device.capabilities was None, FrameBuffer.for_matrix() and Animator.for_multizone() would skip capability checks instead of loading capabilities first. This caused multi-tile LIFX Tile devices to be treated as single-tile devices because has_chain was never checked. Now both methods call device._ensure_capabilities() when capabilities is None, matching the pattern used in multizone.py. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> Signed-off-by: Avi Miller <me@dje.li>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds animation module optimized for real-time effects at 30+ FPS:
Core features:
Architecture:
Public API: