diff --git a/.github/workflows/build-deploy.yml b/.github/workflows/build-deploy.yml index feed4f1..d42b46d 100644 --- a/.github/workflows/build-deploy.yml +++ b/.github/workflows/build-deploy.yml @@ -4,6 +4,7 @@ on: push: branches: - main + - ryan-2025-update pull_request: branches: - main @@ -12,80 +13,80 @@ jobs: build_web_and_apk: name: Build Web and APK runs-on: ubuntu-latest - + steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Install Flutter - uses: subosito/flutter-action@v1 - with: - flutter-version: '3.x' - - - name: Get dependencies - run: flutter pub get - - - name: Test - run: flutter test --coverage - - - name: Build web release project - run: flutter build web - - - name: Create CNAME file - run: echo "mergedata.ca" > ./build/web/CNAME - - - name: Upload web production-ready build files - uses: actions/upload-artifact@v2 - with: - name: production-files - path: ./build/web - - - name: Deploy to GitHub Pages - if: github.event_name == 'push' && github.ref == 'refs/heads/main' - uses: peaceiris/actions-gh-pages@v4 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./build/web - - - name: Build APK - run: flutter build apk --release - - - name: Rename APK - run: mv build/app/outputs/flutter-apk/app-release.apk build/app/outputs/flutter-apk/MergeData.apk - - - name: Upload APK - uses: actions/upload-artifact@v2 - with: - name: MergeData.apk - path: build/app/outputs/flutter-apk/MergeData.apk - - - name: Bump version and push tag - if: github.event_name == 'push' && github.ref == 'refs/heads/main' - id: create_tag - uses: mathieudutour/github-tag-action@v6.2 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - default_bump: patch - - - name: Create Release - if: github.event_name == 'push' && github.ref == 'refs/heads/main' - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ steps.create_tag.outputs.new_tag }} - release_name: Release ${{ steps.create_tag.outputs.new_tag }} - draft: false - prerelease: false - - - name: Upload Release Asset - if: github.event_name == 'push' && github.ref == 'refs/heads/main' - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./build/app/outputs/flutter-apk/MergeData.apk - asset_name: MergeData.apk - asset_content_type: application/vnd.android.package-archive + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install Flutter + uses: subosito/flutter-action@v1 + with: + flutter-version: "3.x" + + - name: Get dependencies + run: flutter pub get + + - name: Test + run: flutter test --coverage + + - name: Build web release project + run: flutter build web + + - name: Create CNAME file + run: echo "mergedata.ca" > ./build/web/CNAME + + - name: Upload web production-ready build files + uses: actions/upload-artifact@v4 + with: + name: production-files + path: ./build/web + + - name: Deploy to GitHub Pages + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + uses: peaceiris/actions-gh-pages@v4 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./build/web + + - name: Build APK + run: flutter build apk --release + + - name: Rename APK + run: mv build/app/outputs/flutter-apk/app-release.apk build/app/outputs/flutter-apk/MergeData.apk + + - name: Upload APK + uses: actions/upload-artifact@v4 + with: + name: MergeData.apk + path: build/app/outputs/flutter-apk/MergeData.apk + + - name: Bump version and push tag + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + id: create_tag + uses: mathieudutour/github-tag-action@v6.2 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + default_bump: patch + + - name: Create Release + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ steps.create_tag.outputs.new_tag }} + release_name: Release ${{ steps.create_tag.outputs.new_tag }} + draft: false + prerelease: false + + - name: Upload Release Asset + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./build/app/outputs/flutter-apk/MergeData.apk + asset_name: MergeData.apk + asset_content_type: application/vnd.android.package-archive diff --git a/.gitignore b/.gitignore index 1402e01..8d12875 100644 --- a/.gitignore +++ b/.gitignore @@ -7,9 +7,11 @@ *.swp .DS_Store .atom/ +.build/ .buildlog/ .history .svn/ +.swiftpm/ migrate_working_dir/ # IntelliJ related diff --git a/android/build.gradle b/android/build.gradle index e83fb5d..041e887 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.7.10' + ext.kotlin_version = '1.9.25' repositories { google() mavenCentral() diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 3c472b9..cb086a5 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1-all.zip diff --git a/android/settings.gradle b/android/settings.gradle index 7cd7128..7ef64d7 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -23,7 +23,7 @@ pluginManagement { plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" - id "com.android.application" version "7.3.0" apply false + id "com.android.application" version "8.1.0" apply false } include ":app" diff --git a/assets/games/2025.json b/assets/games/2025.json new file mode 100644 index 0000000..a9d8b75 --- /dev/null +++ b/assets/games/2025.json @@ -0,0 +1,178 @@ +{ + "Pre-Match": [ + { + "name": "Scouter Name", + "required": true, + "type": "text" + }, + { + "name": "Event", + "choices": ["Niagara", "North Bay", "DCMP"], + "required": true, + "type": "radio" + }, + { + "name": "Alliance Station", + "choices": ["Red 1", "Red 2", "Red 3", "Blue 1", "Blue 2", "Blue 3"], + "required": false, + "type": "radio" + }, + { + "name": "Match #", + "required": true, + "type": "number" + }, + { + "name": "Team #", + "required": true, + "type": "number" + }, + { + "name": "Starting Postition", + "choices": ["Left", "Middle", "Right"], + "required": true, + "type": "radio" + } + ], + + "Autonomous": [ + { + "name": "Crossed Starting Line", + "type": "bool" + }, + { + "name": "Auto Coral scored on L1 (bottom)", + "type": "counter" + }, + { + "name": "Auto Coral scored on L2 (branch)", + "type": "counter" + }, + { + "name": "Auto Coral scored on L3 (branch)", + "type": "counter" + }, + { + "name": "Auto Coral scored on L4 (branch)", + "type": "counter" + }, + { + "name": "Auto # of Coral Dropped", + "type": "counter" + }, + { + "name": "Auto Coral Pickup Location", + "type": "radio", + "required": true, + "choices": ["Floor", "Human Player Sation", "Both"] + }, + { + "name": "Auto # of Algae Removed from Reef", + "type": "counter" + }, + { + "name": "Auto # of Algae scored in Processor", + "type": "counter" + }, + { + "name": "Auto # of Algae scored in Net", + "type": "counter" + }, + { + "name": "Auto # of Algae Dropped", + "type": "counter" + }, + { + "name": "Comments on Auto", + "type": "text" + } + ], + + "TeleOp": [ + { + "name": "TeleOp Coral scored on L1 (bottom)", + "type": "counter" + }, + { + "name": "TeleOp Coral scored on L2 (branch)", + "type": "counter" + }, + { + "name": "TeleOp Coral scored on L3 (branch)", + "type": "counter" + }, + { + "name": "TeleOp Coral scored on L4 (branch)", + "type": "counter" + }, + { + "name": "TeleOp Coral Dropped", + "type": "counter" + }, + { + "name": "TeleOp Coral Pickup Location", + "type": "counter" + }, + { + "name": "TeleOp Algae Harvested from Reef", + "type": "counter" + }, + { + "name": "TeleOp Algae scored in Processor", + "type": "counter" + }, + { + "name": "TeleOp Algae Scored in Net by Robot", + "type": "counter" + }, + { + "name": "Teleop Algae Dropped", + "type": "counter" + } + ], + + + + "EndGame": [ + { + "name": "Attempted Climb?", + "type": "bool" + }, + { + "name": "Ending Position", + "type": "radio", + "required": false, + "choices": ["None", "Parked", "High Climb", "Low Climb"] + } + ], + + + "PostMatch": [ + { + "name": "Defence Rating", + "type": "radio", + "required": true, + "choices": ["1", "2", "3", "4", "5", "N/A"] + }, + { + "name": "Ability to withstand defence", + "type": "radio", + "required": true, + "choices": ["1", "2", "3", "4", "5", "N/A"] + }, + { + "name": "Did they die during the match?", + "type": "bool" + }, + { + "name": "Main Cycle", + "type": "text", + "required": false + }, + { + "name": "Comments", + "type": "text", + "required": false + } + ] +} \ No newline at end of file diff --git a/assets/pit/2025.json b/assets/pit/2025.json new file mode 100644 index 0000000..a8ce5e1 --- /dev/null +++ b/assets/pit/2025.json @@ -0,0 +1,55 @@ +{ + "Pit": [ + { + "name": "Scout name", + "required": true, + "type": "text" + }, + { + "name": "Team number", + "required": false, + "type": "number" + }, + { + "name": "Weight (lbs)", + "required": false, + "type": "text" + }, + { + "name": "Drivetrain type", + "choices": ["Swerve", "Tank", "Butterfly/Grasshopper", "Mecanum", "Other"], + "required": false, + "type": "radio" + }, + { + "name": "Other drivetrain", + "required": false, + "type": "text" + }, + { + "name": "Where can you pick up from?", + "required": false, + "type": "text" + }, + { + "name": "Autos", + "required": false, + "type": "text" + }, + { + "name": "Where can they score?", + "required": false, + "type": "text" + }, + { + "name": "Endgame: Can they climb?", + "required": false, + "type": "text" + }, + { + "name": "Other comments", + "required": false, + "type": "text" + } + ] +} \ No newline at end of file diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist index 9625e10..7c56964 100644 --- a/ios/Flutter/AppFrameworkInfo.plist +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 11.0 + 12.0 diff --git a/ios/Podfile b/ios/Podfile index fdcc671..d97f17e 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '11.0' +# platform :ios, '12.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 77b15ed..7154b01 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -31,12 +31,12 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/url_launcher_ios/ios" SPEC CHECKSUMS: - Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 + Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb qr_code_scanner: bb67d64904c3b9658ada8c402e8b4d406d5d796e - shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695 - url_launcher_ios: bbd758c6e7f9fd7b5b1d4cde34d2b95fcce5e812 + shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 + url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe -PODFILE CHECKSUM: 70d9d25280d0dd177a5f637cdb0f0b0b12c6a189 +PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796 -COCOAPODS: 1.12.1 +COCOAPODS: 1.16.2 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index b60ff0f..7189c12 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -215,7 +215,7 @@ isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = YES; - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 331C8080294A63A400263BE5 = { @@ -452,7 +452,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -475,7 +475,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.mergerobotics.merge-data"; + PRODUCT_BUNDLE_IDENTIFIER = com.team2706.mergedata; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -580,7 +580,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -629,7 +629,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -654,7 +654,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.mergerobotics.merge-data"; + PRODUCT_BUNDLE_IDENTIFIER = com.team2706.mergedata; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -677,7 +677,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.mergerobotics.merge-data"; + PRODUCT_BUNDLE_IDENTIFIER = com.team2706.mergedata; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 87131a0..8e3ca5d 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ =3.3.0 <4.0.0" - flutter: ">=3.19.0" + dart: ">=3.6.0 <4.0.0" + flutter: ">=3.27.0" diff --git a/pubspec.yaml b/pubspec.yaml index d41512b..9ead1a4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 1.0.0+1 +version: 1.1.0+1 environment: sdk: ">=3.2.3 <4.0.0" @@ -31,16 +31,17 @@ dependencies: flutter: sdk: flutter - url_launcher: 6.2.6 + url_launcher: ^6.3.1 + url_launcher_ios: ^6.3.2 flutter_svg: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 qr_flutter: ^4.1.0 - qr_code_scanner: ^1.0.1 + qr_code_scanner_plus: ^2.0.7 gsheets: ^0.5.0 - shared_preferences: ^2.2.3 + shared_preferences: ^2.5.2 dev_dependencies: flutter_test: @@ -51,7 +52,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^3.0.2 + flutter_lints: ^5.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec @@ -69,12 +70,12 @@ flutter: # - images/a_dot_ham.jpeg assets: - assets/games/2024.json - #- assets/games/2025.json + - assets/games/2025.json #- assets/games/2026.json #- assets/games/2027.json #- assets/games/2028.json - assets/pit/2024.json - #- assets/pit/2025.json + - assets/pit/2025.json #- assets/pit/2026.json #- assets/pit/2027.json #- assets/pit/2028.json