Skip to content

Add independent controllers, visual routing, USB handoff and ambient sensors - #59

Merged
mskutin merged 1 commit into
mainfrom
codex/controller-routing
Oct 19, 2026
Merged

mskutin merged 1 commit into
mainfrom
codex/controller-routing

Conversation

@mskutin

@mskutin mskutin commented Oct 19, 2026

Copy link
Copy Markdown
Owner

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.md documents 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

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-19T10:34:24.132520Z 200141d PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread src-tauri/src/engine.rs
Comment on lines +1503 to +1505
output_settings.minimum_glow = (u16::from(output_settings.minimum_glow)
* u16::from(self.state.group_brightness)
/ 100) as u8;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Comment thread src-tauri/src/ambient.rs
Comment on lines +412 to +413
if handle.request(crate::engine::Action::Snapshot).is_err() {
break;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

@mskutin
mskutin merged commit 3b12074 into main Oct 19, 2026
9 checks passed
@mskutin
mskutin deleted the codex/controller-routing branch October 19, 2026 10:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant