···66- Add support for non-standard `audio/x-flac` mimetype.
77- Fixes a playback issue with Google Drive on Safari/iOS.
88- Improves Google Drive support, access tokens are now refreshed when needed (before it only refreshed on source processing)
99+- Reduces the track pool when selecting a cover. In other words, when you're using the album art mode and select an image, only those tracks will be in the "automatic" queue (automatic queue, as in, not manually added queue items). This behaviour can be disabled on the settings page if you prefer the old behaviour.
910- Shift + Click actions for the top-right nav items on the tracks page.
1011- Several playlist improvements: add to queue, add options to autogenerated playlists, convert autogenerated playlist into regular playlist, etc.
1112
+2-5
Justfile
···175175#
176176177177@dev: build
178178- just watch-wo-build & just server
178178+ just watch & just server
179179180180181181@doc-tests:
···229229@test: doc-tests
230230231231232232-@watch: build watch-wo-build
233233-234234-235235-@watch-wo-build:
232232+@watch:
236233 echo "> Watching"
237234 just watch-css & just watch-elm & just watch-js & just watch-system
238235
···246246-- ⚗️
247247248248249249-coverGroup : SortBy -> IdentifiedTrack -> String
250250-coverGroup sort ( identifiers, { tags } as track ) =
251251- (case sort of
252252- Artist ->
253253- tags.artist
254254-255255- Album ->
256256- -- There is the possibility of albums with the same name,
257257- -- such as "Greatests Hits".
258258- -- To make sure we treat those as different albums,
259259- -- we prefix the album by its parent directory.
260260- identifiers.parentDirectory ++ tags.album
261261-262262- PlaylistIndex ->
263263- ""
264264-265265- Title ->
266266- tags.title
267267- )
268268- |> String.trim
269269- |> String.toLower
270270-271271-272272-coverKey : Bool -> Track -> String
273273-coverKey isVariousArtists { tags } =
274274- if isVariousArtists then
275275- tags.album
276276-277277- else
278278- tags.artist ++ " --- " ++ tags.album
279279-280280-281249makeCover sortBy_ gathering collection =
282250 let
283251 closedGathering =
+36-9
src/Applications/UI/Tracks/State.elm
···6767 ToggleCachedOnly ->
6868 toggleCachedOnly
69697070+ ToggleCoverSelectionReducesPool ->
7171+ toggleCoverSelectionReducesPool
7272+7073 ToggleFavouritesOnly ->
7174 toggleFavouritesOnly
7275···212215 Cmd.none
213216 )
214217 |> return { model | scene = scene, selectedCover = Nothing }
218218+ |> andThen
219219+ (if model.coverSelectionReducesPool then
220220+ Queue.reset
221221+222222+ else
223223+ Return.singleton
224224+ )
215225 |> andThen Common.forceTracksRerender
216226 |> andThen User.saveEnclosedUserData
217227···241251242252deselectCover : Manager
243253deselectCover model =
244244- Return.singleton { model | selectedCover = Nothing }
254254+ (if model.coverSelectionReducesPool then
255255+ Queue.reset
256256+257257+ else
258258+ Return.singleton
259259+ )
260260+ { model | selectedCover = Nothing }
245261246262247263download : String -> List Track -> Manager
···575591576592selectCover : Cover -> Manager
577593selectCover cover model =
578578- return
579579- { model | selectedCover = Just cover }
580580- (Ports.loadAlbumCovers { list = False, coverView = True })
594594+ { model | selectedCover = Just cover }
595595+ |> (if model.coverSelectionReducesPool then
596596+ Queue.reset
597597+598598+ else
599599+ Return.singleton
600600+ )
601601+ |> Return.command (Ports.loadAlbumCovers { list = False, coverView = True })
581602582603583604setSearchResults : Json.Value -> Manager
···844865 |> andThen Common.forceTracksRerender
845866846867868868+toggleCoverSelectionReducesPool : Manager
869869+toggleCoverSelectionReducesPool model =
870870+ { model | coverSelectionReducesPool = not model.coverSelectionReducesPool }
871871+ |> Queue.reset
872872+ |> andThen User.saveSettings
873873+874874+847875toggleFavourite : Int -> Manager
848876toggleFavourite index model =
849877 case List.getAt index model.tracks.harvested of
···958986 model.tracks.harvested
959987 newCollection.harvested
960988961961- searchChanged =
989989+ scrollContextChanged =
962990 newScrollContext /= model.tracks.scrollContext
963991964992 modelWithNewCollection =
965965- (if model.scene == List && searchChanged then
993993+ (if model.scene == List && scrollContextChanged then
966994 \m -> { m | infiniteList = InfiniteList.updateScroll scrollEvent m.infiniteList }
967995968996 else
···9951023 -----------------------------------------
9961024 -- Command
9971025 -----------------------------------------
998998- , if searchChanged then
10261026+ , if scrollContextChanged then
9991027 case model.scene of
10001028 Covers ->
10011029 UI.Tracks.Scene.Covers.scrollToTop
···100910371010103810111039whenHarvestChanges =
10121012- andThen Queue.reset >> andThen harvestCovers
10401040+ andThen harvestCovers >> andThen Queue.reset
101310411014104210151043whenArrangementChanges =
···10361064importHypaethral data selectedPlaylist model =
10371065 { model
10381066 | favourites = data.favourites
10391039- , hideDuplicates = Maybe.unwrap False .hideDuplicates data.settings
10401067 , selectedPlaylist = selectedPlaylist
10411068 , tracks = { emptyCollection | untouched = data.tracks }
10421069 }
···224224-- MORE STUFF
225225226226227227+coverGroup : SortBy -> IdentifiedTrack -> String
228228+coverGroup sort ( identifiers, { tags } as track ) =
229229+ (case sort of
230230+ Artist ->
231231+ tags.artist
232232+233233+ Album ->
234234+ -- There is the possibility of albums with the same name,
235235+ -- such as "Greatests Hits".
236236+ -- To make sure we treat those as different albums,
237237+ -- we prefix the album by its parent directory.
238238+ identifiers.parentDirectory ++ tags.album
239239+240240+ PlaylistIndex ->
241241+ ""
242242+243243+ Title ->
244244+ tags.title
245245+ )
246246+ |> String.trim
247247+ |> String.toLower
248248+249249+250250+coverKey : Bool -> Track -> String
251251+coverKey isVariousArtists { tags } =
252252+ if isVariousArtists then
253253+ tags.album
254254+255255+ else
256256+ tags.artist ++ " --- " ++ tags.album
257257+258258+227259isNowPlaying : IdentifiedTrack -> IdentifiedTrack -> Bool
228260isNowPlaying ( a, b ) ( x, y ) =
229261 a.indexInPlaylist == x.indexInPlaylist && b.id == y.id