Skip to content

feat(gui): render native application icons in Actions Ring - #1207

Open
foleykyle01 wants to merge 5 commits into
AprilNEA:masterfrom
foleykyle01:thread/issue-875-application-icons
Open

feat(gui): render native application icons in Actions Ring#1207
foleykyle01 wants to merge 5 commits into
AprilNEA:masterfrom
foleykyle01:thread/issue-875-application-icons

Conversation

@foleykyle01

Copy link
Copy Markdown

Summary

  • Render native application icons for uncustomized Open Application slots in both the Settings preview and standalone Actions Ring.
  • Match the profile Add Application flow with recent apps, a collapsed All applications section, and search-driven results.
  • Preserve manual application, folder, and URL entry plus explicit custom-icon overrides.

Changes

  • Agent / IPC: send an optional exact application target with ring presentation data, bump protocol version 30, and update wire-format coverage.
  • Shared UI / overlay: add macOS exact-file icon rendering, asynchronous caching with generic fallback, and an opt-in mock ring for hardware-free verification.
  • Desktop / i18n: reuse the application catalog and icon cache with independent picker state, resolve recent apps to launch paths, and localize the Browse applications control across every catalog.

Testing

  • cargo fmt --all -- --check
  • RUSTFLAGS='-D warnings' cargo clippy --workspace --all-targets -- -D warnings
  • RUSTFLAGS='-D warnings' cargo test --workspace
  • RUSTDOCFLAGS='-D warnings' cargo doc --workspace --no-deps --document-private-items --exclude openlogi-ui --exclude openlogi-desktop --exclude openlogi-overlay --exclude openlogi-agent
  • cargo xtask ci clippy-windows
  • Manual macOS verification with openlogi-agent-mock and the real dev app: recent native icons, collapsed All applications, search auto-reveal, manual Safari path, Calendar selection, Settings preview icons, and the standalone overlay Safari icon.
  • cargo-deny not run locally because cargo-deny/Nix is unavailable; CI provides that job.
  • Not runtime-tested on physical Logitech hardware.

Fixes #875

@foleykyle01
foleykyle01 requested a review from AprilNEA as a code owner August 31, 2026 19:43
@greptile-apps

greptile-apps Bot commented Aug 31, 2026

Copy link
Copy Markdown

Greptile Summary

The PR adds native application icons to uncustomized Open Application slots and aligns the Actions Ring application picker with the profile application catalog.

  • Extends versioned ring presentation data with an optional application icon target.
  • Shares asynchronous native icon loading between the desktop preview and standalone overlay.
  • Adds recent applications, searchable catalog choices, manual entry, and localized browse controls.
  • Resolves non-macOS catalog selections to executable paths rather than registration files.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
crates/openlogi-desktop/src/features/profiles/catalog.rs Adds launch-target resolution for catalog entries; Linux and Windows use executable paths, resolving the previously reported registration-file launch defect.
crates/openlogi-desktop/src/features/profiles/picker.rs Reuses the application catalog for Actions Ring selection while filtering choices that lack a launchable target.
crates/openlogi-agent-core/src/action_ring.rs Publishes exact application targets as presentation-only icon hints when no explicit custom icon exists.
crates/openlogi-ipc/src/ipc.rs Extends the versioned ring presentation contract with an optional application icon target.
crates/openlogi-ui/src/application_icon.rs Implements shared native application icon loading and caching for desktop and overlay consumers.
crates/openlogi-overlay/src/ring.rs Renders native application icons from ring presentation hints with generic fallback behavior.

Sequence Diagram

sequenceDiagram
    participant User
    participant Desktop as Desktop picker
    participant Catalog as Application catalog
    participant Agent as Agent core
    participant IPC
    participant Overlay
    User->>Desktop: Select Open Application
    Desktop->>Catalog: Resolve launch target and native icon
    Catalog-->>Desktop: Executable or application bundle path
    Desktop->>Agent: Persist Actions Ring configuration
    Agent->>IPC: Publish ring presentation with icon target
    IPC->>Overlay: Observe invocation
    Overlay->>Overlay: Load and cache native icon
    Overlay-->>User: Render Actions Ring
Loading

Reviews (2): Last reviewed commit: "fix(gui): use executable application lau..." | Re-trigger Greptile

Comment thread crates/openlogi-desktop/src/features/profiles/catalog.rs Outdated
@greptile-apps

greptile-apps Bot commented Aug 31, 2026

Copy link
Copy Markdown

Want your agent to iterate on Greptile's feedback? Start a greploop in Codex and it will work through the open comments and keep going until this PR reviews clean.

@davidbudnick davidbudnick added type: feature New feature request area: gui Graphical user interface platform: all Cross-platform issue labels Sep 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: gui Graphical user interface platform: all Cross-platform issue type: feature New feature request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Render real application icons for OpenApplication slots in the Actions Ring

2 participants