Skip to content

feat(gui): configure Easy-Switch followers - #3

Draft
noobydp wants to merge 3 commits into
fix/easy-switch-forwardingfrom
feat/easy-switch-followers
Draft

noobydp wants to merge 3 commits into
fix/easy-switch-forwardingfrom
feat/easy-switch-followers

Conversation

@noobydp

@noobydp noobydp commented Aug 28, 2026 •

Copy link
Copy Markdown
Owner

Fork staging PR: The upstream draft is AprilNEA#1123. This is
stacked on the reliability review in #2, so the fork PR shows only the single
GUI and capability commit.

Summary

Add a capability-gated Easy-Switch panel for keyboards with reportable host
controls. Users can select locally known ChangeHost-capable followers without
editing TOML, using the existing physical device identities and
host_switch_targets configuration.

Changes

  • openlogi-core - append measured host_switching and
    host_switch_controls flags to device capabilities while keeping old cached
    inventories compatible.
  • openlogi-device - probe 0x1814 ChangeHost and the reportable 0x1b04
    host-control table through one named capability plan.
  • openlogi-ipc / openlogi-agent - carry the two appended capability flags
    in inventory protocol v30 and update the mock inventory. Follower settings
    do not gain a new IPC mutation.
  • openlogi-desktop / openlogi-ui - render the follower selector, persist
    the pre-existing host_switch_targets field directly, request the existing
    agent config reload only after a successful save, repaint failed rollbacks,
    reject self-links, and provide locale-complete copy.

Screenshot

Pending the final GUI smoke test. Keep this PR in draft until a screenshot is
attached.

Testing

  • cargo fmt --all -- --check
  • RUSTFLAGS="-D warnings" cargo clippy --workspace --all-targets -- -D warnings
  • RUSTFLAGS="-D warnings" cargo test --workspace
  • cargo test -p openlogi-ipc --test wire_format
  • cargo test -p openlogi-desktop i18n
  • RUSTDOCFLAGS="-D warnings" cargo doc --workspace --no-deps --document-private-items --exclude openlogi-ui --exclude openlogi-desktop --exclude openlogi-overlay --exclude openlogi-agent
  • RUSTFLAGS="-D warnings" cargo check -p openlogi-hidpp -p openlogi-device --target wasm32-unknown-unknown
  • typos was not run locally because typos-cli is unavailable.
  • Not manually smoke-tested at this final head. Before marking ready, select
    and clear a follower, restart the app, confirm the selection persists, and
    attach a screenshot of the Easy-Switch tab.

Depends on #2 and AprilNEA#970

Code and PR drafted with Codex

@noobydp
noobydp force-pushed the feat/easy-switch-followers branch from 40171d2 to 082ef2f Compare August 28, 2026 18:01
@noobydp
noobydp force-pushed the fix/easy-switch-forwarding branch 2 times, most recently from 2218d41 to a7f6933 Compare August 29, 2026 07:25
@noobydp
noobydp force-pushed the feat/easy-switch-followers branch from 082ef2f to 5d97d6b Compare August 29, 2026 07:25
@noobydp
noobydp force-pushed the fix/easy-switch-forwarding branch from a7f6933 to 025d593 Compare August 29, 2026 07:40
@noobydp
noobydp force-pushed the feat/easy-switch-followers branch from 5d97d6b to 57e4bee Compare August 29, 2026 07:40
@noobydp
noobydp force-pushed the fix/easy-switch-forwarding branch from 025d593 to 3dcdaba Compare August 29, 2026 07:53
@noobydp
noobydp force-pushed the feat/easy-switch-followers branch from 57e4bee to 465ac51 Compare August 29, 2026 07:53
@noobydp
noobydp force-pushed the fix/easy-switch-forwarding branch from 3dcdaba to cb1e1c8 Compare August 29, 2026 08:03
@noobydp
noobydp force-pushed the feat/easy-switch-followers branch from 465ac51 to f571394 Compare August 29, 2026 08:03
@noobydp
noobydp force-pushed the fix/easy-switch-forwarding branch from cb1e1c8 to 6e83d04 Compare August 29, 2026 08:15
@noobydp
noobydp force-pushed the feat/easy-switch-followers branch from f571394 to 124304b Compare August 29, 2026 08:15
@noobydp
noobydp force-pushed the fix/easy-switch-forwarding branch from 6e83d04 to 8798779 Compare August 29, 2026 08:56
@noobydp
noobydp force-pushed the feat/easy-switch-followers branch from 124304b to ac66b21 Compare August 29, 2026 08:57
@noobydp
noobydp force-pushed the fix/easy-switch-forwarding branch from 8798779 to 31fef6d Compare August 29, 2026 09:16
@noobydp
noobydp force-pushed the feat/easy-switch-followers branch from ac66b21 to 09714c2 Compare August 29, 2026 09:16
@noobydp
noobydp force-pushed the fix/easy-switch-forwarding branch from 31fef6d to 106c797 Compare August 29, 2026 09:30
@noobydp
noobydp force-pushed the feat/easy-switch-followers branch from 09714c2 to 0b5c84a Compare August 29, 2026 09:30
@noobydp
noobydp force-pushed the fix/easy-switch-forwarding branch from 106c797 to 4fb5dcd Compare August 29, 2026 10:02
@noobydp
noobydp force-pushed the feat/easy-switch-followers branch from 0b5c84a to 33d9221 Compare August 29, 2026 10:02
@noobydp
noobydp force-pushed the fix/easy-switch-forwarding branch from 4fb5dcd to 5158167 Compare August 29, 2026 10:30
@noobydp
noobydp force-pushed the feat/easy-switch-followers branch from 33d9221 to bbcf430 Compare August 29, 2026 10:30
@noobydp
noobydp force-pushed the fix/easy-switch-forwarding branch from 5158167 to 335f1b6 Compare August 30, 2026 08:56
@noobydp
noobydp force-pushed the feat/easy-switch-followers branch from bbcf430 to bea2268 Compare August 30, 2026 08:56
@noobydp
noobydp force-pushed the fix/easy-switch-forwarding branch from 335f1b6 to 5408594 Compare August 31, 2026 08:54
@noobydp
noobydp force-pushed the feat/easy-switch-followers branch from bea2268 to 835a869 Compare August 31, 2026 08:54
… state

Merge updated forwarding and current master, preserve dpi_gestures before appending host capabilities in IPC v32, and use the StateEvents mutation boundary. Probe reportable host controls during the existing all-or-nothing table walk and retain persistence rollback coverage.

Validated with workspace tests, Clippy, rustdoc, WebAssembly and repository hooks. Mock-agent GUI checks cover selecting a follower, persistence across restart, clearing the link, and connected/offline rows.
Include selected followers even when their capability or inventory record disappears. Allow removing an existing link without requiring a reachable ChangeHost target, while retaining validation when adding followers. Merge the multi-keyboard forwarding recovery fix and its replay regression.
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.

1 participant