Skip to content

feat(gui): add capability-driven actions ring - #528

Merged
davidbudnick merged 13 commits into
AprilNEA:masterfrom
jericho0521:feat/actions-ring
Aug 13, 2026
Merged

feat(gui): add capability-driven actions ring#528
davidbudnick merged 13 commits into
AprilNEA:masterfrom
jericho0521:feat/actions-ring

Conversation

@jericho0521

@jericho0521 jericho0521 commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a capability-driven Actions Ring vertical slice, including MX Master 4 Haptic Sense Panel capture, agent-owned sessions, haptic feedback, a warm non-activating GPUI overlay, and an editor for radial actions.

Changes

  • core: add Actions Ring layouts, per-application overrides, custom presentation icons, typed keyboard shortcuts, and application/folder/URL targets
  • hidpp/hid: add reverse-engineered 0x19B0 haptic feedback and 0x19C0 force-sensing wrappers; discover and divert Haptic Sense Panel CID 0x01A0; preserve prior reporting state
  • hook/inject: expose cross-platform cursor positions and execute typed shortcuts or expanded application/path targets
  • agent/ipc: add validated, snapshotted ring sessions with expiry, hover deduplication, cancellation, activation, and haptic playback; bump the positional protocol to version 13 with wire goldens
  • gui: add an eight-slot radial editor, categorized action library, 53 custom icon choices, shortcut/path inputs, and the warm circular overlay without focus activation or native window borders/shadows
  • packaging: ship and sign openlogi-overlay in macOS, Linux, and Windows artifacts
  • i18n/docs: localize the new UI across all locale files and document schema version 3 Actions Ring configuration

The 0x19B0, 0x19C0, and CID 0x01A0 behavior is documented in code as reverse-engineered rather than treated as an official protocol guarantee.

Screenshots

image

Testing

  • cargo fmt --all -- --check
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test --workspace
  • cargo run -p xtask -- macos bundle
  • codesign --verify --deep --strict --verbose=2 target/release/bundle/osx/OpenLogi.app
  • launched the development and release-shaped app bundles on macOS 26.4 arm64
  • verified GUI, agent, and warm overlay processes launch together
  • verified selecting a radial slot and assigning Left Click persists the expected slot configuration
  • verified every custom gallery icon resolves to an embedded asset
  • verified the release-shaped local bundle can replace the installed application
  • MX Master 3S detection was runtime-tested
  • not runtime-tested on MX Master 4 hardware: CID 0x01A0 capture, waveform playback, force thresholds, and press-to-first-frame latency remain to be verified
  • not runtime-tested on Linux or Windows; CI is required for cfg-gated behavior

Related to #92 and #313.

Fixes #15

@davidbudnick
davidbudnick marked this pull request as ready for review August 10, 2026 00:55
@davidbudnick davidbudnick added this to the v0.6.24 milestone Aug 10, 2026
@davidbudnick

Copy link
Copy Markdown
Collaborator

@greptile-apps

@davidbudnick davidbudnick modified the milestones: v0.6.24, v0.6.25 Aug 10, 2026
@greptile-apps

greptile-apps Bot commented Aug 10, 2026

Copy link
Copy Markdown

Greptile Summary

The PR adds a capability-driven Actions Ring spanning configuration, device capture, agent-owned IPC sessions, a warm overlay, action execution, packaging, and localization.

  • Adds snapshotted ring sessions with hover, activation, cancellation, expiry, and haptic feedback.
  • Adds the radial editor, presentation assets, typed shortcuts, and application/path/URL targets.
  • Ships the overlay helper across macOS, Linux, and Windows artifacts.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains; the current command worker retains terminal work during connection failures and stalled RPCs, and newer terminal commands promptly supersede stale-session work.

Important Files Changed

Filename Overview
crates/openlogi-gui/src/bin/openlogi-overlay.rs Implements the warm radial overlay and now preserves terminal commands across reconnects while allowing newer session commands to supersede stale work.
crates/openlogi-agent-core/src/action_ring.rs Adds authoritative, expiring ring sessions with snapshotted actions and validated hover, activation, and cancellation.
crates/openlogi-agent/src/server.rs Exposes the ring session RPCs and dispatches validated activations through the shared action path.
crates/openlogi-agent/src/overlay.rs Adds supervision and packaged-binary discovery for the warm overlay helper.
crates/openlogi-core/src/binding/action_ring.rs Defines persisted ring layouts, slots, overrides, and presentation configuration.
xtask/src/commands/macos/bundle.rs Embeds and signs the overlay helper as a nested macOS application.

Sequence Diagram

sequenceDiagram
  participant Input as Device input
  participant Agent as OpenLogi agent
  participant Session as ActionRingManager
  participant Overlay as Overlay helper
  participant Dispatch as ActionDispatcher

  Input->>Agent: Show Actions Ring
  Agent->>Session: Begin snapshotted session
  Overlay->>Agent: Long-poll next_action_ring
  Agent-->>Overlay: Session ID and presentation slots
  Overlay->>Agent: Hover / activate / cancel
  Agent->>Session: Validate active session and slot
  Session-->>Agent: Snapshotted action
  Agent->>Dispatch: Execute selected action
Loading

Reviews (3): Last reviewed commit: "fix(gui): interrupt stalled ring request..." | Re-trigger Greptile

Comment thread crates/openlogi-gui/src/bin/openlogi-overlay.rs Outdated
@davidbudnick

Copy link
Copy Markdown
Collaborator

@jericho0521 Great work so far! 🎉 Can you ensure you update the PR and review comments from greptile-apps?

@davidbudnick davidbudnick added the type: feature New feature request label Aug 10, 2026
@davidbudnick

Copy link
Copy Markdown
Collaborator

@greptile-apps

Comment thread crates/openlogi-gui/src/bin/openlogi-overlay.rs
@davidbudnick

Copy link
Copy Markdown
Collaborator

@jericho0521 Great work on adding the config for the action ring!

Can you add a screen recording of the PR working locally on your computer?

Also a noticed some functionality in the following Logi youtube video; https://www.youtube.com/watch?v=sXXIQt9mjDQ

Did you cover most of the features of the OG product offering?

@davidbudnick davidbudnick modified the milestones: v0.6.25, v0.6.26 Aug 10, 2026
@jericho0521

Copy link
Copy Markdown
Contributor Author

Thanks! I’ll add a local screen recording.

Covered in this PR:

  • Assign Show Actions Ring to a supported mouse button.
  • Customizable eight-slot ring.
  • Shortcuts, application/path actions, and custom icon choices.
  • Active-app layout resolution.
  • Haptic Sense Panel feedback.

Not yet covered:

  • Per-application profile editing in the GUI.
  • Drag-and-drop editing.
  • Arbitrary icon uploads/recoloring.
  • Marketplace, plugins, and native app-specific tools.

This covers the core local-first workflow, but not full Options+ parity. The remaining features are better handled as follow-up work.

@jericho0521

Copy link
Copy Markdown
Contributor Author
Screen.Recording.2026-08-11.at.6.26.20.AM.mov

@jericho0521

Copy link
Copy Markdown
Contributor Author

@greptile-apps

@davidbudnick davidbudnick added the platform: all Cross-platform issue label Aug 13, 2026
@greptile-apps

greptile-apps Bot commented Aug 13, 2026

Copy link
Copy Markdown

Too many files changed for review (112 files, 100 file limit).

Bypass the limit by tagging @greptile-apps to review.

@davidbudnick
davidbudnick merged commit 896e09d into AprilNEA:master Aug 13, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

platform: all Cross-platform issue type: feature New feature request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Action Ring

2 participants