From dfecd51352e06c08226fa5e59c5c0a44c7da6b10 Mon Sep 17 00:00:00 2001 From: Niraj Nandish Date: Fri, 20 Feb 2026 09:48:17 +0530 Subject: [PATCH 1/3] chore: update ci/cd pipelines to use flutter 3.41 --- .github/workflows/flutter-ci.yml | 6 +++--- .github/workflows/flutter-deploy.yml | 6 +++--- .github/workflows/flutter-unit-tests.yml | 6 +++--- .github/workflows/mobile-curriculum-e2e.yml | 2 +- codemagic.yaml | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/flutter-ci.yml b/.github/workflows/flutter-ci.yml index 642906630..d826aa3ca 100644 --- a/.github/workflows/flutter-ci.yml +++ b/.github/workflows/flutter-ci.yml @@ -75,13 +75,13 @@ jobs: disable-animations: false script: echo "Generated AVD snapshot for caching." - - name: Setup Flutter 3.38.x + - name: Setup Flutter 3.41.x uses: subosito/flutter-action@e938fdf56512cc96ef2f93601a5a40bde3801046 # v2 with: - flutter-version: "3.38.x" + flutter-version: "3.41.x" channel: "stable" cache: true - cache-key: flutter-3.38.x + cache-key: flutter-3.41.x cache-path: ${{ runner.tool_cache }}/flutter - name: Create .env file diff --git a/.github/workflows/flutter-deploy.yml b/.github/workflows/flutter-deploy.yml index ac43ae698..90899b7b4 100644 --- a/.github/workflows/flutter-deploy.yml +++ b/.github/workflows/flutter-deploy.yml @@ -69,13 +69,13 @@ jobs: disable-animations: false script: echo "Generated AVD snapshot for caching." - - name: Setup Flutter 3.38.x + - name: Setup Flutter 3.41.x uses: subosito/flutter-action@e938fdf56512cc96ef2f93601a5a40bde3801046 # v2 with: - flutter-version: "3.38.x" + flutter-version: "3.41.x" channel: "stable" cache: true - cache-key: flutter-3.38.x + cache-key: flutter-3.41.x cache-path: ${{ runner.tool_cache }}/flutter - name: Create .env file diff --git a/.github/workflows/flutter-unit-tests.yml b/.github/workflows/flutter-unit-tests.yml index 62fcc028d..e2a4e1c78 100644 --- a/.github/workflows/flutter-unit-tests.yml +++ b/.github/workflows/flutter-unit-tests.yml @@ -20,13 +20,13 @@ jobs: - name: Checkout files uses: actions/checkout@v4 - - name: Setup Flutter 3.38.x + - name: Setup Flutter 3.41.x uses: subosito/flutter-action@e938fdf56512cc96ef2f93601a5a40bde3801046 # v2 with: - flutter-version: "3.38.x" + flutter-version: "3.41.x" channel: "stable" cache: true - cache-key: flutter-3.38.x + cache-key: flutter-3.41.x cache-path: ${{ runner.tool_cache }}/flutter - name: Create .env file diff --git a/.github/workflows/mobile-curriculum-e2e.yml b/.github/workflows/mobile-curriculum-e2e.yml index 0c85945f1..2f82c0792 100644 --- a/.github/workflows/mobile-curriculum-e2e.yml +++ b/.github/workflows/mobile-curriculum-e2e.yml @@ -27,7 +27,7 @@ jobs: android-api-level: [35] node-version: [24] pnpm-version: [10] - flutter-version: ["3.38.x"] + flutter-version: ["3.41.x"] steps: - name: Remove unused software diff --git a/codemagic.yaml b/codemagic.yaml index 076b14117..f3339dc20 100644 --- a/codemagic.yaml +++ b/codemagic.yaml @@ -15,7 +15,7 @@ workflows: cancel_previous_builds: true environment: - flutter: 3.38.5 + flutter: 3.41.2 xcode: latest cocoapods: default groups: @@ -87,7 +87,7 @@ workflows: cancel_previous_builds: true environment: - flutter: 3.38.5 + flutter: 3.41.2 xcode: latest cocoapods: default ios_signing: From e4a3ce08d907d357b0e27299e1b0200c7bf03c96 Mon Sep 17 00:00:00 2001 From: Niraj Nandish Date: Wed, 25 Feb 2026 07:41:56 +0530 Subject: [PATCH 2/3] feat(ios): UIScene migration --- mobile-app/ios/Runner/AppDelegate.swift | 13 +- mobile-app/ios/Runner/Info-Debug.plist | 21 +++ mobile-app/ios/Runner/Info-Profile.plist | 167 +++++++++++++---------- mobile-app/ios/Runner/Info-Release.plist | 21 +++ 4 files changed, 143 insertions(+), 79 deletions(-) diff --git a/mobile-app/ios/Runner/AppDelegate.swift b/mobile-app/ios/Runner/AppDelegate.swift index 9e09de7b1..1e87aba32 100644 --- a/mobile-app/ios/Runner/AppDelegate.swift +++ b/mobile-app/ios/Runner/AppDelegate.swift @@ -1,17 +1,18 @@ import UIKit import Flutter +import flutter_local_notifications @main -@objc class AppDelegate: FlutterAppDelegate { +@objc class AppDelegate: FlutterAppDelegate, FlutterImplicitEngineDelegate { override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { - if #available(iOS 10.0, *) { - UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate - } - - GeneratedPluginRegistrant.register(with: self) + UNUserNotificationCenter.current().delegate = self as UNUserNotificationCenterDelegate return super.application(application, didFinishLaunchingWithOptions: launchOptions) } + + func didInitializeImplicitFlutterEngine(_ engineBridge: FlutterImplicitEngineBridge) { + GeneratedPluginRegistrant.register(with: engineBridge.pluginRegistry) + } } diff --git a/mobile-app/ios/Runner/Info-Debug.plist b/mobile-app/ios/Runner/Info-Debug.plist index f57639a21..bea522cef 100644 --- a/mobile-app/ios/Runner/Info-Debug.plist +++ b/mobile-app/ios/Runner/Info-Debug.plist @@ -71,5 +71,26 @@ UIStatusBarHidden + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneClassName + UIWindowScene + UISceneDelegateClassName + FlutterSceneDelegate + UISceneConfigurationName + flutter + UISceneStoryboardFile + Main + + + + diff --git a/mobile-app/ios/Runner/Info-Profile.plist b/mobile-app/ios/Runner/Info-Profile.plist index 2e2ce2a0b..dea4fb50f 100644 --- a/mobile-app/ios/Runner/Info-Profile.plist +++ b/mobile-app/ios/Runner/Info-Profile.plist @@ -1,77 +1,98 @@ - - CADisableMinimumFrameDurationOnPhone - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - freeCodeCamp - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleSignature - ???? - CFBundleURLTypes - - - CFBundleTypeRole - None - CFBundleURLName - auth0 - CFBundleURLSchemes - - $(PRODUCT_BUNDLE_IDENTIFIER) - - - - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - ITSAppUsesNonExemptEncryption - - LSRequiresIPhoneOS - - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - - NSBonjourServices - - _dartobservatory._tcp - - UIBackgroundModes - - audio - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - UIStatusBarHidden - - + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + freeCodeCamp + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleTypeRole + None + CFBundleURLName + auth0 + CFBundleURLSchemes + + $(PRODUCT_BUNDLE_IDENTIFIER) + + + + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + ITSAppUsesNonExemptEncryption + + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + NSBonjourServices + + _dartobservatory._tcp + + UIBackgroundModes + + audio + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + UIStatusBarHidden + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneClassName + UIWindowScene + UISceneDelegateClassName + FlutterSceneDelegate + UISceneConfigurationName + flutter + UISceneStoryboardFile + Main + + + + + diff --git a/mobile-app/ios/Runner/Info-Release.plist b/mobile-app/ios/Runner/Info-Release.plist index 17aa594ae..082ee7123 100644 --- a/mobile-app/ios/Runner/Info-Release.plist +++ b/mobile-app/ios/Runner/Info-Release.plist @@ -69,5 +69,26 @@ UIStatusBarHidden + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneClassName + UIWindowScene + UISceneDelegateClassName + FlutterSceneDelegate + UISceneConfigurationName + flutter + UISceneStoryboardFile + Main + + + + From 4bec87804690588e2e1c215952783760b7e83f4b Mon Sep 17 00:00:00 2001 From: Niraj Nandish Date: Wed, 4 Mar 2026 06:13:35 +0530 Subject: [PATCH 3/3] chore: update flutter to v3.41.3 in codemagic ci/cd --- codemagic.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/codemagic.yaml b/codemagic.yaml index f3339dc20..e63814e42 100644 --- a/codemagic.yaml +++ b/codemagic.yaml @@ -15,7 +15,7 @@ workflows: cancel_previous_builds: true environment: - flutter: 3.41.2 + flutter: 3.41.3 xcode: latest cocoapods: default groups: @@ -87,7 +87,7 @@ workflows: cancel_previous_builds: true environment: - flutter: 3.41.2 + flutter: 3.41.3 xcode: latest cocoapods: default ios_signing: