Bump to 3.0#507
Conversation
📝 WalkthroughWalkthroughThis PR increments the project version from 2.0.28 to 3.0.0 across frontend manifests, updates tauri configuration (adds iOS bundle.minimumSystemVersion "16.0" and increments Android bundle.versionCode from 2000028000 to 2000028001), simplifies Android versionCode logic in the release justfile, and adds/updates Android platform and release guidance in docs and README. ChangesVersion & Platform Sync + Release Tooling
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Deploying maple with
|
| Latest commit: |
4f98ec9
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://25bc874a.maple-ca8.pages.dev |
| Branch Preview URL: | https://bump-3.maple-ca8.pages.dev |
| }, | ||
| "android": { | ||
| "versionCode": 2000028000 | ||
| "versionCode": 3000000000 |
There was a problem hiding this comment.
🔴 Android versionCode 3000000000 exceeds 32-bit signed integer max, breaking Android builds
The Android versionCode is set to 3000000000, which exceeds the maximum value of a 32-bit signed integer (2,147,483,647). This value is parsed via .toInt() in frontend/src-tauri/gen/android/app/build.gradle.kts:24, which will throw a NumberFormatException and fail the Android build. The encoding scheme in justfile:106 (printf "%d%03d%03d000") produces 10-digit codes where major version ≥ 3 overflows Int.MAX_VALUE. The previous version 2.0.28 had versionCode 2000028000 which was just under the limit.
How the value flows to the build failure
tauri.conf.jsonsets"versionCode": 3000000000- Tauri writes this to
tauri.propertiesastauri.android.versionCode=3000000000 build.gradle.kts:24reads it:versionCode = tauriProperties.getProperty("tauri.android.versionCode", "1").toInt()- Kotlin's
.toInt()throwsNumberFormatExceptionsince 3,000,000,000 > 2,147,483,647
Prompt for agents
The Android versionCode encoding scheme in justfile:104-106 uses the format MMMMPPP000 (printf "%d%03d%03d000") which produces values that overflow a 32-bit signed integer when the major version reaches 3. The maximum allowed value is 2,147,483,647.
The versionCode in frontend/src-tauri/tauri.conf.json needs to be changed to a value under 2,147,483,647, and the encoding formula in justfile:106 needs to be updated to a scheme that won't overflow for major version 3+.
Possible approaches:
1. Use a shorter encoding like printf "%d%02d%02d%03d" (MMPPPCCC) giving 300000000 for 3.0.0 - fits easily.
2. Use printf "%d%03d%03d" (MMMMPPP without counter suffix) giving 3000000 for 3.0.0 - fits but loses the counter digits for Play Store re-uploads.
3. Use a multiplicative scheme: major*10000000 + minor*10000 + patch*10 + counter, giving 30000000 for 3.0.0.
Whichever scheme is chosen, also update the bump-android-build recipe (justfile:172+) to match, and ensure the new versionCode is strictly greater than the previous 2000028000 so existing Play Store users can update.
Was this helpful? React with 👍 or 👎 to provide feedback.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@frontend/src-tauri/tauri.conf.json`:
- Line 92: The Android versionCode value is too large (3000000000) and must be
reduced to a valid integer ≤ 2100000000 and greater than the previous code
1003002002; update the "versionCode" entry in tauri.conf.json from 3000000000 to
a compliant integer (for example 2100000000 or any value in (1003002002,
2100000000]) ensuring it remains a numeric JSON value.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 83974dfc-608d-4ccd-9a36-17f1a282a31c
⛔ Files ignored due to path filters (3)
frontend/src-tauri/Cargo.lockis excluded by!**/*.lockfrontend/src-tauri/gen/apple/maple_iOS/Info.plistis excluded by!**/gen/**frontend/src-tauri/gen/apple/project.ymlis excluded by!**/gen/**
📒 Files selected for processing (3)
frontend/package.jsonfrontend/src-tauri/Cargo.tomlfrontend/src-tauri/tauri.conf.json
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
justfile (1)
121-121:⚠️ Potential issue | 🟠 Major | ⚡ Quick winAvoid
sedfor JSON mutation; it can silently missversionCodeupdates.These replacements are text-pattern dependent. If formatting changes, update can fail while the script still reports success, leaving a stale
versionCode.Proposed fix
- # Update tauri.conf.json Android versionCode - sed -i "s/\"versionCode\": [0-9]*/\"versionCode\": $android_version_code/" frontend/src-tauri/tauri.conf.json + # Update tauri.conf.json Android versionCode (structure-safe) + tmp_json="$(mktemp)" + jq --argjson code "$android_version_code" '.bundle.android.versionCode = $code' \ + frontend/src-tauri/tauri.conf.json > "$tmp_json" + mv "$tmp_json" frontend/src-tauri/tauri.conf.json @@ - # Update tauri.conf.json Android versionCode - sed -i "s/\"versionCode\": $current_code/\"versionCode\": $new_code/" frontend/src-tauri/tauri.conf.json + # Update tauri.conf.json Android versionCode (structure-safe) + tmp_json="$(mktemp)" + jq --argjson code "$new_code" '.bundle.android.versionCode = $code' \ + frontend/src-tauri/tauri.conf.json > "$tmp_json" + mv "$tmp_json" frontend/src-tauri/tauri.conf.jsonAlso applies to: 197-197
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@justfile` at line 121, The sed-based JSON mutation using the command that targets "versionCode" (the sed line replacing "versionCode": [0-9]* with $android_version_code) is brittle and can silently fail; replace it with a robust JSON-aware update (e.g., use jq or a small Node/Python script) that reads frontend/src-tauri/tauri.conf.json, parses the JSON, sets .package.versionCode (or the exact JSON path where "versionCode" lives) to the android_version_code variable, and writes the file back atomically; apply the same replacement wherever the sed command is used (the other occurrence noted in the review).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@justfile`:
- Line 121: The sed-based JSON mutation using the command that targets
"versionCode" (the sed line replacing "versionCode": [0-9]* with
$android_version_code) is brittle and can silently fail; replace it with a
robust JSON-aware update (e.g., use jq or a small Node/Python script) that reads
frontend/src-tauri/tauri.conf.json, parses the JSON, sets .package.versionCode
(or the exact JSON path where "versionCode" lives) to the android_version_code
variable, and writes the file back atomically; apply the same replacement
wherever the sed command is used (the other occurrence noted in the review).
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: ab2c7f39-a82f-4884-8bfd-bc850334210e
📒 Files selected for processing (4)
README.mddocs/android-platform-checks-analysis.mdfrontend/src-tauri/tauri.conf.jsonjustfile
Summary by CodeRabbit
Chores
Chores / Release tooling
Documentation