diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7d5937a..8b47c7b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,9 +21,10 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - uses: maxim-lobanov/setup-xcode@v1 + - name: Set up Xcode + uses: maxim-lobanov/setup-xcode@v1 with: - xcode-version: latest-stable + xcode-version: '26.0-beta' - name: Test run: | diff --git a/AppIcon.icon/Assets/2 - Layer.svg b/AppIcon.icon/Assets/2 - Layer.svg new file mode 100644 index 0000000..84ec4f9 --- /dev/null +++ b/AppIcon.icon/Assets/2 - Layer.svg @@ -0,0 +1,9 @@ + + + 2 - Layer + + + + + + \ No newline at end of file diff --git a/AppIcon.icon/Assets/3 - Layer.svg b/AppIcon.icon/Assets/3 - Layer.svg new file mode 100644 index 0000000..ce77e37 --- /dev/null +++ b/AppIcon.icon/Assets/3 - Layer.svg @@ -0,0 +1,9 @@ + + + 3 - Layer + + + + + + \ No newline at end of file diff --git a/AppIcon.icon/icon.json b/AppIcon.icon/icon.json new file mode 100644 index 0000000..5f83b4f --- /dev/null +++ b/AppIcon.icon/icon.json @@ -0,0 +1,40 @@ +{ + "fill" : { + "linear-gradient" : [ + "srgb:0.62353,0.04706,0.70196,1.00000", + "srgb:0.08235,0.18039,0.67843,1.00000" + ] + }, + "groups" : [ + { + "blend-mode" : "normal", + "blur-material" : null, + "layers" : [ + { + "glass" : true, + "image-name" : "3 - Layer.svg", + "name" : "3 - Layer" + }, + { + "glass" : true, + "image-name" : "2 - Layer.svg", + "name" : "2 - Layer" + } + ], + "shadow" : { + "kind" : "neutral", + "opacity" : 0.5 + }, + "translucency" : { + "enabled" : true, + "value" : 0.5 + } + } + ], + "supported-platforms" : { + "circles" : [ + "watchOS" + ], + "squares" : "shared" + } +} \ No newline at end of file diff --git a/HackerTube.xcodeproj/project.pbxproj b/HackerTube.xcodeproj/project.pbxproj index 2ec9f23..fbe6ada 100644 --- a/HackerTube.xcodeproj/project.pbxproj +++ b/HackerTube.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 77; + objectVersion = 90; objects = { /* Begin PBXBuildFile section */ @@ -11,6 +11,7 @@ D59139412895851300369402 /* TVServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D59139402895851300369402 /* TVServices.framework */; }; D59139482895851300369402 /* TopShelf.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = D591393F2895851300369402 /* TopShelf.appex */; platformFilters = (tvos, ); settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; D591394E2895854100369402 /* CCCApi in Frameworks */ = {isa = PBXBuildFile; productRef = D591394D2895854100369402 /* CCCApi */; }; + D5F872252DFC3F3F002D2F28 /* AppIcon.icon in Resources */ = {isa = PBXBuildFile; fileRef = D5F872242DFC3F35002D2F28 /* AppIcon.icon */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -40,14 +41,12 @@ /* Begin PBXCopyFilesBuildPhase section */ D59139492895851300369402 /* Embed Foundation Extensions */ = { isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; dstPath = ""; - dstSubfolderSpec = 13; + dstSubfolder = PlugIns; files = ( D59139482895851300369402 /* TopShelf.appex in Embed Foundation Extensions */, ); name = "Embed Foundation Extensions"; - runOnlyForDeploymentPostprocessing = 0; }; /* End PBXCopyFilesBuildPhase section */ @@ -61,6 +60,7 @@ D5D2CB292D43EBB300E08E44 /* Screenshots.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = Screenshots.xctestplan; sourceTree = ""; }; D5D2CB2A2D43EBB300E08E44 /* UnitTests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = UnitTests.xctestplan; sourceTree = ""; }; D5EFB19C2B407683008CFE82 /* HackerTubeUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HackerTubeUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + D5F872242DFC3F35002D2F28 /* AppIcon.icon */ = {isa = PBXFileReference; lastKnownFileType = folder.iconcomposer.icon; path = AppIcon.icon; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ @@ -112,34 +112,26 @@ /* Begin PBXFrameworksBuildPhase section */ D591393C2895851300369402 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; files = ( D59139412895851300369402 /* TVServices.framework in Frameworks */, D591394E2895854100369402 /* CCCApi in Frameworks */, ); - runOnlyForDeploymentPostprocessing = 0; }; D591395628958B2600369402 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; files = ( ); - runOnlyForDeploymentPostprocessing = 0; }; D5A156D1289462B3006989FF /* Frameworks */ = { isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; files = ( D50C6F7628956DFC0003D1D0 /* CCCApi in Frameworks */, ); - runOnlyForDeploymentPostprocessing = 0; }; D5EFB1992B407683008CFE82 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; files = ( ); - runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ @@ -157,6 +149,7 @@ children = ( D557E8BA2896F70400342EE2 /* README.md */, D5D2CB292D43EBB300E08E44 /* Screenshots.xctestplan */, + D5F872242DFC3F35002D2F28 /* AppIcon.icon */, D5D2CB2A2D43EBB300E08E44 /* UnitTests.xctestplan */, D5AFD6D92C9BFCF700BF89F5 /* HackerTube */, D50C6F7328956D770003D1D0 /* CCCApi */, @@ -194,8 +187,6 @@ ); buildRules = ( ); - dependencies = ( - ); fileSystemSynchronizedGroups = ( D5AFD6FB2C9BFCFB00BF89F5 /* TopShelf */, ); @@ -282,7 +273,7 @@ attributes = { BuildIndependentTargetsInParallel = 1; LastSwiftUpdateCheck = 1510; - LastUpgradeCheck = 1530; + LastUpgradeCheck = 2600; TargetAttributes = { D591393E2895851300369402 = { CreatedOnToolsVersion = 13.4.1; @@ -310,7 +301,7 @@ de, ); mainGroup = D5A156CB289462B3006989FF; - preferredProjectObjectVersion = 77; + preferredProjectObjectVersion = 90; productRefGroup = D5A156D5289462B3006989FF /* Products */; projectDirPath = ""; projectRoot = ""; @@ -326,62 +317,47 @@ /* Begin PBXResourcesBuildPhase section */ D591393D2895851300369402 /* Resources */ = { isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; files = ( ); - runOnlyForDeploymentPostprocessing = 0; }; D591395728958B2600369402 /* Resources */ = { isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; files = ( ); - runOnlyForDeploymentPostprocessing = 0; }; D5A156D2289462B3006989FF /* Resources */ = { isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; files = ( + D5F872252DFC3F3F002D2F28 /* AppIcon.icon in Resources */, ); - runOnlyForDeploymentPostprocessing = 0; }; D5EFB19A2B407683008CFE82 /* Resources */ = { isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; files = ( ); - runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ D591393B2895851300369402 /* Sources */ = { isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; files = ( ); - runOnlyForDeploymentPostprocessing = 0; }; D591395528958B2600369402 /* Sources */ = { isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; files = ( ); - runOnlyForDeploymentPostprocessing = 0; }; D5A156D0289462B3006989FF /* Sources */ = { isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; files = ( ); - runOnlyForDeploymentPostprocessing = 0; }; D5EFB1982B407683008CFE82 /* Sources */ = { isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; files = ( ); - runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ @@ -407,12 +383,11 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - D591394A2895851300369402 /* Debug */ = { + D591394A2895851300369402 /* Debug configuration for PBXNativeTarget "TopShelf" */ = { isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 3W68UU92K3; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = TopShelf/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = TopShelf; @@ -422,22 +397,20 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.4.1; PRODUCT_BUNDLE_IDENTIFIER = nl.bernson.CCCTube.TopShelf; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_EMIT_LOC_STRINGS = YES; TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 17.6; + TVOS_DEPLOYMENT_TARGET = 18.6; }; name = Debug; }; - D591394B2895851300369402 /* Release */ = { + D591394B2895851300369402 /* Release configuration for PBXNativeTarget "TopShelf" */ = { isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 3W68UU92K3; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = TopShelf/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = TopShelf; @@ -447,25 +420,23 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.4.1; PRODUCT_BUNDLE_IDENTIFIER = nl.bernson.CCCTube.TopShelf; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_EMIT_LOC_STRINGS = YES; TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 17.6; + TVOS_DEPLOYMENT_TARGET = 18.6; }; name = Release; }; - D591396028958B2600369402 /* Debug */ = { + D591396028958B2600369402 /* Debug configuration for PBXNativeTarget "HackerTubeTests" */ = { isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 3W68UU92K3; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 17.6; + IPHONEOS_DEPLOYMENT_TARGET = 18.6; PRODUCT_BUNDLE_IDENTIFIER = nl.bernson.CCCTubeTests; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator"; @@ -473,19 +444,18 @@ SWIFT_EMIT_LOC_STRINGS = NO; TARGETED_DEVICE_FAMILY = "1,2,3"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/HackerTube.app/HackerTube"; - TVOS_DEPLOYMENT_TARGET = 17.6; + TVOS_DEPLOYMENT_TARGET = 18.6; }; name = Debug; }; - D591396128958B2600369402 /* Release */ = { + D591396128958B2600369402 /* Release configuration for PBXNativeTarget "HackerTubeTests" */ = { isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 3W68UU92K3; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 17.6; + IPHONEOS_DEPLOYMENT_TARGET = 18.6; PRODUCT_BUNDLE_IDENTIFIER = nl.bernson.CCCTubeTests; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator"; @@ -493,11 +463,11 @@ SWIFT_EMIT_LOC_STRINGS = NO; TARGETED_DEVICE_FAMILY = "1,2,3"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/HackerTube.app/HackerTube"; - TVOS_DEPLOYMENT_TARGET = 17.6; + TVOS_DEPLOYMENT_TARGET = 18.6; }; name = Release; }; - D5A156E0289462B3006989FF /* Debug */ = { + D5A156E0289462B3006989FF /* Debug configuration for PBXProject "HackerTube" */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -533,6 +503,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = 3W68UU92K3; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -556,13 +527,14 @@ MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = appletvos; + STRING_CATALOG_GENERATE_SYMBOLS = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 6.0; }; name = Debug; }; - D5A156E1289462B3006989FF /* Release */ = { + D5A156E1289462B3006989FF /* Release configuration for PBXProject "HackerTube" */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -598,6 +570,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = 3W68UU92K3; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -614,6 +587,7 @@ MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = appletvos; + STRING_CATALOG_GENERATE_SYMBOLS = YES; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 6.0; @@ -621,21 +595,21 @@ }; name = Release; }; - D5A156E3289462B3006989FF /* Debug */ = { + D5A156E3289462B3006989FF /* Debug configuration for PBXNativeTarget "HackerTube" */ = { isa = XCBuildConfiguration; buildSettings = { - "ASSETCATALOG_COMPILER_APPICON_NAME[sdk=*]" = AppIcon_iOS; - "ASSETCATALOG_COMPILER_APPICON_NAME[sdk=appletvos*]" = AppIcon_tvOS; - "ASSETCATALOG_COMPILER_APPICON_NAME[sdk=xros*]" = AppIcon_visionOS; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + "ASSETCATALOG_COMPILER_APPICON_NAME[sdk=*]" = AppIcon; + "ASSETCATALOG_COMPILER_APPICON_NAME[sdk=appletv*]" = AppIcon_tvOS; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = HackerTube/HackerTube.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_ASSET_PATHS = "\"HackerTube/Preview Content\""; - DEVELOPMENT_TEAM = 3W68UU92K3; ENABLE_APP_SANDBOX = YES; "ENABLE_HARDENED_RUNTIME[sdk=macosx*]" = YES; + ENABLE_OUTGOING_NETWORK_CONNECTIONS = YES; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = HackerTube/Info.plist; @@ -646,12 +620,12 @@ INFOPLIST_KEY_UIRequiredDeviceCapabilities = arm64; INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; INFOPLIST_KEY_UIUserInterfaceStyle = Automatic; - IPHONEOS_DEPLOYMENT_TARGET = 17.6; + IPHONEOS_DEPLOYMENT_TARGET = 18.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.4.1; + MARKETING_VERSION = 1.5.0; MERGED_BINARY_TYPE = automatic; PRODUCT_BUNDLE_IDENTIFIER = nl.bernson.CCCTube; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -661,26 +635,26 @@ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_EMIT_LOC_STRINGS = YES; TARGETED_DEVICE_FAMILY = "1,2,3,6,7"; - TVOS_DEPLOYMENT_TARGET = 17.6; + TVOS_DEPLOYMENT_TARGET = 18.6; XROS_DEPLOYMENT_TARGET = 2.0; }; name = Debug; }; - D5A156E4289462B3006989FF /* Release */ = { + D5A156E4289462B3006989FF /* Release configuration for PBXNativeTarget "HackerTube" */ = { isa = XCBuildConfiguration; buildSettings = { - "ASSETCATALOG_COMPILER_APPICON_NAME[sdk=*]" = AppIcon_iOS; - "ASSETCATALOG_COMPILER_APPICON_NAME[sdk=appletvos*]" = AppIcon_tvOS; - "ASSETCATALOG_COMPILER_APPICON_NAME[sdk=xros*]" = AppIcon_visionOS; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + "ASSETCATALOG_COMPILER_APPICON_NAME[sdk=*]" = AppIcon; + "ASSETCATALOG_COMPILER_APPICON_NAME[sdk=appletv*]" = AppIcon_tvOS; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = HackerTube/HackerTube.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_ASSET_PATHS = "\"HackerTube/Preview Content\""; - DEVELOPMENT_TEAM = 3W68UU92K3; ENABLE_APP_SANDBOX = YES; "ENABLE_HARDENED_RUNTIME[sdk=macosx*]" = YES; + ENABLE_OUTGOING_NETWORK_CONNECTIONS = YES; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = HackerTube/Info.plist; @@ -691,12 +665,12 @@ INFOPLIST_KEY_UIRequiredDeviceCapabilities = arm64; INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; INFOPLIST_KEY_UIUserInterfaceStyle = Automatic; - IPHONEOS_DEPLOYMENT_TARGET = 17.6; + IPHONEOS_DEPLOYMENT_TARGET = 18.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.4.1; + MARKETING_VERSION = 1.5.0; MERGED_BINARY_TYPE = automatic; PRODUCT_BUNDLE_IDENTIFIER = nl.bernson.CCCTube; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -706,22 +680,21 @@ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_EMIT_LOC_STRINGS = YES; TARGETED_DEVICE_FAMILY = "1,2,3,6,7"; - TVOS_DEPLOYMENT_TARGET = 17.6; + TVOS_DEPLOYMENT_TARGET = 18.6; XROS_DEPLOYMENT_TARGET = 2.0; }; name = Release; }; - D5EFB1A42B407683008CFE82 /* Debug */ = { + D5EFB1A42B407683008CFE82 /* Debug configuration for PBXNativeTarget "HackerTubeUITests" */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEAD_CODE_STRIPPING = YES; - DEVELOPMENT_TEAM = 3W68UU92K3; GCC_C_LANGUAGE_STANDARD = gnu17; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 17.6; + IPHONEOS_DEPLOYMENT_TARGET = 18.6; PRODUCT_BUNDLE_IDENTIFIER = nl.bernson.CCCTubeUITests; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = auto; @@ -731,21 +704,20 @@ SWIFT_EMIT_LOC_STRINGS = NO; TARGETED_DEVICE_FAMILY = "1,2,3"; TEST_TARGET_NAME = HackerTube; - TVOS_DEPLOYMENT_TARGET = 17.6; + TVOS_DEPLOYMENT_TARGET = 18.6; }; name = Debug; }; - D5EFB1A52B407683008CFE82 /* Release */ = { + D5EFB1A52B407683008CFE82 /* Release configuration for PBXNativeTarget "HackerTubeUITests" */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEAD_CODE_STRIPPING = YES; - DEVELOPMENT_TEAM = 3W68UU92K3; GCC_C_LANGUAGE_STANDARD = gnu17; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 17.6; + IPHONEOS_DEPLOYMENT_TARGET = 18.6; PRODUCT_BUNDLE_IDENTIFIER = nl.bernson.CCCTubeUITests; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = auto; @@ -754,7 +726,7 @@ SWIFT_EMIT_LOC_STRINGS = NO; TARGETED_DEVICE_FAMILY = "1,2,3"; TEST_TARGET_NAME = HackerTube; - TVOS_DEPLOYMENT_TARGET = 17.6; + TVOS_DEPLOYMENT_TARGET = 18.6; }; name = Release; }; @@ -764,46 +736,41 @@ D591394C2895851300369402 /* Build configuration list for PBXNativeTarget "TopShelf" */ = { isa = XCConfigurationList; buildConfigurations = ( - D591394A2895851300369402 /* Debug */, - D591394B2895851300369402 /* Release */, + D591394A2895851300369402 /* Debug configuration for PBXNativeTarget "TopShelf" */, + D591394B2895851300369402 /* Release configuration for PBXNativeTarget "TopShelf" */, ); - defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; D591395F28958B2600369402 /* Build configuration list for PBXNativeTarget "HackerTubeTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - D591396028958B2600369402 /* Debug */, - D591396128958B2600369402 /* Release */, + D591396028958B2600369402 /* Debug configuration for PBXNativeTarget "HackerTubeTests" */, + D591396128958B2600369402 /* Release configuration for PBXNativeTarget "HackerTubeTests" */, ); - defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; D5A156CF289462B3006989FF /* Build configuration list for PBXProject "HackerTube" */ = { isa = XCConfigurationList; buildConfigurations = ( - D5A156E0289462B3006989FF /* Debug */, - D5A156E1289462B3006989FF /* Release */, + D5A156E0289462B3006989FF /* Debug configuration for PBXProject "HackerTube" */, + D5A156E1289462B3006989FF /* Release configuration for PBXProject "HackerTube" */, ); - defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; D5A156E2289462B3006989FF /* Build configuration list for PBXNativeTarget "HackerTube" */ = { isa = XCConfigurationList; buildConfigurations = ( - D5A156E3289462B3006989FF /* Debug */, - D5A156E4289462B3006989FF /* Release */, + D5A156E3289462B3006989FF /* Debug configuration for PBXNativeTarget "HackerTube" */, + D5A156E4289462B3006989FF /* Release configuration for PBXNativeTarget "HackerTube" */, ); - defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; D5EFB1A62B407683008CFE82 /* Build configuration list for PBXNativeTarget "HackerTubeUITests" */ = { isa = XCConfigurationList; buildConfigurations = ( - D5EFB1A42B407683008CFE82 /* Debug */, - D5EFB1A52B407683008CFE82 /* Release */, + D5EFB1A42B407683008CFE82 /* Debug configuration for PBXNativeTarget "HackerTubeUITests" */, + D5EFB1A52B407683008CFE82 /* Release configuration for PBXNativeTarget "HackerTubeUITests" */, ); - defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ diff --git a/HackerTube.xcodeproj/xcshareddata/xcschemes/HackerTube.xcscheme b/HackerTube.xcodeproj/xcshareddata/xcschemes/HackerTube.xcscheme index d9e451c..f3c2ab9 100644 --- a/HackerTube.xcodeproj/xcshareddata/xcschemes/HackerTube.xcscheme +++ b/HackerTube.xcodeproj/xcshareddata/xcschemes/HackerTube.xcscheme @@ -1,6 +1,6 @@ - - com.apple.security.network.client - - com.apple.security.app-sandbox - - + diff --git a/HackerTube/Localizable.xcstrings b/HackerTube/Localizable.xcstrings index 18a03d0..15922d1 100644 --- a/HackerTube/Localizable.xcstrings +++ b/HackerTube/Localizable.xcstrings @@ -2,6 +2,7 @@ "sourceLanguage" : "en", "strings" : { "%lld views" : { + "comment" : "A label displaying the number of views for a talk.", "localizations" : { "de" : { "variations" : { @@ -9,7 +10,7 @@ "one" : { "stringUnit" : { "state" : "translated", - "value" : "%lld Ansicht" + "value" : "%lld Aufruf" } }, "other" : { @@ -60,6 +61,7 @@ } }, "Conferences" : { + "comment" : "Heading for the view and tab that displays a list of conferences.", "localizations" : { "de" : { "stringUnit" : { @@ -76,11 +78,13 @@ } }, "Copyright" : { + "comment" : "A heading displayed above the copyright information of a talk.", + "isCommentAutoGenerated" : true, "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Urheberrechte ©" + "value" : "Copyright ©" } }, "nl" : { @@ -92,6 +96,7 @@ } }, "Date %@" : { + "comment" : "A label displaying the publication date of a talk.", "localizations" : { "de" : { "stringUnit" : { @@ -108,6 +113,8 @@ } }, "Done" : { + "comment" : "A button that closes the sheet.", + "isCommentAutoGenerated" : true, "localizations" : { "de" : { "stringUnit" : { @@ -124,6 +131,7 @@ } }, "Failed to load data from the media.ccc.de API" : { + "comment" : "An error that is shown when the talks or other data could not be loaded from the streaming platform.", "localizations" : { "de" : { "stringUnit" : { @@ -139,23 +147,8 @@ } } }, - "No copyright information encoded in video. Please refer to the schedule of the organizer of %@ at: %@" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Im Video sind keine Copyright-Informationen kodiert. Bitte beachten Sie den Fahrplan des Veranstalters von %@ unter: %@" - } - }, - "nl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Geen copyright-informatie gecodeerd in video. Raadpleeg het schema van de organisator van %@ op: %@" - } - } - } - }, "No copyright information encoded in video. Please refer to the website of the organizer of %@ at: %@" : { + "comment" : "A label that is shown when no copyright information is available for a talk.", "localizations" : { "de" : { "stringUnit" : { @@ -172,59 +165,42 @@ } }, "No talks found" : { - - }, - "Ok" : { + "comment" : "A label that is shown when there are no talks in the current collection or (search) results.", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Ok" + "value" : "Keine Vorträge gefunden" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Ok" + "value" : "Geen talks gevonden" } } } }, - "Play HD" : { - "extractionState" : "manual", - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "HD abspielen" - } - }, - "nl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Speel HD af" - } - } - } - }, - "Play SD" : { - "extractionState" : "manual", + "Ok" : { + "comment" : "The title of the button that dismisses the alert.", + "isCommentAutoGenerated" : true, "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "SD abspielen" + "value" : "OK" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Speel SD af" + "value" : "Ok" } } } }, "Popular" : { + "comment" : "Heading for the popular talks view and tab.", "localizations" : { "de" : { "stringUnit" : { @@ -241,6 +217,8 @@ } }, "Read more" : { + "comment" : "A button that displays the full description of a talk.", + "isCommentAutoGenerated" : true, "localizations" : { "de" : { "stringUnit" : { @@ -257,6 +235,7 @@ } }, "Recent" : { + "comment" : "Heading for the recent talks view and tab.", "localizations" : { "de" : { "stringUnit" : { @@ -273,6 +252,7 @@ } }, "Search" : { + "comment" : "Heading for the search view and tab.", "localizations" : { "de" : { "stringUnit" : { @@ -289,6 +269,7 @@ } }, "Search talks..." : { + "comment" : "Placeholder text for the search field.", "localizations" : { "de" : { "stringUnit" : { @@ -305,7 +286,22 @@ } }, "Year" : { - + "comment" : "A label that indicates the year to filter talks by.", + "isCommentAutoGenerated" : true, + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Jahr" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Jaar" + } + } + } } }, "version" : "1.0" diff --git a/TopShelf/ContentProvider.swift b/TopShelf/ContentProvider.swift index 670d79b..e50a77f 100644 --- a/TopShelf/ContentProvider.swift +++ b/TopShelf/ContentProvider.swift @@ -6,7 +6,7 @@ // import CCCApi -import TVServices +@preconcurrency import TVServices class ContentProvider: TVTopShelfContentProvider { let factory = TopShelfContentFactory()