feat(gui): add guarded disable-keys controls - #993
Open
safonin wants to merge 7 commits into
Open
Conversation
Greptile SummaryThe PR adds capability-aware Disable Keys controls across the HID++, agent, IPC, configuration, and desktop layers. The latest changes also complete the reconnect behavior by scheduling bounded follow-up reapply attempts after offline-to-online transitions.
Confidence Score: 5/5The PR appears safe to merge because the previously reported reconnect reapply gap is fixed and no blocking failure remains. The reconnect path now records a bounded follow-up retry budget, persists it across inventory refreshes, and invokes the Disable Keys reapply operation for each eligible retry target; no blocking failure remains.
|
| Filename | Overview |
|---|---|
| crates/openlogi-agent-core/src/orchestrator.rs | Reconnect targets now receive the same bounded follow-up reapply run as initial discovery and system wake, resolving the previously reported one-shot reconnect behavior. |
| crates/openlogi-agent-core/src/orchestrator/tests.rs | Adds focused coverage showing that offline-to-online transitions enqueue and consume bounded confirmation retries. |
| crates/openlogi-agent-core/src/hardware.rs | Adds the detached, guarded Disable Keys write used by reconnect and wake reconciliation. |
| crates/openlogi-device/src/write/disable_keys.rs | Implements supported-mask validation, unknown-bit preservation, and complete read-back confirmation for Disable Keys replacements. |
| crates/openlogi-desktop/src/features/keyboard/disable_keys.rs | Adds the capability-gated desktop controls and asynchronous state handling for firmware-supported keys. |
| crates/openlogi-ipc/src/ipc.rs | Appends the Disable Keys read and write operations to the versioned agent protocol. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart LR
A[Keyboard reconnects] --> B[Inventory reports offline-to-online]
B --> C[Plan initial volatile reapply]
C --> D[Write configured Disable Keys mask]
C --> E[Queue bounded follow-up retries]
E --> F[Next inventory refresh]
F --> G{Keyboard online with route?}
G -->|Yes| D
G -->|No| H[Stop pending retry run]
D --> I[Read back complete supported mask]
I --> J{State confirmed?}
J -->|Yes| K[Configured state restored]
J -->|No| F
Reviews (2): Last reviewed commit: "fix(agent): retry volatile settings afte..." | Re-trigger Greptile
safonin
force-pushed
the
feat/keyboard-disable-keys-controls
branch
from
August 25, 2026 15:23
fd94176 to
fac4720
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add capability-aware Disable Keys controls for keyboards exposing HID++ feature
0x4521.The controls show only keys advertised by the firmware, use live device state, and persist only state confirmed by the keyboard.
Changes
openlogi-core/openlogi-deviceopenlogi-agent-core/openlogi-agent/openlogi-ipcopenlogi-desktop/openlogi-uiHardware verification
Verified on a Logitech MX Keys connected directly over Bluetooth:
046d:b35b0x1f0x000x010x00and the language switch worked again0x01state is reapplied after reconnect0x00state and test configuration were restored after verificationScreenshot
Testing
Part of #521