Skip to content

chore(protocol): bump @openmouse/protocol to 0.22.0 and wire the new drivers - #440

Merged
snekxs merged 9 commits into
mainfrom
chore/protocol-0.22-integration
Sep 30, 2026
Merged

snekxs merged 9 commits into
mainfrom
chore/protocol-0.22-integration

Conversation

@snekxs

@snekxs snekxs commented Sep 30, 2026

Copy link
Copy Markdown
Member

Lands the four device integrations that depend on protocol 0.22.0 within a single merge, because the Launcher rework in mouse-protocol#148 deletes m6-hid/KeychronM6HidClient and the panel must switch to Keychron8kHidClient/Keychron1kHidClient in the same commit as the bump.

Supersedes and includes:

Also raises the JS bundle budget to 2,085 kB for the combined additions (measured aggregate 1,995.2 kB).

Protocol side: OpenMouse-Project/mouse-protocol#148 (released as @openmouse/protocol@0.22.0).

user_1781515504933 and others added 9 commits September 29, 2026 17:19
Keychron8kNordicHidClient (family keychron-8k-nordic, from
mouse-protocol) gets the advanced section with the sleep and debounce
cards, since it reads and writes both and publishes its own option
lists. It joins NEEDS_OPEN so the device opens before the first read.
DPI stages, polling, lift-off, the processing toggles, angle tuning,
profiles and the button remapper all dispatch generically.

Needs a protocol release with the driver and a bump from 0.19.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The mouse-protocol PR that adds the Rapoo codec and its WebHID client
also adds RapooHidClient, and it was not on the list of clients the
controller opens on connect. Without that entry the driver never gets to
run against a device that is already picked, which is the whole point of
the client: it answers on its own vendor collection, so nothing else
notices it.

The client reports the battery on its own when the transport has no
receiveInputReport (WebHID alone cannot read the register channel), and
when OpenMouse Bridge supplies it the same connect path unlocks DPI,
polling rate and the sensor settings.
…w strings

The Buttons card read the selected M2-NEX profile but its onChange wrote
straight to the device, so edits never surfaced in the UI and the exported
updateM2NexProfileButton was dead. Also move the new macro, scroll and
profile strings into src/i18n.ts keys (replicated across locales so
missingTranslations stays empty) and replace the hardcoded per-stage DPI
palette with --stage-color-* tokens for both themes.
…drivers

Land the four device integrations that depend on protocol 0.22.0 together:
Noir Gear M2-NEX (#402), Keychron G3 Air (#408), Rapoo VT9 Pro (#422) and
Keychron Launcher 8k/1k (#426). The Launcher work removes KeychronM6HidClient
with m6-hid, so the panel must switch to Keychron8k/1kHidClient in the same
commit as the protocol bump. Raise the JS bundle budget to 2,085 kB for the
combined additions (measured 1,995.2 kB).
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying openmouse with  Cloudflare Pages  Cloudflare Pages

Latest commit: a1e1176
Status: ✅  Deploy successful!
Preview URL: https://b315ce5e.openmouse.pages.dev
Branch Preview URL: https://chore-protocol-0-22-integrat.openmouse.pages.dev

View logs

Comment thread src/device/controller.ts
* this avoids a fake read timeout while keeping the actual write path live.
*/
export function loadKsnakeMacros(): void {
if (ksnakeMacrosLoading || ksnakeMacros !== null) return;
@snekxs
snekxs merged commit cdba319 into main Sep 30, 2026
6 checks passed
snekxs pushed a commit that referenced this pull request Oct 3, 2026
…ebounce cards (#514)

Protocol 0.22.0 reports ui.family "keychron-8k" (the M6 and most Keychron
mice) and "keychron-1k", but BY_FAMILY still only knew the old
"keychron-m6" family. Those mice lost their advanced section, and the 8k
mice lost sleep and debounce. This is the traits half of the closed #426
that #440 did not carry over.

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants