Skip to content

6.4.0#282

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

6.4.0#282
shub39 merged 4 commits into
masterfrom
dev

Conversation

@shub39

@shub39 shub39 commented Jun 13, 2026

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features

    • Lyrics page controls now auto-hide after 5 seconds.
    • Added a toggle for control auto-hide in Lyrics Customizations.
  • Bug Fixes

    • Miscellaneous UI improvements and visual refinements.
  • Other

    • App version updated to 6.4.0.

@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: 8a71d8ab-255a-486e-86d2-a494ef478fc7

📥 Commits

Reviewing files that changed from the base of the PR and between 128c536 and b1282e8.

📒 Files selected for processing (1)
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/lyrics/LyricsPageState.kt

📝 Walkthrough

Walkthrough

This 6.4.0 release adds a user-configurable auto-hide for lyrics controls, wires the preference through datastore and the view model, refactors enum qualification and album-art shape helpers, centralizes Kotlin compiler flags, and updates version and changelog artifacts.

Changes

Hide UI Control Feature

Layer / File(s) Summary
Preference Interface and Implementation
shared/core/src/commonMain/kotlin/com/shub39/rush/shared/core/interfaces/LyricsPagePreferences.kt, shared/logic/src/commonMain/kotlin/com/shub39/rush/shared/logic/datastore/LyricsPagePreferencesImpl.kt
Interface adds getHideUIFlow() and updateHideUI(enabled) methods; implementation adds hideUI datastore key and wires Flow and update operations with default false value.
State and Action Model
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/lyrics/LyricsPageState.kt, shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/lyrics/LyricsPageAction.kt
State adds hideUI: Boolean field; action adds OnHideUIToggle(enabled: Boolean) sealed variant.
UI Settings Control and Strings
shared/ui/src/commonMain/composeResources/values/strings.xml, shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/lyrics/component/customisation/LyricsCustomisationSettings.kt
Strings add hide_ui and hide_ui_desc labels; settings adds new ListItem with ExpressiveSwitch toggle bound to state.hideUI dispatching OnHideUIToggle action.
ViewModel Preference Handling
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/viewmodels/LyricsVM.kt
ViewModel handles OnHideUIToggle action by calling updateHideUI(), and observes preference flow to update state whenever preference changes.
Control Visibility and Auto-Hide Logic
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/lyrics/section/LyricsPage.kt
Adds controlsVisible state with fade animation via controlsAlpha; auto-hides controls after delay when hideUI is true; detects taps on main content to restore controls; applies alpha fade to portrait actions, landscape actions, and bottom controls; forces controls visible on search state changes.

Enum Constant Unqualification and Shape Extension Rename

Layer / File(s) Summary
Enum Extension Helpers Refactoring
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/EnumExt.kt
Refactors toStringRes(), alignment, theme, and font extension helpers to use unqualified enum constants in when expressions; types premiumCards as List<CardTheme> and audioDependentBackgrounds as List<LyricsBackground>; updates PaletteStyle.toMPaletteStyle() to return unqualified variants.
Album Art Shape Extension Rename and Implementation
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/EnumExt.kt
Renames AlbumArtShape.toShape() to toMaterialShape() and refactors to map each AlbumArtShape to a MaterialShapes variant, then call .toShape() once.
Util.kt Color and Background Enum Usage
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/lyrics/Util.kt
Updates color selection in getHypnoticColors, getCardColors, and getWaveColors to use unqualified enum entries; updates LyricsAlignment.toTransformOrigin() and ApplyLyricsBackground to use unqualified LyricsAlignment/LyricsBackground.
Shape Extension Usage Updates in Share Page
shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/SharePage.kt, shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/SharePageSheet.kt
Updates albumArtShape calls from toShape() to toMaterialShape() in card rendering and shape selector; updates card theme branch matching to use unqualified CardTheme constants.

Version and Release Documentation

Layer / File(s) Summary
Version Number and Changelog Updates
androidApp/build.gradle.kts, CHANGELOG.md, shared/logic/src/commonMain/composeResources/files/changelog.json
Updates appVersionName to 6.4.0 and appVersionCode to 6400; adds ## 6.4.0 section to CHANGELOG.md with three bullet items; adds 6.4.0 entry to changelog.json and removes 6.1.13 entry.

Build Configuration Consolidation

Layer / File(s) Summary
Kotlin Compiler Options Centralization
androidApp/build.gradle.kts, shared/core/build.gradle.kts, shared/logic/build.gradle.kts, shared/ui/build.gradle.kts
Moves Kotlin compiler configuration from per-target task wiring to centralized kotlin.compilerOptions blocks; adds -Xcontext-sensitive-resolution alongside -Xexpect-actual-classes free arguments across all modules.
Code Formatting Cleanup
desktopApp/src/commonMain/kotlin/com/shub39/rush/Main.kt
Reformats Density(...) instantiation from multi-line to single-line constructor call.

🐰 Controls that hide when you're not looking,
A tap brings them back with glee,
Lyrics dance on screens so free,
Auto-fading, gentle and light,
Version six-four hops into sight!

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.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 title '6.4.0' is vague and generic, using only a version number without describing the actual changes or features implemented in the pull request. Provide a descriptive title that summarizes the main change, such as 'Add hide UI auto-hide feature for lyrics page' or 'Implement v6.4.0 with UI auto-hide controls.'
✅ 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: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
shared/ui/build.gradle.kts (1)

28-34: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Incomplete migration: per-target task configuration should be removed.

Unlike shared/core and shared/logic, this module still retains the per-target task-level configuration for -Xexpect-actual-classes. According to the PR objective to centralize compiler options, this block should be removed and -Xexpect-actual-classes should be moved into the centralized compilerOptions block (lines 36-43) alongside -Xcontext-sensitive-resolution.

♻️ Proposed fix to complete the centralization

Remove this per-target configuration block:

-    targets.all {
-        compilations.all {
-            compileTaskProvider.configure {
-                compilerOptions.freeCompilerArgs.add("-Xexpect-actual-classes")
-            }
-        }
-    }
-

And add -Xexpect-actual-classes to the centralized compilerOptions block:

     compilerOptions {
+        freeCompilerArgs.add("-Xexpect-actual-classes")
         freeCompilerArgs.add("-Xcontext-sensitive-resolution")
         optIn.add("androidx.compose.material3.ExperimentalMaterial3Api")
🤖 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/build.gradle.kts` around lines 28 - 34, Remove the per-target
compile task configuration block that calls targets.all { compilations.all {
compileTaskProvider.configure {
compilerOptions.freeCompilerArgs.add("-Xexpect-actual-classes") } } } and
instead add the "-Xexpect-actual-classes" entry to the centralized
compilerOptions.freeCompilerArgs block (the existing shared compilerOptions
block where "-Xcontext-sensitive-resolution" is set) so the flag is configured
once centrally rather than per-target.
🤖 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/lyrics/LyricsPageState.kt`:
- Line 48: LyricsPageState defines hideUI with a default of true but the
datastore default in LyricsPagePreferencesImpl is false, causing a mismatch on
first launch; update the default in the LyricsPageState data class (the hideUI
property) to false so it matches the datastore default (or alternatively change
the datastore default to true if you prefer UI-first behavior) and ensure any
constructors or usages that rely on the old default are updated accordingly.

---

Outside diff comments:
In `@shared/ui/build.gradle.kts`:
- Around line 28-34: Remove the per-target compile task configuration block that
calls targets.all { compilations.all { compileTaskProvider.configure {
compilerOptions.freeCompilerArgs.add("-Xexpect-actual-classes") } } } and
instead add the "-Xexpect-actual-classes" entry to the centralized
compilerOptions.freeCompilerArgs block (the existing shared compilerOptions
block where "-Xcontext-sensitive-resolution" is set) so the flag is configured
once centrally rather than per-target.
🪄 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: 4620a996-2fe7-4beb-b18a-7ffe02bdd3e5

📥 Commits

Reviewing files that changed from the base of the PR and between ba495a1 and 128c536.

📒 Files selected for processing (22)
  • CHANGELOG.md
  • androidApp/build.gradle.kts
  • desktopApp/src/commonMain/kotlin/com/shub39/rush/Main.kt
  • shared/core/build.gradle.kts
  • shared/core/src/commonMain/kotlin/com/shub39/rush/shared/core/interfaces/LyricsPagePreferences.kt
  • shared/logic/build.gradle.kts
  • shared/logic/src/commonMain/composeResources/files/changelog.json
  • shared/logic/src/commonMain/kotlin/com/shub39/rush/shared/logic/datastore/LyricsPagePreferencesImpl.kt
  • shared/ui/build.gradle.kts
  • shared/ui/src/commonMain/composeResources/values/strings.xml
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/EnumExt.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/lyrics/LyricsPageAction.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/lyrics/LyricsPageState.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/lyrics/Util.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/LyricsPage.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/SharePage.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/share/component/SharePageSheet.kt
  • shared/ui/src/commonMain/kotlin/com/shub39/rush/shared/ui/viewmodels/LyricsVM.kt
  • shared/ui/src/jvmMain/kotlin/com/shub39/rush/shared/ui/EnumExt.jvm.kt
  • shared/ui/src/jvmMain/kotlin/com/shub39/rush/shared/ui/lyrics/component/customisation/LyricsCustomisationSettings.jvm.kt
  • shared/ui/src/jvmMain/kotlin/com/shub39/rush/shared/ui/setting/section/SettingRootPage.jvm.kt

@shub39 shub39 merged commit 0f4c6e1 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