Conversation
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Fix build issues & Improve Hebrew and Arabic Translations
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: qodo-code-review[bot] <151058649+qodo-code-review[bot]@users.noreply.github.com>
Co-authored-by: qodo-code-review[bot] <151058649+qodo-code-review[bot]@users.noreply.github.com>
Co-authored-by: qodo-code-review[bot] <151058649+qodo-code-review[bot]@users.noreply.github.com>
Co-authored-by: qodo-code-review[bot] <151058649+qodo-code-review[bot]@users.noreply.github.com>
Update ci.yml
Co-authored-by: qodo-code-review[bot] <151058649+qodo-code-review[bot]@users.noreply.github.com>
Co-authored-by: qodo-code-review[bot] <151058649+qodo-code-review[bot]@users.noreply.github.com>
Co-authored-by: qodo-code-review[bot] <151058649+qodo-code-review[bot]@users.noreply.github.com>
Co-authored-by: qodo-code-review[bot] <151058649+qodo-code-review[bot]@users.noreply.github.com>
Co-authored-by: qodo-code-review[bot] <151058649+qodo-code-review[bot]@users.noreply.github.com>
Co-authored-by: qodo-code-review[bot] <151058649+qodo-code-review[bot]@users.noreply.github.com>
Fix build #6
(cherry picked from commit 96d6aea)
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
PR Compliance Guide 🔍Below is a summary of compliance checks for this PR:
Compliance status legend🟢 - Fully Compliant🟡 - Partial Compliant 🔴 - Not Compliant ⚪ - Requires Further Human Verification 🏷️ - Compliance label |
|||||||||||||||||||||||||
Summary of ChangesHello @omeritzics, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request integrates a series of 'safe' commits, focusing on maintenance and minor enhancements. Key changes include updating the Android build configuration for modern Kotlin toolchains and ABI-specific APK generation, refactoring UI animation logic to use standard Flutter APIs, improving localization strings across various languages, and updating several package dependencies. These changes aim to modernize the codebase, enhance user experience through better animations and clearer translations, and ensure compatibility with the latest development practices. Highlights
Changelog
Ignored Files
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
PR Code Suggestions ✨Explore these optional code suggestions:
|
|||||||||||||||
There was a problem hiding this comment.
Code Review
This pull request is a collection of various enhancements and bug fixes. Key changes include refactoring UI components to use standard Flutter animations, modernizing the Android Gradle build script with safer version code handling and ABI splitting, and updating numerous translation strings across more than 30 languages. The changes also address several deprecated Flutter APIs, improving code compatibility.
While the majority of the changes are positive and improve the codebase's maintainability and correctness, I've identified one critical issue in lib/pages/home.dart where a necessary import is removed, which will cause a build failure. Please address this issue before merging.
| androidComponents { | ||
| onVariants { variant -> | ||
| variant.outputs.forEach { output -> | ||
| val abiFilter = output.filters.find { | ||
| it.filterType == com.android.build.api.variant.VariantOutputConfiguration.FilterType.ABI | ||
| } | ||
| val abiVersionCode = abiFilter?.identifier?.let { abiCodes[it] } | ||
|
|
||
| android.applicationVariants.configureEach { | ||
| val variant = this | ||
| variant.outputs.forEach { output -> | ||
| val abiVersionCode = abiCodes[output.filters.find { it.filterType == "ABI" }?.identifier] | ||
| if (abiVersionCode != null) { | ||
| // Create a version code within Android limits (max 2100000000) | ||
| // Use: (YYMMDDHH % 100000) * 100 + ABI to stay well under limits | ||
| val baseBuildNumber = flutterVersionCode.toLong() | ||
| val compressedCode = (baseBuildNumber % 100000) * 100 + abiVersionCode | ||
| (output as ApkVariantOutputImpl).versionCodeOverride = compressedCode.toInt() | ||
| if (abiVersionCode != null) { | ||
| // Create a version code within Android limits (max 2100000000) | ||
| // Use: (YYMMDDHH % 100000) * 100 + ABI to stay well under limits | ||
| val baseBuildNumber = requireNotNull(flutterVersionCode.toLongOrNull()) { | ||
| "Invalid flutter.versionCode='$flutterVersionCode' in local.properties; must be a number." | ||
| } | ||
| val compressedCode = (baseBuildNumber % 100000) * 100 + abiVersionCode | ||
| val maxPlayVersionCode = 2_100_000_000L | ||
| val safeVersionCode = compressedCode.coerceIn(1L, maxPlayVersionCode) | ||
| output.versionCode.set(safeVersionCode.toInt()) | ||
| } | ||
| } | ||
| } | ||
| } |
There was a problem hiding this comment.
Suggestion: Assign version codes to all outputs
| androidComponents { | |
| onVariants { variant -> | |
| variant.outputs.forEach { output -> | |
| val abiFilter = output.filters.find { | |
| it.filterType == com.android.build.api.variant.VariantOutputConfiguration.FilterType.ABI | |
| } | |
| val abiVersionCode = abiFilter?.identifier?.let { abiCodes[it] } | |
| android.applicationVariants.configureEach { | |
| val variant = this | |
| variant.outputs.forEach { output -> | |
| val abiVersionCode = abiCodes[output.filters.find { it.filterType == "ABI" }?.identifier] | |
| if (abiVersionCode != null) { | |
| // Create a version code within Android limits (max 2100000000) | |
| // Use: (YYMMDDHH % 100000) * 100 + ABI to stay well under limits | |
| val baseBuildNumber = flutterVersionCode.toLong() | |
| val compressedCode = (baseBuildNumber % 100000) * 100 + abiVersionCode | |
| (output as ApkVariantOutputImpl).versionCodeOverride = compressedCode.toInt() | |
| if (abiVersionCode != null) { | |
| // Create a version code within Android limits (max 2100000000) | |
| // Use: (YYMMDDHH % 100000) * 100 + ABI to stay well under limits | |
| val baseBuildNumber = requireNotNull(flutterVersionCode.toLongOrNull()) { | |
| "Invalid flutter.versionCode='$flutterVersionCode' in local.properties; must be a number." | |
| } | |
| val compressedCode = (baseBuildNumber % 100000) * 100 + abiVersionCode | |
| val maxPlayVersionCode = 2_100_000_000L | |
| val safeVersionCode = compressedCode.coerceIn(1L, maxPlayVersionCode) | |
| output.versionCode.set(safeVersionCode.toInt()) | |
| } | |
| } | |
| } | |
| } | |
| androidComponents { | |
| onVariants { variant -> | |
| variant.outputs.forEach { output -> | |
| val abiFilter = output.filters.find { | |
| it.filterType == com.android.build.api.variant.VariantOutputConfiguration.FilterType.ABI | |
| } | |
| val abiVersionCode = abiFilter?.identifier?.let { abiCodes[it] } ?: 0 | |
| // Create a version code within Android limits (max 2100000000) | |
| // Use: (YYMMDDHH % 100000) * 100 + ABI to stay well under limits | |
| val baseBuildNumber = requireNotNull(flutterVersionCode.toLongOrNull()) { | |
| "Invalid flutter.versionCode='$flutterVersionCode' in local.properties; must be a number." | |
| } | |
| val compressedCode = (baseBuildNumber % 100000) * 100 + abiVersionCode | |
| val maxPlayVersionCode = 2_100_000_000L | |
| val safeVersionCode = compressedCode.coerceIn(1L, maxPlayVersionCode) | |
| output.versionCode.set(safeVersionCode.toInt()) | |
| } | |
| } | |
| } |
There was a problem hiding this comment.
Please update your branch, I can't merge it.
PR Type
Enhancement, Bug fix
Description
Refactor apps page UI with improved status indicators
Replace custom animation utilities with standard Flutter curves
Update Android build configuration for ABI splitting support
Fix Flutter API deprecations and improve code compatibility
Enhance translation strings across 30+ languages
Diagram Walkthrough
File Walkthrough
3 files
Refactor app status UI and layout structureReplace custom motion curves with standard Flutter curvesReplace custom motion curves with standard Flutter curves7 files
Fix deprecated FilledButton API usageFix button property names and selection modal textFix constructor syntax and add missing parametersAdd missing import and fix icon referenceAdd missing app_button component importFix unused variable naming in PageRouteBuilderAdd missing app_button component import1 files
Update Kotlin configuration and add ABI split support9 files
Improve Hebrew translation stringsImprove Arabic translation stringsImprove Hungarian translation stringsImprove Ukrainian translation stringsImprove Czech translation stringsImprove Polish translation stringsImprove Japanese translation stringsImprove Estonian translation stringsImprove Traditional Chinese translation strings25 files