From 267eba9d664c6c7e0da3b79c0f536edcd8e1ac35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Sun, 7 Jun 2026 12:44:24 +0100 Subject: [PATCH 01/16] Update Xcode version, update deps --- ios/Podfile.lock | 230 ------------ ios/Runner.xcodeproj/project.pbxproj | 45 ++- .../xcshareddata/swiftpm/Package.resolved | 131 +++++++ .../xcshareddata/xcschemes/Runner.xcscheme | 18 + .../xcshareddata/swiftpm/Package.resolved | 131 +++++++ ios/fastlane/Fastfile | 2 +- pubspec.lock | 336 +++++++++--------- pubspec.yaml | 10 +- 8 files changed, 485 insertions(+), 418 deletions(-) create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved create mode 100644 ios/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/ios/Podfile.lock b/ios/Podfile.lock index a6d94773..c25e7afa 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,251 +1,21 @@ PODS: - device_calendar (0.0.1): - Flutter - - device_info_plus (0.0.1): - - Flutter - - Firebase/CoreOnly (12.12.0): - - FirebaseCore (~> 12.12.0) - - Firebase/Crashlytics (12.12.0): - - Firebase/CoreOnly - - FirebaseCrashlytics (~> 12.12.0) - - Firebase/RemoteConfig (12.12.0): - - Firebase/CoreOnly - - FirebaseRemoteConfig (~> 12.12.0) - - firebase_core (4.7.0): - - Firebase/CoreOnly (= 12.12.0) - - Flutter - - firebase_crashlytics (5.2.0): - - Firebase/Crashlytics (= 12.12.0) - - firebase_core - - Flutter - - firebase_remote_config (6.4.0): - - Firebase/RemoteConfig (= 12.12.0) - - firebase_core - - Flutter - - FirebaseABTesting (12.12.0): - - FirebaseCore (~> 12.12.0) - - FirebaseCore (12.12.0): - - FirebaseCoreInternal (~> 12.12.0) - - GoogleUtilities/Environment (~> 8.1) - - GoogleUtilities/Logger (~> 8.1) - - FirebaseCoreExtension (12.12.0): - - FirebaseCore (~> 12.12.0) - - FirebaseCoreInternal (12.12.0): - - "GoogleUtilities/NSData+zlib (~> 8.1)" - - FirebaseCrashlytics (12.12.0): - - FirebaseCore (~> 12.12.0) - - FirebaseInstallations (~> 12.12.0) - - FirebaseRemoteConfigInterop (~> 12.12.0) - - FirebaseSessions (~> 12.12.0) - - GoogleDataTransport (~> 10.1) - - GoogleUtilities/Environment (~> 8.1) - - nanopb (~> 3.30910.0) - - PromisesObjC (~> 2.4) - - FirebaseInstallations (12.12.0): - - FirebaseCore (~> 12.12.0) - - GoogleUtilities/Environment (~> 8.1) - - GoogleUtilities/UserDefaults (~> 8.1) - - PromisesObjC (~> 2.4) - - FirebaseRemoteConfig (12.12.0): - - FirebaseABTesting (~> 12.12.0) - - FirebaseCore (~> 12.12.0) - - FirebaseInstallations (~> 12.12.0) - - FirebaseRemoteConfigInterop (~> 12.12.0) - - FirebaseSharedSwift (~> 12.12.0) - - GoogleUtilities/Environment (~> 8.1) - - "GoogleUtilities/NSData+zlib (~> 8.1)" - - FirebaseRemoteConfigInterop (12.12.0) - - FirebaseSessions (12.12.0): - - FirebaseCore (~> 12.12.0) - - FirebaseCoreExtension (~> 12.12.0) - - FirebaseInstallations (~> 12.12.0) - - GoogleDataTransport (~> 10.1) - - GoogleUtilities/Environment (~> 8.1) - - GoogleUtilities/UserDefaults (~> 8.1) - - nanopb (~> 3.30910.0) - - PromisesSwift (~> 2.1) - - FirebaseSharedSwift (12.12.0) - Flutter (1.0.0) - - flutter_contacts (0.0.1): - - Flutter - - flutter_native_splash (2.4.3): - - Flutter - - flutter_secure_storage_darwin (10.0.0): - - Flutter - - FlutterMacOS - - geolocator_apple (1.2.0): - - Flutter - - FlutterMacOS - - GoogleDataTransport (10.1.0): - - nanopb (~> 3.30910.0) - - PromisesObjC (~> 2.4) - - GoogleUtilities/Environment (8.1.0): - - GoogleUtilities/Privacy - - GoogleUtilities/Logger (8.1.0): - - GoogleUtilities/Environment - - GoogleUtilities/Privacy - - "GoogleUtilities/NSData+zlib (8.1.0)": - - GoogleUtilities/Privacy - - GoogleUtilities/Privacy (8.1.0) - - GoogleUtilities/UserDefaults (8.1.0): - - GoogleUtilities/Logger - - GoogleUtilities/Privacy - - home_widget (0.0.1): - - Flutter - - map_launcher (0.0.1): - - Flutter - - MapLibre (6.19.1) - - maplibre_gl (0.25.0): - - Flutter - - MapLibre (= 6.19.1) - - nanopb (3.30910.0): - - nanopb/decode (= 3.30910.0) - - nanopb/encode (= 3.30910.0) - - nanopb/decode (3.30910.0) - - nanopb/encode (3.30910.0) - - package_info_plus (0.4.5): - - Flutter - - permission_handler_apple (9.3.0): - - Flutter - - PromisesObjC (2.4.0) - - PromisesSwift (2.4.0): - - PromisesObjC (= 2.4.0) - - quick_actions_ios (0.0.1): - - Flutter - - shared_preferences_foundation (0.0.1): - - Flutter - - FlutterMacOS - - sqflite_darwin (0.0.4): - - Flutter - - FlutterMacOS - - url_launcher_ios (0.0.1): - - Flutter - - video_player_avfoundation (0.0.1): - - Flutter - - FlutterMacOS DEPENDENCIES: - device_calendar (from `.symlinks/plugins/device_calendar/ios`) - - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) - - firebase_core (from `.symlinks/plugins/firebase_core/ios`) - - firebase_crashlytics (from `.symlinks/plugins/firebase_crashlytics/ios`) - - firebase_remote_config (from `.symlinks/plugins/firebase_remote_config/ios`) - Flutter (from `Flutter`) - - flutter_contacts (from `.symlinks/plugins/flutter_contacts/ios`) - - flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`) - - flutter_secure_storage_darwin (from `.symlinks/plugins/flutter_secure_storage_darwin/darwin`) - - geolocator_apple (from `.symlinks/plugins/geolocator_apple/darwin`) - - home_widget (from `.symlinks/plugins/home_widget/ios`) - - map_launcher (from `.symlinks/plugins/map_launcher/ios`) - - maplibre_gl (from `.symlinks/plugins/maplibre_gl/ios`) - - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) - - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) - - quick_actions_ios (from `.symlinks/plugins/quick_actions_ios/ios`) - - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) - - sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`) - - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - - video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`) - -SPEC REPOS: - trunk: - - Firebase - - FirebaseABTesting - - FirebaseCore - - FirebaseCoreExtension - - FirebaseCoreInternal - - FirebaseCrashlytics - - FirebaseInstallations - - FirebaseRemoteConfig - - FirebaseRemoteConfigInterop - - FirebaseSessions - - FirebaseSharedSwift - - GoogleDataTransport - - GoogleUtilities - - MapLibre - - nanopb - - PromisesObjC - - PromisesSwift EXTERNAL SOURCES: device_calendar: :path: ".symlinks/plugins/device_calendar/ios" - device_info_plus: - :path: ".symlinks/plugins/device_info_plus/ios" - firebase_core: - :path: ".symlinks/plugins/firebase_core/ios" - firebase_crashlytics: - :path: ".symlinks/plugins/firebase_crashlytics/ios" - firebase_remote_config: - :path: ".symlinks/plugins/firebase_remote_config/ios" Flutter: :path: Flutter - flutter_contacts: - :path: ".symlinks/plugins/flutter_contacts/ios" - flutter_native_splash: - :path: ".symlinks/plugins/flutter_native_splash/ios" - flutter_secure_storage_darwin: - :path: ".symlinks/plugins/flutter_secure_storage_darwin/darwin" - geolocator_apple: - :path: ".symlinks/plugins/geolocator_apple/darwin" - home_widget: - :path: ".symlinks/plugins/home_widget/ios" - map_launcher: - :path: ".symlinks/plugins/map_launcher/ios" - maplibre_gl: - :path: ".symlinks/plugins/maplibre_gl/ios" - package_info_plus: - :path: ".symlinks/plugins/package_info_plus/ios" - permission_handler_apple: - :path: ".symlinks/plugins/permission_handler_apple/ios" - quick_actions_ios: - :path: ".symlinks/plugins/quick_actions_ios/ios" - shared_preferences_foundation: - :path: ".symlinks/plugins/shared_preferences_foundation/darwin" - sqflite_darwin: - :path: ".symlinks/plugins/sqflite_darwin/darwin" - url_launcher_ios: - :path: ".symlinks/plugins/url_launcher_ios/ios" - video_player_avfoundation: - :path: ".symlinks/plugins/video_player_avfoundation/darwin" SPEC CHECKSUMS: device_calendar: b55b2c5406cfba45c95a59f9059156daee1f74ed - device_info_plus: 21fcca2080fbcd348be798aa36c3e5ed849eefbe - Firebase: aa154fee4e9b8eac17aa42344988865b3e857d33 - firebase_core: 9156a152117c843440b0b990c785aa0259bc5447 - firebase_crashlytics: e24acd48861c5edf6e0f6c134d6a0b28593c76d7 - firebase_remote_config: 924bae350163e03e7e5a3a40733addb9a8e1e42b - FirebaseABTesting: c21a401a23c2eaa6f520d19febcd4911312b545f - FirebaseCore: f28af0427998cd53f8d4826bce17260e33224053 - FirebaseCoreExtension: ff6fd42eb5287e71d3e160450de6509733d9ead7 - FirebaseCoreInternal: 7c12fc3011d889085e765e317d7b9fd1cef97af9 - FirebaseCrashlytics: 2a38be892de8417a06e929a13fec0971afcb4dfc - FirebaseInstallations: 4e6e162aa4abaaeeeb01dd00179dfc5ad9c2194e - FirebaseRemoteConfig: 6ab95b4ee5fd4a94d09a704d88f5341db5713250 - FirebaseRemoteConfigInterop: 23996ab7397494722df4fdd1fd398024389d5da8 - FirebaseSessions: 804bd321f2d2f2ddafe74ef7856062aa19f179c2 - FirebaseSharedSwift: bccaff90721d14bafc14be34f28b77fdd7c91dc9 Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467 - flutter_contacts: 2ec1d6b62ca2869c3bbb3871bd74d4e3ef157135 - flutter_native_splash: c32d145d68aeda5502d5f543ee38c192065986cf - flutter_secure_storage_darwin: acdb3f316ed05a3e68f856e0353b133eec373a23 - geolocator_apple: ab36aa0e8b7d7a2d7639b3b4e48308394e8cef5e - GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 - GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1 - home_widget: 54b4f6b36ed8d64cfee594a476225c35c3e45091 - map_launcher: 8051ad5783913cafce93f2414c6858f2904fd8df - MapLibre: 7f24faba45439f80ccb0f83393c29fa32cb81952 - maplibre_gl: a2114567cbd1065866614fbd34dfb75ab782aaa2 - nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 - package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499 - permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d - PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 - PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851 - quick_actions_ios: 500fcc11711d9f646739093395c4ae8eec25f779 - shared_preferences_foundation: 7036424c3d8ec98dfe75ff1667cb0cd531ec82bb - sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0 - url_launcher_ios: 7a95fa5b60cc718a708b8f2966718e93db0cef1b - video_player_avfoundation: dd410b52df6d2466a42d28550e33e4146928280a PODFILE CHECKSUM: 65a6ba0e4b3bb3f7189885fb90c414d2d556c7cc diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 9928b7a2..0daebc69 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -27,6 +27,7 @@ 28F2C3202B29C62C00DC87B4 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 28F2C31F2B29C62C00DC87B4 /* GoogleService-Info.plist */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; @@ -96,6 +97,7 @@ 48E0FE090C6AF99C32502713 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = FlutterGeneratedPluginSwiftPackage; path = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; @@ -122,6 +124,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */, FE06AE6704E40199BD17F86E /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -170,6 +173,7 @@ 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( + 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */, 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 9740EEB21CF90195004384FC /* Debug.xcconfig */, 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, @@ -255,7 +259,6 @@ 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 2812AFD12B21E52F00306CC7 /* [Crashlytics] Upload dSYM */, EBADD77312F1D3C5C612BC88 /* [CP] Embed Pods Frameworks */, - 24B10E3EE2A21E3870A3C31F /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -263,6 +266,9 @@ 28C6B8A22B6AEB8700DD5E9A /* PBXTargetDependency */, ); name = Runner; + packageProductDependencies = ( + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */, + ); productName = Runner; productReference = 97C146EE1CF9000F007C117D /* Runner.app */; productType = "com.apple.product-type.application"; @@ -296,6 +302,9 @@ de, ); mainGroup = 97C146E51CF9000F007C117D; + packageReferences = ( + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "FlutterGeneratedPluginSwiftPackage" */, + ); productRefGroup = 97C146EF1CF9000F007C117D /* Products */; projectDirPath = ""; projectRoot = ""; @@ -334,23 +343,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 24B10E3EE2A21E3870A3C31F /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Copy Pods Resources"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; 2812AFD02B21E4E400306CC7 /* [Crashlytics] Clear dSYM */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -636,6 +628,7 @@ MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = de.tum.tca.calendarWidget; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; @@ -682,6 +675,7 @@ MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = de.tum.tca.calendarWidget; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; @@ -726,6 +720,7 @@ MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = de.tum.tca.calendarWidget; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; @@ -951,6 +946,20 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "FlutterGeneratedPluginSwiftPackage" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */ = { + isa = XCSwiftPackageProductDependency; + productName = FlutterGeneratedPluginSwiftPackage; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 97C146E61CF9000F007C117D /* Project object */; } diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 00000000..d547d357 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,131 @@ +{ + "pins" : [ + { + "identity" : "abseil-cpp-binary", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/abseil-cpp-binary.git", + "state" : { + "revision" : "bbe8b69694d7873315fd3a4ad41efe043e1c07c5", + "version" : "1.2024072200.0" + } + }, + { + "identity" : "app-check", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/app-check.git", + "state" : { + "revision" : "61b85103a1aeed8218f17c794687781505fbbef5", + "version" : "11.2.0" + } + }, + { + "identity" : "firebase-ios-sdk", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/firebase-ios-sdk", + "state" : { + "revision" : "8d5b4189f1f482df8d5c58c9985ea70491ef5382", + "version" : "12.14.0" + } + }, + { + "identity" : "google-ads-on-device-conversion-ios-sdk", + "kind" : "remoteSourceControl", + "location" : "https://github.com/googleads/google-ads-on-device-conversion-ios-sdk", + "state" : { + "revision" : "9bfcc6cf435b2e7c5562c1900b8680c594fa9a64", + "version" : "3.6.0" + } + }, + { + "identity" : "googleappmeasurement", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleAppMeasurement.git", + "state" : { + "revision" : "219e564a8510e983e675c94f77f7f7c50049f22d", + "version" : "12.14.0" + } + }, + { + "identity" : "googledatatransport", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleDataTransport.git", + "state" : { + "revision" : "617af071af9aa1d6a091d59a202910ac482128f9", + "version" : "10.1.0" + } + }, + { + "identity" : "googleutilities", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleUtilities.git", + "state" : { + "revision" : "60da361632d0de02786f709bdc0c4df340f7613e", + "version" : "8.1.0" + } + }, + { + "identity" : "grpc-binary", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/grpc-binary.git", + "state" : { + "revision" : "75b31c842f664a0f46a2e590a570e370249fd8f6", + "version" : "1.69.1" + } + }, + { + "identity" : "gtm-session-fetcher", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/gtm-session-fetcher.git", + "state" : { + "revision" : "c0ac7575d70050c2973ba2318bd5af47f8e8153a", + "version" : "5.3.0" + } + }, + { + "identity" : "interop-ios-for-google-sdks", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/interop-ios-for-google-sdks.git", + "state" : { + "revision" : "040d087ac2267d2ddd4cca36c757d1c6a05fdbfe", + "version" : "101.0.0" + } + }, + { + "identity" : "leveldb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/leveldb.git", + "state" : { + "revision" : "a0bc79961d7be727d258d33d5a6b2f1023270ba1", + "version" : "1.22.5" + } + }, + { + "identity" : "maplibre-gl-native-distribution", + "kind" : "remoteSourceControl", + "location" : "https://github.com/maplibre/maplibre-gl-native-distribution.git", + "state" : { + "revision" : "40e1a0db6d055abf8a1b6e2f6127a8bb6e895cf8", + "version" : "6.25.1" + } + }, + { + "identity" : "nanopb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/nanopb.git", + "state" : { + "revision" : "b7e1104502eca3a213b46303391ca4d3bc8ddec1", + "version" : "2.30910.0" + } + }, + { + "identity" : "promises", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/promises.git", + "state" : { + "revision" : "540318ecedd63d883069ae7f1ed811a2df00b6ac", + "version" : "2.4.0" + } + } + ], + "version" : 2 +} diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 9c12df59..5db441f5 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -5,6 +5,24 @@ + + + + + + + + + + =3.11.4 <4.0.0" - flutter: ">=3.38.4" + dart: ">=3.12.1 <4.0.0" + flutter: ">=3.44.0" diff --git a/pubspec.yaml b/pubspec.yaml index dc9ff02f..1033bad7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,10 +1,10 @@ name: campus_flutter description: "TUM Campus App" publish_to: 'none' -version: 5.3.0+1 +version: 5.3.1+1 environment: - sdk: ^3.11.4 + sdk: ^3.12.1 dependencies: flutter: @@ -51,16 +51,16 @@ dependencies: url: https://github.com/mchome/flutter_colorpicker.git ref: master flutter_contacts: ^2.0.2 - maplibre_gl: ^0.25.0 + maplibre_gl: ^0.26.0 # calendar sync device_calendar: ^4.3.3 # helpers - device_info_plus: ^12.1.0 + device_info_plus: ^13.1.0 flutter_secure_storage: ^10.0.0 geolocator: ^14.0.0 - package_info_plus: ^9.0.0 + package_info_plus: ^10.1.0 path_provider: ^2.0.15 path: ^1.9.0 url_launcher: ^6.1.10 From b14dfbd833c99a48197a9eedb448128d2df98cb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Sun, 7 Jun 2026 12:49:48 +0100 Subject: [PATCH 02/16] debug pipeline --- .github/workflows/deploy_beta.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/deploy_beta.yml b/.github/workflows/deploy_beta.yml index 520433b2..a09f359a 100644 --- a/.github/workflows/deploy_beta.yml +++ b/.github/workflows/deploy_beta.yml @@ -37,6 +37,10 @@ jobs: name: Install CocoaPods run: cd ./ios && pod install + - if: matrix.platform == 'ios' + name: Clear SPM artifact cache + run: rm -rf ~/Library/Caches/org.swift.swiftpm/artifacts + - if: matrix.platform == 'ios' name: Add SSH Key uses: webfactory/ssh-agent@v0.8.0 From 0314b61f520af93bc02ea1d335a4daf7c38c79a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Sun, 7 Jun 2026 13:16:20 +0100 Subject: [PATCH 03/16] Fix iOS CI: remove skip_certificate_matching, skip redundant SPM resolution --- ios/fastlane/Fastfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index 204275b2..a90d6984 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -19,7 +19,6 @@ platform :ios do match( type: "appstore", readonly: true, - skip_certificate_matching: true, app_identifier: ["de.tum.tca", "de.tum.tca.calendarWidget"] ) @@ -52,7 +51,8 @@ platform :ios do build_app( scheme: "Runner", workspace: "Runner.xcworkspace", - export_method: "app-store" + export_method: "app-store", + skip_package_dependencies_resolution: true ) upload_to_testflight( From 9f7f31190e4ddf2daf7b41db77b92552ea140c03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Sun, 7 Jun 2026 18:41:23 +0100 Subject: [PATCH 04/16] Fix iOS signing: import cert directly, bypass match PKCS12 import --- .github/workflows/deploy_beta.yml | 8 ++++++++ ios/fastlane/Fastfile | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/.github/workflows/deploy_beta.yml b/.github/workflows/deploy_beta.yml index a09f359a..2dbf2a45 100644 --- a/.github/workflows/deploy_beta.yml +++ b/.github/workflows/deploy_beta.yml @@ -41,6 +41,12 @@ jobs: name: Clear SPM artifact cache run: rm -rf ~/Library/Caches/org.swift.swiftpm/artifacts + - if: matrix.platform == 'ios' + name: Decode Distribution Certificate + run: echo "$IOS_DIST_P12_BASE64" | base64 --decode > /tmp/dist_cert.p12 + env: + IOS_DIST_P12_BASE64: ${{ secrets.IOS_DIST_P12_BASE64 }} + - if: matrix.platform == 'ios' name: Add SSH Key uses: webfactory/ssh-agent@v0.8.0 @@ -57,6 +63,7 @@ jobs: APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.ASC_ISSUER_ID }} APP_STORE_CONNECT_API_KEY_BASE64: ${{ secrets.ASC_PRIVATE_KEY }} MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} + IOS_DIST_P12_PASSWORD: ${{ secrets.IOS_DIST_P12_PASSWORD }} RELEASE_NOTES: ${{ github.event.release.body }} - if: matrix.platform == 'ios' && github.event_name != 'release' @@ -69,6 +76,7 @@ jobs: APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.ASC_ISSUER_ID }} APP_STORE_CONNECT_API_KEY_BASE64: ${{ secrets.ASC_PRIVATE_KEY }} MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} + IOS_DIST_P12_PASSWORD: ${{ secrets.IOS_DIST_P12_PASSWORD }} - if: matrix.platform == 'android' name: Deserialize Keystore File diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index a90d6984..54b9a10c 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -16,9 +16,18 @@ platform :ios do is_key_content_base64: true ) + if is_ci + import_certificate( + certificate_path: "/tmp/dist_cert.p12", + certificate_password: ENV["IOS_DIST_P12_PASSWORD"], + keychain_name: "fastlane_tmp_keychain" + ) + end + match( type: "appstore", readonly: true, + skip_certificate_matching: true, app_identifier: ["de.tum.tca", "de.tum.tca.calendarWidget"] ) From bd461b1bbec98d1482e52e9b5f3ce8289db4c67b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Sun, 7 Jun 2026 20:26:33 +0100 Subject: [PATCH 05/16] Fix cert import via security CLI, patch FlutterGeneratedPluginSwiftPackage iOS target --- .github/workflows/deploy_beta.yml | 4 ++++ ios/fastlane/Fastfile | 8 +++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/deploy_beta.yml b/.github/workflows/deploy_beta.yml index 2dbf2a45..467ab4ab 100644 --- a/.github/workflows/deploy_beta.yml +++ b/.github/workflows/deploy_beta.yml @@ -37,6 +37,10 @@ jobs: name: Install CocoaPods run: cd ./ios && pod install + - if: matrix.platform == 'ios' + name: Patch FlutterGeneratedPluginSwiftPackage minimum iOS version + run: sed -i '' 's/.iOS("13.0")/.iOS("15.0")/g' ios/Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage/Package.swift + - if: matrix.platform == 'ios' name: Clear SPM artifact cache run: rm -rf ~/Library/Caches/org.swift.swiftpm/artifacts diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index 54b9a10c..33a07e68 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -17,11 +17,9 @@ platform :ios do ) if is_ci - import_certificate( - certificate_path: "/tmp/dist_cert.p12", - certificate_password: ENV["IOS_DIST_P12_PASSWORD"], - keychain_name: "fastlane_tmp_keychain" - ) + keychain_path = File.expand_path("~/Library/Keychains/fastlane_tmp_keychain-db") + sh("security import /tmp/dist_cert.p12 -k #{keychain_path} -P #{ENV['IOS_DIST_P12_PASSWORD'].shellescape} -T /usr/bin/codesign 2>&1") + sh("security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k '' #{keychain_path} 2>&1") end match( From 891c1747aa5e44579bc96bac836d5717c706054c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Sun, 7 Jun 2026 20:41:23 +0100 Subject: [PATCH 06/16] Increase xcodebuild settings timeout for Xcode 26 --- .github/workflows/deploy_beta.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/deploy_beta.yml b/.github/workflows/deploy_beta.yml index 467ab4ab..2ca0766e 100644 --- a/.github/workflows/deploy_beta.yml +++ b/.github/workflows/deploy_beta.yml @@ -68,6 +68,8 @@ jobs: APP_STORE_CONNECT_API_KEY_BASE64: ${{ secrets.ASC_PRIVATE_KEY }} MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} IOS_DIST_P12_PASSWORD: ${{ secrets.IOS_DIST_P12_PASSWORD }} + FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 120 + FASTLANE_XCODEBUILD_SETTINGS_RETRIES: 5 RELEASE_NOTES: ${{ github.event.release.body }} - if: matrix.platform == 'ios' && github.event_name != 'release' @@ -81,6 +83,8 @@ jobs: APP_STORE_CONNECT_API_KEY_BASE64: ${{ secrets.ASC_PRIVATE_KEY }} MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} IOS_DIST_P12_PASSWORD: ${{ secrets.IOS_DIST_P12_PASSWORD }} + FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 120 + FASTLANE_XCODEBUILD_SETTINGS_RETRIES: 5 - if: matrix.platform == 'android' name: Deserialize Keystore File From 8e306142c4a506c2ac2cd4d1a28f744ca74e0ac7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Sun, 7 Jun 2026 21:05:55 +0100 Subject: [PATCH 07/16] Switch to Xcode 26.5 --- ios/fastlane/Fastfile | 2 +- lib/base/util/refresh_button.dart | 63 +++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 lib/base/util/refresh_button.dart diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index 33a07e68..322eb295 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -7,7 +7,7 @@ platform :ios do setup_ci end - xcode_select("/Applications/Xcode_26.4.1.app") + xcode_select("/Applications/Xcode_26.5.app") app_store_connect_api_key( key_id: ENV["APP_STORE_CONNECT_API_KEY_ID"], diff --git a/lib/base/util/refresh_button.dart b/lib/base/util/refresh_button.dart new file mode 100644 index 00000000..1580f449 --- /dev/null +++ b/lib/base/util/refresh_button.dart @@ -0,0 +1,63 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; + +class RefreshButton extends StatefulWidget { + const RefreshButton({ + super.key, + required this.isLoading, + required this.onRefresh, + this.padding, + }); + + final Stream isLoading; + final VoidCallback onRefresh; + final EdgeInsetsGeometry? padding; + + @override + State createState() => _RefreshButtonState(); +} + +class _RefreshButtonState extends State + with SingleTickerProviderStateMixin { + late final AnimationController _controller = AnimationController( + vsync: this, + duration: const Duration(milliseconds: 800), + ); + + late final StreamSubscription _sub; + bool _spinning = false; + + @override + void initState() { + super.initState(); + _sub = widget.isLoading.listen((loading) { + setState(() => _spinning = loading); + if (loading) { + _controller.repeat(); + } else { + _controller.stop(); + _controller.reset(); + } + }); + } + + @override + void dispose() { + _sub.cancel(); + _controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return IconButton( + padding: widget.padding, + icon: RotationTransition( + turns: _controller, + child: const Icon(Icons.refresh), + ), + onPressed: _spinning ? null : widget.onRefresh, + ); + } +} From b876859520d91d791426a57d82472bf8591257df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Sun, 7 Jun 2026 21:31:22 +0100 Subject: [PATCH 08/16] Replace Crashlytics upload-symbols with no-op on CI to fix macOS 26 Gatekeeper block --- ios/fastlane/Fastfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index 322eb295..304137b4 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -20,6 +20,8 @@ platform :ios do keychain_path = File.expand_path("~/Library/Keychains/fastlane_tmp_keychain-db") sh("security import /tmp/dist_cert.p12 -k #{keychain_path} -P #{ENV['IOS_DIST_P12_PASSWORD'].shellescape} -T /usr/bin/codesign 2>&1") sh("security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k '' #{keychain_path} 2>&1") + # Replace upload-symbols with no-op — binary blocked by Gatekeeper on macOS 26 + sh("printf '#!/bin/sh\\nexit 0\\n' > Pods/FirebaseCrashlytics/upload-symbols && chmod +x Pods/FirebaseCrashlytics/upload-symbols") end match( From 4312e6442d44b4a1caae13f2222bffd7f67aea1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Sun, 7 Jun 2026 21:40:39 +0100 Subject: [PATCH 09/16] Fix Crashlytics no-op path (fastlane sh runs from fastlane/ dir) --- ios/fastlane/Fastfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index 304137b4..f20e4dad 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -21,7 +21,7 @@ platform :ios do sh("security import /tmp/dist_cert.p12 -k #{keychain_path} -P #{ENV['IOS_DIST_P12_PASSWORD'].shellescape} -T /usr/bin/codesign 2>&1") sh("security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k '' #{keychain_path} 2>&1") # Replace upload-symbols with no-op — binary blocked by Gatekeeper on macOS 26 - sh("printf '#!/bin/sh\\nexit 0\\n' > Pods/FirebaseCrashlytics/upload-symbols && chmod +x Pods/FirebaseCrashlytics/upload-symbols") + sh("printf '#!/bin/sh\\nexit 0\\n' > ../Pods/FirebaseCrashlytics/upload-symbols && chmod +x ../Pods/FirebaseCrashlytics/upload-symbols") end match( From 9f5d7e67a175e95df8de9e76750b52bab77c122b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Sun, 7 Jun 2026 22:03:49 +0100 Subject: [PATCH 10/16] Skip Crashlytics dSYM upload on CI via $CI env var check --- ios/Runner.xcodeproj/project.pbxproj | 2 +- ios/fastlane/Fastfile | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 0daebc69..d55cea64 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -377,7 +377,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "# Type a script or drag a script file from your workspace to insert its path.\nsleep 1 # Without this, there seems a chance that the script runs before dSYM generation is finished \n$PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp $PROJECT_DIR/Runner/GoogleService-Info.plist -p ios $DWARF_DSYM_FOLDER_PATH/$DWARF_DSYM_FILE_NAME\n"; + shellScript = "if [ \"${CI}\" = \"true\" ]; then exit 0; fi\nsleep 1 # Without this, there seems a chance that the script runs before dSYM generation is finished \n$PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp $PROJECT_DIR/Runner/GoogleService-Info.plist -p ios $DWARF_DSYM_FOLDER_PATH/$DWARF_DSYM_FILE_NAME\n"; }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index f20e4dad..322eb295 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -20,8 +20,6 @@ platform :ios do keychain_path = File.expand_path("~/Library/Keychains/fastlane_tmp_keychain-db") sh("security import /tmp/dist_cert.p12 -k #{keychain_path} -P #{ENV['IOS_DIST_P12_PASSWORD'].shellescape} -T /usr/bin/codesign 2>&1") sh("security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k '' #{keychain_path} 2>&1") - # Replace upload-symbols with no-op — binary blocked by Gatekeeper on macOS 26 - sh("printf '#!/bin/sh\\nexit 0\\n' > ../Pods/FirebaseCrashlytics/upload-symbols && chmod +x ../Pods/FirebaseCrashlytics/upload-symbols") end match( From 15f053b19cd0607cdd6559ff10b6b89ef003ca02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Mon, 8 Jun 2026 10:19:51 +0100 Subject: [PATCH 11/16] Clean up CI: pin fastlane 2.235.0, let match handle cert, add dSYM upload, remove manual cert workaround --- .github/workflows/deploy_beta.yml | 8 - ios/.gitignore | 1 - ios/Gemfile.lock | 339 ++++++++++++++++++++++++++++++ ios/fastlane/Fastfile | 11 +- 4 files changed, 343 insertions(+), 16 deletions(-) create mode 100644 ios/Gemfile.lock diff --git a/.github/workflows/deploy_beta.yml b/.github/workflows/deploy_beta.yml index 2ca0766e..23083b8f 100644 --- a/.github/workflows/deploy_beta.yml +++ b/.github/workflows/deploy_beta.yml @@ -45,12 +45,6 @@ jobs: name: Clear SPM artifact cache run: rm -rf ~/Library/Caches/org.swift.swiftpm/artifacts - - if: matrix.platform == 'ios' - name: Decode Distribution Certificate - run: echo "$IOS_DIST_P12_BASE64" | base64 --decode > /tmp/dist_cert.p12 - env: - IOS_DIST_P12_BASE64: ${{ secrets.IOS_DIST_P12_BASE64 }} - - if: matrix.platform == 'ios' name: Add SSH Key uses: webfactory/ssh-agent@v0.8.0 @@ -67,7 +61,6 @@ jobs: APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.ASC_ISSUER_ID }} APP_STORE_CONNECT_API_KEY_BASE64: ${{ secrets.ASC_PRIVATE_KEY }} MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} - IOS_DIST_P12_PASSWORD: ${{ secrets.IOS_DIST_P12_PASSWORD }} FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 120 FASTLANE_XCODEBUILD_SETTINGS_RETRIES: 5 RELEASE_NOTES: ${{ github.event.release.body }} @@ -82,7 +75,6 @@ jobs: APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.ASC_ISSUER_ID }} APP_STORE_CONNECT_API_KEY_BASE64: ${{ secrets.ASC_PRIVATE_KEY }} MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} - IOS_DIST_P12_PASSWORD: ${{ secrets.IOS_DIST_P12_PASSWORD }} FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 120 FASTLANE_XCODEBUILD_SETTINGS_RETRIES: 5 diff --git a/ios/.gitignore b/ios/.gitignore index b5b6f2f4..40a395e2 100644 --- a/ios/.gitignore +++ b/ios/.gitignore @@ -33,5 +33,4 @@ Runner/GeneratedPluginRegistrant.* !default.pbxuser !default.perspectivev3 -Gemfile.lock build/ diff --git a/ios/Gemfile.lock b/ios/Gemfile.lock new file mode 100644 index 00000000..ef9582a1 --- /dev/null +++ b/ios/Gemfile.lock @@ -0,0 +1,339 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.8) + abbrev (0.1.2) + addressable (2.9.0) + public_suffix (>= 2.0.2, < 8.0) + artifactory (3.0.17) + atomos (0.1.3) + aws-eventstream (1.4.0) + aws-partitions (1.1253.0) + aws-sdk-core (3.249.0) + aws-eventstream (~> 1, >= 1.3.0) + aws-partitions (~> 1, >= 1.992.0) + aws-sigv4 (~> 1.9) + base64 + bigdecimal + jmespath (~> 1, >= 1.6.1) + logger + aws-sdk-kms (1.128.0) + aws-sdk-core (~> 3, >= 3.248.0) + aws-sigv4 (~> 1.5) + aws-sdk-s3 (1.224.0) + aws-sdk-core (~> 3, >= 3.248.0) + aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.5) + aws-sigv4 (1.12.1) + aws-eventstream (~> 1, >= 1.0.2) + babosa (1.0.4) + base64 (0.3.0) + benchmark (0.5.0) + bigdecimal (4.1.2) + claide (1.1.0) + colored (1.2) + colored2 (3.1.2) + commander (4.6.0) + highline (~> 2.0.0) + csv (3.3.5) + declarative (0.0.20) + digest-crc (0.7.0) + rake (>= 12.0.0, < 14.0.0) + domain_name (0.6.20240107) + dotenv (2.8.1) + emoji_regex (3.2.3) + excon (0.112.0) + faraday (1.10.5) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.0) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + faraday-retry (~> 1.0) + ruby2_keywords (>= 0.0.4) + faraday-cookie_jar (0.0.8) + faraday (>= 0.8.0) + http-cookie (>= 1.0.0) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.1) + faraday-excon (1.1.0) + faraday-httpclient (1.0.1) + faraday-multipart (1.2.0) + multipart-post (~> 2.0) + faraday-net_http (1.0.2) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + faraday-retry (1.0.4) + faraday_middleware (1.2.1) + faraday (~> 1.0) + fastimage (2.4.1) + fastlane (2.235.0) + CFPropertyList (>= 2.3, < 5.0.0) + abbrev (~> 0.1) + addressable (>= 2.8, < 3.0.0) + artifactory (~> 3.0) + aws-sdk-s3 (~> 1.197) + babosa (>= 1.0.3, < 2.0.0) + base64 (~> 0.2) + benchmark (>= 0.1.0) + bundler (>= 2.4.0, < 5.0.0) + colored (~> 1.2) + commander (~> 4.6) + csv (~> 3.3) + dotenv (>= 2.1.1, < 3.0.0) + emoji_regex (>= 0.1, < 4.0) + excon (>= 0.71.0, < 1.0.0) + faraday (~> 1.0) + faraday-cookie_jar (~> 0.0.6) + faraday_middleware (~> 1.0) + fastimage (>= 2.1.0, < 3.0.0) + fastlane-sirp (>= 1.1.0) + gh_inspector (>= 1.1.2, < 2.0.0) + google-apis-androidpublisher_v3 (~> 0.3) + google-apis-playcustomapp_v1 (~> 0.1) + google-cloud-env (>= 1.6.0, < 2.3.0) + google-cloud-storage (~> 1.31) + highline (~> 2.0) + http-cookie (~> 1.0.5) + json (< 3.0.0) + jwt (>= 2.1.0, < 4) + logger (>= 1.6, < 2.0) + mini_magick (>= 4.9.4, < 5.0.0) + multipart-post (>= 2.0.0, < 3.0.0) + mutex_m (~> 0.3) + naturally (~> 2.2) + nkf (~> 0.2) + optparse (>= 0.1.1, < 1.0.0) + ostruct (>= 0.1.0) + plist (>= 3.1.0, < 4.0.0) + rubyzip (>= 2.0.0, < 3.0.0) + security (= 0.1.5) + simctl (~> 1.6.3) + terminal-notifier (>= 2.0.0, < 3.0.0) + terminal-table (~> 3) + tty-screen (>= 0.6.3, < 1.0.0) + tty-spinner (>= 0.8.0, < 1.0.0) + word_wrap (~> 1.0.0) + xcodeproj (>= 1.13.0, < 2.0.0) + xcpretty (~> 0.4.1) + xcpretty-travis-formatter (>= 0.0.3, < 2.0.0) + fastlane-sirp (1.1.0) + gh_inspector (1.1.3) + google-apis-androidpublisher_v3 (0.101.0) + google-apis-core (>= 0.15.0, < 2.a) + google-apis-core (0.18.0) + addressable (~> 2.5, >= 2.5.1) + googleauth (~> 1.9) + httpclient (>= 2.8.3, < 3.a) + mini_mime (~> 1.0) + mutex_m + representable (~> 3.0) + retriable (>= 2.0, < 4.a) + google-apis-iamcredentials_v1 (0.27.0) + google-apis-core (>= 0.15.0, < 2.a) + google-apis-playcustomapp_v1 (0.17.0) + google-apis-core (>= 0.15.0, < 2.a) + google-apis-storage_v1 (0.62.0) + google-apis-core (>= 0.15.0, < 2.a) + google-cloud-core (1.8.0) + google-cloud-env (>= 1.0, < 3.a) + google-cloud-errors (~> 1.0) + google-cloud-env (2.2.2) + base64 (~> 0.2) + faraday (>= 1.0, < 3.a) + google-cloud-errors (1.6.0) + google-cloud-storage (1.60.0) + addressable (~> 2.8) + digest-crc (~> 0.4) + google-apis-core (>= 0.18, < 2) + google-apis-iamcredentials_v1 (~> 0.18) + google-apis-storage_v1 (>= 0.42) + google-cloud-core (~> 1.6) + googleauth (~> 1.9) + mini_mime (~> 1.0) + google-logging-utils (0.2.0) + googleauth (1.16.2) + faraday (>= 1.0, < 3.a) + google-cloud-env (~> 2.2) + google-logging-utils (~> 0.1) + jwt (>= 1.4, < 4.0) + multi_json (~> 1.11) + os (>= 0.9, < 2.0) + signet (>= 0.16, < 2.a) + highline (2.0.3) + http-cookie (1.0.8) + domain_name (~> 0.5) + httpclient (2.9.0) + mutex_m + jmespath (1.6.2) + json (2.18.1) + jwt (3.2.0) + base64 + logger (1.7.0) + mini_magick (4.13.2) + mini_mime (1.1.5) + multi_json (1.21.1) + multipart-post (2.4.1) + mutex_m (0.3.0) + nanaimo (0.4.0) + naturally (2.3.0) + nkf (0.2.0) + optparse (0.8.1) + os (1.1.4) + ostruct (0.6.3) + plist (3.7.2) + public_suffix (7.0.5) + rake (13.4.2) + representable (3.2.0) + declarative (< 0.1.0) + trailblazer-option (>= 0.1.1, < 0.2.0) + uber (< 0.2.0) + retriable (3.5.0) + rexml (3.4.4) + rouge (3.28.0) + ruby2_keywords (0.0.5) + rubyzip (2.4.1) + security (0.1.5) + signet (0.21.0) + addressable (~> 2.8) + faraday (>= 0.17.5, < 3.a) + jwt (>= 1.5, < 4.0) + multi_json (~> 1.10) + simctl (1.6.10) + CFPropertyList + naturally + terminal-notifier (2.0.0) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + trailblazer-option (0.1.2) + tty-cursor (0.7.1) + tty-screen (0.8.2) + tty-spinner (0.9.3) + tty-cursor (~> 0.7) + uber (0.1.0) + unicode-display_width (2.6.0) + word_wrap (1.0.0) + xcodeproj (1.27.0) + CFPropertyList (>= 2.3.3, < 4.0) + atomos (~> 0.1.3) + claide (>= 1.0.2, < 2.0) + colored2 (~> 3.1) + nanaimo (~> 0.4.0) + rexml (>= 3.3.6, < 4.0) + xcpretty (0.4.1) + rouge (~> 3.28.0) + xcpretty-travis-formatter (1.0.1) + xcpretty (~> 0.2, >= 0.0.7) + +PLATFORMS + arm64-darwin-25 + ruby + +DEPENDENCIES + fastlane + +CHECKSUMS + CFPropertyList (3.0.8) + abbrev (0.1.2) + addressable (2.9.0) + artifactory (3.0.17) + atomos (0.1.3) + aws-eventstream (1.4.0) + aws-partitions (1.1253.0) + aws-sdk-core (3.249.0) + aws-sdk-kms (1.128.0) + aws-sdk-s3 (1.224.0) + aws-sigv4 (1.12.1) + babosa (1.0.4) + base64 (0.3.0) + benchmark (0.5.0) + bigdecimal (4.1.2) + claide (1.1.0) + colored (1.2) + colored2 (3.1.2) + commander (4.6.0) + csv (3.3.5) + declarative (0.0.20) + digest-crc (0.7.0) + domain_name (0.6.20240107) + dotenv (2.8.1) + emoji_regex (3.2.3) + excon (0.112.0) + faraday (1.10.5) + faraday-cookie_jar (0.0.8) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.1) + faraday-excon (1.1.0) + faraday-httpclient (1.0.1) + faraday-multipart (1.2.0) + faraday-net_http (1.0.2) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + faraday-retry (1.0.4) + faraday_middleware (1.2.1) + fastimage (2.4.1) + fastlane (2.235.0) + fastlane-sirp (1.1.0) + gh_inspector (1.1.3) + google-apis-androidpublisher_v3 (0.101.0) + google-apis-core (0.18.0) + google-apis-iamcredentials_v1 (0.27.0) + google-apis-playcustomapp_v1 (0.17.0) + google-apis-storage_v1 (0.62.0) + google-cloud-core (1.8.0) + google-cloud-env (2.2.2) + google-cloud-errors (1.6.0) + google-cloud-storage (1.60.0) + google-logging-utils (0.2.0) + googleauth (1.16.2) + highline (2.0.3) + http-cookie (1.0.8) + httpclient (2.9.0) + jmespath (1.6.2) + json (2.18.1) + jwt (3.2.0) + logger (1.7.0) + mini_magick (4.13.2) + mini_mime (1.1.5) + multi_json (1.21.1) + multipart-post (2.4.1) + mutex_m (0.3.0) + nanaimo (0.4.0) + naturally (2.3.0) + nkf (0.2.0) + optparse (0.8.1) + os (1.1.4) + ostruct (0.6.3) + plist (3.7.2) + public_suffix (7.0.5) + rake (13.4.2) + representable (3.2.0) + retriable (3.5.0) + rexml (3.4.4) + rouge (3.28.0) + ruby2_keywords (0.0.5) + rubyzip (2.4.1) + security (0.1.5) + signet (0.21.0) + simctl (1.6.10) + terminal-notifier (2.0.0) + terminal-table (3.0.2) + trailblazer-option (0.1.2) + tty-cursor (0.7.1) + tty-screen (0.8.2) + tty-spinner (0.9.3) + uber (0.1.0) + unicode-display_width (2.6.0) + word_wrap (1.0.0) + xcodeproj (1.27.0) + xcpretty (0.4.1) + xcpretty-travis-formatter (1.0.1) + +BUNDLED WITH + 4.0.2 diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index 322eb295..5f4989f6 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -16,16 +16,9 @@ platform :ios do is_key_content_base64: true ) - if is_ci - keychain_path = File.expand_path("~/Library/Keychains/fastlane_tmp_keychain-db") - sh("security import /tmp/dist_cert.p12 -k #{keychain_path} -P #{ENV['IOS_DIST_P12_PASSWORD'].shellescape} -T /usr/bin/codesign 2>&1") - sh("security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k '' #{keychain_path} 2>&1") - end - match( type: "appstore", readonly: true, - skip_certificate_matching: true, app_identifier: ["de.tum.tca", "de.tum.tca.calendarWidget"] ) @@ -62,6 +55,10 @@ platform :ios do skip_package_dependencies_resolution: true ) + upload_symbols_to_crashlytics( + gsp_path: "./Runner/GoogleService-Info.plist" + ) + upload_to_testflight( changelog: ENV["RELEASE_NOTES"], skip_waiting_for_build_processing: true From 3fa4ca0e6155f7e84852bc8cc14233e9dc172652 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Mon, 8 Jun 2026 10:54:46 +0100 Subject: [PATCH 12/16] Restore clean match cert import: use empty PKCS12 password, remove workarounds --- ios/fastlane/Fastfile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index 5f4989f6..1d756b49 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -55,10 +55,6 @@ platform :ios do skip_package_dependencies_resolution: true ) - upload_symbols_to_crashlytics( - gsp_path: "./Runner/GoogleService-Info.plist" - ) - upload_to_testflight( changelog: ENV["RELEASE_NOTES"], skip_waiting_for_build_processing: true From e61322ed8541c75ea5954cc596beabb0e8cc6800 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Mon, 8 Jun 2026 13:05:27 +0100 Subject: [PATCH 13/16] ci: remove SPM artifact cache clear step Added during signing debugging; not needed now that match works cleanly. --- .github/workflows/deploy_beta.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/deploy_beta.yml b/.github/workflows/deploy_beta.yml index 23083b8f..93f46898 100644 --- a/.github/workflows/deploy_beta.yml +++ b/.github/workflows/deploy_beta.yml @@ -41,10 +41,6 @@ jobs: name: Patch FlutterGeneratedPluginSwiftPackage minimum iOS version run: sed -i '' 's/.iOS("13.0")/.iOS("15.0")/g' ios/Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage/Package.swift - - if: matrix.platform == 'ios' - name: Clear SPM artifact cache - run: rm -rf ~/Library/Caches/org.swift.swiftpm/artifacts - - if: matrix.platform == 'ios' name: Add SSH Key uses: webfactory/ssh-agent@v0.8.0 @@ -61,6 +57,7 @@ jobs: APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.ASC_ISSUER_ID }} APP_STORE_CONNECT_API_KEY_BASE64: ${{ secrets.ASC_PRIVATE_KEY }} MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} + MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }} FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 120 FASTLANE_XCODEBUILD_SETTINGS_RETRIES: 5 RELEASE_NOTES: ${{ github.event.release.body }} From 1a9767f0e8dcea6dfc064b1c534aefd1e186ab3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Mon, 8 Jun 2026 13:07:48 +0100 Subject: [PATCH 14/16] ci: untrack Gemfile.lock, remove MATCH_KEYCHAIN_PASSWORD Gemfile.lock re-added to .gitignore; MATCH_KEYCHAIN_PASSWORD was a debugging leftover, not needed by match on CI. --- .github/workflows/deploy_beta.yml | 1 - ios/.gitignore | 1 + ios/Gemfile.lock | 339 ------------------------------ 3 files changed, 1 insertion(+), 340 deletions(-) delete mode 100644 ios/Gemfile.lock diff --git a/.github/workflows/deploy_beta.yml b/.github/workflows/deploy_beta.yml index 93f46898..3a64cd35 100644 --- a/.github/workflows/deploy_beta.yml +++ b/.github/workflows/deploy_beta.yml @@ -57,7 +57,6 @@ jobs: APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.ASC_ISSUER_ID }} APP_STORE_CONNECT_API_KEY_BASE64: ${{ secrets.ASC_PRIVATE_KEY }} MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} - MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }} FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 120 FASTLANE_XCODEBUILD_SETTINGS_RETRIES: 5 RELEASE_NOTES: ${{ github.event.release.body }} diff --git a/ios/.gitignore b/ios/.gitignore index 40a395e2..0446b461 100644 --- a/ios/.gitignore +++ b/ios/.gitignore @@ -34,3 +34,4 @@ Runner/GeneratedPluginRegistrant.* !default.perspectivev3 build/ +Gemfile.lock diff --git a/ios/Gemfile.lock b/ios/Gemfile.lock deleted file mode 100644 index ef9582a1..00000000 --- a/ios/Gemfile.lock +++ /dev/null @@ -1,339 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - CFPropertyList (3.0.8) - abbrev (0.1.2) - addressable (2.9.0) - public_suffix (>= 2.0.2, < 8.0) - artifactory (3.0.17) - atomos (0.1.3) - aws-eventstream (1.4.0) - aws-partitions (1.1253.0) - aws-sdk-core (3.249.0) - aws-eventstream (~> 1, >= 1.3.0) - aws-partitions (~> 1, >= 1.992.0) - aws-sigv4 (~> 1.9) - base64 - bigdecimal - jmespath (~> 1, >= 1.6.1) - logger - aws-sdk-kms (1.128.0) - aws-sdk-core (~> 3, >= 3.248.0) - aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.224.0) - aws-sdk-core (~> 3, >= 3.248.0) - aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.5) - aws-sigv4 (1.12.1) - aws-eventstream (~> 1, >= 1.0.2) - babosa (1.0.4) - base64 (0.3.0) - benchmark (0.5.0) - bigdecimal (4.1.2) - claide (1.1.0) - colored (1.2) - colored2 (3.1.2) - commander (4.6.0) - highline (~> 2.0.0) - csv (3.3.5) - declarative (0.0.20) - digest-crc (0.7.0) - rake (>= 12.0.0, < 14.0.0) - domain_name (0.6.20240107) - dotenv (2.8.1) - emoji_regex (3.2.3) - excon (0.112.0) - faraday (1.10.5) - faraday-em_http (~> 1.0) - faraday-em_synchrony (~> 1.0) - faraday-excon (~> 1.1) - faraday-httpclient (~> 1.0) - faraday-multipart (~> 1.0) - faraday-net_http (~> 1.0) - faraday-net_http_persistent (~> 1.0) - faraday-patron (~> 1.0) - faraday-rack (~> 1.0) - faraday-retry (~> 1.0) - ruby2_keywords (>= 0.0.4) - faraday-cookie_jar (0.0.8) - faraday (>= 0.8.0) - http-cookie (>= 1.0.0) - faraday-em_http (1.0.0) - faraday-em_synchrony (1.0.1) - faraday-excon (1.1.0) - faraday-httpclient (1.0.1) - faraday-multipart (1.2.0) - multipart-post (~> 2.0) - faraday-net_http (1.0.2) - faraday-net_http_persistent (1.2.0) - faraday-patron (1.0.0) - faraday-rack (1.0.0) - faraday-retry (1.0.4) - faraday_middleware (1.2.1) - faraday (~> 1.0) - fastimage (2.4.1) - fastlane (2.235.0) - CFPropertyList (>= 2.3, < 5.0.0) - abbrev (~> 0.1) - addressable (>= 2.8, < 3.0.0) - artifactory (~> 3.0) - aws-sdk-s3 (~> 1.197) - babosa (>= 1.0.3, < 2.0.0) - base64 (~> 0.2) - benchmark (>= 0.1.0) - bundler (>= 2.4.0, < 5.0.0) - colored (~> 1.2) - commander (~> 4.6) - csv (~> 3.3) - dotenv (>= 2.1.1, < 3.0.0) - emoji_regex (>= 0.1, < 4.0) - excon (>= 0.71.0, < 1.0.0) - faraday (~> 1.0) - faraday-cookie_jar (~> 0.0.6) - faraday_middleware (~> 1.0) - fastimage (>= 2.1.0, < 3.0.0) - fastlane-sirp (>= 1.1.0) - gh_inspector (>= 1.1.2, < 2.0.0) - google-apis-androidpublisher_v3 (~> 0.3) - google-apis-playcustomapp_v1 (~> 0.1) - google-cloud-env (>= 1.6.0, < 2.3.0) - google-cloud-storage (~> 1.31) - highline (~> 2.0) - http-cookie (~> 1.0.5) - json (< 3.0.0) - jwt (>= 2.1.0, < 4) - logger (>= 1.6, < 2.0) - mini_magick (>= 4.9.4, < 5.0.0) - multipart-post (>= 2.0.0, < 3.0.0) - mutex_m (~> 0.3) - naturally (~> 2.2) - nkf (~> 0.2) - optparse (>= 0.1.1, < 1.0.0) - ostruct (>= 0.1.0) - plist (>= 3.1.0, < 4.0.0) - rubyzip (>= 2.0.0, < 3.0.0) - security (= 0.1.5) - simctl (~> 1.6.3) - terminal-notifier (>= 2.0.0, < 3.0.0) - terminal-table (~> 3) - tty-screen (>= 0.6.3, < 1.0.0) - tty-spinner (>= 0.8.0, < 1.0.0) - word_wrap (~> 1.0.0) - xcodeproj (>= 1.13.0, < 2.0.0) - xcpretty (~> 0.4.1) - xcpretty-travis-formatter (>= 0.0.3, < 2.0.0) - fastlane-sirp (1.1.0) - gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.101.0) - google-apis-core (>= 0.15.0, < 2.a) - google-apis-core (0.18.0) - addressable (~> 2.5, >= 2.5.1) - googleauth (~> 1.9) - httpclient (>= 2.8.3, < 3.a) - mini_mime (~> 1.0) - mutex_m - representable (~> 3.0) - retriable (>= 2.0, < 4.a) - google-apis-iamcredentials_v1 (0.27.0) - google-apis-core (>= 0.15.0, < 2.a) - google-apis-playcustomapp_v1 (0.17.0) - google-apis-core (>= 0.15.0, < 2.a) - google-apis-storage_v1 (0.62.0) - google-apis-core (>= 0.15.0, < 2.a) - google-cloud-core (1.8.0) - google-cloud-env (>= 1.0, < 3.a) - google-cloud-errors (~> 1.0) - google-cloud-env (2.2.2) - base64 (~> 0.2) - faraday (>= 1.0, < 3.a) - google-cloud-errors (1.6.0) - google-cloud-storage (1.60.0) - addressable (~> 2.8) - digest-crc (~> 0.4) - google-apis-core (>= 0.18, < 2) - google-apis-iamcredentials_v1 (~> 0.18) - google-apis-storage_v1 (>= 0.42) - google-cloud-core (~> 1.6) - googleauth (~> 1.9) - mini_mime (~> 1.0) - google-logging-utils (0.2.0) - googleauth (1.16.2) - faraday (>= 1.0, < 3.a) - google-cloud-env (~> 2.2) - google-logging-utils (~> 0.1) - jwt (>= 1.4, < 4.0) - multi_json (~> 1.11) - os (>= 0.9, < 2.0) - signet (>= 0.16, < 2.a) - highline (2.0.3) - http-cookie (1.0.8) - domain_name (~> 0.5) - httpclient (2.9.0) - mutex_m - jmespath (1.6.2) - json (2.18.1) - jwt (3.2.0) - base64 - logger (1.7.0) - mini_magick (4.13.2) - mini_mime (1.1.5) - multi_json (1.21.1) - multipart-post (2.4.1) - mutex_m (0.3.0) - nanaimo (0.4.0) - naturally (2.3.0) - nkf (0.2.0) - optparse (0.8.1) - os (1.1.4) - ostruct (0.6.3) - plist (3.7.2) - public_suffix (7.0.5) - rake (13.4.2) - representable (3.2.0) - declarative (< 0.1.0) - trailblazer-option (>= 0.1.1, < 0.2.0) - uber (< 0.2.0) - retriable (3.5.0) - rexml (3.4.4) - rouge (3.28.0) - ruby2_keywords (0.0.5) - rubyzip (2.4.1) - security (0.1.5) - signet (0.21.0) - addressable (~> 2.8) - faraday (>= 0.17.5, < 3.a) - jwt (>= 1.5, < 4.0) - multi_json (~> 1.10) - simctl (1.6.10) - CFPropertyList - naturally - terminal-notifier (2.0.0) - terminal-table (3.0.2) - unicode-display_width (>= 1.1.1, < 3) - trailblazer-option (0.1.2) - tty-cursor (0.7.1) - tty-screen (0.8.2) - tty-spinner (0.9.3) - tty-cursor (~> 0.7) - uber (0.1.0) - unicode-display_width (2.6.0) - word_wrap (1.0.0) - xcodeproj (1.27.0) - CFPropertyList (>= 2.3.3, < 4.0) - atomos (~> 0.1.3) - claide (>= 1.0.2, < 2.0) - colored2 (~> 3.1) - nanaimo (~> 0.4.0) - rexml (>= 3.3.6, < 4.0) - xcpretty (0.4.1) - rouge (~> 3.28.0) - xcpretty-travis-formatter (1.0.1) - xcpretty (~> 0.2, >= 0.0.7) - -PLATFORMS - arm64-darwin-25 - ruby - -DEPENDENCIES - fastlane - -CHECKSUMS - CFPropertyList (3.0.8) - abbrev (0.1.2) - addressable (2.9.0) - artifactory (3.0.17) - atomos (0.1.3) - aws-eventstream (1.4.0) - aws-partitions (1.1253.0) - aws-sdk-core (3.249.0) - aws-sdk-kms (1.128.0) - aws-sdk-s3 (1.224.0) - aws-sigv4 (1.12.1) - babosa (1.0.4) - base64 (0.3.0) - benchmark (0.5.0) - bigdecimal (4.1.2) - claide (1.1.0) - colored (1.2) - colored2 (3.1.2) - commander (4.6.0) - csv (3.3.5) - declarative (0.0.20) - digest-crc (0.7.0) - domain_name (0.6.20240107) - dotenv (2.8.1) - emoji_regex (3.2.3) - excon (0.112.0) - faraday (1.10.5) - faraday-cookie_jar (0.0.8) - faraday-em_http (1.0.0) - faraday-em_synchrony (1.0.1) - faraday-excon (1.1.0) - faraday-httpclient (1.0.1) - faraday-multipart (1.2.0) - faraday-net_http (1.0.2) - faraday-net_http_persistent (1.2.0) - faraday-patron (1.0.0) - faraday-rack (1.0.0) - faraday-retry (1.0.4) - faraday_middleware (1.2.1) - fastimage (2.4.1) - fastlane (2.235.0) - fastlane-sirp (1.1.0) - gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.101.0) - google-apis-core (0.18.0) - google-apis-iamcredentials_v1 (0.27.0) - google-apis-playcustomapp_v1 (0.17.0) - google-apis-storage_v1 (0.62.0) - google-cloud-core (1.8.0) - google-cloud-env (2.2.2) - google-cloud-errors (1.6.0) - google-cloud-storage (1.60.0) - google-logging-utils (0.2.0) - googleauth (1.16.2) - highline (2.0.3) - http-cookie (1.0.8) - httpclient (2.9.0) - jmespath (1.6.2) - json (2.18.1) - jwt (3.2.0) - logger (1.7.0) - mini_magick (4.13.2) - mini_mime (1.1.5) - multi_json (1.21.1) - multipart-post (2.4.1) - mutex_m (0.3.0) - nanaimo (0.4.0) - naturally (2.3.0) - nkf (0.2.0) - optparse (0.8.1) - os (1.1.4) - ostruct (0.6.3) - plist (3.7.2) - public_suffix (7.0.5) - rake (13.4.2) - representable (3.2.0) - retriable (3.5.0) - rexml (3.4.4) - rouge (3.28.0) - ruby2_keywords (0.0.5) - rubyzip (2.4.1) - security (0.1.5) - signet (0.21.0) - simctl (1.6.10) - terminal-notifier (2.0.0) - terminal-table (3.0.2) - trailblazer-option (0.1.2) - tty-cursor (0.7.1) - tty-screen (0.8.2) - tty-spinner (0.9.3) - uber (0.1.0) - unicode-display_width (2.6.0) - word_wrap (1.0.0) - xcodeproj (1.27.0) - xcpretty (0.4.1) - xcpretty-travis-formatter (1.0.1) - -BUNDLED WITH - 4.0.2 From 6d39a769feb7d39c4169355c3389a8b247e6edc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Mon, 8 Jun 2026 13:11:01 +0100 Subject: [PATCH 15/16] chore: exclude build/ from dart analyzer Prevents analyzer from scanning vendored Firebase sources in build/ios/SourcePackages/, which aren't part of the project. --- analysis_options.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/analysis_options.yaml b/analysis_options.yaml index c9d8108b..0382018e 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -9,6 +9,7 @@ analyzer: errors: invalid_annotation_target: ignore exclude: + - 'build/**' - '**/*.g.dart' - lib/base/networking/apis/tumdev/campus_backend.pb.dart - lib/base/networking/apis/tumdev/campus_backend.pbenum.dart From 467c0914487bc93fd3bb19b3dcc04beb2e57ad82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20K=C3=B6rber?= <56073945+jakobkoerber@users.noreply.github.com> Date: Mon, 8 Jun 2026 13:18:25 +0100 Subject: [PATCH 16/16] ci: trigger lint/test/build on pull_request instead of push Enables CI for fork PRs. push trigger was redundant given all changes go through PRs with branch protection on dev/main. --- .github/workflows/lint_test_build.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/lint_test_build.yml b/.github/workflows/lint_test_build.yml index 4e4d929d..e58a8d4c 100644 --- a/.github/workflows/lint_test_build.yml +++ b/.github/workflows/lint_test_build.yml @@ -1,10 +1,7 @@ name: Linting, Testing and Building on: - push: - branches-ignore: - - "dev" - - "main" + pull_request: jobs: build: