diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 4aff9b7..32045bd 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -15,6 +15,8 @@ jobs: - uses: actions/checkout@v5 - uses: swift-actions/setup-swift@v2 - uses: m-takuma/setup-swiftlint@1.0.0 + with: + swiftlint-version: 0.61.0 - name: Print SwiftLint version run: swiftlint --version - name: Run SwiftLint diff --git a/Mist.xcodeproj/project.pbxproj b/Mist.xcodeproj/project.pbxproj index 7493225..b468841 100644 --- a/Mist.xcodeproj/project.pbxproj +++ b/Mist.xcodeproj/project.pbxproj @@ -100,6 +100,7 @@ 398A13222B78BA6D00F96F7E /* LogView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 398A13212B78BA6D00F96F7E /* LogView.swift */; }; 398A13472B78F22A00F96F7E /* LogEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 398A13462B78F22A00F96F7E /* LogEntry.swift */; }; 398BE6B52B62450500FE0C29 /* FloatingAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 398BE6B42B62450500FE0C29 /* FloatingAlert.swift */; }; + 399F36B82E82752400B61274 /* Mist.icon in Resources */ = {isa = PBXBuildFile; fileRef = 399F36B72E82752400B61274 /* Mist.icon */; }; 39CA25E32941D8BB0030711E /* FileAttributesUpdater.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39CA25E22941D8BB0030711E /* FileAttributesUpdater.swift */; }; 39CB5E3D293F5C2E00CFDBB8 /* Catalog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39CB5E3C293F5C2E00CFDBB8 /* Catalog.swift */; }; 39CB5E3F2941486D00CFDBB8 /* CatalogSeedType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39CB5E3E2941486D00CFDBB8 /* CatalogSeedType.swift */; }; @@ -265,6 +266,7 @@ 398A13212B78BA6D00F96F7E /* LogView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogView.swift; sourceTree = ""; }; 398A13462B78F22A00F96F7E /* LogEntry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogEntry.swift; sourceTree = ""; }; 398BE6B42B62450500FE0C29 /* FloatingAlert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FloatingAlert.swift; sourceTree = ""; }; + 399F36B72E82752400B61274 /* Mist.icon */ = {isa = PBXFileReference; lastKnownFileType = folder.iconcomposer.icon; path = Mist.icon; sourceTree = ""; }; 39CA25E22941D8BB0030711E /* FileAttributesUpdater.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileAttributesUpdater.swift; sourceTree = ""; }; 39CB5E3C293F5C2E00CFDBB8 /* Catalog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Catalog.swift; sourceTree = ""; }; 39CB5E3E2941486D00CFDBB8 /* CatalogSeedType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CatalogSeedType.swift; sourceTree = ""; }; @@ -372,6 +374,7 @@ 39252A76285A849F00956C74 /* AppDelegate.swift */, 390451AD2856E1DA00E0B563 /* Assets.xcassets */, 39CF55A628614F8A006FB5D2 /* Info.plist */, + 399F36B72E82752400B61274 /* Mist.icon */, 390451A92856E1D900E0B563 /* MistApp.swift */, 3935F47728643B1F00760AB0 /* UserNotificationCenterDelegate.swift */, 390451BD2856E32A00E0B563 /* Extensions */, @@ -719,6 +722,7 @@ buildActionMask = 2147483647; files = ( 390451AE2856E1DA00E0B563 /* Assets.xcassets in Resources */, + 399F36B82E82752400B61274 /* Mist.icon in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1106,14 +1110,14 @@ 390451B62856E1DA00E0B563 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon - Sequoia"; + ASSETCATALOG_COMPILER_APPICON_NAME = Mist; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Developer ID Application"; CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 0.20.1; + CURRENT_PROJECT_VERSION = 0.30; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 7K3HVCLV7Z; ENABLE_HARDENED_RUNTIME = YES; @@ -1129,7 +1133,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 12.0; - MARKETING_VERSION = 0.20.1; + MARKETING_VERSION = 0.30; PRODUCT_BUNDLE_IDENTIFIER = com.ninxsoft.mist; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; @@ -1140,14 +1144,14 @@ 390451B72856E1DA00E0B563 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon - Sequoia"; + ASSETCATALOG_COMPILER_APPICON_NAME = Mist; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Developer ID Application"; CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 0.20.1; + CURRENT_PROJECT_VERSION = 0.30; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 7K3HVCLV7Z; ENABLE_HARDENED_RUNTIME = YES; @@ -1163,7 +1167,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 12.0; - MARKETING_VERSION = 0.20.1; + MARKETING_VERSION = 0.30; PRODUCT_BUNDLE_IDENTIFIER = com.ninxsoft.mist; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; diff --git a/Mist/Assets.xcassets/AccentColor.colorset/Contents.json b/Mist/Assets.xcassets/AccentColor.colorset/Contents.json index 5cdc015..a8ff7be 100644 --- a/Mist/Assets.xcassets/AccentColor.colorset/Contents.json +++ b/Mist/Assets.xcassets/AccentColor.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.773", - "green" : "0.416", - "red" : "0.012" + "blue" : "213", + "green" : "88", + "red" : "0" } }, "idiom" : "mac" @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.773", - "green" : "0.416", - "red" : "0.012" + "blue" : "213", + "green" : "88", + "red" : "0" } }, "idiom" : "mac" @@ -41,9 +41,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.796", - "green" : "0.522", - "red" : "0.008" + "blue" : "245", + "green" : "101", + "red" : "0" } }, "idiom" : "mac" diff --git a/Mist/Assets.xcassets/App Icon - Monterey.appiconset/Contents.json b/Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/Contents.json similarity index 100% rename from Mist/Assets.xcassets/App Icon - Monterey.appiconset/Contents.json rename to Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/Contents.json diff --git a/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_128x128.png b/Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/icon_128x128.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_128x128.png rename to Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/icon_128x128.png diff --git a/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_128x128@2x.png b/Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/icon_128x128@2x.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_128x128@2x.png rename to Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/icon_128x128@2x.png diff --git a/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_16x16.png b/Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/icon_16x16.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_16x16.png rename to Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/icon_16x16.png diff --git a/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_16x16@2x.png b/Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/icon_16x16@2x.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_16x16@2x.png rename to Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/icon_16x16@2x.png diff --git a/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_256x256.png b/Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/icon_256x256.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_256x256.png rename to Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/icon_256x256.png diff --git a/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_256x256@2x.png b/Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/icon_256x256@2x.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_256x256@2x.png rename to Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/icon_256x256@2x.png diff --git a/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_32x32.png b/Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/icon_32x32.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_32x32.png rename to Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/icon_32x32.png diff --git a/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_32x32@2x.png b/Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/icon_32x32@2x.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_32x32@2x.png rename to Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/icon_32x32@2x.png diff --git a/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_512x512.png b/Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/icon_512x512.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_512x512.png rename to Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/icon_512x512.png diff --git a/Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_512x512@2x.png b/Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/icon_512x512@2x.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Monterey.appiconset/icon_512x512@2x.png rename to Mist/Assets.xcassets/App Icon - macOS Monterey.appiconset/icon_512x512@2x.png diff --git a/Mist/Assets.xcassets/App Icon - Sequoia.appiconset/Contents.json b/Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/Contents.json similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sequoia.appiconset/Contents.json rename to Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/Contents.json diff --git a/Mist/Assets.xcassets/App Icon - Sequoia.appiconset/icon_128x128.png b/Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/icon_128x128.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sequoia.appiconset/icon_128x128.png rename to Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/icon_128x128.png diff --git a/Mist/Assets.xcassets/App Icon - Sequoia.appiconset/icon_128x128@2x.png b/Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/icon_128x128@2x.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sequoia.appiconset/icon_128x128@2x.png rename to Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/icon_128x128@2x.png diff --git a/Mist/Assets.xcassets/App Icon - Sequoia.appiconset/icon_16x16.png b/Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/icon_16x16.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sequoia.appiconset/icon_16x16.png rename to Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/icon_16x16.png diff --git a/Mist/Assets.xcassets/App Icon - Sequoia.appiconset/icon_16x16@2x.png b/Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/icon_16x16@2x.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sequoia.appiconset/icon_16x16@2x.png rename to Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/icon_16x16@2x.png diff --git a/Mist/Assets.xcassets/App Icon - Sequoia.appiconset/icon_256x256.png b/Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/icon_256x256.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sequoia.appiconset/icon_256x256.png rename to Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/icon_256x256.png diff --git a/Mist/Assets.xcassets/App Icon - Sequoia.appiconset/icon_256x256@2x.png b/Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/icon_256x256@2x.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sequoia.appiconset/icon_256x256@2x.png rename to Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/icon_256x256@2x.png diff --git a/Mist/Assets.xcassets/App Icon - Sequoia.appiconset/icon_32x32.png b/Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/icon_32x32.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sequoia.appiconset/icon_32x32.png rename to Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/icon_32x32.png diff --git a/Mist/Assets.xcassets/App Icon - Sequoia.appiconset/icon_32x32@2x.png b/Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/icon_32x32@2x.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sequoia.appiconset/icon_32x32@2x.png rename to Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/icon_32x32@2x.png diff --git a/Mist/Assets.xcassets/App Icon - Sequoia.appiconset/icon_512x512.png b/Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/icon_512x512.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sequoia.appiconset/icon_512x512.png rename to Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/icon_512x512.png diff --git a/Mist/Assets.xcassets/App Icon - Sequoia.appiconset/icon_512x512@2x.png b/Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/icon_512x512@2x.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sequoia.appiconset/icon_512x512@2x.png rename to Mist/Assets.xcassets/App Icon - macOS Sequoia.appiconset/icon_512x512@2x.png diff --git a/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/Contents.json b/Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/Contents.json similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sonoma.appiconset/Contents.json rename to Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/Contents.json diff --git a/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_128x128.png b/Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/icon_128x128.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_128x128.png rename to Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/icon_128x128.png diff --git a/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_128x128@2x.png b/Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/icon_128x128@2x.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_128x128@2x.png rename to Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/icon_128x128@2x.png diff --git a/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_16x16.png b/Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/icon_16x16.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_16x16.png rename to Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/icon_16x16.png diff --git a/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_16x16@2x.png b/Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/icon_16x16@2x.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_16x16@2x.png rename to Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/icon_16x16@2x.png diff --git a/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_256x256.png b/Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/icon_256x256.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_256x256.png rename to Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/icon_256x256.png diff --git a/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_256x256@2x.png b/Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/icon_256x256@2x.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_256x256@2x.png rename to Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/icon_256x256@2x.png diff --git a/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_32x32.png b/Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/icon_32x32.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_32x32.png rename to Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/icon_32x32.png diff --git a/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_32x32@2x.png b/Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/icon_32x32@2x.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_32x32@2x.png rename to Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/icon_32x32@2x.png diff --git a/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_512x512.png b/Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/icon_512x512.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_512x512.png rename to Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/icon_512x512.png diff --git a/Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_512x512@2x.png b/Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/icon_512x512@2x.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Sonoma.appiconset/icon_512x512@2x.png rename to Mist/Assets.xcassets/App Icon - macOS Sonoma.appiconset/icon_512x512@2x.png diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/Contents.json b/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/Contents.json similarity index 100% rename from Mist/Assets.xcassets/App Icon - Ventura.appiconset/Contents.json rename to Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/Contents.json diff --git a/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_128x128.png b/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_128x128.png new file mode 100644 index 0000000..3f535ec Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_128x128.png differ diff --git a/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_128x128@2x.png b/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_128x128@2x.png new file mode 100644 index 0000000..9f11c87 Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_128x128@2x.png differ diff --git a/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_16x16.png b/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_16x16.png new file mode 100644 index 0000000..cfa0384 Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_16x16.png differ diff --git a/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_16x16@2x.png b/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_16x16@2x.png new file mode 100644 index 0000000..c085097 Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_16x16@2x.png differ diff --git a/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_256x256.png b/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_256x256.png new file mode 100644 index 0000000..9f11c87 Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_256x256.png differ diff --git a/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_256x256@2x.png b/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_256x256@2x.png new file mode 100644 index 0000000..60a34d0 Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_256x256@2x.png differ diff --git a/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_32x32.png b/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_32x32.png new file mode 100644 index 0000000..c085097 Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_32x32.png differ diff --git a/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_32x32@2x.png b/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_32x32@2x.png new file mode 100644 index 0000000..3e984a1 Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_32x32@2x.png differ diff --git a/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_512x512.png b/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_512x512.png new file mode 100644 index 0000000..60a34d0 Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_512x512.png differ diff --git a/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_512x512@2x.png b/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_512x512@2x.png new file mode 100644 index 0000000..4c7ff02 Binary files /dev/null and b/Mist/Assets.xcassets/App Icon - macOS Tahoe.appiconset/icon_512x512@2x.png differ diff --git a/Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/Contents.json b/Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/Contents.json new file mode 100644 index 0000000..64dc11e --- /dev/null +++ b/Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "filename" : "icon_16x16.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "16x16" + }, + { + "filename" : "icon_16x16@2x.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "filename" : "icon_32x32.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "filename" : "icon_32x32@2x.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "filename" : "icon_128x128.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "128x128" + }, + { + "filename" : "icon_128x128@2x.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "filename" : "icon_256x256.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "filename" : "icon_256x256@2x.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "filename" : "icon_512x512.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "filename" : "icon_512x512@2x.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_128x128.png b/Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/icon_128x128.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_128x128.png rename to Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/icon_128x128.png diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_128x128@2x.png b/Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/icon_128x128@2x.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_128x128@2x.png rename to Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/icon_128x128@2x.png diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_16x16.png b/Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/icon_16x16.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_16x16.png rename to Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/icon_16x16.png diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_16x16@2x.png b/Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/icon_16x16@2x.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_16x16@2x.png rename to Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/icon_16x16@2x.png diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_256x256.png b/Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/icon_256x256.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_256x256.png rename to Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/icon_256x256.png diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_256x256@2x.png b/Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/icon_256x256@2x.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_256x256@2x.png rename to Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/icon_256x256@2x.png diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_32x32.png b/Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/icon_32x32.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_32x32.png rename to Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/icon_32x32.png diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_32x32@2x.png b/Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/icon_32x32@2x.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_32x32@2x.png rename to Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/icon_32x32@2x.png diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_512x512.png b/Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/icon_512x512.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_512x512.png rename to Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/icon_512x512.png diff --git a/Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_512x512@2x.png b/Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/icon_512x512@2x.png similarity index 100% rename from Mist/Assets.xcassets/App Icon - Ventura.appiconset/icon_512x512@2x.png rename to Mist/Assets.xcassets/App Icon - macOS Ventura.appiconset/icon_512x512@2x.png diff --git a/Mist/Assets.xcassets/App Icon Preview - Monterey.imageset/App Icon Preview - Monterey.png b/Mist/Assets.xcassets/App Icon Preview - macOS Monterey.imageset/App Icon Preview - macOS Monterey.png similarity index 100% rename from Mist/Assets.xcassets/App Icon Preview - Monterey.imageset/App Icon Preview - Monterey.png rename to Mist/Assets.xcassets/App Icon Preview - macOS Monterey.imageset/App Icon Preview - macOS Monterey.png diff --git a/Mist/Assets.xcassets/App Icon Preview - macOS Monterey.imageset/Contents.json b/Mist/Assets.xcassets/App Icon Preview - macOS Monterey.imageset/Contents.json new file mode 100644 index 0000000..9eddbbc --- /dev/null +++ b/Mist/Assets.xcassets/App Icon Preview - macOS Monterey.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "App Icon Preview - macOS Monterey.png", + "idiom" : "mac" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mist/Assets.xcassets/App Icon Preview - Sequoia.imageset/App Icon Preview - Sequoia.png b/Mist/Assets.xcassets/App Icon Preview - macOS Sequoia.imageset/App Icon Preview - macOS Sequoia.png similarity index 100% rename from Mist/Assets.xcassets/App Icon Preview - Sequoia.imageset/App Icon Preview - Sequoia.png rename to Mist/Assets.xcassets/App Icon Preview - macOS Sequoia.imageset/App Icon Preview - macOS Sequoia.png diff --git a/Mist/Assets.xcassets/App Icon Preview - macOS Sequoia.imageset/Contents.json b/Mist/Assets.xcassets/App Icon Preview - macOS Sequoia.imageset/Contents.json new file mode 100644 index 0000000..36517ec --- /dev/null +++ b/Mist/Assets.xcassets/App Icon Preview - macOS Sequoia.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "App Icon Preview - macOS Sequoia.png", + "idiom" : "mac" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mist/Assets.xcassets/App Icon Preview - Sonoma.imageset/App Icon Preview - Sonoma.png b/Mist/Assets.xcassets/App Icon Preview - macOS Sonoma.imageset/App Icon Preview - macOS Sonoma.png similarity index 100% rename from Mist/Assets.xcassets/App Icon Preview - Sonoma.imageset/App Icon Preview - Sonoma.png rename to Mist/Assets.xcassets/App Icon Preview - macOS Sonoma.imageset/App Icon Preview - macOS Sonoma.png diff --git a/Mist/Assets.xcassets/App Icon Preview - Ventura.imageset/Contents.json b/Mist/Assets.xcassets/App Icon Preview - macOS Sonoma.imageset/Contents.json similarity index 66% rename from Mist/Assets.xcassets/App Icon Preview - Ventura.imageset/Contents.json rename to Mist/Assets.xcassets/App Icon Preview - macOS Sonoma.imageset/Contents.json index bf81c9e..e523cc3 100644 --- a/Mist/Assets.xcassets/App Icon Preview - Ventura.imageset/Contents.json +++ b/Mist/Assets.xcassets/App Icon Preview - macOS Sonoma.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "App Icon Preview - Ventura.png", + "filename" : "App Icon Preview - macOS Sonoma.png", "idiom" : "mac" } ], diff --git a/Mist/Assets.xcassets/App Icon Preview - macOS Tahoe.imageset/App Icon Preview - macOS Tahoe.png b/Mist/Assets.xcassets/App Icon Preview - macOS Tahoe.imageset/App Icon Preview - macOS Tahoe.png new file mode 100644 index 0000000..9f11c87 Binary files /dev/null and b/Mist/Assets.xcassets/App Icon Preview - macOS Tahoe.imageset/App Icon Preview - macOS Tahoe.png differ diff --git a/Mist/Assets.xcassets/App Icon Preview - Monterey.imageset/Contents.json b/Mist/Assets.xcassets/App Icon Preview - macOS Tahoe.imageset/Contents.json similarity index 67% rename from Mist/Assets.xcassets/App Icon Preview - Monterey.imageset/Contents.json rename to Mist/Assets.xcassets/App Icon Preview - macOS Tahoe.imageset/Contents.json index 3f777f9..1a79abd 100644 --- a/Mist/Assets.xcassets/App Icon Preview - Monterey.imageset/Contents.json +++ b/Mist/Assets.xcassets/App Icon Preview - macOS Tahoe.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "App Icon Preview - Monterey.png", + "filename" : "App Icon Preview - macOS Tahoe.png", "idiom" : "mac" } ], diff --git a/Mist/Assets.xcassets/App Icon Preview - Ventura.imageset/App Icon Preview - Ventura.png b/Mist/Assets.xcassets/App Icon Preview - macOS Ventura.imageset/App Icon Preview - macOS Ventura.png similarity index 100% rename from Mist/Assets.xcassets/App Icon Preview - Ventura.imageset/App Icon Preview - Ventura.png rename to Mist/Assets.xcassets/App Icon Preview - macOS Ventura.imageset/App Icon Preview - macOS Ventura.png diff --git a/Mist/Assets.xcassets/App Icon Preview - macOS Ventura.imageset/Contents.json b/Mist/Assets.xcassets/App Icon Preview - macOS Ventura.imageset/Contents.json new file mode 100644 index 0000000..d7627fe --- /dev/null +++ b/Mist/Assets.xcassets/App Icon Preview - macOS Ventura.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "App Icon Preview - macOS Ventura.png", + "idiom" : "mac" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mist/Assets.xcassets/Application - macOS Tahoe.imageset/Application - macOS Tahoe.png b/Mist/Assets.xcassets/Application - macOS Tahoe.imageset/Application - macOS Tahoe.png new file mode 100644 index 0000000..46ac58b Binary files /dev/null and b/Mist/Assets.xcassets/Application - macOS Tahoe.imageset/Application - macOS Tahoe.png differ diff --git a/Mist/Assets.xcassets/App Icon Preview - Sonoma.imageset/Contents.json b/Mist/Assets.xcassets/Application - macOS Tahoe.imageset/Contents.json similarity index 69% rename from Mist/Assets.xcassets/App Icon Preview - Sonoma.imageset/Contents.json rename to Mist/Assets.xcassets/Application - macOS Tahoe.imageset/Contents.json index b929aa8..f8e7246 100644 --- a/Mist/Assets.xcassets/App Icon Preview - Sonoma.imageset/Contents.json +++ b/Mist/Assets.xcassets/Application - macOS Tahoe.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "App Icon Preview - Sonoma.png", + "filename" : "Application - macOS Tahoe.png", "idiom" : "mac" } ], diff --git a/Mist/Assets.xcassets/App Icon Preview - Sequoia.imageset/Contents.json b/Mist/Assets.xcassets/macOS Tahoe.imageset/Contents.json similarity index 68% rename from Mist/Assets.xcassets/App Icon Preview - Sequoia.imageset/Contents.json rename to Mist/Assets.xcassets/macOS Tahoe.imageset/Contents.json index 279b1dc..920cd83 100644 --- a/Mist/Assets.xcassets/App Icon Preview - Sequoia.imageset/Contents.json +++ b/Mist/Assets.xcassets/macOS Tahoe.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "App Icon Preview - Sequoia.png", + "filename" : "macOS Tahoe.png", "idiom" : "mac" } ], diff --git a/Mist/Assets.xcassets/macOS Tahoe.imageset/macOS Tahoe.png b/Mist/Assets.xcassets/macOS Tahoe.imageset/macOS Tahoe.png new file mode 100644 index 0000000..89e30ff Binary files /dev/null and b/Mist/Assets.xcassets/macOS Tahoe.imageset/macOS Tahoe.png differ diff --git a/Mist/Helpers/InstallerCreator.swift b/Mist/Helpers/InstallerCreator.swift index 76c985f..37a9f35 100644 --- a/Mist/Helpers/InstallerCreator.swift +++ b/Mist/Helpers/InstallerCreator.swift @@ -28,11 +28,15 @@ enum InstallerCreator { packageURL = URL(fileURLWithPath: "/Volumes/Install \(installer.name)").appendingPathComponent(package.filename.replacingOccurrences(of: ".dmg", with: ".pkg")) } else { - guard let url: URL = URL(string: installer.distributionURL) else { - throw MistError.invalidURL(installer.distributionURL) - } + if installer.containsInstallAssistantPackage { + packageURL = URL(fileURLWithPath: cacheDirectory).appendingPathComponent(installer.id).appendingPathComponent("InstallAssistant.pkg") + } else { + guard let url: URL = URL(string: installer.distributionURL) else { + throw MistError.invalidURL(installer.distributionURL) + } - packageURL = URL(fileURLWithPath: cacheDirectory).appendingPathComponent(installer.id).appendingPathComponent(url.lastPathComponent) + packageURL = URL(fileURLWithPath: cacheDirectory).appendingPathComponent(installer.id).appendingPathComponent(url.lastPathComponent) + } } try await DirectoryRemover.remove(installer.temporaryInstallerURL) diff --git a/Mist/Mist.icon/Assets/Mist.png b/Mist/Mist.icon/Assets/Mist.png new file mode 100644 index 0000000..7d2517e Binary files /dev/null and b/Mist/Mist.icon/Assets/Mist.png differ diff --git a/Mist/Mist.icon/icon.json b/Mist/Mist.icon/icon.json new file mode 100644 index 0000000..3a02529 --- /dev/null +++ b/Mist/Mist.icon/icon.json @@ -0,0 +1,27 @@ +{ + "fill" : "automatic", + "groups" : [ + { + "layers" : [ + { + "glass" : false, + "image-name" : "Mist.png", + "name" : "Mist" + } + ], + "shadow" : { + "kind" : "neutral", + "opacity" : 0.5 + }, + "translucency" : { + "enabled" : true, + "value" : 0.5 + } + } + ], + "supported-platforms" : { + "squares" : [ + "macOS" + ] + } +} \ No newline at end of file diff --git a/Mist/MistApp.swift b/Mist/MistApp.swift index 6724090..691d6e6 100644 --- a/Mist/MistApp.swift +++ b/Mist/MistApp.swift @@ -26,7 +26,9 @@ struct MistApp: App { hideZoomButton() } .onAppear { - setAppIcon() + if #unavailable(macOS 26) { + setAppIcon() + } } } .fixedWindow() diff --git a/Mist/Model/AppIcon.swift b/Mist/Model/AppIcon.swift index 76945fa..9c4fef8 100644 --- a/Mist/Model/AppIcon.swift +++ b/Mist/Model/AppIcon.swift @@ -8,12 +8,13 @@ import Foundation enum AppIcon: String, CaseIterable, Identifiable { - case monterey = "Monterey" - case ventura = "Ventura" - case sonoma = "Sonoma" - case sequoia = "Sequoia" + case monterey = "macOS Monterey" + case ventura = "macOS Ventura" + case sonoma = "macOS Sonoma" + case sequoia = "macOS Sequoia" + case tahoe = "macOS Tahoe" - static let `default`: AppIcon = .sequoia + static let `default`: AppIcon = .tahoe var id: String { rawValue diff --git a/Mist/Model/Catalog.swift b/Mist/Model/Catalog.swift index 1cafa1f..40faa02 100644 --- a/Mist/Model/Catalog.swift +++ b/Mist/Model/Catalog.swift @@ -17,7 +17,7 @@ struct Catalog: Identifiable, Decodable, Equatable { } static var example: Catalog { - Catalog(type: .ventura, standard: true, customerSeed: false, developerSeed: false, publicSeed: false) + Catalog(type: .tahoe, standard: true, customerSeed: false, developerSeed: false, publicSeed: false) } var id: UUID = .init() diff --git a/Mist/Model/CatalogType.swift b/Mist/Model/CatalogType.swift index 023566b..c62a963 100644 --- a/Mist/Model/CatalogType.swift +++ b/Mist/Model/CatalogType.swift @@ -6,6 +6,7 @@ // enum CatalogType: String, CaseIterable, Comparable, Decodable { + case tahoe = "macOS Tahoe" case sequoia = "macOS Sequoia" case sonoma = "macOS Sonoma" case ventura = "macOS Ventura" @@ -22,16 +23,18 @@ enum CatalogType: String, CaseIterable, Comparable, Decodable { private var sortOrder: Int { switch self { - case .sequoia: + case .tahoe: 0 - case .sonoma: + case .sequoia: 1 - case .ventura: + case .sonoma: 2 - case .monterey: + case .ventura: 3 - case .bigSur: + case .monterey: 4 + case .bigSur: + 5 } } @@ -42,6 +45,20 @@ enum CatalogType: String, CaseIterable, Comparable, Decodable { // swiftlint:disable:next cyclomatic_complexity function_body_length func url(for seedType: CatalogSeedType) -> String { switch self { + case .tahoe: + switch seedType { + case .standard: + "https://swscan.apple.com/content/catalogs/others/index-26-15-14-13-12-10.16-10.15-10.14-10.13-10.12-10.11-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog.gz" + case .customer: + // swiftlint:disable:next line_length + "https://swscan.apple.com/content/catalogs/others/index-26customerseed-26-15-14-13-12-10.16-10.15-10.14-10.13-10.12-10.11-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog.gz" + case .developer: + // swiftlint:disable:next line_length + "https://swscan.apple.com/content/catalogs/others/index-26seed-26-15-14-13-12-10.16-10.15-10.14-10.13-10.12-10.11-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog.gz" + case .public: + // swiftlint:disable:next line_length + "https://swscan.apple.com/content/catalogs/others/index-26beta-26-15-14-13-12-10.16-10.15-10.14-10.13-10.12-10.11-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog.gz" + } case .sequoia: switch seedType { case .standard: diff --git a/Mist/Model/Firmware.swift b/Mist/Model/Firmware.swift index 22690ac..3ed7d80 100644 --- a/Mist/Model/Firmware.swift +++ b/Mist/Model/Firmware.swift @@ -21,12 +21,12 @@ struct Firmware: Decodable, Hashable, Identifiable { static var example: Firmware { Firmware( - version: "13.0", - build: "22A380", - shasum: "348f49da377d8c394672d1b2800d23452a1d6215", - size: 12_197_669_257, - url: "https://updates.cdn-apple.com/2022FallFCS/fullrestores/012-92188/2C38BCD1-2BFF-4A10-B358-94E8E28BE805/UniversalMac_13.0_22A380_Restore.ipsw", - date: "2022-10-24T17:20:22Z", + version: "26.0", + build: "25A354", + shasum: "4f724c214e6925a450a38ced592bfadaccbae696", + size: 18_267_586_270, + url: "https://updates.cdn-apple.com/2025FallFCS/fullrestores/093-37622/CE01FAB2-7F26-48EE-AEE4-5E57A7F6D8BB/UniversalMac_26.0_25A354_Restore.ipsw", + date: "2025-09-15T17:27:42Z", signed: true, compatible: true ) @@ -51,7 +51,9 @@ struct Firmware: Decodable, Hashable, Identifiable { var name: String { var name: String = "" - if version.range(of: "^15", options: .regularExpression) != nil { + if version.range(of: "^26", options: .regularExpression) != nil { + name = "macOS Tahoe" + } else if version.range(of: "^15", options: .regularExpression) != nil { name = "macOS Sequoia" } else if version.range(of: "^14", options: .regularExpression) != nil { name = "macOS Sonoma" diff --git a/Mist/Model/Installer.swift b/Mist/Model/Installer.swift index 028fa5b..47db309 100644 --- a/Mist/Model/Installer.swift +++ b/Mist/Model/Installer.swift @@ -25,95 +25,63 @@ struct Installer: Decodable, Hashable, Identifiable { static var example: Installer { Installer( - id: "012-92138", - version: "13.0", - build: "22A380", - date: "2022-10-25", - distributionURL: "https://swdist.apple.com/content/downloads/25/16/012-92138-A_KGGGN26YQB/d0kr042ixfvkboeft8qt2i3aclr5bx1e6p/012-92138.English.dist", - distributionSize: 7_467, + id: "093-37779", + version: "26.0", + build: "25A354", + date: "2025-09-15", + distributionURL: "https://swdist.apple.com/content/downloads/26/38/093-37779-A_Y4733G5GHI/adlxnkoqzyrrzfl1r5krg7ql0cod8vpl5e/093-37779.English.dist", + distributionSize: 9_969, packages: [ Package( - url: "https://swcdn.apple.com/content/downloads/25/16/012-92138-A_KGGGN26YQB/d0kr042ixfvkboeft8qt2i3aclr5bx1e6p/MajorOSInfo.pkg", - size: 1_334_737, - integrityDataURL: "https://swcdn.apple.com/content/downloads/25/16/012-92138-A_KGGGN26YQB/d0kr042ixfvkboeft8qt2i3aclr5bx1e6p/MajorOSInfo.pkg.integrityDataV1", + url: "https://swcdn.apple.com/content/downloads/26/38/093-37779-A_Y4733G5GHI/adlxnkoqzyrrzfl1r5krg7ql0cod8vpl5e/com_apple_MobileAsset_MacSoftwareUpdate.plist", + size: 1_275_173, + // swiftlint:disable:next line_length + integrityDataURL: "https://swcdn.apple.com/content/downloads/26/38/093-37779-A_Y4733G5GHI/adlxnkoqzyrrzfl1r5krg7ql0cod8vpl5e/com_apple_MobileAsset_MacSoftwareUpdate.plist.integrityDataV1", integrityDataSize: 104 ), Package( - url: "https://swcdn.apple.com/content/downloads/25/16/012-92138-A_KGGGN26YQB/d0kr042ixfvkboeft8qt2i3aclr5bx1e6p/InstallAssistant.pkg", - size: 12_151_608_300, - integrityDataURL: "https://swcdn.apple.com/content/downloads/25/16/012-92138-A_KGGGN26YQB/d0kr042ixfvkboeft8qt2i3aclr5bx1e6p/InstallAssistant.pkg.integrityDataV1", - integrityDataSize: 41_792 - ), - Package( - url: "https://swcdn.apple.com/content/downloads/25/16/012-92138-A_KGGGN26YQB/d0kr042ixfvkboeft8qt2i3aclr5bx1e6p/BuildManifest.plist", - size: 3_355_762, - integrityDataURL: "https://swcdn.apple.com/content/downloads/25/16/012-92138-A_KGGGN26YQB/d0kr042ixfvkboeft8qt2i3aclr5bx1e6p/BuildManifest.plist.integrityDataV1", + url: "https://swcdn.apple.com/content/downloads/26/38/093-37779-A_Y4733G5GHI/adlxnkoqzyrrzfl1r5krg7ql0cod8vpl5e/InstallInfo.plist", + size: 181, + integrityDataURL: "https://swcdn.apple.com/content/downloads/26/38/093-37779-A_Y4733G5GHI/adlxnkoqzyrrzfl1r5krg7ql0cod8vpl5e/InstallInfo.plist.integrityDataV1", integrityDataSize: 104 ), Package( - url: "https://swcdn.apple.com/content/downloads/25/16/012-92138-A_KGGGN26YQB/d0kr042ixfvkboeft8qt2i3aclr5bx1e6p/InstallInfo.plist", - size: 181, - integrityDataURL: "https://swcdn.apple.com/content/downloads/25/16/012-92138-A_KGGGN26YQB/d0kr042ixfvkboeft8qt2i3aclr5bx1e6p/InstallInfo.plist.integrityDataV1", - integrityDataSize: 104 + url: "https://swcdn.apple.com/content/downloads/26/38/093-37779-A_Y4733G5GHI/adlxnkoqzyrrzfl1r5krg7ql0cod8vpl5e/InstallAssistant.pkg", + size: 16_947_861_409, + integrityDataURL: "https://swcdn.apple.com/content/downloads/26/38/093-37779-A_Y4733G5GHI/adlxnkoqzyrrzfl1r5krg7ql0cod8vpl5e/InstallAssistant.pkg.integrityDataV1", + integrityDataSize: 58_280 ), Package( - url: "https://swcdn.apple.com/content/downloads/25/16/012-92138-A_KGGGN26YQB/d0kr042ixfvkboeft8qt2i3aclr5bx1e6p/UpdateBrain.zip", - size: 3_450_528, - integrityDataURL: "https://swcdn.apple.com/content/downloads/25/16/012-92138-A_KGGGN26YQB/d0kr042ixfvkboeft8qt2i3aclr5bx1e6p/UpdateBrain.zip.integrityDataV1", + url: "https://swcdn.apple.com/content/downloads/26/38/093-37779-A_Y4733G5GHI/adlxnkoqzyrrzfl1r5krg7ql0cod8vpl5e/MajorOSInfo.pkg", + size: 1_365_732, + integrityDataURL: "https://swcdn.apple.com/content/downloads/26/38/093-37779-A_Y4733G5GHI/adlxnkoqzyrrzfl1r5krg7ql0cod8vpl5e/MajorOSInfo.pkg.integrityDataV1", integrityDataSize: 104 ), Package( - url: "https://swcdn.apple.com/content/downloads/25/16/012-92138-A_KGGGN26YQB/d0kr042ixfvkboeft8qt2i3aclr5bx1e6p/Info.plist", - size: 5_042, - integrityDataURL: "https://swcdn.apple.com/content/downloads/25/16/012-92138-A_KGGGN26YQB/d0kr042ixfvkboeft8qt2i3aclr5bx1e6p/Info.plist.integrityDataV1", + url: "https://swcdn.apple.com/content/downloads/26/38/093-37779-A_Y4733G5GHI/adlxnkoqzyrrzfl1r5krg7ql0cod8vpl5e/UpdateBrain.zip", + size: 4_264_697, + integrityDataURL: "https://swcdn.apple.com/content/downloads/26/38/093-37779-A_Y4733G5GHI/adlxnkoqzyrrzfl1r5krg7ql0cod8vpl5e/UpdateBrain.zip.integrityDataV1", integrityDataSize: 104 ) ], boardIDs: [ - "Mac-0CFF9C7C2B63DF8D", "Mac-112818653D3AABFC", - "Mac-1E7E29AD0135F9BC", - "Mac-226CB3C6A851A671", "Mac-27AD2F918AE68F61", - "Mac-4B682C642B45593E", - "Mac-53FDB3D8DB8CA971", - "Mac-551B86E5744E2388", "Mac-5F9802EFE386AA28", - "Mac-63001698E7A34814", - "Mac-77F17D7DA9285301", - "Mac-7BA5B2D9E42DDD94", - "Mac-7BA5B2DFE22DDD8C", - "Mac-827FAC58A8FDFA22", - "Mac-827FB448E656EC26", - "Mac-937A206F2EE63C01", "Mac-A61BADE1FDAD7B05", - "Mac-AA95B1DDAB278B95", "Mac-AF89B6D9451A490B", - "Mac-B4831CEBD52A0C4C", - "Mac-BE088AF8C5EB4FA2", - "Mac-CAD6701F7CEA0921", "Mac-CFF7D910A743CAAF", - "Mac-E1008331FDC96864", - "Mac-E7203C0F68AA0004", - "Mac-EE2EBD4B90B839A8" + "Mac-E1008331FDC96864" ], deviceIDs: [ - "J132AP", - "J137AP", - "J140AAP", - "J140KAP", "J152FAP", "J160AP", - "J174AP", + "J180DAP", "J185AP", "J185FAP", - "J213AP", "J214AP", "J214KAP", "J215AP", - "J223AP", - "J230AP", - "J230KAP", "J274AP", "J293AP", "J313AP", @@ -124,11 +92,42 @@ struct Installer: Decodable, Hashable, Identifiable { "J375CAP", "J375DAP", "J413AP", + "J414CAP", + "J414SAP", + "J415AP", + "J416CAP", + "J416SAP", + "J433AP", + "J434AP", "J456AP", "J457AP", + "J473AP", + "J474SAP", + "J475CAP", + "J475DAP", "J493AP", - "J680AP", - "J780AP", + "J504AP", + "J514CAP", + "J514MAP", + "J514SAP", + "J516CAP", + "J516MAP", + "J516SAP", + "J575CAP", + "J575DAP", + "J604AP", + "J613AP", + "J614CAP", + "J614SAP", + "J615AP", + "J616CAP", + "J616SAP", + "J623AP", + "J624AP", + "J713AP", + "J715AP", + "J773GAP", + "J773SAP", "VMA2MACOSAP", "VMM-X86_64", "X589AMLUAP", @@ -655,7 +654,9 @@ struct Installer: Decodable, Hashable, Identifiable { var name: String { var name: String = "" - if version.range(of: "^15", options: .regularExpression) != nil { + if version.range(of: "^26", options: .regularExpression) != nil { + name = "macOS Tahoe" + } else if version.range(of: "^15", options: .regularExpression) != nil { name = "macOS Sequoia" } else if version.range(of: "^14", options: .regularExpression) != nil { name = "macOS Sonoma" @@ -734,6 +735,10 @@ struct Installer: Decodable, Hashable, Identifiable { (sierraOrOlder ? [] : [Package(url: distributionURL, size: distributionSize, integrityDataURL: nil, integrityDataSize: nil)]) + packages.sorted { $0.filename < $1.filename } } + var containsInstallAssistantPackage: Bool { + packages.contains { $0.filename == "InstallAssistant.pkg" } + } + var temporaryDiskImageMountPointURL: URL { URL(fileURLWithPath: "/Volumes/\(id)") } @@ -778,7 +783,7 @@ struct Installer: Decodable, Hashable, Identifiable { } var bigSurOrNewer: Bool { - version.range(of: "^1[1-9]\\.", options: .regularExpression) != nil + version.range(of: "^(1[1-5]|26)\\.", options: .regularExpression) != nil } var beta: Bool { diff --git a/Mist/Views/Settings/SettingsApplicationsView.swift b/Mist/Views/Settings/SettingsApplicationsView.swift index 84d97b8..c26c45a 100644 --- a/Mist/Views/Settings/SettingsApplicationsView.swift +++ b/Mist/Views/Settings/SettingsApplicationsView.swift @@ -10,6 +10,7 @@ import SwiftUI struct SettingsApplicationsView: View { private static let imageNames: [String] = [ + "Application - macOS Tahoe", "Application - macOS Sequoia", "Application - macOS Sonoma", "Application - macOS Ventura", diff --git a/Mist/Views/Settings/SettingsGeneralAppIconView.swift b/Mist/Views/Settings/SettingsGeneralAppIconView.swift index cb801fb..f691b6c 100644 --- a/Mist/Views/Settings/SettingsGeneralAppIconView.swift +++ b/Mist/Views/Settings/SettingsGeneralAppIconView.swift @@ -13,20 +13,31 @@ struct SettingsGeneralAppIconView: View { var body: some View { VStack { - HStack { - Picker("App Icon:", selection: $appIcon) { - ForEach(AppIcon.allCases) { icon in - VStack { - ScaledImage(name: icon.previewName, length: length) - Text(icon.description) - } - .padding(.trailing) - .tag(icon) + Picker("App Icon:", selection: $appIcon) { + ForEach(AppIcon.allCases.reversed().prefix(3)) { icon in + VStack { + ScaledImage(name: icon.previewName, length: length) + Text(icon.description) } + .padding(.trailing) + .tag(icon) } - .pickerStyle(.radioGroup) - .horizontalRadioGroupLayout() } + .pickerStyle(.radioGroup) + .horizontalRadioGroupLayout() + Picker("App Icon:", selection: $appIcon) { + ForEach(AppIcon.allCases.reversed().suffix(2)) { icon in + VStack { + ScaledImage(name: icon.previewName, length: length) + Text(icon.description) + } + .padding(.trailing) + .tag(icon) + } + } + .labelsHidden() + .pickerStyle(.radioGroup) + .horizontalRadioGroupLayout() } .onChange(of: appIcon) { icon in setAppIcon(appIcon: icon) diff --git a/Mist/Views/Settings/SettingsGeneralUpdatesView.swift b/Mist/Views/Settings/SettingsGeneralUpdatesView.swift index ad45fff..a0bef2b 100644 --- a/Mist/Views/Settings/SettingsGeneralUpdatesView.swift +++ b/Mist/Views/Settings/SettingsGeneralUpdatesView.swift @@ -17,7 +17,7 @@ struct SettingsGeneralUpdatesView: View { VStack(alignment: .leading) { HStack { Toggle(isOn: $enable) { - Text("Automatically check for app updates:") + Text("Automatically check app updates:") } Picker("Scheduled Check Interval", selection: $interval) { Text("Once a day") diff --git a/Mist/Views/Settings/SettingsGeneralView.swift b/Mist/Views/Settings/SettingsGeneralView.swift index 9992725..509998c 100644 --- a/Mist/Views/Settings/SettingsGeneralView.swift +++ b/Mist/Views/Settings/SettingsGeneralView.swift @@ -45,8 +45,10 @@ struct SettingsGeneralView: View { PaddedDivider() SettingsGeneralUpdatesView(sparkleUpdater: sparkleUpdater, enable: $enableAutomaticChecks, interval: $scheduledCheckInterval, width: width) PaddedDivider() - SettingsGeneralAppIconView(appIcon: $appIcon) - PaddedDivider() + if #unavailable(macOS 26) { + SettingsGeneralAppIconView(appIcon: $appIcon) + PaddedDivider() + } ResetToDefaultButton { reset() } diff --git a/MistHelperTool/Info.plist b/MistHelperTool/Info.plist index 7f0b03c..5c72b56 100644 --- a/MistHelperTool/Info.plist +++ b/MistHelperTool/Info.plist @@ -9,9 +9,9 @@ CFBundleInfoDictionaryVersion 1.0 CFBundleShortVersionString - 0.20.1 + 0.30 CFBundleVersion - 0.20.1 + 0.30 SMAuthorizedClients anchor apple generic and identifier "com.ninxsoft.mist" and info[CFBundleVersion] >= "0.1" and certificate leaf[subject.OU] = "7K3HVCLV7Z"