Enable Hardened Runtime

This commit is contained in:
Hariharan Mudaliar 2026-03-06 16:00:28 +05:30
commit 82b092c545
No known key found for this signature in database
GPG key ID: 025583EB0BE5640E
6 changed files with 33 additions and 112 deletions

View file

@ -19,26 +19,35 @@
7E61181C2E24071E0050006C /* MacroVisionKit in Frameworks */ = {isa = PBXBuildFile; productRef = 146BC4362D366E9B0047C66A /* MacroVisionKit */; };
7E6856482EA963FD00D261F5 /* Lock.json in Resources */ = {isa = PBXBuildFile; fileRef = 7E6856472EA963FD00D261F5 /* Lock.json */; };
7E8130402E3FB40500E08F3F /* mediaremote-adapter.pl in Resources */ = {isa = PBXBuildFile; fileRef = 7E81303D2E3FB40500E08F3F /* mediaremote-adapter.pl */; };
7E8130412E3FB40500E08F3F /* NowPlayingTestClient in Resources */ = {isa = PBXBuildFile; fileRef = 7E81303E2E3FB40500E08F3F /* NowPlayingTestClient */; };
7E8840D72E9A346700C5CB8C /* Dog waiting.json in Resources */ = {isa = PBXBuildFile; fileRef = 7E8840D62E9A346700C5CB8C /* Dog waiting.json */; };
7E8840D92E9A347000C5CB8C /* Moody Dog.json in Resources */ = {isa = PBXBuildFile; fileRef = 7E8840D82E9A347000C5CB8C /* Moody Dog.json */; };
7E8840DB2E9A347800C5CB8C /* Orange Cat Peeping.json in Resources */ = {isa = PBXBuildFile; fileRef = 7E8840DA2E9A347800C5CB8C /* Orange Cat Peeping.json */; };
7E9911B02EFD7D1B002EDFD5 /* Reindeer.json in Resources */ = {isa = PBXBuildFile; fileRef = 7E9911AF2EFD7D1B002EDFD5 /* Reindeer.json */; };
7E9918722EFDAE5B002EDFD5 /* MediaRemoteAdapter.framework in Resources */ = {isa = PBXBuildFile; fileRef = F4C1DD09EC134302938E84F6 /* MediaRemoteAdapter.framework */; };
7ECFE0C62F4A2323000DD9BD /* MijickCalendarView in Frameworks */ = {isa = PBXBuildFile; productRef = 7ECFE0C52F4A2323000DD9BD /* MijickCalendarView */; };
7EE1D73D2E6B1E0B00997219 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7EE1D73C2E6B1E0B00997219 /* ApplicationServices.framework */; };
7EE1D73F2E6B1E1200997219 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7EE1D73E2E6B1E1200997219 /* IOKit.framework */; };
7EF19C172F577040005B9929 /* SwiftTerm in Frameworks */ = {isa = PBXBuildFile; productRef = 7EF19C162F577040005B9929 /* SwiftTerm */; };
7EF1D4B92FFFCE3C008D2C32 /* ExtensionEventBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EF1D4B82FFFCE3C008D2C32 /* ExtensionEventBridge.swift */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
7EA69B1B2F5AE13500EB2D16 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 7;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
7E25ECA02E6C6C3800700E72 /* CoreBrightness.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreBrightness.framework; path = /System/Library/PrivateFrameworks/CoreBrightness.framework; sourceTree = "<absolute>"; };
7E25ECA22E6C6E2600700E72 /* OSD.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OSD.framework; path = /System/Library/PrivateFrameworks/OSD.framework; sourceTree = "<absolute>"; };
7E25ECA42E6C6E7800700E72 /* DisplayServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DisplayServices.framework; path = /System/Library/PrivateFrameworks/DisplayServices.framework; sourceTree = "<absolute>"; };
7E6856472EA963FD00D261F5 /* Lock.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = Lock.json; sourceTree = "<group>"; };
7E81303D2E3FB40500E08F3F /* mediaremote-adapter.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = "mediaremote-adapter.pl"; sourceTree = "<group>"; };
7E81303E2E3FB40500E08F3F /* NowPlayingTestClient */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; path = NowPlayingTestClient; sourceTree = "<group>"; };
7E8840D62E9A346700C5CB8C /* Dog waiting.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = "Dog waiting.json"; sourceTree = "<group>"; };
7E8840D82E9A347000C5CB8C /* Moody Dog.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = "Moody Dog.json"; sourceTree = "<group>"; };
7E8840DA2E9A347800C5CB8C /* Orange Cat Peeping.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = "Orange Cat Peeping.json"; sourceTree = "<group>"; };
@ -51,6 +60,11 @@
/* End PBXFileReference section */
/* Begin PBXFileSystemSynchronizedRootGroup section */
7EA69B1C2F5AE15C00EB2D16 /* Contents */ = {
isa = PBXFileSystemSynchronizedRootGroup;
path = Contents;
sourceTree = "<group>";
};
F54406E92CD4987A00C7AFD9 /* DynamicIsland */ = {
isa = PBXFileSystemSynchronizedRootGroup;
path = DynamicIsland;
@ -74,7 +88,6 @@
7E6118172E24071E0050006C /* Collections in Frameworks */,
7E6118162E24071E0050006C /* KeyboardShortcuts in Frameworks */,
7E6118152E24071E0050006C /* Sparkle in Frameworks */,
7ECFE0C62F4A2323000DD9BD /* MijickCalendarView in Frameworks */,
7E288D122F1659EF0020C117 /* AtollExtensionKit in Frameworks */,
7E6118142E24071E0050006C /* LaunchAtLogin in Frameworks */,
);
@ -95,7 +108,6 @@
isa = PBXGroup;
children = (
7E81303D2E3FB40500E08F3F /* mediaremote-adapter.pl */,
7E81303E2E3FB40500E08F3F /* NowPlayingTestClient */,
F4C1DD09EC134302938E84F6 /* MediaRemoteAdapter.framework */,
);
path = "mediaremote-adapter";
@ -128,6 +140,7 @@
F54406DE2CD4987A00C7AFD9 = {
isa = PBXGroup;
children = (
7EA69B1C2F5AE15C00EB2D16 /* Contents */,
7E8840D52E9A341F00C5CB8C /* LottieAnimations */,
7E81304F2E3FB42700E08F3F /* Frameworks */,
7E81303F2E3FB40500E08F3F /* mediaremote-adapter */,
@ -155,12 +168,14 @@
F54406E32CD4987A00C7AFD9 /* Sources */,
F54406E42CD4987A00C7AFD9 /* Frameworks */,
F54406E52CD4987A00C7AFD9 /* Resources */,
7EA69B1B2F5AE13500EB2D16 /* CopyFiles */,
);
buildRules = (
);
dependencies = (
);
fileSystemSynchronizedGroups = (
7EA69B1C2F5AE15C00EB2D16 /* Contents */,
F54406E92CD4987A00C7AFD9 /* DynamicIsland */,
);
name = DynamicIsland;
@ -175,7 +190,6 @@
146BC4362D366E9B0047C66A /* MacroVisionKit */,
7E61181E2E24071E0050006C /* SkyLightWindow */,
7E288D112F1659EF0020C117 /* AtollExtensionKit */,
7ECFE0C52F4A2323000DD9BD /* MijickCalendarView */,
7EF19C162F577040005B9929 /* SwiftTerm */,
);
productName = DynamicIsland;
@ -222,7 +236,6 @@
7E61181F2E24071E0050006C /* XCRemoteSwiftPackageReference "SkyLightWindow" */,
7E09D5962EB7B497005AF41D /* XCRemoteSwiftPackageReference "open-meteo" */,
7E288D102F1659EF0020C117 /* XCRemoteSwiftPackageReference "AtollExtensionKit" */,
7ECFE0C42F4A2323000DD9BD /* XCRemoteSwiftPackageReference "CalendarView" */,
7EF19C152F577040005B9929 /* XCRemoteSwiftPackageReference "SwiftTerm" */,
);
preferredProjectObjectVersion = 77;
@ -242,7 +255,6 @@
files = (
7E9918722EFDAE5B002EDFD5 /* MediaRemoteAdapter.framework in Resources */,
7E8130402E3FB40500E08F3F /* mediaremote-adapter.pl in Resources */,
7E8130412E3FB40500E08F3F /* NowPlayingTestClient in Resources */,
7E6856482EA963FD00D261F5 /* Lock.json in Resources */,
7E8840D92E9A347000C5CB8C /* Moody Dog.json in Resources */,
7E9911B02EFD7D1B002EDFD5 /* Reindeer.json in Resources */,
@ -394,7 +406,7 @@
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 4;
CURRENT_PROJECT_VERSION = 6;
DEVELOPMENT_ASSET_PATHS = "\"DynamicIsland/Preview Content\"";
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=macosx*]" = 9Y64TRM77N;
@ -436,7 +448,7 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 14.6;
MARKETING_VERSION = "1.3.0-beta";
MARKETING_VERSION = 2.0.0;
PRODUCT_BUNDLE_IDENTIFIER = com.Ebullioscopic.Atoll.dev;
PRODUCT_NAME = Atoll;
PROVISIONING_PROFILE_SPECIFIER = "";
@ -466,7 +478,7 @@
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Developer ID Application";
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 4;
CURRENT_PROJECT_VERSION = 6;
DEVELOPMENT_ASSET_PATHS = "\"DynamicIsland/Preview Content\"";
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=macosx*]" = 9Y64TRM77N;
@ -508,7 +520,7 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 14.6;
MARKETING_VERSION = "1.3.0-beta";
MARKETING_VERSION = 2.0.0;
PRODUCT_BUNDLE_IDENTIFIER = com.Ebullioscopic.Atoll;
PRODUCT_NAME = Atoll;
PROVISIONING_PROFILE_SPECIFIER = "";
@ -599,14 +611,6 @@
kind = branch;
};
};
7ECFE0C42F4A2323000DD9BD /* XCRemoteSwiftPackageReference "CalendarView" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/Mijick/CalendarView";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 1.1.1;
};
};
7EF19C152F577040005B9929 /* XCRemoteSwiftPackageReference "SwiftTerm" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/migueldeicaza/SwiftTerm";
@ -691,11 +695,6 @@
package = 7E61181F2E24071E0050006C /* XCRemoteSwiftPackageReference "SkyLightWindow" */;
productName = SkyLightWindow;
};
7ECFE0C52F4A2323000DD9BD /* MijickCalendarView */ = {
isa = XCSwiftPackageProductDependency;
package = 7ECFE0C42F4A2323000DD9BD /* XCRemoteSwiftPackageReference "CalendarView" */;
productName = MijickCalendarView;
};
7EF19C162F577040005B9929 /* SwiftTerm */ = {
isa = XCSwiftPackageProductDependency;
package = 7EF19C152F577040005B9929 /* XCRemoteSwiftPackageReference "SwiftTerm" */;

View file

@ -1,5 +1,5 @@
{
"originHash" : "e56c82928835ebd09a259cfbf30486c2ebf4c785c9519f893675e244e709ec46",
"originHash" : "d05fd8c8292418b6563db3202a99d4ef453b0f70d83d4d4cf879984c14452017",
"pins" : [
{
"identity" : "atollextensionkit",
@ -10,15 +10,6 @@
"revision" : "ebe35277572a349fad26abeb6fc552cb5251d584"
}
},
{
"identity" : "calendarview",
"kind" : "remoteSourceControl",
"location" : "https://github.com/Mijick/CalendarView",
"state" : {
"revision" : "168cf14a50d33684caa2a411bbd0b3f988e9dff6",
"version" : "1.1.1"
}
},
{
"identity" : "defaults",
"kind" : "remoteSourceControl",

View file

@ -1607,10 +1607,6 @@
}
}
},
"±10 Seconds" : {
"comment" : "Display name for the \"±10 Seconds\" music skip behavior option.",
"isCommentAutoGenerated" : true
},
"0" : {
"comment" : "A label displayed in a circular gauge to indicate the minimum battery level.",
"isCommentAutoGenerated" : true,
@ -1927,10 +1923,6 @@
}
}
},
"Accent" : {
"comment" : "Display name for the \"Accent\" caps lock indicator tint mode.",
"isCommentAutoGenerated" : true
},
"Accent color" : {
"localizations" : {
"ar" : {
@ -2276,10 +2268,6 @@
}
}
},
"Adaptive gradient" : {
"comment" : "Name of the timer icon color mode option that uses an adaptive gradient.",
"isCommentAutoGenerated" : true
},
"Add" : {
"localizations" : {
"ar" : {
@ -3875,10 +3863,6 @@
}
}
},
"Apple Music" : {
"comment" : "Names for the different media player types.",
"isCommentAutoGenerated" : true
},
"Applies the notch-style parallax effect to the lock screen media widget album art." : {
"localizations" : {
"pt-BR" : {
@ -4293,10 +4277,6 @@
}
}
},
"Bar" : {
"comment" : "Localized name for the \"Bar\" timer progress style.",
"isCommentAutoGenerated" : true
},
"Battery" : {
"localizations" : {
"ar" : {
@ -8566,10 +8546,6 @@
}
}
},
"Digital" : {
"comment" : "The name of the \"Digital\" timer style.",
"isCommentAutoGenerated" : true
},
"Dimensions" : {
"localizations" : {
"pt-BR" : {
@ -11968,10 +11944,6 @@
}
}
},
"Green" : {
"comment" : "Display name for the \"Green\" Caps Lock Indicator Tint Mode.",
"isCommentAutoGenerated" : true
},
"Height:" : {
"extractionState" : "stale",
"localizations" : {
@ -15652,6 +15624,7 @@
}
},
"Minutes" : {
"extractionState" : "stale",
"localizations" : {
"fr" : {
"stringUnit" : {
@ -17865,10 +17838,6 @@
}
}
},
"Now Playing" : {
"comment" : "Localized name for each media controller type.",
"isCommentAutoGenerated" : true
},
"Number of lines kept in the scrollback buffer. Higher values use more memory." : {
},
@ -18244,10 +18213,6 @@
}
}
},
"Panel" : {
"comment" : "Name for the \"Panel\" clipboard display mode.",
"isCommentAutoGenerated" : true
},
"Panel mode shows clipboard in a floating window near the notch." : {
"comment" : "A description of the \"Panel\" clipboard display mode.",
"isCommentAutoGenerated" : true,
@ -19862,10 +19827,6 @@
}
}
},
"Ring" : {
"comment" : "Localized name for the 'Ring' timer progress style.",
"isCommentAutoGenerated" : true
},
"Rotation:" : {
"extractionState" : "stale",
"localizations" : {
@ -20692,10 +20653,6 @@
}
}
},
"Separate Tab" : {
"comment" : "Name of the clipboard display mode option that opens a separate tab for pasting.",
"isCommentAutoGenerated" : true
},
"Separate Tab mode integrates Copied Items and Notes into a single view. If both are enabled, Notes appear on the right and Clipboard on the left." : {
"comment" : "A description of the \"Separate Tab\" clipboard display mode.",
"isCommentAutoGenerated" : true,
@ -21757,14 +21714,6 @@
}
}
},
"Shows screen assistant as a dropdown attached to the AI button" : {
"comment" : "Description of the \"popover\" display mode for the screen assistant.",
"isCommentAutoGenerated" : true
},
"Shows screen assistant in a floating panel near the notch" : {
"comment" : "Description of the \"panel\" display mode for the screen assistant.",
"isCommentAutoGenerated" : true
},
"Shows the model's reasoning process before the final answer" : {
"localizations" : {
"fr" : {
@ -21827,10 +21776,6 @@
}
}
},
"Skip forward or backward by ten seconds" : {
"comment" : "Description of a music skip behavior option.",
"isCommentAutoGenerated" : true
},
"Slider color" : {
"localizations" : {
"ar" : {
@ -22399,10 +22344,6 @@
}
}
},
"Spotify" : {
"comment" : "Add more media player types here.",
"isCommentAutoGenerated" : true
},
"Square" : {
"localizations" : {
"ar" : {
@ -22515,10 +22456,6 @@
},
"Standard notch media controls are hidden. Re-enable the toggle above to restore them." : {
},
"Standard previous/next track controls" : {
"comment" : "Description of a music skip behavior option that uses standard previous/next track controls.",
"isCommentAutoGenerated" : true
},
"Start" : {
"localizations" : {
@ -23880,10 +23817,6 @@
},
"shouldTranslate" : false
},
"Track Skip" : {
"comment" : "Name of the music skip behavior option that skips to the next track.",
"isCommentAutoGenerated" : true
},
"Transform" : {
"extractionState" : "stale",
"localizations" : {
@ -25805,10 +25738,6 @@
"comment" : "A footer note explaining the app's funding.",
"isCommentAutoGenerated" : true
},
"Youtube Music" : {
"comment" : "Option in settings to choose a media player that streams music from YouTube Music.",
"isCommentAutoGenerated" : true
},
"YouTube Music requires this third-party app to be installed: " : {
"localizations" : {
"ar" : {

View file

@ -32,9 +32,6 @@ final class MediaChecker: Sendable {
func checkDeprecationStatus() async throws -> Bool {
guard let scriptURL = Bundle.main.url(forResource: "mediaremote-adapter", withExtension: "pl"),
let nowPlayingTestClientPath = Bundle.main.url(forResource: "MediaRemoteAdapterTestClient", withExtension: nil)?.path,
//let frameworkPath = Bundle.main.privateFrameworksPath?.appending("/MediaRemoteAdapter.framework")
//let frameworkPath = Optional("/System/Library/PrivateFrameworks/MediaRemoteAdapter.framework")
let frameworkPath =
Bundle.main.resourceURL?
.appendingPathComponent("MediaRemoteAdapter.framework")
@ -43,6 +40,11 @@ final class MediaChecker: Sendable {
throw MediaCheckerError.missingResources
}
let nowPlayingTestClientPath =
Bundle.main.bundleURL
.appendingPathComponent("Contents/Helpers/MediaRemoteAdapterTestClient")
.path
let process = Process()
process.executableURL = URL(fileURLWithPath: "/usr/bin/perl")
process.arguments = [scriptURL.path, frameworkPath, nowPlayingTestClientPath, "test"]

View file

@ -691,7 +691,7 @@ extension Defaults.Keys {
static let menubarIcon = Key<Bool>("menubarIcon", default: true)
static let showOnAllDisplays = Key<Bool>("showOnAllDisplays", default: false)
static let automaticallySwitchDisplay = Key<Bool>("automaticallySwitchDisplay", default: true)
static let releaseName = Key<String>("releaseName", default: "Bora Bora")
static let releaseName = Key<String>("releaseName", default: "Seychelles")
static let hideDynamicIslandFromScreenCapture = Key<Bool>("hideDynamicIslandFromScreenCapture", default: false)
// MARK: Behavior