Repository navigation
fix(finalmouse): make the Starlight X polling rate read-only - #221
Merged
Merged
Conversation
The Starlight X (361D:0300/0301) runs PerfectPolling, a fixed-rate pipeline: it reports a polling rate but has none to select, unlike the Ultralight X. The shared Finalmouse driver advertised the whole 500-8000 Hz ladder for both, so the app offered an 8k option that does nothing on the SLX. Split the family on `isSlx`: the SLX now advertises no selectable rates, refuses `setPollingRate`, and sets `pollingReadOnly` / `hideMotionSync` so the app drops the selector and the (non-user-facing) Motion Sync toggle. The ULX keeps the full ladder and its toggle byte-for-byte. Also register the Starlight X dongle PIDs in `SUPPORTED_HID_FILTERS`: they were accepted by `FinalmouseHidClient.isSupported` but absent from the WebHID picker, so the browser never offered the SLX dongle at all. A regression test pins the filter/`isSupported` agreement.
|
🎉 This PR is included in version 0.40.2 🎉 The release is available on: Your semantic-release bot 📦🚀 |
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.
Closes part of #213.
The Starlight X (
361D:0300/0301) runs PerfectPolling — a fixed-rate pipeline. It reports a polling rate, but unlike the Ultralight X there is nothing to select. The shared Finalmouse driver advertised the whole500/1000/2000/4000/8000ladder for both, so the app offered an 8k option that does nothing on the SLX.Changes
isSlx:supportedPollingRatesfor SLX is[](PerfectPolling is fixed); ULX keeps the full ladder.setPollingRaterejects a write on SLX (the reportedpollingRateHzis still surfaced for telemetry).ui.pollingReadOnly+ui.hideMotionSyncare set for SLX, so the app drops the rate selector and the non-user-facing Motion Sync toggle. ULX output is byte-identical.SUPPORTED_HID_FILTERS. They were accepted byFinalmouseHidClient.isSupportedbut absent from the picker, sonavigator.hid.requestDevice()never offered the SLX dongle. (Auto-detect on an already-authorized device worked, which is why this went unnoticed.)Tests
Finalmouse Starlight X exposes a fixed PerfectPolling rate, not a picker— asserts the SLX advertises no rates, sets the two UI hints, and refusessetPollingRate(8000).every Finalmouse dongle the driver accepts is offered by the picker— pins the filter ↔isSupportedagreement (mirrors the G-Wolves catalog/filter guard).tscclean; full suite green (2385 pass).Notes
Every SLX path is still flagged unverified on hardware in
docs/finalmouse-testing.md; this change does not depend on a verified readback — it only stops offering a control the SLX does not have.Summary by CodeRabbit