Skip to content

✨ Radial menu customizability#934

Merged
mrkai77 merged 17 commits into
developfrom
radial-menu-customizability
Jan 3, 2026
Merged

✨ Radial menu customizability#934
mrkai77 merged 17 commits into
developfrom
radial-menu-customizability

Conversation

@mrkai77
Copy link
Copy Markdown
Owner

@mrkai77 mrkai77 commented Jan 3, 2026

Each custom action can:

  • Be a standard WindowAction, similar to a keybind.
  • Be linked to an existing keybind, so any changes to the keybind are automatically reflected in the radial menu.

When radial menu customization is active, a visual guide will appear over the radial menu in the settings window to help visualize each action.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces customizability for the radial menu, allowing users to configure actions as either standard WindowActions or references to existing keybinds. When linked to a keybind, changes to the keybind are automatically reflected in the radial menu. The implementation also includes a visual guide in the settings window to help users understand the radial menu layout.

Key changes:

  • Replaced optional WindowAction? with non-optional WindowAction throughout the codebase, using .noAction and .noSelection as explicit states
  • Improved type safety by changing angle calculations from CGFloat to Angle type
  • Modified radial menu logic to use user-configured actions when customization is enabled
  • Added localization strings for new customization features

Reviewed changes

Copilot reviewed 37 out of 37 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
Loop/Stashing/StashedWindowStore.swift Changed action comparison from isSameManipulation to direct ID comparison for consistency with new action model
Loop/Stashing/StashManager.swift Updated action comparison logic to use ID-based equality check
Loop/Localizable.xcstrings Added localization strings for radial menu customization features and updated version to 1.1
Loop/Extensions/View+Extensions.swift Added onChange(of:initial:) helper methods to support executing actions on both initial appearance and subsequent changes
Loop/Extensions/Defaults+Extensions.swift Added enableRadialMenuCustomization defaults key to toggle customization feature
Loop/Extensions/CGGeometry+Extensions.swift Improved type safety by changing angle(to:) return type from CGFloat to Angle
Loop/Core/Observers/MouseInteractionObserver.swift Updated to use user-configured radial menu actions and handle failed keybind resolution with proper fallback
Loop/Core/Observers/MiddleClickTrigger.swift Changed callback signature from WindowAction? to WindowAction for type safety
Loop/Core/Observers/KeybindTrigger.swift Updated to use non-optional WindowAction with explicit .noSelection state
Loop/Core/Observers/Helpers/TriggerDelayTimer.swift Replaced optional WindowAction? with non-optional default value
Loop/Core/Observers/Helpers/DoubleClickTimer.swift Updated callback signature to use non-optional WindowAction
Loop/Core/LoopManager.swift Simplified logic by removing nil checks for startingAction, now guaranteed to be non-nil
Loop.xcodeproj/project.pbxproj Removed SwiftFormat build phase from project configuration

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread Loop/Localizable.xcstrings Outdated
Comment thread Loop/Localizable.xcstrings Outdated
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 43 out of 43 changed files in this pull request and generated 4 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread Loop/Localizable.xcstrings
Comment thread Loop/Extensions/View+Extensions.swift
@mrkai77 mrkai77 marked this pull request as ready for review January 3, 2026 22:12
@mrkai77 mrkai77 merged commit d6e5377 into develop Jan 3, 2026
7 checks passed
@mrkai77 mrkai77 deleted the radial-menu-customizability branch January 3, 2026 22:12
@mrkai77 mrkai77 added the Feature label Jan 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment