Not applied
No command was accepted. Keep the last confirmed state and report the failed control.
The tray sends user choices to a local service, which validates and applies supported hardware changes.
| Project | Responsibility | Trust boundary |
|---|---|---|
OpenBlade.Contracts | Defines versioned IPC messages for profiles, state, capabilities, and results. | Contains no platform or HID code. |
OpenBlade.Protocol | Validates reports, admits exact devices, stores sanitized fixtures, provides typed HID operations, and renders lighting. | Only typed operations allowed by the exact model and its validated or experimental authority reach HID. |
OpenBlade.Service | Owns the control handle, serializes operations, runs automation, confirms state, and handles drift and diagnostics. | Runs as the privileged LocalSystem IPC server. |
OpenBlade.Tray.Core | Stores presentation state, commands, profiles, telemetry choices, and service client behavior without depending on WinUI. | Runs in the unelevated user process. |
OpenBlade.Tray | Handles the WinUI 3 window, Mica styling, tray icon, startup preference, and user interaction. | Runs as the unelevated current-user UI. |
OpenBlade.Display | Finds displays and applies Windows refresh rate, HDR, and color profile settings. | Uses APIs from the current interactive session. |
OpenBlade.Platform | Reads Windows NVIDIA GPU activity counters, lists and closes the apps holding the GPU awake, and applies processor efficiency policy. | Contains no HID code. Acts only on the current user's own processes. |
OpenBlade.Deployment | Parses manifests and verifies signatures for enrolled local-development deployments. | Checks manifests and installer hashes against local deployment trust policy; installation is handled by the broker. |
OpenBlade.Session / SessionAgent | Handles current-user display, input, audio, and streamed-lighting work. Profile automation, configured keys, and interactive lighting continue when the tray exits. | Runs once per signed-in user. The service accepts hardware changes only from the active console session. |
OpenBlade.Capture | Provides typed capture, query, and reversible validation tools for developers. | The production installer does not ship this tool and rejects payloads containing it. |
OpenBlade.FirmwareSmoke | Runs reversible firmware checks against a connected Blade and restores the original state. | This developer tool does not ship in the production installer. |
OpenBlade.DeploymentBroker / DeploymentClient | Installs locally built OpenBlade payloads without repeated permission prompts, with first-install rollback. | For local development only, and only after an explicit, machine-authorized enrollment. Does not ship in the production installer. |
OpenBlade.Setup | Installs or removes the app, manages the service and session component, and preserves profiles. | Requests elevation only for machine changes. It refuses to replace a newer installed version. |
The service resolves settings in this order: manual override, temporary power-source override, active profile, then confirmed firmware state. It writes only values that changed.
Firmware behavior varies by model. RZ09-0581 reports one manual thermal state for Fixed, Manual curve, and Maximum. Its adapter remembers the selected mode while confirming the generic firmware state.
The five experimental profiles use a separate upstream-derived backend. Exact host identity, current state, power, and competing-controller checks still gate writes. These profiles do not inherit the validated lighting oracle, Driver-mode ownership, manual fan controls, or full-power adapter classification.
A possibly submitted, unconfirmed command pauses experimental writes. Resume drains the old session and performs fresh read-only admission and state checks. It never replays the uncertain command. Lighting remains held until a new effective lighting choice. Diagnostics retain a bounded local history.
No command was accepted. Keep the last confirmed state and report the failed control.
A write may have reached the laptop, but confirmation failed. Stop writing and reconcile the current state. Experimental controls require the explicit read-only Resume action before another request.
Report the change, then restore the confirmed setting or leave it in place, depending on your choice. Never replay a write whose outcome is unknown.
Show unavailable data as unavailable. If temperature data is lost while a manual fan curve is active, the curve requests the maximum supported fan speed; hardware writes still require the normal device and controller checks.