From a8c1c50d86d2c03ec2563764eb1a7a97fe56105b Mon Sep 17 00:00:00 2001 From: Guillaume Louel Date: Tue, 18 Dec 2018 16:30:30 +0100 Subject: [PATCH 1/3] First inclusion of Sparkle --- Aerial.xcodeproj/project.pbxproj | 166 +++++++++++++++++- Aerial/App/Resources/Info.plist | 6 +- .../PreferencesWindowController.swift | 6 + Aerial/Source/Views/AerialView.swift | 4 + Podfile | 24 +++ Podfile.lock | 16 ++ Resources/Info.plist | 8 +- Resources/PreferencesWindow.xib | 17 +- 8 files changed, 238 insertions(+), 9 deletions(-) create mode 100644 Podfile create mode 100644 Podfile.lock diff --git a/Aerial.xcodeproj/project.pbxproj b/Aerial.xcodeproj/project.pbxproj index b6be77c6..cc21f6d0 100644 --- a/Aerial.xcodeproj/project.pbxproj +++ b/Aerial.xcodeproj/project.pbxproj @@ -46,6 +46,9 @@ 03E8731121662AEB002B469B /* AsynchronousOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03E8730E216501ED002B469B /* AsynchronousOperation.swift */; }; 03E8731321675FE0002B469B /* TimeManagement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03E8731221675FE0002B469B /* TimeManagement.swift */; }; 03E87314216760B7002B469B /* TimeManagement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03E8731221675FE0002B469B /* TimeManagement.swift */; }; + 1CE1414C7F559B453E61831F /* Pods_AerialApp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA0922E026F9FAC43AF7A569 /* Pods_AerialApp.framework */; }; + 42813D561DB8096CC34CB535 /* Pods_Aerial_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E7FC91C9058F0A22FBCC762 /* Pods_Aerial_Tests.framework */; }; + 70CA722D8D5D59C803F3B81B /* Pods_Aerial.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8C010F2542FCE112D8A6E5CA /* Pods_Aerial.framework */; }; AA7E2E5E1FC62E8B00E5F320 /* AerialPlayerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA7E2E5D1FC62E8B00E5F320 /* AerialPlayerItem.swift */; }; FA143CE61BDA3EEF0041A82B /* AVKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA143CE51BDA3EEF0041A82B /* AVKit.framework */; }; FA36BD3F1BE57F8E00D5E03B /* VideoDownload.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA36BD3E1BE57F8E00D5E03B /* VideoDownload.swift */; }; @@ -109,7 +112,16 @@ 03E8730B2165013C002B469B /* DownloadManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DownloadManager.swift; sourceTree = ""; }; 03E8730E216501ED002B469B /* AsynchronousOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsynchronousOperation.swift; sourceTree = ""; }; 03E8731221675FE0002B469B /* TimeManagement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimeManagement.swift; sourceTree = ""; }; + 0C8FC8BFBDB12119C417B384 /* Pods-AerialApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AerialApp.debug.xcconfig"; path = "Pods/Target Support Files/Pods-AerialApp/Pods-AerialApp.debug.xcconfig"; sourceTree = ""; }; + 16D0EAF0612223CDB1E938A3 /* Pods-Aerial.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Aerial.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Aerial/Pods-Aerial.debug.xcconfig"; sourceTree = ""; }; + 431164E9C62B702ED573DE22 /* Pods-Aerial.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Aerial.release.xcconfig"; path = "Pods/Target Support Files/Pods-Aerial/Pods-Aerial.release.xcconfig"; sourceTree = ""; }; + 6F861C9769B40A0B8FBDC0E6 /* Pods-Aerial Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Aerial Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Aerial Tests/Pods-Aerial Tests.debug.xcconfig"; sourceTree = ""; }; + 7E7FC91C9058F0A22FBCC762 /* Pods_Aerial_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Aerial_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8C010F2542FCE112D8A6E5CA /* Pods_Aerial.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Aerial.framework; sourceTree = BUILT_PRODUCTS_DIR; }; AA7E2E5D1FC62E8B00E5F320 /* AerialPlayerItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AerialPlayerItem.swift; sourceTree = ""; }; + C2789CB51C64430F9CDEABF1 /* Pods-Aerial Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Aerial Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-Aerial Tests/Pods-Aerial Tests.release.xcconfig"; sourceTree = ""; }; + E783122BE370B662D207D98F /* Pods-AerialApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AerialApp.release.xcconfig"; path = "Pods/Target Support Files/Pods-AerialApp/Pods-AerialApp.release.xcconfig"; sourceTree = ""; }; + FA0922E026F9FAC43AF7A569 /* Pods_AerialApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AerialApp.framework; sourceTree = BUILT_PRODUCTS_DIR; }; FA143CD61BDA3E880041A82B /* AerialApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AerialApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; FA143CE51BDA3EEF0041A82B /* AVKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVKit.framework; path = System/Library/Frameworks/AVKit.framework; sourceTree = SDKROOT; }; FA36BD3E1BE57F8E00D5E03B /* VideoDownload.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = VideoDownload.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; @@ -144,6 +156,7 @@ 03510C772185EF8F008F74F2 /* CoreLocation.framework in Frameworks */, 03510C6B21834EB2008F74F2 /* IOKit.framework in Frameworks */, FA143CE61BDA3EEF0041A82B /* AVKit.framework in Frameworks */, + 1CE1414C7F559B453E61831F /* Pods_AerialApp.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -151,6 +164,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 42813D561DB8096CC34CB535 /* Pods_Aerial_Tests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -160,6 +174,7 @@ files = ( 03510C732185EF76008F74F2 /* CoreLocation.framework in Frameworks */, 03510C6C21834EFF008F74F2 /* IOKit.framework in Frameworks */, + 70CA722D8D5D59C803F3B81B /* Pods_Aerial.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -195,12 +210,28 @@ path = Downloads; sourceTree = ""; }; + F1B1238D786BBB1C50CB8803 /* Pods */ = { + isa = PBXGroup; + children = ( + 16D0EAF0612223CDB1E938A3 /* Pods-Aerial.debug.xcconfig */, + 431164E9C62B702ED573DE22 /* Pods-Aerial.release.xcconfig */, + 6F861C9769B40A0B8FBDC0E6 /* Pods-Aerial Tests.debug.xcconfig */, + C2789CB51C64430F9CDEABF1 /* Pods-Aerial Tests.release.xcconfig */, + 0C8FC8BFBDB12119C417B384 /* Pods-AerialApp.debug.xcconfig */, + E783122BE370B662D207D98F /* Pods-AerialApp.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; FA2D7AA01BDD849E009EA54C /* Frameworks */ = { isa = PBXGroup; children = ( 03510C722185EF76008F74F2 /* CoreLocation.framework */, 03510C6A21834EB2008F74F2 /* IOKit.framework */, FA143CE51BDA3EEF0041A82B /* AVKit.framework */, + 8C010F2542FCE112D8A6E5CA /* Pods_Aerial.framework */, + 7E7FC91C9058F0A22FBCC762 /* Pods_Aerial_Tests.framework */, + FA0922E026F9FAC43AF7A569 /* Pods_AerialApp.framework */, ); name = Frameworks; sourceTree = ""; @@ -324,6 +355,7 @@ FA71996F1D94EC5A00FBC99B /* Tests */, FA2D7AA01BDD849E009EA54C /* Frameworks */, FACAF1A61BD9FC6000E539DC /* Products */, + F1B1238D786BBB1C50CB8803 /* Pods */, ); sourceTree = ""; }; @@ -355,10 +387,12 @@ isa = PBXNativeTarget; buildConfigurationList = FA143CE01BDA3E880041A82B /* Build configuration list for PBXNativeTarget "AerialApp" */; buildPhases = ( + B326E4EB5930FD08EEA5D212 /* [CP] Check Pods Manifest.lock */, FA74B8481D94DCE0004FE056 /* Run Script - Swiftlint */, FA143CD21BDA3E880041A82B /* Sources */, FA143CD31BDA3E880041A82B /* Frameworks */, FA143CD41BDA3E880041A82B /* Resources */, + 6F6791269A5D5F62796AE75A /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -373,6 +407,7 @@ isa = PBXNativeTarget; buildConfigurationList = FA7199751D94EC5A00FBC99B /* Build configuration list for PBXNativeTarget "Aerial Tests" */; buildPhases = ( + 3B10443BE2EC7A75E1F031DF /* [CP] Check Pods Manifest.lock */, FA71996A1D94EC5A00FBC99B /* Sources */, FA71996B1D94EC5A00FBC99B /* Frameworks */, FA71996C1D94EC5A00FBC99B /* Resources */, @@ -391,11 +426,13 @@ isa = PBXNativeTarget; buildConfigurationList = FACAF1AF1BD9FC6000E539DC /* Build configuration list for PBXNativeTarget "Aerial" */; buildPhases = ( + 910394578D35CCEBAEE0D456 /* [CP] Check Pods Manifest.lock */, 7E9B50FB2187D302002895ED /* Run Script - Swiftlint */, FACAF1A01BD9FC6000E539DC /* Sources */, FACAF1A11BD9FC6000E539DC /* Frameworks */, FACAF1A21BD9FC6000E539DC /* Headers */, FACAF1A31BD9FC6000E539DC /* Resources */, + 030E8CFC21C2CC13008272B9 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -418,7 +455,9 @@ TargetAttributes = { FA143CD51BDA3E880041A82B = { CreatedOnToolsVersion = 7.0; + DevelopmentTeam = 3L54M5L5KK; LastSwiftMigration = 1000; + ProvisioningStyle = Automatic; }; FA71996D1D94EC5A00FBC99B = { CreatedOnToolsVersion = 8.0; @@ -428,7 +467,9 @@ }; FACAF1A41BD9FC6000E539DC = { CreatedOnToolsVersion = 7.0; + DevelopmentTeam = 3L54M5L5KK; LastSwiftMigration = 1000; + ProvisioningStyle = Automatic; }; }; }; @@ -499,6 +540,67 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 030E8CFC21C2CC13008272B9 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${SRCROOT}/Pods/Target Support Files/Pods-Aerial/Pods-Aerial-frameworks.sh", + "${PODS_ROOT}/Sparkle/Sparkle.framework", + "${PODS_ROOT}/Sparkle/Sparkle.framework.dSYM", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + ); + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sparkle.framework", + "${DWARF_DSYM_FOLDER_PATH}/Sparkle.framework.dSYM", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Type a script or drag a script file from your workspace to insert its path.\n\"${SRCROOT}/Pods/Target Support Files/Pods-Aerial/Pods-Aerial-frameworks.sh\"\n"; + }; + 3B10443BE2EC7A75E1F031DF /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Aerial Tests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 6F6791269A5D5F62796AE75A /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${SRCROOT}/Pods/Target Support Files/Pods-AerialApp/Pods-AerialApp-frameworks.sh", + "${PODS_ROOT}/Sparkle/Sparkle.framework", + "${PODS_ROOT}/Sparkle/Sparkle.framework.dSYM", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sparkle.framework", + "${DWARF_DSYM_FOLDER_PATH}/Sparkle.framework.dSYM", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-AerialApp/Pods-AerialApp-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 7E9B50FB2187D302002895ED /* Run Script - Swiftlint */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -511,7 +613,43 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if which swiftlint >/dev/null; then\n if [ -z \"$CI\" ]; then\n make --directory=${SRCROOT} xcode-lint\n fi\nelse\n echo \"warning: SwiftLint not installed, install using `brew install swiftlint`\"\nfi"; + shellScript = "if which swiftlint >/dev/null; then\n if [ -z \"$CI\" ]; then\n make --directory=${SRCROOT} xcode-lint\n fi\nelse\n echo \"warning: SwiftLint not installed, install using `brew install swiftlint`\"\nfi\n"; + }; + 910394578D35CCEBAEE0D456 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Aerial-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + B326E4EB5930FD08EEA5D212 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-AerialApp-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; }; FA74B8481D94DCE0004FE056 /* Run Script - Swiftlint */ = { isa = PBXShellScriptBuildPhase; @@ -618,16 +756,20 @@ /* Begin XCBuildConfiguration section */ FA143CE11BDA3E880041A82B /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 0C8FC8BFBDB12119C417B384 /* Pods-AerialApp.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = ""; + CODE_SIGN_IDENTITY = "Mac Developer"; + CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = 3L54M5L5KK; ENABLE_TESTABILITY = YES; INFOPLIST_FILE = Aerial/App/Resources/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 10.9; PRODUCT_BUNDLE_IDENTIFIER = "com.johncoates.Aerial-Test"; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Aerial/Source/Models/Time/Aerial-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; @@ -636,16 +778,20 @@ }; FA143CE21BDA3E880041A82B /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = E783122BE370B662D207D98F /* Pods-AerialApp.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = ""; + CODE_SIGN_IDENTITY = "Mac Developer"; + CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = 3L54M5L5KK; ENABLE_TESTABILITY = YES; INFOPLIST_FILE = Aerial/App/Resources/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 10.9; PRODUCT_BUNDLE_IDENTIFIER = "com.johncoates.Aerial-Test"; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OBJC_BRIDGING_HEADER = "Aerial/Source/Models/Time/Aerial-Bridging-Header.h"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; @@ -654,6 +800,7 @@ }; FA7199761D94EC5A00FBC99B /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 6F861C9769B40A0B8FBDC0E6 /* Pods-Aerial Tests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ANALYZER_NONNULL = YES; @@ -675,6 +822,7 @@ }; FA7199771D94EC5A00FBC99B /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = C2789CB51C64430F9CDEABF1 /* Pods-Aerial Tests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ANALYZER_NONNULL = YES; @@ -795,16 +943,22 @@ }; FACAF1B01BD9FC6000E539DC /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 16D0EAF0612223CDB1E938A3 /* Pods-Aerial.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "Mac Developer"; + CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = 3L54M5L5KK; INFOPLIST_FILE = "$(SRCROOT)/Resources/Info.plist"; INSTALL_PATH = "$(HOME)/Library/Screen Savers"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.johncoates.Aerial; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Aerial/Source/Models/Time/Aerial-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; WRAPPER_EXTENSION = saver; @@ -813,16 +967,22 @@ }; FACAF1B11BD9FC6000E539DC /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 431164E9C62B702ED573DE22 /* Pods-Aerial.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "Mac Developer"; + CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = 3L54M5L5KK; INFOPLIST_FILE = "$(SRCROOT)/Resources/Info.plist"; INSTALL_PATH = "$(HOME)/Library/Screen Savers"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.johncoates.Aerial; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Aerial/Source/Models/Time/Aerial-Bridging-Header.h"; WRAPPER_EXTENSION = saver; }; diff --git a/Aerial/App/Resources/Info.plist b/Aerial/App/Resources/Info.plist index cd19c776..102bac93 100644 --- a/Aerial/App/Resources/Info.plist +++ b/Aerial/App/Resources/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.4.6beta5 + 1.4.7beta1 CFBundleSignature ???? CFBundleVersion @@ -39,6 +39,10 @@ Aerial uses location services to calculate Sunset and Sunrise times from your position NSMainNibFile MainMenu + SUPublicEDKey + fbiQGEFq55xl4bjwj2/SpIO4JMsKmEyhHEWlMMueyDY= + SUFeedURL + https://raw.githubusercontent.com/JohnCoates/Aerial/master/appcast.xml NSPrincipalClass NSApplication diff --git a/Aerial/Source/Controllers/PreferencesWindowController.swift b/Aerial/Source/Controllers/PreferencesWindowController.swift index 9b0eebc0..f596ab2b 100644 --- a/Aerial/Source/Controllers/PreferencesWindowController.swift +++ b/Aerial/Source/Controllers/PreferencesWindowController.swift @@ -12,6 +12,7 @@ import AVFoundation import ScreenSaver import VideoToolbox import CoreLocation +import Sparkle final class TimeOfDay { let title: String @@ -1398,6 +1399,11 @@ final class PreferencesWindowController: NSWindowController, NSOutlineViewDataSo } + @IBAction func checkForUpdatesButton(_ sender: Any) { + debugLog("check for updates") + let supd = SUUpdater.init(for: Bundle(for: PreferencesWindowController.self)) + supd?.checkForUpdates(self) + } @IBAction func trashOldVideosClick(_ sender: Any) { ManifestLoader.instance.trashOldVideos() diff --git a/Aerial/Source/Views/AerialView.swift b/Aerial/Source/Views/AerialView.swift index 87449d66..1c02ec1f 100644 --- a/Aerial/Source/Views/AerialView.swift +++ b/Aerial/Source/Views/AerialView.swift @@ -10,6 +10,7 @@ import Foundation import ScreenSaver import AVFoundation import AVKit +import Sparkle @objc(AerialView) // swiftlint:disable:next type_body_length @@ -177,6 +178,9 @@ final class AerialView: ScreenSaverView { // swiftlint:disable:next cyclomatic_complexity func setup() { + // Initialize Sparkle updater + _ = SUUpdater.init(for: Bundle(for: AerialView.self)) + debugLog("\(self.description) AerialView setup init") let preferences = Preferences.sharedInstance let timeManagement = TimeManagement.sharedInstance diff --git a/Podfile b/Podfile new file mode 100644 index 00000000..43a9dcea --- /dev/null +++ b/Podfile @@ -0,0 +1,24 @@ +# Uncomment the next line to define a global platform for your project +platform :macos, '10.9' + +target 'Aerial' do + # Comment the next line if you're not using Swift and don't want to use dynamic frameworks + use_frameworks! + + # Pods for Aerial + pod 'Sparkle' + + target 'Aerial Tests' do + inherit! :search_paths + # Pods for testing + end + +end + +target 'AerialApp' do + # Comment the next line if you're not using Swift and don't want to use dynamic frameworks + use_frameworks! + + # Pods for AerialApp + pod 'Sparkle' +end diff --git a/Podfile.lock b/Podfile.lock new file mode 100644 index 00000000..876bcdb7 --- /dev/null +++ b/Podfile.lock @@ -0,0 +1,16 @@ +PODS: + - Sparkle (1.21.0) + +DEPENDENCIES: + - Sparkle + +SPEC REPOS: + https://github.com/CocoaPods/Specs.git: + - Sparkle + +SPEC CHECKSUMS: + Sparkle: 24f10673813bf7c32d73ffa8a775590adefc40df + +PODFILE CHECKSUM: f168964208636ac1fde61a950654def91bc7ada9 + +COCOAPODS: 1.5.0 diff --git a/Resources/Info.plist b/Resources/Info.plist index 05c83be7..02e1be54 100644 --- a/Resources/Info.plist +++ b/Resources/Info.plist @@ -15,11 +15,11 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 1.4.6beta7 + 1.4.6test1 CFBundleSignature ???? CFBundleVersion - 1.4.6beta7 + 1.4.6test1 LSApplicationCategoryType LSMinimumSystemVersion @@ -35,5 +35,9 @@ Aerial uses location services to calculate Sunset and Sunrise times from your position NSPrincipalClass AerialView + SUFeedURL + https://raw.githubusercontent.com/JohnCoates/Aerial/master/appcast.xml + SUPublicEDKey + fbiQGEFq55xl4bjwj2/SpIO4JMsKmEyhHEWlMMueyDY= diff --git a/Resources/PreferencesWindow.xib b/Resources/PreferencesWindow.xib index 55f47059..c8217e3f 100644 --- a/Resources/PreferencesWindow.xib +++ b/Resources/PreferencesWindow.xib @@ -447,7 +447,7 @@ is disabled - + @@ -526,7 +526,7 @@ is disabled - + @@ -1328,7 +1328,7 @@ Shift, but macOS 10.12.4 or above and a compatible Mac are required) - + @@ -1630,6 +1630,17 @@ Shift, but macOS 10.12.4 or above and a compatible Mac are required) + From c777d6e3d8ab292fed32b0c50c10b7b8006812a7 Mon Sep 17 00:00:00 2001 From: Guillaume Louel Date: Sat, 26 Jan 2019 16:06:06 +0100 Subject: [PATCH 2/3] 1.4.7 beta, new videos from jan 25th, sparkle for auto updates, bug fix for missing cache folder, new Update pane interface (in progress) --- Aerial/App/Resources/Info.plist | 8 +- .../PreferencesWindowController.swift | 28 ++- Aerial/Source/Models/AerialVideo.swift | 6 + Aerial/Source/Models/Cache/VideoCache.swift | 13 +- Aerial/Source/Models/ErrorLog.swift | 6 + Aerial/Source/Models/ManifestLoader.swift | 6 +- Resources/Community/en.json | 8 +- Resources/Community/missingvideos.json | 21 -- Resources/Info.plist | 4 +- Resources/PreferencesWindow.xib | 201 ++++++++++++------ 10 files changed, 201 insertions(+), 100 deletions(-) diff --git a/Aerial/App/Resources/Info.plist b/Aerial/App/Resources/Info.plist index 102bac93..dccb0d78 100644 --- a/Aerial/App/Resources/Info.plist +++ b/Aerial/App/Resources/Info.plist @@ -39,11 +39,11 @@ Aerial uses location services to calculate Sunset and Sunrise times from your position NSMainNibFile MainMenu - SUPublicEDKey - fbiQGEFq55xl4bjwj2/SpIO4JMsKmEyhHEWlMMueyDY= - SUFeedURL - https://raw.githubusercontent.com/JohnCoates/Aerial/master/appcast.xml NSPrincipalClass NSApplication + SUFeedURL + https://raw.githubusercontent.com/JohnCoates/Aerial/master/appcast.xml + SUPublicEDKey + fbiQGEFq55xl4bjwj2/SpIO4JMsKmEyhHEWlMMueyDY= diff --git a/Aerial/Source/Controllers/PreferencesWindowController.swift b/Aerial/Source/Controllers/PreferencesWindowController.swift index f596ab2b..fc33f78f 100644 --- a/Aerial/Source/Controllers/PreferencesWindowController.swift +++ b/Aerial/Source/Controllers/PreferencesWindowController.swift @@ -188,6 +188,11 @@ final class PreferencesWindowController: NSWindowController, NSOutlineViewDataSo @IBOutlet var moveOldVideosButton: NSButton! @IBOutlet var trashOldVideosButton: NSButton! + + @IBOutlet var automaticallyCheckForUpdatesCheckbox: NSButton! + + @IBOutlet var lastCheckedSparkle: NSTextField! + var player: AVPlayer = AVPlayer() var videos: [AerialVideo]? @@ -206,6 +211,7 @@ final class PreferencesWindowController: NSWindowController, NSOutlineViewDataSo var savedBrightness: Float? var locationManager: CLLocationManager? + var sparkleUpdater: SUUpdater? public var appMode: Bool = false @@ -241,6 +247,7 @@ final class PreferencesWindowController: NSWindowController, NSOutlineViewDataSo // swiftlint:disable:next cyclomatic_complexity override func awakeFromNib() { super.awakeFromNib() + sparkleUpdater = SUUpdater.init(for: Bundle(for: PreferencesWindowController.self)) // tmp let tm = TimeManagement.sharedInstance @@ -535,6 +542,16 @@ final class PreferencesWindowController: NSWindowController, NSOutlineViewDataSo newVideosModePopup.selectItem(at: preferences.newVideosMode!) lastCheckedVideosLabel.stringValue = "Last checked on " + preferences.lastVideoCheck! + + // Format date + let dateFormatter = DateFormatter() + dateFormatter.dateFormat = "yyyy-MM-dd" + let sparkleDate = dateFormatter.string(from: sparkleUpdater!.lastUpdateCheckDate) + lastCheckedSparkle.stringValue = "Last checked on " + sparkleDate + if sparkleUpdater!.automaticallyChecksForUpdates { + automaticallyCheckForUpdatesCheckbox.state = .on + } + colorizeProjectPageLinks() if let cacheDirectory = VideoCache.cacheDirectory { @@ -1309,6 +1326,13 @@ final class PreferencesWindowController: NSWindowController, NSOutlineViewDataSo debugLog("UI dimInMinutes \(sender.stringValue)") } + // MARK: - Update panel + @IBAction func automaticallyCheckForUpdatesChange(_ button: NSButton) { + let onState = button.state == .on + sparkleUpdater!.automaticallyChecksForUpdates = onState + debugLog("UI automaticallyCheckForUpdatesChange: \(onState)") + } + // MARK: - Advanced panel @IBAction func logButtonClick(_ sender: NSButton) { @@ -1401,9 +1425,9 @@ final class PreferencesWindowController: NSWindowController, NSOutlineViewDataSo @IBAction func checkForUpdatesButton(_ sender: Any) { debugLog("check for updates") - let supd = SUUpdater.init(for: Bundle(for: PreferencesWindowController.self)) - supd?.checkForUpdates(self) + sparkleUpdater!.checkForUpdates(self) } + @IBAction func trashOldVideosClick(_ sender: Any) { ManifestLoader.instance.trashOldVideos() diff --git a/Aerial/Source/Models/AerialVideo.swift b/Aerial/Source/Models/AerialVideo.swift index 064f4cde..d779b040 100644 --- a/Aerial/Source/Models/AerialVideo.swift +++ b/Aerial/Source/Models/AerialVideo.swift @@ -33,6 +33,9 @@ private let spaceVideos = [ "7719B48A-2005-4011-9280-2F64EEC6FD91", "63C042F0-90EF-4A95-B7CC-CC9A64BF8421", "B1B5DDC5-73C8-4920-8133-BACCE38A08DE", + "03EC0F5E-CCA8-4E0A-9FEC-5BD1CE151182", // 25/01 Antartica Aurora + "737E9E24-49BE-4104-9B72-F352DE1AD2BF", // North America Aurora + "E556BBC5-D0A0-4DB1-AC77-BC76E4A526F4", // Sahara and Italy ] private let timeInformation = [ @@ -52,6 +55,7 @@ private let timeInformation = [ "009BA758-7060-4479-8EE8-FB9B40C8FB97": "night", // Korean and Japan Night (v18) "78911B7E-3C69-47AD-B635-9C2486F6301D": "day", // New Zealand (sunrise...) "D60B4DDA-69EB-4841-9690-E8BAE7BC4F80": "day", // Sahara and Italy + "E556BBC5-D0A0-4DB1-AC77-BC76E4A526F4": "day", // Sahara and Italy "7719B48A-2005-4011-9280-2F64EEC6FD91": "day", // Southern California to Baja "63C042F0-90EF-4A95-B7CC-CC9A64BF8421": "day", // Western Africa to the Alps (sunset...) "BAF76353-3475-4855-B7E1-CE96CC9BC3A7": "night", // Dubai @@ -72,6 +76,8 @@ private let timeInformation = [ "F5804DD6-5963-40DA-9FA0-39C0C6E6DEF9": "night", // Downtown (LA) "640DFB00-FBB9-45DA-9444-9F663859F4BC": "night", // Lower Manhattan "44166C39-8566-4ECA-BD16-43159429B52F": "night", // Seventh Avenue + "03EC0F5E-CCA8-4E0A-9FEC-5BD1CE151182": "night", // Antartica Aurora + "737E9E24-49BE-4104-9B72-F352DE1AD2BF": "night", // North America Aurora ] final class AerialVideo: CustomStringConvertible, Equatable { diff --git a/Aerial/Source/Models/Cache/VideoCache.swift b/Aerial/Source/Models/Cache/VideoCache.swift index 8178136b..27452c0a 100644 --- a/Aerial/Source/Models/Cache/VideoCache.swift +++ b/Aerial/Source/Models/Cache/VideoCache.swift @@ -29,9 +29,16 @@ final class VideoCache { let preferences = Preferences.sharedInstance if let customCacheDirectory = preferences.customCacheDirectory { - // We may have overriden the cache directory - cacheDirectory = customCacheDirectory - } else { + // We may have overriden the cache directory, but it may no longer exist ! + if FileManager.default.fileExists(atPath: customCacheDirectory as String) { + cacheDirectory = customCacheDirectory + } else { + // If it doesn't we need to reset that preference + preferences.customCacheDirectory = nil + } + } + + if cacheDirectory == nil { let localCachePaths = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .localDomainMask, true) diff --git a/Aerial/Source/Models/ErrorLog.swift b/Aerial/Source/Models/ErrorLog.swift index 7fe38f58..c2aa56e7 100644 --- a/Aerial/Source/Models/ErrorLog.swift +++ b/Aerial/Source/Models/ErrorLog.swift @@ -73,6 +73,7 @@ func Log(level: ErrorLevel, message: String) { } // We may log to disk, asyncly + // Comment the firt if to always log to disk if preferences.logToDisk { DispatchQueue.main.async { let dateFormatter = DateFormatter() @@ -80,6 +81,10 @@ func Log(level: ErrorLevel, message: String) { dateFormatter.timeStyle = .medium let string = dateFormatter.string(from: Date()) + " : " + message + "\n" //let string = message + "\n" + + // tmpOverride + //if var cacheFileUrl = try? FileManager.default.url(for: .desktopDirectory, in: .userDomainMask, appropriateFor: nil, create: false) { + if let cacheDirectory = VideoCache.cacheDirectory { var cacheFileUrl = URL(fileURLWithPath: cacheDirectory as String) cacheFileUrl.appendPathComponent("AerialLog.txt") @@ -115,6 +120,7 @@ func debugLog(_ message: String) { print("\(message)\n") #endif + // Comment the condition to always log debug mode let preferences = Preferences.sharedInstance if preferences.debugMode { Log(level: .debug, message: message) diff --git a/Aerial/Source/Models/ManifestLoader.swift b/Aerial/Source/Models/ManifestLoader.swift index 205e1a22..68f382fe 100644 --- a/Aerial/Source/Models/ManifestLoader.swift +++ b/Aerial/Source/Models/ManifestLoader.swift @@ -37,7 +37,8 @@ class ManifestLoader { "b9-1.mov", // Dupe of b2-2 (Hawaii, day) "b9-2.mov", // Dupe of b3-1 (London, night) "comp_LA_A005_C009_v05_t9_6M.mov", // Low quality version of Los Angeles day 687B36CB-BA5D-4434-BA99-2F2B8B6EC163 - "comp_LA_A009_C009_t9_6M_tag0.mov", ] // Low quality version of Los Angeles night 89B1643B-06DD-4DEC-B1B0-774493B0F7B7 + "comp_LA_A009_C009_t9_6M_tag0.mov", + ] // Low quality version of Los Angeles night 89B1643B-06DD-4DEC-B1B0-774493B0F7B7 // This is used for videos where URLs should be merged with different ID // This is used to dedupe old versions of videos @@ -56,6 +57,8 @@ class ManifestLoader { "802866E6-4AAF-4A69-96EA-C582651391F1": "3FFA2A97-7D28-49EA-AA39-5BC9051B2745", // Marina 2 "D34A7B19-EC33-4300-B4ED-0C8BC494C035": "3FFA2A97-7D28-49EA-AA39-5BC9051B2745", // Marina 2 "02EA5DBE-3A67-4DFA-8528-12901DFD6CC1": "00BA71CD-2C54-415A-A68A-8358E677D750", // Downtown + "AC9C09DD-1D97-4013-A09F-B0F5259E64C3": "876D51F4-3D78-4221-8AD2-F9E78C0FD9B9", // Sheikh Zayed Road (day) + "DFA399FA-620A-4517-94D6-BF78BF8C5E5A": "876D51F4-3D78-4221-8AD2-F9E78C0FD9B9", // Sheikh Zayed Road (day) "D388F00A-5A32-4431-A95C-38BF7FF7268D": "B8F204CE-6024-49AB-85F9-7CA2F6DCD226", // Nuusuaq Peninsula "E4ED0B22-EB81-4D4F-A29E-7E1EA6B6D980": "B8F204CE-6024-49AB-85F9-7CA2F6DCD226", // Nuusuaq Peninsula "30047FDA-3AE3-4E74-9575-3520AD77865B": "2F52E34C-39D4-4AB1-9025-8F7141FAA720", // Ilulissat Icefjord day @@ -90,6 +93,7 @@ class ManifestLoader { "b1-4": "3E94AE98-EAF2-4B09-96E3-452F46BC114E", // Bay bridge night "b9-3": "DE851E6D-C2BE-4D9F-AB54-0F9CE994DC51", // Bay and Golden Bridge "b7-3": "29BDF297-EB43-403A-8719-A78DA11A2948", // Fisherman's Wharf + "b3-3": "85CE77BF-3413-4A7B-9B0F-732E96229A73", // Embarcadero, Market Street ] // Extra info to be merged for a given ID, as of right now only one known video diff --git a/Resources/Community/en.json b/Resources/Community/en.json index 1bc3be16..5b45abf3 100644 --- a/Resources/Community/en.json +++ b/Resources/Community/en.json @@ -39,7 +39,7 @@ "name" : "Great Wall 3" }, { - "id" : "AC9C09DD-1D97-4013-A09F-B0F5259E64C3", + "id" : "876D51F4-3D78-4221-8AD2-F9E78C0FD9B9", "name" : "Sheikh Zayed Road" }, { @@ -312,7 +312,7 @@ } }, { - "id" : "b3-3", + "id" : "85CE77BF-3413-4A7B-9B0F-732E96229A73", "name" : "Embarcadero, Market Street", "pointsOfInterest" : { "0" : "Heading southwest over San Francisco Bay to the San Francisco Ferry Building", @@ -373,6 +373,10 @@ "10" : "Passing the Transamerica Pyramid", "50" : "Former Bank of America headquarters blotting out the sun" } + }, + { + "id" : "4AD99907-9E76-408D-A7FC-8429FF014201", + "name" : "Bay and Embarcadero" } ] } diff --git a/Resources/Community/missingvideos.json b/Resources/Community/missingvideos.json index 7529007d..c169b702 100644 --- a/Resources/Community/missingvideos.json +++ b/Resources/Community/missingvideos.json @@ -1,26 +1,5 @@ { "assets" : [ - { - "pointsOfInterest" : { - "285" : "A009_C001_10181A_285", - "245" : "A009_C001_10181A_245", - "310" : "A009_C001_10181A_310", - "0" : "A009_C001_10181A_0", - "30" : "A009_C001_10181A_30", - "195" : "A009_C001_10181A_195", - "110" : "A009_C001_10181A_110", - "230" : "A009_C001_10181A_230", - "155" : "A009_C001_10181A_155", - "210" : "A009_C001_10181A_210" - }, - "url-1080-H264" : "https:\/\/sylvan.apple.com\/Videos\/comp_A009_C001_010181A_v09_SDR_PS_FINAL_20180725_SDR_2K_AVC.mov", - "accessibilityLabel" : "Sahara and Italy", - "id" : "D60B4DDA-69EB-4841-9690-E8BAE7BC4F80", - "url-1080-HDR" : "https:\/\/sylvan.apple.com\/Aerials\/2x\/Videos\/comp_A009_C001_010181A_v09_HDR_PS_FINAL_20180725_HDR_2K_HEVC.mov", - "url-1080-SDR" : "https:\/\/sylvan.apple.com\/Aerials\/2x\/Videos\/comp_A009_C001_010181A_v09_SDR_PS_FINAL_20180725_SDR_2K_HEVC.mov", - "url-4K-SDR" : "https:\/\/sylvan.apple.com\/Aerials\/2x\/Videos\/comp_A009_C001_010181A_v09_SDR_PS_FINAL_20180725_SDR_4K_HEVC.mov", - "url-4K-HDR" : "https:\/\/sylvan.apple.com\/Aerials\/2x\/Videos\/comp_A009_C001_010181A_v09_HDR_PS_FINAL_20180725_HDR_4K_HEVC.mov" - }, { "pointsOfInterest" : { "0" : "HK_H004_C001_0" diff --git a/Resources/Info.plist b/Resources/Info.plist index 02e1be54..019a3491 100644 --- a/Resources/Info.plist +++ b/Resources/Info.plist @@ -15,11 +15,11 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 1.4.6test1 + 1.4.7beta1 CFBundleSignature ???? CFBundleVersion - 1.4.6test1 + 1.4.7beta1 LSApplicationCategoryType LSMinimumSystemVersion diff --git a/Resources/PreferencesWindow.xib b/Resources/PreferencesWindow.xib index de434470..3f5f8b1f 100644 --- a/Resources/PreferencesWindow.xib +++ b/Resources/PreferencesWindow.xib @@ -10,6 +10,7 @@ + @@ -59,6 +60,7 @@ + @@ -526,7 +528,7 @@ is disabled - + @@ -1328,7 +1330,7 @@ Shift, but macOS 10.12.4 or above and a compatible Mac are required) - + @@ -1443,8 +1445,16 @@ Shift, but macOS 10.12.4 or above and a compatible Mac are required) + + + + + + + + - + @@ -1461,8 +1471,28 @@ Shift, but macOS 10.12.4 or above and a compatible Mac are required) + + + + + + + + + + - + @@ -1470,26 +1500,78 @@ Shift, but macOS 10.12.4 or above and a compatible Mac are required) - - + + - + - + + + + + + + + + + @@ -1498,6 +1580,48 @@ Shift, but macOS 10.12.4 or above and a compatible Mac are required) + + + + + + + + + + + + + + + Apple periodically updates its JSON, to either add new videos, or add new versions of existing videos. This will result, over time, in duplicate videos on your disk. You can use the settings below to put aside the old versions of videos or reclaim disk space. + + + + + + + + + + + + + + + + + - From b0e9217bd8eb3b5a81d9e442dac9912f9722f13b Mon Sep 17 00:00:00 2001 From: Guillaume Louel Date: Sat, 26 Jan 2019 16:10:37 +0100 Subject: [PATCH 3/3] 1.4.7beta2 with forced logging to desktop disabled --- Aerial/App/Resources/Info.plist | 2 +- Resources/Info.plist | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Aerial/App/Resources/Info.plist b/Aerial/App/Resources/Info.plist index dccb0d78..182b3f9d 100644 --- a/Aerial/App/Resources/Info.plist +++ b/Aerial/App/Resources/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.4.7beta1 + 1.4.7beta2 CFBundleSignature ???? CFBundleVersion diff --git a/Resources/Info.plist b/Resources/Info.plist index 019a3491..657d0463 100644 --- a/Resources/Info.plist +++ b/Resources/Info.plist @@ -15,11 +15,11 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 1.4.7beta1 + 1.4.7beta2 CFBundleSignature ???? CFBundleVersion - 1.4.7beta1 + 1.4.7beta2 LSApplicationCategoryType LSMinimumSystemVersion