Repository navigation
feat(overlay): show keyboard backlight level - #1695
nathan-fontenele wants to merge 7 commits into
Conversation
|
Resolve conflicts with the ADC-measurement event work: keep both the backlight and adc_measurement event indices, bump the IPC protocol to v36 and the inventory cache schema to v5 (both sides had independently taken v35 / v4), and move the backlight ast-grep rule to crates/openlogi-core.
The indicator's expiry timer lives in the agent, so an agent that exits while the indicator is visible never sends the hide. The overlay window stayed up until a later observation arrived after reconnecting. Emit a hidden observation when the observer loses its connection.
|
Merged Local checks on the final head: fmt, clippy @AprilNEA @davidbudnick could you review and approve the pending workflows when you have a moment? |
…klight-osd # Conflicts: # crates/openlogi-agent-core/src/watchers/inventory.rs # crates/openlogi-agent-core/src/watchers/inventory/replay_tests.rs # crates/openlogi-agent/src/lifecycle.rs
Summary
Show the keyboard backlight level when an MX Keys backlight key changes it. The indicator updates promptly, reaches a full bar at the highest selectable level, and remains independent of the Actions Ring.
Changes
openlogi-device: decode HID++ backlight notifications into a separate latest-value channel and refresh older Bolt probe caches so their backlight feature index is discovered.openlogi-agent-core: forward backlight readings without waiting for inventory scans and keep indicator generation, publication, and expiry ordered.openlogi-ipc: append the observation method without changing existing request numbers; keep wire goldens pinned.openlogi-overlay: retain the observer connection, repaint changed levels, and close only the window belonging to each overlay.openlogi-coreandopenlogi-cli: present the highest selectable level asnb_levels - 1(for example,7 / 7when the device reports eight levels).mastertwice to resolve conflicts. The first was with the0x1F20ADC-measurement work: both event indices are kept, the IPC protocol is bumped to v36 and the probe-cache schema to v5 (each side had independently taken v35 / v4), and the backlight ast-grep rule moves tocrates/openlogi-core/.ast-grep/rules/. The second (head8e9f007f) was with theDeviceWakereconnection event from fix(agent): reapply volatile settings on device reconnection and retry disagreeing DPI writes #1270:InventoryEventkeeps bothBacklightChangedandDeviceWake, with an arm for each in the agent lifecycle and the replay tests.masteris still on IPC v35 / cache v4, so v36 / v5 do not collide.Testing
Re-run locally on the merged head (
8e9f007f, Linux):cargo fmt --all --checkcargo check --all-targetsforopenlogi-agent-core,openlogi-agent,openlogi-overlay,openlogi-device,openlogi-ipccargo clippy --all-targets -- -D warningsforopenlogi-agent-coreandopenlogi-agentcargo testforopenlogi-agent-core,openlogi-agent,openlogi-device,openlogi-ipc(all pass, includingwire_formatpinned at v36)Not run locally on this head:
openlogi-overlayunit tests: the test binary does not link on this machine (libxkbcommon-x11is missing); the crate does passcargo check.ast-grep scan,typos,cargo xtask ci wasm, Windows/macOS clippy,cargo-deny: left to CI.Hardware: the Linux MX Keys check (rapid Fn+F6/F7 presses end at the last level, the highest level shows
7 / 7with a full bar, the earlier IPC EOF loop is gone) was done before either merge and has not been repeated on the merged head.Fixes #1663