Skip to content

6.3.3#281

Merged
shub39 merged 6 commits into
masterfrom
dev
Jun 13, 2026
Merged

6.3.3#281
shub39 merged 6 commits into
masterfrom
dev

Conversation

@shub39

@shub39 shub39 commented Jun 13, 2026

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features

    • Release 6.3.3 published (version metadata updated).
  • Bug Fixes

    • Miscellaneous UI fixes across pages.
  • Improvements

    • Improved usability for landscape and desktop screen sizes (layout and background consistency).
    • Wider line-height range in lyrics customization.
    • Refined typography, spacing, and responsive constraints for larger windows.
    • Smoother timing for animations and media updates.

@coderabbitai

coderabbitai Bot commented Jun 13, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 3230c691-d980-4c8d-9d90-e4f9b6b72a54

📥 Commits

Reviewing files that changed from the base of the PR and between 81c8e35 and a187422.

📒 Files selected for processing (1)
  • desktopApp/src/commonMain/kotlin/com/shub39/rush/Main.kt

📝 Walkthrough

Walkthrough

This release updates Rush to v6.3.3: add changelog and Android version metadata, replace raw millisecond delay args with Kotlin Duration, adopt PageFill(modifier) across pages and constrain scaffolds for wider screens, adjust lyrics and settings layouts for landscape/desktop, apply desktop density scaling, and bump dependency versions.

Changes

v6.3.3 Release: Layout Modernization and Desktop UX

Layer / File(s) Summary
Release versioning and changelog
CHANGELOG.md, androidApp/build.gradle.kts, shared/logic/src/commonMain/composeResources/files/changelog.json
Version numbers updated to 6.3.3 and changelog entries added; removed older 6.1.11 entry from changelog.json.
Duration standardization across coroutine delays
androidLibs/.../RememberVisualizerState.kt, shared/core/.../MediaListener.jvm.kt, shared/ui/.../setting/Util.android.kt, shared/ui/.../component/customisation/LyricsCustomisationPreview.kt, shared/ui/.../Onboarding.kt, shared/ui/.../onboarding/component/AnimatedAppIcon.kt, shared/ui/.../searchsheet/SearchSheet.kt, shared/ui/.../viewmodels/LyricsVM.kt
Convert raw millisecond numeric delay(...) calls to Duration-typed expressions using *.milliseconds imports (e.g., delay(100)delay(100.milliseconds)).
PageFill component modifier support
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/component/PageFill.kt
PageFill now accepts an optional modifier: Modifier = Modifier and applies it (modifier.fillMaxSize()), enabling external width/spacing constraints.
PageFill adoption in settings and saved pages
shared/ui/.../saved/SavedPage.kt, shared/ui/.../setting/section/About.kt, shared/ui/.../setting/section/BackupPage.kt, shared/ui/.../setting/section/Changelog.kt, shared/ui/.../setting/section/LookAndFeelPage.kt, shared/ui/.../setting/section/SettingRootPage.kt
Refactor pages to wrap content in PageFill(modifier = modifier) and constrain inner Scaffold width (widthIn(max = 700.dp)), centralizing background/layout handling; BackupPage top app bar colors set via MaterialTheme.
Lyrics page landscape and desktop layout improvements
shared/ui/.../lyrics/section/LyricsPage.kt, shared/ui/.../lyrics/section/LyricsCustomisationPage.kt, shared/ui/.../lyrics/component/customisation/LyricsCustomisationSettings.kt, shared/ui/.../lyrics/LyricsGraph.kt
LyricsPage and customization page now use PageFill, portrait header padding and lyric container sizing adjusted, landscape branch reorganized with constrained width (widthIn(max = 900.dp)) and a right-side settings LazyColumn; line-height slider upper bound expanded to 55f.
Desktop density scaling for improved readability
desktopApp/src/commonMain/kotlin/com/shub39/rush/Main.kt
Provide a LocalDensity override that multiplies density by 1.1f (fontScale unchanged) and simplify singleWindowApplication invocation for desktop.
Dependency updates and code formatting
gradle/libs.versions.toml, shared/ui/build.gradle.kts, shared/ui/.../share/component/cards/MessyCard.kt
Bump catalog versions for Kotlin, KSP, Colorpicker, Koin-plugin, Room3, Purchases, BuildConfig; minor buildscript whitespace change and a small signature reformat in MessyCard.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • shub39/Rush#274: Modifies desktop Main.kt window setup; related to desktop entrypoint/density changes.
  • shub39/Rush#279: Touches MessyCard.kt; this PR reformats the same helper signature.

"🐰
I hopped through code with nimble paws,
Timed delays to duration laws,
PageFill spread its comfy song,
Landscapes stretched and fonts grew strong,
Six-three-three hops along! ✨"

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 4.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The PR title '6.3.3' indicates only a version number without describing what changed or why. It lacks meaningful context about the actual changes (version bump, UI improvements, dependency updates, landscape/desktop improvements). Use a descriptive title that summarizes the main change, e.g., 'Release v6.3.3: Improve landscape/desktop usability and update dependencies' or 'Bump version to 6.3.3 with UI enhancements'.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (2)
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/component/PageFill.kt (1)

26-33: ⚡ Quick win

Update KDoc to document the new modifier parameter.

The KDoc should include documentation for the newly added modifier parameter to maintain API documentation completeness.

📝 Suggested KDoc update
 /**
  * A composable that fills the entire available screen space and centers its content. This is a
  * convenience wrapper around a [Box] with `Modifier.fillMaxSize()` and `contentAlignment =
  * Alignment.Center`.
  *
+ * `@param` modifier The [Modifier] to be applied to the Box. This modifier will be chained with
+ *   [Modifier.fillMaxSize()], allowing callers to add constraints or styling.
  * `@param` content The composable content to be displayed in the center of the page. The content is
  *   placed within a [BoxScope], allowing for more complex layouts if needed.
  */
🤖 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/component/PageFill.kt`
around lines 26 - 33, The KDoc for the PageFill composable was not updated to
document the new modifier parameter; update the KDoc above the PageFill function
to add an `@param` entry for modifier that explains it accepts a Modifier applied
to the outer Box (default Modifier), and keep the existing `@param` for content
unchanged so the documentation lists both parameters (modifier and content) and
their purposes.
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/saved/SavedPage.kt (1)

99-99: ⚡ Quick win

Extract the 700.dp max-width constraint to a shared constant.

The 700.dp width constraint is duplicated across multiple pages. Extracting it to a named constant improves maintainability and makes the design intent clearer.

  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/saved/SavedPage.kt#L99-L99: replace max = 700.dp with a shared constant
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/setting/section/About.kt#L88-L88: replace max = 700.dp with a shared constant
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/setting/section/BackupPage.kt#L130-L130: replace max = 700.dp with a shared constant
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/setting/section/Changelog.kt#L64-L64: replace max = 700.dp with a shared constant
♻️ Example: Define a shared constant

In a common UI constants file (e.g., shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/Constants.kt):

package com.shub39.rush.shared.ui

import androidx.compose.ui.unit.dp

/** Maximum width for page content on larger screens (landscape/desktop). */
val PageContentMaxWidth = 700.dp

Then replace all instances:

-Modifier.widthIn(max = 700.dp)
+Modifier.widthIn(max = PageContentMaxWidth)
🤖 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/saved/SavedPage.kt`
at line 99, Create a shared UI constant and replace the duplicated 700.dp
usages: add a new file
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/Constants.kt declaring
a public val PageContentMaxWidth = 700.dp in package com.shub39.rush.shared.ui,
then update each site to use that constant (replace `max = 700.dp` with `max =
PageContentMaxWidth`): anchor
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/saved/SavedPage.kt
(line 99) — change modifier = Modifier.widthIn(max = 700.dp) to use
PageContentMaxWidth; sibling
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/setting/section/About.kt
(line 88) — replace max = 700.dp with PageContentMaxWidth; sibling
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/setting/section/BackupPage.kt
(line 130) — replace max = 700.dp with PageContentMaxWidth; sibling
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/setting/section/Changelog.kt
(line 64) — replace max = 700.dp with PageContentMaxWidth. Ensure you import
com.shub39.rush.shared.ui.PageContentMaxWidth where needed.
🤖 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 `@desktopApp/src/commonMain/kotlin/com/shub39/rush/Main.kt`:
- Around line 46-51: The Density scope is incorrectly compounding text scaling
by multiplying both density and fontScale; update the scaledDensity construction
in Main.kt so that only currentDensity.density is multiplied by scale (keep
fontScale as currentDensity.fontScale unchanged) — i.e., set Density(density =
currentDensity.density * scale, fontScale = currentDensity.fontScale) for the
scaledDensity variable.

In
`@shared/core/src/jvmMain/kotlin/com/shub39/rush/shared/core/listener/MediaListener.jvm.kt`:
- Line 50: The change reduced the polling sleep to delay(500.milliseconds) which
doubles external playerctl command churn because updateMediaInfo() runs four
commands per loop; revert the sleep to the previous cadence (e.g.,
delay(1.seconds) or the original Duration value used before this change) while
keeping the new Duration type usage, so only the type was changed and the
polling frequency remains unchanged; update the delay call inside the loop that
calls updateMediaInfo() accordingly.

In
`@shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/lyrics/section/LyricsPage.kt`:
- Around line 263-270: The Column in LyricsPage.kt that currently uses
Modifier.fillMaxWidth().padding(start = 16.dp, end = 16.dp, top = 48.dp) should
be made inset-aware: remove the hardcoded top = 48.dp and instead use a
status-bar aware modifier like Modifier.statusBarsPadding() (or combine
WindowInsets.systemBars.asPaddingValues().calculateTopPadding()) so the header
adapts to device cutouts; update the Column's modifier to chain
statusBarsPadding() (e.g.,
Modifier.fillMaxWidth().statusBarsPadding().padding(start = 16.dp, end = 16.dp,
top = <optional small extra dp if needed>)) and ensure imports for
androidx.compose.foundation.layout.statusBarsPadding (or WindowInsets APIs) are
added.

---

Nitpick comments:
In
`@shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/component/PageFill.kt`:
- Around line 26-33: The KDoc for the PageFill composable was not updated to
document the new modifier parameter; update the KDoc above the PageFill function
to add an `@param` entry for modifier that explains it accepts a Modifier applied
to the outer Box (default Modifier), and keep the existing `@param` for content
unchanged so the documentation lists both parameters (modifier and content) and
their purposes.

In
`@shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/saved/SavedPage.kt`:
- Line 99: Create a shared UI constant and replace the duplicated 700.dp usages:
add a new file
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/Constants.kt declaring
a public val PageContentMaxWidth = 700.dp in package com.shub39.rush.shared.ui,
then update each site to use that constant (replace `max = 700.dp` with `max =
PageContentMaxWidth`): anchor
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/saved/SavedPage.kt
(line 99) — change modifier = Modifier.widthIn(max = 700.dp) to use
PageContentMaxWidth; sibling
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/setting/section/About.kt
(line 88) — replace max = 700.dp with PageContentMaxWidth; sibling
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/setting/section/BackupPage.kt
(line 130) — replace max = 700.dp with PageContentMaxWidth; sibling
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/setting/section/Changelog.kt
(line 64) — replace max = 700.dp with PageContentMaxWidth. Ensure you import
com.shub39.rush.shared.ui.PageContentMaxWidth where needed.
🪄 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: da8e0513-144b-41a7-ae2c-8b73afafa56e

📥 Commits

Reviewing files that changed from the base of the PR and between 705b258 and 81c8e35.

📒 Files selected for processing (26)
  • CHANGELOG.md
  • androidApp/build.gradle.kts
  • androidLibs/visualizer-helper/src/main/java/io/gitlab/bpavuk/viz/RememberVisualizerState.kt
  • desktopApp/src/commonMain/kotlin/com/shub39/rush/Main.kt
  • gradle/libs.versions.toml
  • shared/core/src/jvmMain/kotlin/com/shub39/rush/shared/core/listener/MediaListener.jvm.kt
  • shared/logic/src/commonMain/composeResources/files/changelog.json
  • shared/ui/build.gradle.kts
  • shared/ui/src/androidMain/kotlin/com/shub39/rush/shared/ui/setting/Util.android.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/component/PageFill.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/lyrics/LyricsGraph.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/lyrics/component/customisation/LyricsCustomisationPreview.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/lyrics/component/customisation/LyricsCustomisationSettings.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/lyrics/section/LyricsCustomisationPage.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/lyrics/section/LyricsPage.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/onboarding/Onboarding.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/onboarding/component/AnimatedAppIcon.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/saved/SavedPage.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/searchsheet/SearchSheet.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/setting/section/About.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/setting/section/BackupPage.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/setting/section/Changelog.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/setting/section/LookAndFeelPage.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/setting/section/SettingRootPage.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/cards/MessyCard.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/viewmodels/LyricsVM.kt
💤 Files with no reviewable changes (2)
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/lyrics/LyricsGraph.kt
  • shared/ui/build.gradle.kts

Comment thread desktopApp/src/commonMain/kotlin/com/shub39/rush/Main.kt Outdated
@shub39 shub39 merged commit ba495a1 into master Jun 13, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant