Repository navigation
Add independent controllers, visual routing, USB handoff and ambient sensors - #59
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 200141dde4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| output_settings.minimum_glow = (u16::from(output_settings.minimum_glow) | ||
| * u16::from(self.state.group_brightness) | ||
| / 100) as u8; |
There was a problem hiding this comment.
Apply group scaling only once to minimum-glow output
When minimumGlow exceeds a channel's source value and the group scale is below 100%, scaling both brightness and minimum_glow applies the group factor twice: lighting::transform first floors the channel to minimum_glow and then multiplies it by brightness. For example, a 20% minimum glow with a 50% group scale produces 5% rather than 10%, distorting low-level colors instead of uniformly scaling each strip's output.
Useful? React with 👍 / 👎.
| if handle.request(crate::engine::Action::Snapshot).is_err() { | ||
| break; |
There was a problem hiding this comment.
Keep polling after transient snapshot failures
When the selected lighting worker's bounded command queue is temporarily full, Handle::request returns a busy error, but this branch treats that transient condition like permanent shutdown and exits the ambient-sensor thread. After a burst of UI or automation requests fills the queue, all configured sensors therefore remain on fallback until the application is restarted; only a confirmed closed worker should terminate the loop.
Useful? React with 👍 / 👎.
Adds up to eight independent controller workers with explicit supported-interface bindings, persistent local settings/capture/routines, a duplicate-owner guard, and grouped power/brightness that preserves individual levels. Device setup now includes a draft monitor/LED-route canvas with drag, keyboard and form controls.
Adds persistent USB release and portable scene/calibration handoff preview/import, plus opt-in Windows LightSensor, Linux IIO and external JSON ambient inputs with smoothing, fixed fallback and manual override. Handoff requires a physical USB switch; macOS sensor input uses the external provider.
docs/controller-routing.mddocuments supported scope and recovery. Also fixes empty renderer saves incorrectly canceling app-rule restoration.Bumps desktop/CLI to 0.14.0 for automatic release. Local validation: 88 native unit tests pass (one unrelated interactive capture test is excluded from ordinary runs), strict Clippy, 14 release tests, browser routing/sensor controls and an isolated Windows native fleet/group/sensor-override/handoff-import smoke. No physical USB or capture was started by these smoke checks. Real multi-strip, USB-switch, OS sensor and assistive validation remain in #37, #38 and #45.
Closes #8
Closes #34
Closes #26
Closes #23