Skip to content

feat(games): custom games, game profile parity and custom game images - #1177

Draft
onyxhq-dev wants to merge 1 commit into
OpenMouse-Project:mainfrom
onyxhq-dev:feat/custom-game-icons
Draft

onyxhq-dev wants to merge 1 commit into
OpenMouse-Project:mainfrom
onyxhq-dev:feat/custom-game-icons

Conversation

@onyxhq-dev

@onyxhq-dev onyxhq-dev commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Lets you add your own games to the Games page, and brings Logitech game profiles to the same level as the Host profile in G HUB. Needs OpenMouse Bridge for all of it.

Custom games

  • Add a game by picking its exe, or pick from the apps that are running. Bridge tracks it like a catalog game. It is stored in the Bridge config, not in the browser or on the site.
  • A custom game can have a picture: upload one or paste a link. The picture shows on the games grid and on the game's profile page. "Change image" appears when you hover the picture (always visible on touch screens).
  • A custom game can be renamed from a pencil next to its title. Enter or clicking away saves, Escape cancels, and a name already in the list is refused. The picture and the saved profile move with the name.

Game profiles

  • DPI X and Y, lift-off, report rate, bunny hop (HITS) and the side button assignments are part of a game profile, with an "Apply now" button.
  • A report rate per connection: a mouse such as the PRO X 3 Superstrike shows a wireless and a wired slider in a game profile, and a launch applies the one for the connection in use.
  • Back and Forward can be assigned to a key or a media key per game, and in the default profile. Bridge presses them while the profile is active.
  • Includes the change from Keep an unlinked Logitech X/Y slot unlinked after a refresh #1154 (an unlinked Logitech X/Y slot stays unlinked after a refresh), so that PR can be closed.

Checks

  • npx tsc --noEmit, npm test (408 tests) and npm run build pass. The JS budget is raised from 2,800,000 to 2,825,000 bytes (measured 2,823,553), with a note in build/check-bundle-size.ts, as AGENTS.md asks.
  • All new strings are in every locale.
  • Tried by hand on a PRO X 3 Superstrike with Bridge on Windows: custom games, game profiles, bunny hop, the default Back and Forward mapping and the side buttons all work.

Draft because it uses MouseStatus.pollingRateWirelessHz, pollingRateWiredHz and hostButtons from OpenMouse-Project/mouse-protocol#246. Once that is released, @openmouse/protocol in package.json needs bumping to it, and the type check will pass in CI. Bridge side: OpenMouse-Project/OpenMouse-Bridge#32.

Note

Add custom games with images, game profile parity, and Host-button editing

  • Adds a custom-game dialog on the Games page: pick an executable or a running app, name the game, and optionally set an image from a file or URL. Games can be renamed, removed, and have their image replaced later; images are downscaled by prepareGameImage to at most 800px/450 KiB.
  • Extends game profiles with Host-side settings: per-connection (wired/wireless) polling rates, Host bunny-hop, Host side-button assignments, and analog tuning, plus an Apply Now action that temporarily writes the draft and restores prior values when leaving the page.
  • Adds Bridge APIs for custom games, custom-game images, image-from-URL fetch, and the default profile; updates all 12 locales and raises the JS bundle budget to 2,825,000 bytes.
  • Behavioral changes: while a game-profile draft is active, buildProfileView hides the normal profile entry, DPI slots, and bunny-hop support; analog-button writes during a profile operation are no longer persisted to the mouse; ordinary pending-change flashing stays blocked during draft editing while Apply Now uses the internal staged flasher.

Macroscope summarized 85d6a15.

- Games page: add a game or an app by picking its executable or choosing a
  running app. Custom games are kept by Bridge, not in the browser.
- Custom games can have a picture, uploaded or taken from a pasted link, shown
  on the tile and on the game's profile page. Hovering the picture offers
  "Change image" for custom games only.
- Game profiles cover the Logitech settings of the device page: DPI X and Y,
  lift-off, report rate, bunny hop, HITS, Apply now and side button
  assignments, with Host profile parity and a default profile.
- Strings are added to every locale.

- A game profile keeps a report rate for wired and for wireless (like the onboard
  profiles), and applies the one for the connection in use.
@coderabbitai

coderabbitai Bot commented Oct 20, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@github-actions github-actions Bot added area: ui Interface and styling area: devices Device integration and HID support area: translations Localized interface strings area: ci Automation and build configuration labels Oct 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ci Automation and build configuration area: devices Device integration and HID support area: translations Localized interface strings area: ui Interface and styling type: enhancement PR title category: enhancement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant