Skip to content

fix(finalmouse): hide the polling card for the Starlight X - #1049

Merged
snekxs merged 1 commit into
mainfrom
fix/finalmouse-slx-hide-polling-card
Oct 13, 2026
Merged

snekxs merged 1 commit into
mainfrom
fix/finalmouse-slx-hide-polling-card

Conversation

@snekxs

@snekxs snekxs commented Oct 13, 2026 •

Copy link
Copy Markdown
Member

Part of #213 (mouse-protocol side: OpenMouse-Project/mouse-protocol#221).

The Starlight X has no adjustable polling rate — PerfectPolling is a fixed pipeline — but it reports one, so the Performance tab rendered a rate selector that could not do anything (8k in particular is a no-op on the SLX).

supportedPollingRates comes from the driver, and the driver now marks the SLX read-only, but the card should not render at all: PerfectPollingCard already stands in for the SLX's polling story. So gate it in the app.

Change

  • cardAvailability.polling is now !isSlxStatus(status) && (...). The Ultralight X keeps the selector; the Starlight X loses it.
  • New test the Finalmouse Starlight X has no polling card; the Ultralight X keeps it covers both dongles.

Verification

  • tsc --noEmit clean, npm test green (383 pass).
  • Also ran the suite against the built mouse-protocol branch from fix: restore OpenMouse Bridge handshake #221 (linked into node_modules): green, so the app tolerates the SLX's empty supportedPollingRates.

Not in scope

The SLX device render is still a placeholder (device-images.ts deliberately falls back to unknown-device.png because no SLX art exists in the R2 bucket). That is an artwork task, tracked separately.

Summary by CodeRabbit

  • Bug Fixes
    • Polling cards are now hidden for Finalmouse Starlight X statuses, including when settings are ready. Other device availability behavior remains unchanged.

The Starlight X has no adjustable polling rate — PerfectPolling is a
fixed pipeline — but it still reports one, so the Performance tab
offered a rate selector that could not do anything (and 8k in
particular is a no-op on the SLX). `supportedPollingRates` comes from
the driver, and the driver now marks the SLX read-only, but the card
should not render at all: `PerfectPollingCard` already stands in for the
SLX's polling story.

Gate `cardAvailability.polling` on `!isSlxStatus(status)`. The
Ultralight X keeps the selector; the SLX loses it.
@github-actions github-actions Bot added type: bug PR title category: bug area: ui Interface and styling labels Oct 13, 2026
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying openmouse with  Cloudflare Pages  Cloudflare Pages

Latest commit: 8b54868
Status: ✅  Deploy successful!
Preview URL: https://c949a9c5.openmouse.pages.dev
Branch Preview URL: https://fix-finalmouse-slx-hide-poll.openmouse.pages.dev

View logs

@coderabbitai

coderabbitai Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: OpenMouse-Project/openmouse/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: f65da4be-6ae5-4083-98f2-719b92c03362
📥 Commits

Reviewing files that changed from the base of the PR and between c64437f and 8b54868.

📒 Files selected for processing (2)
  • src/app/cards/availability.test.ts
  • src/app/cards/availability.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 4 remain after this review.

📝 Walkthrough

Walkthrough

Polling cards are now unavailable for Finalmouse SLX statuses. Tests verify that Starlight X polling is unavailable and Ultralight X polling remains available.

Changes

Polling availability

Layer / File(s) Summary
Exclude SLX polling statuses
src/app/cards/availability.ts, src/app/cards/availability.test.ts
The polling condition now excludes SLX statuses, including when settings are ready or the Attack Shark X11 exception applies. Tests cover unavailable polling for Starlight X and available polling for Ultralight X.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~8 minutes

Change: Bug fix

Suggested reviewers: ydw1904

Merge Risk: ⚪ Minimal · up to 8b548

The SLX polling card is excluded while the ULX card remains available. No actionable merge-blocking risk remains.

Pre-merge checks · Passed 4 · Failed 1

Failed Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 2 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks (4 passed)
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly states the main change: hide the polling card for the Starlight X.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@snekxs
snekxs merged commit 59b5ac0 into main Oct 13, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ui Interface and styling type: bug PR title category: bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant