mirror of
https://github.com/meowarex/rl-mobile.git
synced 2026-10-15 07:53:12 +11:00
Crossfade & Animated Covers
This commit is contained in:
1 parent
d47693ccaa
commit
f5cd48be5a
158 files changed
+7211
-1855
No files matched your search
@@ -31,8 +31,8 @@ android {
|
||||
defaultConfig {
|
||||
minSdk = 24
|
||||
targetSdk = 36
|
||||
versionCode = 68
|
||||
versionName = "1.1.8"
|
||||
versionCode = 84
|
||||
versionName = "1.5.0"
|
||||
|
||||
vectorDrawables {
|
||||
useSupportLibrary = true
|
||||
|
||||
@@ -82,7 +82,13 @@
|
||||
"description": "[Only works with API results] - Generates Syllable timings from Line timings using a self trained AI model ",
|
||||
"default": false,
|
||||
"inline": true,
|
||||
"token": "RL_SYNTHESIZE"
|
||||
"token": "RL_SYNTHESIZE",
|
||||
"fileNames": [
|
||||
"lyrics-ai-indicator.patch"
|
||||
],
|
||||
"extensionFiles": [
|
||||
"radiant/AiSparkle.smali"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "toggle",
|
||||
@@ -378,17 +384,43 @@
|
||||
"type": "toggle",
|
||||
"key": "cover_everywhere",
|
||||
"title": "Cover Everywhere - WIP",
|
||||
"description": "Applies TIDAL's native blurred album-art backdrop to every Compose based page (Home & Collection)",
|
||||
"description": "Applies TIDAL's native blurred album-art backdrop to every Compose based page (Home, Collection, Search, Save For Later, Profile, Downloads & Settings)",
|
||||
"default": false,
|
||||
"inline": true,
|
||||
"fileNames": [
|
||||
"home-backdrop.patch",
|
||||
"collection-backdrop.patch",
|
||||
"cover-everywhere-pages.patch",
|
||||
"cover-capture.patch"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "AnimatedCovers",
|
||||
"order": 34,
|
||||
"fileNames": [
|
||||
"animated-covers.patch"
|
||||
],
|
||||
"title": "Animated Covers",
|
||||
"description": "Replaces cover art with animated artwork when available",
|
||||
"default": true,
|
||||
"extensionFiles": [
|
||||
"radiant/AnimatedCovers.smali",
|
||||
"radiant/AnimatedCoverView.smali",
|
||||
"radiant/RoundOutline.smali"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "PlayerCrossfade",
|
||||
"order": 35,
|
||||
"fileNames": [
|
||||
"player-crossfade.patch"
|
||||
],
|
||||
"title": "Audio Crossfade",
|
||||
"description": "[Temporary Patch] - Unlocks TIDAL's crossfade between tracks. Set the duration in TIDAL Settings > Audio & Playback (enables the mf-player-crossfade feature flag)",
|
||||
"default": true
|
||||
},
|
||||
{
|
||||
"id": "QualityBadgeColors",
|
||||
"order": 36,
|
||||
@@ -592,7 +624,7 @@
|
||||
"lyrics-sparkle-conditional-visibility.patch"
|
||||
],
|
||||
"title": "Replace Lyrics Button",
|
||||
"description": "Replaces the Lyrics button with the RL Sparkle!",
|
||||
"description": "Replaces the Lyrics button with the RL Sparkle! Spins while lyrics load, and shows a greyed-out crossed note when a track has no lyrics",
|
||||
"default": true
|
||||
},
|
||||
{
|
||||
|
||||
+2
-1
@@ -369,7 +369,8 @@ class SmaliPatchStep(
|
||||
if (matchesAt(target, sourceLines, hint)) return hint
|
||||
|
||||
// Walk outward from the hint, alternating below/above, until finds a unique match.
|
||||
val maxRadius = target.size
|
||||
// Also reach hints past the end of the file
|
||||
val maxRadius = maxOf(target.size, hint)
|
||||
for (offset in 1..maxRadius) {
|
||||
val below = hint + offset
|
||||
if (below + sourceLines.size <= target.size && matchesAt(target, sourceLines, below)) {
|
||||
|
||||
+18
-3
@@ -5,6 +5,7 @@ import android.content.pm.PackageManager.NameNotFoundException
|
||||
import com.meowarex.rlmobile.R
|
||||
import com.meowarex.rlmobile.installers.InstallerResult
|
||||
import com.meowarex.rlmobile.manager.InstallerManager
|
||||
import com.meowarex.rlmobile.manager.PathManager
|
||||
import com.meowarex.rlmobile.patcher.StepRunner
|
||||
import com.meowarex.rlmobile.patcher.steps.StepGroup
|
||||
import com.meowarex.rlmobile.patcher.steps.base.Step
|
||||
@@ -21,6 +22,7 @@ import org.koin.core.component.inject
|
||||
class DowngradeCheckStep(private val options: PatchOptions) : Step(), KoinComponent {
|
||||
private val context: Application by inject()
|
||||
private val installers: InstallerManager by inject()
|
||||
private val paths: PathManager by inject()
|
||||
|
||||
override val group = StepGroup.Prepare
|
||||
override val localizedName = R.string.patch_step_downgrade_check
|
||||
@@ -38,9 +40,11 @@ class DowngradeCheckStep(private val options: PatchOptions) : Step(), KoinCompon
|
||||
}
|
||||
container.log("Version of installed TIDAL app: $currentVersion")
|
||||
|
||||
val targetVersion = container
|
||||
.getStep<FetchInfoStep>()
|
||||
.data.tidalVersionCode
|
||||
// Custom APK can be newer than data.json
|
||||
val targetVersion = customApkVersionCode(container)
|
||||
?: container
|
||||
.getStep<FetchInfoStep>()
|
||||
.data.tidalVersionCode
|
||||
|
||||
container.log("Target TIDAL version: $targetVersion")
|
||||
|
||||
@@ -59,4 +63,15 @@ class DowngradeCheckStep(private val options: PatchOptions) : Step(), KoinCompon
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun customApkVersionCode(container: StepRunner): Int? {
|
||||
val file = options.customTidalApk?.getFile(paths)?.takeIf { it.exists() } ?: return null
|
||||
return try {
|
||||
@Suppress("DEPRECATION")
|
||||
context.packageManager.getPackageArchiveInfo(file.absolutePath, 0)?.versionCode
|
||||
} catch (t: Throwable) {
|
||||
container.log("Failed to read custom TIDAL APK version: ${t.message}")
|
||||
null
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user