Skip to content

[Bug]: Offline saved device steals input capture from online device #452

Description

@Phecda

Pre-flight checklist

  • I searched existing issues and this is not a duplicate.
  • I am on the latest release or a recent master build.
  • I quit Logi Options+ before running OpenLogi.

Which part of OpenLogi?

Both

OpenLogi version

0.6.22 (master at bdaa2e3, reproduced in a local development build)

Operating system

macOS

OS version & architecture

macOS 26.5.2, Apple Silicon

Device model

MX Master 3S connected over Bluetooth direct, with an offline Unifying-paired device entry also present

How is the device connected?

Bluetooth (direct, no receiver)

Affected area(s)

  • Device discovery / detection
  • Button remapping
  • DPI control
  • SmartShift
  • Per-application profiles
  • Battery status
  • Settings / configuration (TOML)
  • Auto-update
  • Menu bar / tray
  • Other

What happened?

When the persisted selected_device points to an offline device while another configured device is online, the agent still uses the offline device as the live bindings and HID++ capture target. Programmable buttons on the connected device then stop working even though that device is online and visible in the GUI.

The runtime selection should prefer the saved GUI selection while it is online, fall back to an online device while it is offline, and preserve the saved selection only when every device is offline. The persisted GUI preference should remain unchanged so it can resume when that device reconnects.

The root cause is that pick_current honors selected_device without checking AgentDevice::online. An online-only inventory transition also does not rebuild the runtime target when device keys and routes remain unchanged.

Steps to reproduce

  1. Configure two devices and leave one online.
  2. Disconnect the other device and keep its identity in the device list.
  3. Select the offline device in the GUI so it becomes selected_device.
  4. Press a remapped auxiliary or function button on the online device.

The button action does not fire. Selecting the online device restores it.

Diagnostics report

Not captured. The behavior was reproduced in a local debug build with one online Bluetooth-direct device and one offline Unifying device.

openlogi list output

Not captured.

Logs

No relevant error is logged; the agent deterministically selects the offline saved identity.

macOS permissions (if applicable)

  • OpenLogi has Accessibility permission.
  • OpenLogi has Input Monitoring permission.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions