MoonLight effect migration + buffer-persistence render model, driver-doc consolidation, module attribution#32
Merged
Merged
Conversation
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.
A full MoonLight-migration cycle (10 commits) plus the render-loop rework it drove. Originally opened as "Add HueDriver + WaveEffect"; the branch grew to cover the effect library, a buffer-persistence model change, driver-doc consolidation, and per-module attribution. Every commit was gated and carries a KPI line; CodeRabbit batches were processed along the way.
Effect / light domain
EffectBase+ shared primitives (not traced from source). 60 palettes, a demo-reel showcase, text/font draw primitives.draw::primitive library (line/glyph/fade/blur/blendPixel/addPixel).Render-loop model (the significant architecture change)
Layer::loop()no longer clears it (the FastLED/WLED/MoonLight convention). Effects own their background: full-grid overwrites, trail effects fade, sparse effects self-clear. This fixed ~13 effects whose fade/scroll/read-prior behaviour a per-frame clear had silently broken (FreqMatrix lit only one row,fadecontrols did nothing).Layer::fadeToBlackByMINs the requested amounts and applies one buffer pass per frame (MoonLight'sVirtualLayermodel), so N fading effects on a layer cost one pass, not N.Layer::extrudefans a D1/D2 effect across the unused axes.Core
AudioFrame(16 bands + raw/smoothed level + peak); asimulatecontrol (synth music/sweep) so audio effects run mic-less; two-micactive_re-election.sdkDatecontrol removed (build date already on the firmware card).Docs / drivers
.hand the.md.Tests / gates
unit_Layer_persistence(persistence + collected-fade MIN + reset),unit_PinwheelModifier(1D petal-axis), two-mic AudioModule re-election, plus updated extrude/zero-grid/render coverage.🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Bug Fixes
Documentation