Repository navigation
Add game telemetry and declarative effect plugins - #60
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: 3b28c8d7e0
ℹ️ 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".
| if let Some(effect) = &self.extension { | ||
| effect.render( | ||
| &mut colors, | ||
| self.state.settings.speed, | ||
| self.state.settings.effect_reverse, | ||
| ); |
There was a problem hiding this comment.
Route extension overlays through the per-LED writer
When the controller is running the default solid scene without Studio zones, this renders spatial plugin effects and telemetry zones into colors, but the unchanged output predicate at lines 1610–1614 remains false and the hardware path sends controller.solid(colors.first(), ...). Consequently the bundled Ocean Wave becomes one uniform color, and a telemetry zone that excludes the first LED is invisible on the strip even though the preview looks correct. Treat a live extension or external cue as frame-active when selecting the controller writer.
Useful? React with 👍 / 👎.
| let overlay = Overlay::cue(rule, cue_guard.clone())? | ||
| .with_guard(guard) | ||
| .with_guard(active.clone()); | ||
| let _ = target.request(Action::Automation { |
There was a problem hiding this comment.
Revoke telemetry when its target controller is removed
When telemetry targets a removable secondary controller and that controller is subsequently deleted, Fleet::remove shuts down its worker but this listener retains the cloned handle. Every later cue request therefore fails here and is discarded, while valid posts continue updating seen, so the UI reports connected telemetry that can no longer produce output until the user manually reconfigures it. Revalidate or revoke the session when the target worker closes.
Useful? React with 👍 / 👎.
Counter-Strike 2 can now send authenticated, opt-in Game State Integration events to a chosen strip. Selected events apply temporary bounded zones, respect quiet hours/comfort/off state, and restore the ordinary scene on expiry, disconnect or revocation.
Adds a versioned declarative plugin API with separate effect compositions and game-event integrations, explicit capability consent, preview/install/enable/disable/remove controls and samples. No executable plugin code or filesystem/network/capture/renderer privileges. Includes 0.15.0 release manifests and usage/API documentation.
Validation: 93 native tests passed (one unrelated interactive capture test skipped), strict Clippy and formatting, browser game/plugin lifecycle controls, 14 release tests, and isolated native Windows install/disable/remove/off-state and unauthorized-telemetry smoke. No physical USB or live game validation claimed; hardware and accessibility trackers remain open.
Closes #24
Closes #27