Conversation
Currently translated at 76.8% (93 of 121 strings) Translation: Rush/strings Translate-URL: https://hosted.weblate.org/projects/rush/strings/ja/
Currently translated at 95.8% (116 of 121 strings) Translation: Rush/strings Translate-URL: https://hosted.weblate.org/projects/rush/strings/zh_Hans/
Currently translated at 95.8% (116 of 121 strings) Translation: Rush/strings Translate-URL: https://hosted.weblate.org/projects/rush/strings/zh_Hant/
Currently translated at 100.0% (121 of 121 strings) Translation: Rush/strings Translate-URL: https://hosted.weblate.org/projects/rush/strings/fa/
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughVersion 6.5.0 updates release metadata, dependency tooling, preference parsing, share-card APIs and visuals, Pro gating, randomization, UI layouts, typography, and localized resources. The release also adds the Brat card style and removes legacy card-fit, font, branding, and Chat options. Changes6.5.0 release and share-page changes
Estimated code review effort: 4 (Complex) | ~60 minutes Possibly related PRs
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Caution Failed to replace (edit) comment. This is likely due to insufficient permissions or the comment being deleted. Error details |
There was a problem hiding this comment.
Actionable comments posted: 6
🧹 Nitpick comments (4)
gradle/wrapper/gradle-wrapper.properties (1)
5-6: 🩺 Stability & Availability | 🔵 Trivial | 💤 Low valueConsider enabling network retries for the Gradle wrapper.
Setting
retries=0disables wrapper download retries. This can lead to flaky CI builds if there are transient network blips when downloading the Gradle distribution. Consider setting it to3(the default) to improve build resilience.🛠️ Proposed change
networkTimeout=10000 -retries=0 +retries=3 retryBackOffMs=500🤖 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 `@gradle/wrapper/gradle-wrapper.properties` around lines 5 - 6, Update the Gradle wrapper retry configuration by changing retries from 0 to 3, while preserving the existing retryBackOffMs setting.shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/BoldShareCard.kt (1)
17-17: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueFile name no longer matches the defined composable.
This file defines
BratShareCard, notBoldShareCard; there's noBoldShareCardfunction left here. Consider renaming the file toBratShareCard.ktto match the codebase convention (each card file is named after its composable).Also applies to: 52-59
🤖 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 `@shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/BoldShareCard.kt` at line 17, Rename the file from BoldShareCard.kt to BratShareCard.kt so it matches the BratShareCard composable defined in the file and follows the existing card-file naming convention.shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/QuoteShareCard.kt (1)
70-71: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winDuplicated font-loading boilerplate across card composables. Both cards construct the same
artistFont/lyricsFontpair inline; the same pattern is likely repeated in every other card file in this redesign (Couplet, Hypnotic, Messy, Rushed, Spotify, Vertical), making future font/style tweaks require edits in every card file.
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/QuoteShareCard.kt#L70-L71: extractval artistFont = FontFamily(Font(Res.font.google_sans_flex))and theflexFontEmphasis(...)call into a shared helper (e.g. intheme/Util.kt) that all cards call.shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/BoldShareCard.kt#L60-L61: switch to the same shared helper instead of re-declaringartistFont/lyricsFontlocally.🤖 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 `@shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/QuoteShareCard.kt` around lines 70 - 71, The font definitions are duplicated between the card composables. In shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/QuoteShareCard.kt:70-71, extract the artistFont and lyricsFont construction into a shared helper in the theme/Util area; in shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/BoldShareCard.kt:60-61, replace the local declarations with that helper while preserving the existing font configuration.shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/Util.kt (1)
46-53: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueSimplify map sorting implementation.
You can simplify this map sorting and slicing logic by leveraging Kotlin's standard library
associatefunction, which preserves the entry order in aLinkedHashMapinternally.♻️ Proposed refactor
-fun Map<Int, String>.sortMapByKeys(take: Int = 16): Map<Int, String> { - val sortedEntries = this.entries.toList().sortedBy { it.key }.take(take) - val sortedMap = LinkedHashMap<Int, String>() - for (entry in sortedEntries) { - sortedMap[entry.key] = entry.value - } - return sortedMap -} +fun Map<Int, String>.sortMapByKeys(take: Int = 16): Map<Int, String> = + this.entries.sortedBy { it.key }.take(take).associate { it.key to it.value }🤖 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 `@shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/Util.kt` around lines 46 - 53, simplify sortMapByKeys by retaining the existing key-sorted, take-limited entries and converting them directly with Kotlin’s associate function, removing the manual LinkedHashMap creation and loop while preserving the ordered result and take behavior.
🤖 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
`@shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/component/ListSelect.kt`:
- Around line 72-81: Update the Row containing the options in ListSelect to use
the appropriate horizontalArrangement for connected-button spacing, and remove
the horizontal padding from each ToggleButton modifier. Preserve the existing
weight and button behavior while ensuring spacing applies only between adjacent
buttons, not at the outer edges.
In `@shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/EnumExt.kt`:
- Around line 174-198: Opt in to ExperimentalMaterial3ExpressiveApi for
AlbumArtShape.toMaterialShape, or at the file level, so every
MaterialShapes.*.toShape() call compiles under the experimental API requirement
while preserving the existing shape mappings.
In
`@shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/saved/SavedPage.kt`:
- Around line 302-304: Qualify the enum branches in the sort-order selection
with the imported SortOrder type: replace DATE_ADDED, TITLE_ASC, and TITLE_DESC
with SortOrder.DATE_ADDED, SortOrder.TITLE_ASC, and SortOrder.TITLE_DESC, while
keeping their existing state.songsByTime, state.songsAsc, and state.songsDesc
mappings unchanged.
In
`@shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/BoldShareCard.kt`:
- Around line 104-124: Update the composable invocation in Preview() to render
BratShareCard instead of QuoteShareCard, preserving the existing preview data
and configuration.
In
`@shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/SharePage.kt`:
- Around line 322-324: Add a descriptive accessibility label to the dice Icon in
the randomize IconButton within the SharePage composable by replacing the null
contentDescription. Keep the existing randomization action and icon unchanged.
In
`@shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/viewmodels/ShareVM.kt`:
- Around line 117-144: Update the SharePageAction.OnRandomize handling in
ShareVM so it also increments or reseeds messyCardSeed after randomizing the
card settings. Preserve the existing randomization behavior and ensure selecting
CardTheme.MESSY produces a new pattern without relying on the separate refresh
action in SharePage.
---
Nitpick comments:
In `@gradle/wrapper/gradle-wrapper.properties`:
- Around line 5-6: Update the Gradle wrapper retry configuration by changing
retries from 0 to 3, while preserving the existing retryBackOffMs setting.
In
`@shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/BoldShareCard.kt`:
- Line 17: Rename the file from BoldShareCard.kt to BratShareCard.kt so it
matches the BratShareCard composable defined in the file and follows the
existing card-file naming convention.
In
`@shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/QuoteShareCard.kt`:
- Around line 70-71: The font definitions are duplicated between the card
composables. In
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/QuoteShareCard.kt:70-71,
extract the artistFont and lyricsFont construction into a shared helper in the
theme/Util area; in
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/BoldShareCard.kt:60-61,
replace the local declarations with that helper while preserving the existing
font configuration.
In `@shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/Util.kt`:
- Around line 46-53: simplify sortMapByKeys by retaining the existing
key-sorted, take-limited entries and converting them directly with Kotlin’s
associate function, removing the manual LinkedHashMap creation and loop while
preserving the ordered result and take behavior.
🪄 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: defaults
Review profile: CHILL
Plan: Pro
Run ID: fc548cd4-efa9-4459-b2b2-4c5874a3a66b
⛔ Files ignored due to path filters (7)
fastlane/metadata/android/en-US/images/phoneScreenshots/1.pngis excluded by!**/*.pngfastlane/metadata/android/en-US/images/phoneScreenshots/2.pngis excluded by!**/*.pngfastlane/metadata/android/en-US/images/phoneScreenshots/3.pngis excluded by!**/*.pngfastlane/metadata/android/en-US/images/phoneScreenshots/4.pngis excluded by!**/*.pngfastlane/metadata/android/en-US/images/phoneScreenshots/5.pngis excluded by!**/*.pngfastlane/metadata/android/en-US/images/phoneScreenshots/6.pngis excluded by!**/*.pnggradle/wrapper/gradle-wrapper.jaris excluded by!**/*.jar
📒 Files selected for processing (74)
CHANGELOG.mdandroidApp/build.gradle.ktsandroidApp/src/foss/java/com/shub39/rush/billing/BillingHandlerImpl.ktandroidApp/src/main/java/com/shub39/rush/app/App.ktdesktopApp/src/commonMain/kotlin/com/shub39/rush/app/App.ktgradle/libs.versions.tomlgradle/wrapper/gradle-wrapper.propertiesgradlewgradlew.batshared/core/src/commonMain/kotlin/com/shub39/rush/shared/core/Util.ktshared/core/src/commonMain/kotlin/com/shub39/rush/shared/core/enums/AlbumArtShape.ktshared/core/src/commonMain/kotlin/com/shub39/rush/shared/core/enums/CardFit.ktshared/core/src/commonMain/kotlin/com/shub39/rush/shared/core/enums/CardTheme.ktshared/core/src/commonMain/kotlin/com/shub39/rush/shared/core/interfaces/SharePagePreferences.ktshared/logic/src/commonMain/composeResources/files/changelog.jsonshared/logic/src/commonMain/kotlin/com/shub39/rush/shared/logic/datastore/LyricsPagePreferencesImpl.ktshared/logic/src/commonMain/kotlin/com/shub39/rush/shared/logic/datastore/OtherPreferencesImpl.ktshared/logic/src/commonMain/kotlin/com/shub39/rush/shared/logic/datastore/SharePagePreferencesImpl.ktshared/ui/src/androidMain/kotlin/com/shub39/rush/shared/ui/setting/Util.android.ktshared/ui/src/androidMain/kotlin/com/shub39/rush/shared/ui/share/SharePage.android.ktshared/ui/src/commonMain/composeResources/drawable/dice.xmlshared/ui/src/commonMain/composeResources/values-ar/strings.xmlshared/ui/src/commonMain/composeResources/values-ca/strings.xmlshared/ui/src/commonMain/composeResources/values-de/strings.xmlshared/ui/src/commonMain/composeResources/values-es/strings.xmlshared/ui/src/commonMain/composeResources/values-et/strings.xmlshared/ui/src/commonMain/composeResources/values-fa/strings.xmlshared/ui/src/commonMain/composeResources/values-fr/strings.xmlshared/ui/src/commonMain/composeResources/values-hu/strings.xmlshared/ui/src/commonMain/composeResources/values-id/strings.xmlshared/ui/src/commonMain/composeResources/values-is/strings.xmlshared/ui/src/commonMain/composeResources/values-it/strings.xmlshared/ui/src/commonMain/composeResources/values-iw/strings.xmlshared/ui/src/commonMain/composeResources/values-ja/strings.xmlshared/ui/src/commonMain/composeResources/values-ko/strings.xmlshared/ui/src/commonMain/composeResources/values-pl/strings.xmlshared/ui/src/commonMain/composeResources/values-pt-rBR/strings.xmlshared/ui/src/commonMain/composeResources/values-pt/strings.xmlshared/ui/src/commonMain/composeResources/values-ro-rRO/strings.xmlshared/ui/src/commonMain/composeResources/values-ru/strings.xmlshared/ui/src/commonMain/composeResources/values-sr/strings.xmlshared/ui/src/commonMain/composeResources/values-th/strings.xmlshared/ui/src/commonMain/composeResources/values-tr/strings.xmlshared/ui/src/commonMain/composeResources/values-uk/strings.xmlshared/ui/src/commonMain/composeResources/values-zh-rCN/strings.xmlshared/ui/src/commonMain/composeResources/values-zh-rTW/strings.xmlshared/ui/src/commonMain/composeResources/values/strings.xmlshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/EnumExt.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/Util.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/component/ListSelect.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/component/Scrollbar.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/lyrics/section/LyricsPage.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/saved/SavedPage.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/setting/SettingsGraph.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/setting/Util.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/setting/section/LookAndFeelPage.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/SharePage.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/SharePageAction.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/SharePageState.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/SharePageSheet.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/AlbumArt.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/BoldShareCard.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/ChatCard.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/CoupletShareCard.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/HypnoticShareCard.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/MessyCard.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/QuoteShareCard.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/RushedShareCard.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/SpotifyShareCard.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/VerticalShareCard.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/viewmodels/LyricsVM.ktshared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/viewmodels/ShareVM.ktshared/ui/src/jvmMain/kotlin/com/shub39/rush/shared/ui/setting/Util.jvm.ktshared/ui/src/jvmMain/kotlin/com/shub39/rush/shared/ui/share/SharePage.jvm.kt
💤 Files with no reviewable changes (32)
- shared/core/src/commonMain/kotlin/com/shub39/rush/shared/core/enums/CardFit.kt
- shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/component/Scrollbar.kt
- shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/SharePageState.kt
- shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/ChatCard.kt
- shared/ui/src/commonMain/composeResources/values-et/strings.xml
- shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/setting/SettingsGraph.kt
- shared/ui/src/androidMain/kotlin/com/shub39/rush/shared/ui/share/SharePage.android.kt
- shared/ui/src/commonMain/composeResources/values-es/strings.xml
- shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/setting/Util.kt
- shared/ui/src/commonMain/composeResources/values-it/strings.xml
- shared/ui/src/commonMain/composeResources/values-ru/strings.xml
- shared/ui/src/commonMain/composeResources/values-pt/strings.xml
- shared/ui/src/commonMain/composeResources/values-ro-rRO/strings.xml
- desktopApp/src/commonMain/kotlin/com/shub39/rush/app/App.kt
- shared/ui/src/commonMain/composeResources/values-de/strings.xml
- shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/HypnoticShareCard.kt
- shared/ui/src/commonMain/composeResources/values-sr/strings.xml
- shared/ui/src/commonMain/composeResources/values-fr/strings.xml
- shared/ui/src/commonMain/composeResources/values-ko/strings.xml
- shared/ui/src/commonMain/composeResources/values-th/strings.xml
- androidApp/src/main/java/com/shub39/rush/app/App.kt
- shared/ui/src/commonMain/composeResources/values-tr/strings.xml
- shared/ui/src/jvmMain/kotlin/com/shub39/rush/shared/ui/share/SharePage.jvm.kt
- shared/ui/src/commonMain/composeResources/values-uk/strings.xml
- shared/core/src/commonMain/kotlin/com/shub39/rush/shared/core/interfaces/SharePagePreferences.kt
- shared/ui/src/commonMain/composeResources/values-hu/strings.xml
- shared/ui/src/commonMain/composeResources/values-pl/strings.xml
- shared/ui/src/commonMain/composeResources/values-pt-rBR/strings.xml
- shared/ui/src/commonMain/composeResources/values-iw/strings.xml
- shared/ui/src/commonMain/composeResources/values-ca/strings.xml
- shared/ui/src/commonMain/composeResources/values-id/strings.xml
- shared/ui/src/commonMain/composeResources/values-ar/strings.xml
Summary by CodeRabbit