From 9cb8ea2ed4142c6359f31b52029fc03f2c8571ec Mon Sep 17 00:00:00 2001 From: Rain Date: Tue, 30 Jun 2026 11:31:53 -0700 Subject: [PATCH 1/2] feat(macos): add Swift Package Manager support Flutter migrates to Swift Package Manager (default in Flutter 3.44; the CocoaPods registry becomes read-only on 2026-12-02). hotkey_manager_macos was the only leanflutter desktop plugin still CocoaPods-only, blocking full CocoaPods removal in consuming apps. - Add macos/hotkey_manager_macos/Package.swift mirroring the official Flutter plugin-author template (FlutterFramework path dependency). - Declare the external HotKey dependency (soffes/HotKey >= 0.2.1) as an SPM package + product, replacing the transitive `pod 'HotKey'`. - Restructure sources into macos/hotkey_manager_macos/Classes/ per the SPM layout used by the sibling tray_manager / screen_retriever plugins. - Update the podspec source_files to the new path and bump the macOS deployment target to 10.15 (HotKey min + Flutter macOS baseline). The podspec is retained so CocoaPods builds keep working (non-breaking). --- .../macos/hotkey_manager_macos.podspec | 4 +-- ...HotKeyExtension+NSEventModifierFlags.swift | 0 .../Classes/HotkeyManagerMacosPlugin.swift | 0 .../macos/hotkey_manager_macos/Package.swift | 28 +++++++++++++++++++ 4 files changed, 30 insertions(+), 2 deletions(-) rename packages/hotkey_manager_macos/macos/{ => hotkey_manager_macos}/Classes/HotKeyExtension+NSEventModifierFlags.swift (100%) rename packages/hotkey_manager_macos/macos/{ => hotkey_manager_macos}/Classes/HotkeyManagerMacosPlugin.swift (100%) create mode 100644 packages/hotkey_manager_macos/macos/hotkey_manager_macos/Package.swift diff --git a/packages/hotkey_manager_macos/macos/hotkey_manager_macos.podspec b/packages/hotkey_manager_macos/macos/hotkey_manager_macos.podspec index 63c7356..d2d835f 100644 --- a/packages/hotkey_manager_macos/macos/hotkey_manager_macos.podspec +++ b/packages/hotkey_manager_macos/macos/hotkey_manager_macos.podspec @@ -14,11 +14,11 @@ A new Flutter plugin project. s.author = { 'Your Company' => 'email@example.com' } s.source = { :path => '.' } - s.source_files = 'Classes/**/*' + s.source_files = 'hotkey_manager_macos/Classes/**/*' s.dependency 'FlutterMacOS' s.dependency 'HotKey' - s.platform = :osx, '10.11' + s.platform = :osx, '10.15' s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } s.swift_version = '5.0' end diff --git a/packages/hotkey_manager_macos/macos/Classes/HotKeyExtension+NSEventModifierFlags.swift b/packages/hotkey_manager_macos/macos/hotkey_manager_macos/Classes/HotKeyExtension+NSEventModifierFlags.swift similarity index 100% rename from packages/hotkey_manager_macos/macos/Classes/HotKeyExtension+NSEventModifierFlags.swift rename to packages/hotkey_manager_macos/macos/hotkey_manager_macos/Classes/HotKeyExtension+NSEventModifierFlags.swift diff --git a/packages/hotkey_manager_macos/macos/Classes/HotkeyManagerMacosPlugin.swift b/packages/hotkey_manager_macos/macos/hotkey_manager_macos/Classes/HotkeyManagerMacosPlugin.swift similarity index 100% rename from packages/hotkey_manager_macos/macos/Classes/HotkeyManagerMacosPlugin.swift rename to packages/hotkey_manager_macos/macos/hotkey_manager_macos/Classes/HotkeyManagerMacosPlugin.swift diff --git a/packages/hotkey_manager_macos/macos/hotkey_manager_macos/Package.swift b/packages/hotkey_manager_macos/macos/hotkey_manager_macos/Package.swift new file mode 100644 index 0000000..5b7f478 --- /dev/null +++ b/packages/hotkey_manager_macos/macos/hotkey_manager_macos/Package.swift @@ -0,0 +1,28 @@ +// swift-tools-version: 5.9 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "hotkey_manager_macos", + platforms: [ + .macOS("10.15") + ], + products: [ + .library(name: "hotkey-manager-macos", targets: ["hotkey_manager_macos"]) + ], + dependencies: [ + .package(name: "FlutterFramework", path: "../FlutterFramework"), + .package(url: "https://github.com/soffes/HotKey", from: "0.2.1") + ], + targets: [ + .target( + name: "hotkey_manager_macos", + dependencies: [ + .product(name: "FlutterFramework", package: "FlutterFramework"), + .product(name: "HotKey", package: "HotKey") + ], + path: "Classes" + ) + ] +) From aea4c2cc21bf5b87e8c4b865b53f1d9dfc4c15eb Mon Sep 17 00:00:00 2001 From: Rain Date: Wed, 1 Jul 2026 21:42:53 -0700 Subject: [PATCH 2/2] fix(macos): import AppKit for NSEvent.ModifierFlags extension NSEvent.ModifierFlags was resolved implicitly via Cocoa in the plugin file that calls this initializer, but the extension's own file had no AppKit import. Fails to compile as a standalone x86_64 module build (SwiftPM / explicit module builds don't leak imports across files the way whole-module Cocoa umbrella resolution sometimes papered over) -- the failed extension compile then cascades into "extraneous argument label" / type-mismatch errors at the call site in HotkeyManagerMacosPlugin.swift. --- .../Classes/HotKeyExtension+NSEventModifierFlags.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/hotkey_manager_macos/macos/hotkey_manager_macos/Classes/HotKeyExtension+NSEventModifierFlags.swift b/packages/hotkey_manager_macos/macos/hotkey_manager_macos/Classes/HotKeyExtension+NSEventModifierFlags.swift index 0e4c98b..07dd709 100644 --- a/packages/hotkey_manager_macos/macos/hotkey_manager_macos/Classes/HotKeyExtension+NSEventModifierFlags.swift +++ b/packages/hotkey_manager_macos/macos/hotkey_manager_macos/Classes/HotKeyExtension+NSEventModifierFlags.swift @@ -5,6 +5,8 @@ // Created by Lijy91 on 2021/7/23. // +import AppKit + extension NSEvent.ModifierFlags { public init(pluginModifiers: Array) { self.init()