Skip to content

Commit 294dc0f

Browse files
committed
Merge dev into main for v13.11.3
2 parents 4e5d3ff + 05c961c commit 294dc0f

47 files changed

Lines changed: 3610 additions & 1107 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ What's new in each release. Feature attribution lives in the [README](README.md#
44

55
| Version | Notes |
66
| --- | --- |
7-
| 13.11.2 | [13.11.2](release_notes/v13.11.2.md) · **current** |
7+
| 13.11.3 | [13.11.3](release_notes/v13.11.3.md) · **current** |
8+
| 13.11.2 | [13.11.2](release_notes/v13.11.2.md) |
89
| 13.9.0 | [13.9.0](release_notes/v13.9.0.md) |
910
| 13.8.9 | [13.8.9](release_notes/v13.8.9.md) |
1011
| 13.8.8 | [13.8.8](release_notes/v13.8.8.md) |

app/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ android {
4747
applicationId = "app.hush.music"
4848
minSdk = 26
4949
targetSdk = 37
50-
versionCode = 152
51-
versionName = "13.11.2"
50+
versionCode = 153
51+
versionName = "13.11.3"
5252

5353
ndk {
5454
// ABI filters are set per product flavor (arm64, universal, etc.).

app/src/main/kotlin/app/hush/music/App.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ package app.hush.music
99

1010
import android.app.ActivityManager
1111
import android.app.Application
12+
import android.content.ComponentCallbacks2
1213
import android.content.Context
1314
import android.content.Intent
1415
import android.os.Build
@@ -19,6 +20,7 @@ import coil3.PlatformContext
1920
import coil3.SingletonImageLoader
2021
import coil3.disk.DiskCache
2122
import coil3.disk.directory
23+
import coil3.imageLoader
2224
import coil3.request.CachePolicy
2325
import coil3.network.okhttp.OkHttpNetworkFetcherFactory
2426
import coil3.request.allowHardware
@@ -142,7 +144,10 @@ class App :
142144

143145
override fun onTrimMemory(level: Int) {
144146
super.onTrimMemory(level)
145-
// WebView cleanup happens automatically on process death
147+
if (level >= ComponentCallbacks2.TRIM_MEMORY_RUNNING_LOW) {
148+
applicationContext.imageLoader.memoryCache?.clear()
149+
applicationScope.launch { BotGuardTokenGenerator.onAppBackgrounded() }
150+
}
146151
}
147152

148153
private fun initializeCriticalSync() {

app/src/main/kotlin/app/hush/music/constants/PreferenceKeys.kt

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ val GridItemsSizeKey = stringPreferencesKey("gridItemSize")
3333
val SliderStyleKey = stringPreferencesKey("sliderStyle")
3434
val SwipeToSongKey = booleanPreferencesKey("SwipeToSong")
3535
val PlayerDesignStyleKey = stringPreferencesKey("playerDesignStyle")
36+
val LandscapePlayerLayoutKey = booleanPreferencesKey("landscapePlayerStacked")
37+
val CarExpressiveAutoHideTitleKey = booleanPreferencesKey("carExpressiveAutoHideTitle")
38+
val CarExpressiveTitleHideDelayKey = intPreferencesKey("carExpressiveTitleHideDelaySeconds")
3639
val HidePlayerThumbnailKey = booleanPreferencesKey("hidePlayerThumbnail")
3740
val HushCanvasKey = booleanPreferencesKey("archiveTuneCanvas")
3841
val ThumbnailCornerRadiusKey = floatPreferencesKey("thumbnailCornerRadius")
@@ -246,6 +249,13 @@ enum class LastFmProvider {
246249

247250
val AudioQualityKey = stringPreferencesKey("audioQuality")
248251

252+
enum class PrimaryAudioScraper {
253+
YOUTUBE,
254+
JIOSAAVN,
255+
}
256+
257+
val PrimaryAudioScraperKey = stringPreferencesKey("primaryAudioScraper")
258+
249259
val NetworkMeteredKey = booleanPreferencesKey("networkMetered")
250260
val LowDataModeKey = NetworkMeteredKey
251261

@@ -298,6 +308,7 @@ val AudioOffload = booleanPreferencesKey("audioOffload")
298308
val CrossfadeEnabledKey = booleanPreferencesKey("crossfadeEnabled")
299309
val CrossfadeDurationKey = floatPreferencesKey("crossfadeDuration")
300310
val CrossfadeGaplessKey = booleanPreferencesKey("crossfadeGapless")
311+
val PrefetchCountKey = intPreferencesKey("prefetchCount")
301312
val AutoLoadMoreKey = booleanPreferencesKey("autoLoadMore")
302313
val AutoDownloadOnLikeKey = booleanPreferencesKey("autoDownloadOnLike")
303314
val AutoSkipNextOnErrorKey = booleanPreferencesKey("autoSkipNextOnError")
@@ -313,11 +324,12 @@ val PlaylistTagsFilterKey = stringPreferencesKey("playlistTagsFilter")
313324
val ShowHomeCategoryChipsKey = booleanPreferencesKey("showHomeCategoryChips")
314325
val ShowTagsInLibraryKey = booleanPreferencesKey("showTagsInLibrary")
315326

316-
val VisualizerEnabledKey = booleanPreferencesKey("visualizerEnabled")
317-
val VisualizerStyleKey = stringPreferencesKey("visualizerStyle")
318-
val VisualizerColorThemeKey = stringPreferencesKey("visualizerColorTheme")
319-
val VisualizerMiniPlayerKey = booleanPreferencesKey("visualizerMiniPlayer")
320-
val VisualizerOpacityKey = floatPreferencesKey("visualizerOpacity")
327+
val PulseMatrixEnabledKey = booleanPreferencesKey("pulseMatrixEnabled")
328+
val PulseMatrixThemeKey = stringPreferencesKey("pulseMatrixTheme")
329+
val PulseMatrixMiniPlayerKey = booleanPreferencesKey("pulseMatrixMiniPlayer")
330+
val PulseMatrixIntensityKey = stringPreferencesKey("pulseMatrixIntensity")
331+
val PulseMatrixPeakHoldKey = booleanPreferencesKey("pulseMatrixPeakHold")
332+
321333
val EqualizerEnabledKey = booleanPreferencesKey("equalizerEnabled")
322334
val EqualizerBandLevelsMbKey = stringPreferencesKey("equalizerBandLevelsMb")
323335
val EqualizerOutputGainEnabledKey = booleanPreferencesKey("equalizerOutputGainEnabled")
@@ -629,7 +641,7 @@ enum class PlayerDesignStyle {
629641

630642
/** Legacy/rationalized styles hidden from settings; existing users are migrated to [DEFAULT]. */
631643
val isDeprecated: Boolean
632-
get() = this == V1 || this == V3 || this == V5 || this == V7 || this == V8 || this == V9
644+
get() = this != DEFAULT
633645

634646
/** Only deprecated styles normalize to [DEFAULT]; active styles keep their identity. */
635647
fun normalized(): PlayerDesignStyle =
@@ -641,7 +653,7 @@ enum class PlayerDesignStyle {
641653

642654
/** Styles shown in Settings → Player design style. */
643655
val selectableValues: List<PlayerDesignStyle> =
644-
listOf(V2, V4, V6)
656+
listOf(V6)
645657
}
646658
}
647659

@@ -708,7 +720,6 @@ val HistoryDuration = intPreferencesKey("historyDuration")
708720

709721
val PlayerButtonsStyleKey = stringPreferencesKey("player_buttons_style")
710722
val PlayerBackgroundStyleKey = stringPreferencesKey("playerBackgroundStyle")
711-
val ShowLyricsKey = booleanPreferencesKey("showLyrics")
712723
val LyricsTextPositionKey = stringPreferencesKey("lyricsTextPosition")
713724
val LyricsClickKey = booleanPreferencesKey("lyricsClick")
714725
val LyricsScrollKey = booleanPreferencesKey("lyricsScrollKey")

0 commit comments

Comments
 (0)