fix(core): match Actions Ring layouts with the per-app selector - #643
Merged
Merged
Conversation
|
#572 taught per_app_bindings to fall back from a Windows executable path to its exe:<filename> key, but action_ring.per_app kept looking the foreground identifier up verbatim. Both maps are keyed by the same identifier, so on Windows a Store or self-updating application kept its button overrides across an update while silently losing its ring layout — the versioned path the ring was keyed by no longer exists. The matcher moves to openlogi_core::app::overlay_for and both maps resolve through it, so a selector cannot mean one thing for buttons and another for the ring. The fallback now requires a path separator: an identifier without one is a bundle identifier or an application class, so a name that merely ends in .exe is no longer reinterpreted as an executable. An ast-grep guard keeps the next per-app map from indexing by the raw identifier.
AprilNEA
force-pushed
the
fix/app-selector-ring-parity
branch
from
October 1, 2026 09:24
c1be234 to
ff45769
Compare
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
#572 taught
per_app_bindingsto fall back toexe:<filename>.exewhen the foreground identifier is a Windows path, butaction_ring.per_appkept looking that identifier up verbatim. Both maps are keyed by the same identifier, so on Windows a Store or self-updating application could keep its button overlay across an update while silently losing its ring layout — the versioned path the ring was keyed by no longer exists.Rebuilt on current master: the matcher moves to
openlogi_core::app::overlay_forand both maps resolve through it, so a selector cannot mean one thing for buttons and another for the ring. The fallback now requires a path separator in the identifier — a macOS bundle id or Linux application class that merely ends in.exeis never reinterpreted as an executable (the earlier review's P1).Changes
openlogi-core:app::overlay_foris the one per-app matcher (exact key, then the Windowsexe:<filename>fallback);config/per_app.rsandActionRingConfig::effective_layoutcall it. The privateapp_overlayhelper is gone..ast-grep/rules/core-app-overlay-owner.yml: fails the next per-app map that builds anexe:key or indexesper_appby the raw identifier.docs/CONFIGURATION.md:action_ring.per_apptakes the same selectors asper_app_bindings.Testing
cargo test -p openlogi-core -- app:: action_ring per_app(new:a_ring_layout_keyed_by_executable_survives_a_versioned_install_path; the fallback's three cases moved toapp::tests)cargo xtask ci ast-grepcargo fmt --all -- --check,RUSTFLAGS=-D warnings cargo clippy --workspace --all-targets -- -D warnings,cargo test --workspaceFixes the ring half of #572's follow-up.