How it works

Architecture

The tray app handles user input. The service checks and applies hardware changes for each supported model.

Control path

ProjectResponsibilityTrust boundary
OpenBlade.ContractsVersioned profiles, device state, capabilities, results, and IPC messages.No platform or raw-HID implementation.
OpenBlade.ProtocolReport envelope, reply validation, exact-device admission, sanitized fixture catalog, typed HID operations, lighting renderers.Only admitted typed operations reach HID.
OpenBlade.ServiceLocalSystem worker, sole control handle, operation queue, automation, state confirmation, drift handling, diagnostics.Privileged machine process and IPC server.
OpenBlade.Tray.CorePresentation state, commands, profiles, telemetry choices, and service client behavior without WinUI dependencies.Unelevated user process.
OpenBlade.TrayWinUI 3 window, Mica styling, tray icon, startup preference, user interaction.Unelevated current-user UI.
OpenBlade.DisplayEnumeration and application of Windows refresh-rate, HDR, and color-profile settings.Current interactive session APIs.
OpenBlade.Session / SessionAgentPer-user display profile automation following confirmed power-source transitions.Current-user session, separate from LocalSystem.
OpenBlade.CaptureDeveloper-only typed capture, query, and reversible validation workflows.Never shipped in the production installer.
OpenBlade.SetupSelf-contained installation, service registration, session startup, uninstall, and profile preservation.Elevation only for machine changes.

State and precedence

The service checks settings in this order: manual override, temporary power-source override, active profile, then confirmed firmware state. It writes only values that changed.

Firmware detail varies by model. For example, RZ09-0581 reports one generic manual thermal state for Fixed, Manual curve, and Maximum. Its model adapter remembers the selected mode but confirms the generic state reported by the laptop.

Ownership and conflicts

Failure model

Not applied

No command was accepted. Keep the last confirmed state and report which control failed.

Result unknown

A write may have reached the laptop, but confirmation failed. Stop writing and reconnect to the device.

Changed elsewhere

Report the changed area and pause its automation instead of fighting another controller.

Data unavailable

Hide the control or use a documented safe fallback, such as maximum fan speed.