Repository navigation
Conversation
|
This branch has not been deployed
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
With both Unifying and Bolt connected, Add Device used the first enumerated receiver, so a Bolt mouse could never appear when Unifying came first. Add Device now asks which receiver to use and retains that exact choice through retries and window recreation.
Changes
openlogi-desktop: show identified receivers from live inventory, distinguish matching names with an ID suffix, and retain the selection when the window reopens. Cancel and Change receiver wait for cleanup acknowledgement; stale observations cannot reopen the previous flow.openlogi-agent: acknowledge cancellation after receiver restoration and session-lease release, including cancellation with no active session.openlogi-device,openlogi-agent-core: match the selected product/hardware ID without fallback. Share inventory identity evidence with pairing so a selected receiver's open failure retains its diagnostic, while unrelated open failures cannot hide a missing selection. Successful opens verify the live UID before writes; confirmed disconnects discard cached identity evidence. Preserve route-based unpair error reporting and bounded UID repair.openlogi-core,openlogi-ipc: append the explicit receiver selector without changing existing selector encodings; advance IPC from upstream 35 to 36, retaining upstream pointer-scaling operation encodings.openlogi-ui, docs: add the six chooser/cancellation strings to all 24 catalogs, including the new Czech catalog, with English fallback pending translations; document selection and recovery.Refreshed against master
e5837541(v0.8.13). This incorporates upstream's Rust 1.99 compatibility fixes from #1638, which address the October 10 CI failures. The merge retains the upstream titlebar and pairing-icon fixes, with all four upstream icon/passkey tests preserved alongside the receiver-selection tests.This PR remains independent of #939. Refresh the IPC version when combining or landing independent wire changes, and keep GUI/agent/overlay/CLI binaries from one source tree together.
Testing
Windows x86_64, Rust 1.99.0, with
RUSTFLAGS=-D warningsandRUSTDOCFLAGS=-D warnings, on the final merged tree:cargo fmt --all -- --checkcargo clippy --locked --workspace --all-targets -- -D warningscargo test --locked --workspace— 1,969 passed; two existing doctests ignored.cargo doc --locked --workspace --no-deps --document-private-items --exclude openlogi-ui --exclude openlogi-desktop --exclude openlogi-overlay --exclude openlogi-agentcargo xtask ci wasm ast-grep typos— three passed, none skipped.git diff --cached --checkThe workspace test run includes 17 fixed-byte IPC tests, 11 receiver-selection regressions, 12 inventory replay tests, 12 pairing-window tests (including the four upstream icon/passkey tests), locale catalog parity, and desktop localization tests. Receiver coverage includes mixed families, two Bolt receivers, retained targets on retry/reopen, acknowledged cancellation, stale observations, UID recovery, selected/unrelated open failures, and disconnect identity eviction.
The inherited Rust 1.99 fixes pass without PR-specific changes to the toolchain, dependency lockfile, or CI workflow. The remaining CI matrix runs on GitHub; Linux/macOS, MSRV, dependency policy, shell, and installer jobs were not rerun locally.
GitHub reports head
8bde7a50as mergeable. Its CI run and Build run currently require upstream maintainer approval before they can execute.This PR head is not runtime-tested on hardware. macOS/Linux checks and fresh native-window screenshots were not run locally. The screenshot below comes from the earlier Windows preview with synthetic inventory, not this refreshed head.
Hardware verification: connect Unifying and Bolt, choose Bolt, and complete MX Master 4 authentication. Close/reopen Add Device during a session and retry after failure. Change receiver and confirm the chooser waits for cleanup. Unplug the selected receiver and ensure retry does not pair on another receiver. Repeat with two receivers of the same family, including an open failure on the remaining receiver; reconnect guidance must stay visible. Check that a transient UID failure recovers without reconnecting.