Skip to content

4.0#796

Merged
Caldis merged 147 commits intomasterfrom
feature/button
Nov 1, 2025
Merged

4.0#796
Caldis merged 147 commits intomasterfrom
feature/button

Conversation

@Caldis
Copy link
Copy Markdown
Owner

@Caldis Caldis commented Nov 1, 2025

No description provided.

Copilot AI review requested due to automatic review settings November 1, 2025 16:34
@Caldis Caldis merged commit 1ee6dff into master Nov 1, 2025
4 checks passed
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 is a major refactoring pull request that restructures the Mos application's architecture, focusing on modernizing the preferences UI, improving internationalization, and enhancing the button binding and scrolling features.

Key Changes:

  • Refactored preferences panel from "Advanced" to "Scrolling" and "Application" views, consolidating scroll settings
  • Removed legacy string files and replaced i18n references with NSLocalizedString for better localization
  • Introduced new button binding system with ButtonBinding, RecordedEvent, and SystemShortcut infrastructure
  • Enhanced scroll simulation with trackpad phase support and improved momentum handling

Reviewed Changes

Copilot reviewed 123 out of 170 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
Multiple .lproj/Main.strings Deleted legacy localization files (full file removal)
PreferencesScrollingViewController.swift New consolidated scrolling preferences view with enhanced UI controls
PreferencesApplicationViewController.swift Renamed from Exception view, manages per-application settings
Application.swift Renamed from ExceptionalApplication, updated data model
SystemShortcut.swift New system shortcut definitions and management
ShortcutManager.swift / ShortcutExecutor.swift New shortcut handling infrastructure
ButtonTableCellView.swift New UI component for button binding configuration
ScrollPoster.swift Enhanced with trackpad phase simulation and momentum tracking
WelcomeViewController.swift / IntroductionViewController.swift Updated to use NSLocalizedString
Constants.swift Major refactoring of options structure, removing MODIFIER_KEY structs

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

Comment on lines +27 to +29
public init(withData targetData: Data, matchKey targetDictionaryKey: String = "identity", forObserver observerHandler: @escaping ()->Void = {()}) throws {
let decoder = JSONDecoder()
let targetArray = try! decoder.decode([T].self, from: targetData) as [T]
let targetArray = try decoder.decode([T].self, from: targetData)
Copy link

Copilot AI Nov 1, 2025

Choose a reason for hiding this comment

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

The initializer signature changed from force-try (try!) to throwing, which is a breaking API change. Any existing code calling this initializer without try/catch will fail to compile. Consider documenting this breaking change or providing a migration path.

Copilot uses AI. Check for mistakes.
Comment on lines +38 to +41
private let scrollDurationLockedDescription = NSLocalizedString(
"scrollDurationLockedMessage",
comment: "Message shown when simulate trackpad locks the duration setting"
)
Copy link

Copilot AI Nov 1, 2025

Choose a reason for hiding this comment

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

The localization key 'scrollDurationLockedMessage' should be documented in all localization files. Ensure this key exists in all .lproj directories, otherwise users will see the raw key name.

Copilot uses AI. Check for mistakes.
static func == (l: OPTIONS_SCROLL_DEFAULT, r: OPTIONS_SCROLL_DEFAULT) -> Bool {
return (
l.smooth == r.smooth &&
l.reverse == r.smooth &&
Copy link

Copilot AI Nov 1, 2025

Choose a reason for hiding this comment

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

Comparison logic error: comparing l.reverse with r.smooth instead of r.reverse. This will cause incorrect equality checks for OPTIONS_SCROLL_DEFAULT instances.

Copilot uses AI. Check for mistakes.
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.

2 participants