v1.9.2 here! youtube & performance were targeted in this one.
🎉 New Features:
- 447469f: offline search for youtube
- a9a8739: youtube top comments
- d60024b: channel subscriptions
- 9693396: import yt subscriptions from a takeout csv
- 867f803: import youtube playlists, ref #1
- cc68230: seamless transitioning when playing same item in another queue
- 1528947: color palette for albums when groupArtworksByAlbum enabled
- 7a4f21e: sort yt playlists and smol fix while importing
- 30fb059: sort by most played and recently played, closes #90
- ec57c17: swipe down to refresh library #78
- db22eaa: channel subpage view, ref #1
- 386c831: sort hosted yt playlist videos + button to load all
- 45c16d5: remove playlist duplicates, closes #87
- 8b4c395: restore latest yt queue on startup
- 3148650: yt queue chip, ref #1
- ef7ab43: reorderable youtube playlist videos, closes #97
- 5bcf955: watch later yt playlist, ref #1
🛠️ Bug fixes & Improvements:
-
perf:
- f02525f: skipping new queues process when playing from player queue (now will just skip to the item, no normal heavy checks of assignNewQueue())
- 5220e7e: search local tracks only when tab is active
- 3362ba8: calculate history items extents only when needed
- 2af3054: close some streams manually and some other improvements
- c0ed850: dispose some TextEditingController manually
- e9ba9c1: waveform improvements
- a33dff0: assigning instead of ..clear()..addAll() and color extraction delay in home page
- ba70591: significant ui performance improvement, achieved by - using child in AnimatedBuilder, smooth yt miniplayer & queue in normal miniplayer - keys for ArtworkWidget & YoutubeThumbnail, loading now only done in initState - using Container instead of ClipRRect - some refactor
- ebd8d22: refactor to allow multiple children for AnimatedBuilder
- ff7e78c: artwork loading optimizations and overall steadier scrolling experience
- dfb04bb: youtube thumbnail optimizations
- 071d810: artwork fading effect improvement
- 63d3dc5: run import lastfm history on isolate not so many benchmarks but at least 80% improvement + ui load is decreased
- 2601979: run import yt history on isolate 60k entry in 10 seconds lmao
- e67c281: faster dialog opening comes by not waiting color extraction, instead extracts synchronously then rebuilds
- 2c67645: run all searches on isolate #61
- 0aaba54: save yt videos & channel videos in memory
- e10ee0f: faster video assigning at startup by attempting to assign one before checking for deleted/new videos in cache
- a71db57: home page & ytplaylistview improvements closes #56
-
chore:
- f19e123: always ask when opening external yt playlist
- ad97bf2: option to open playlist videos page for external intents
- 8a18941: add as a new playlist button when opening external yt playlists
- f937c5a: auto detecting playlist link while searching
- d182e77: some goodies && tweaks
- 628ba9b: performance improvements and fixes
- 5dea8b1: refresh library icon in indexer card
- a2f357e: new stratergy to mark field as changed
- 01f0223: compact channel info in yt miniplayer
- f30cff3: delete icon for queue when its empty
- 8bdeec7: sussy tweaks
- 19f6b11: minor fixed/tweaks + isInYTCommentsSubpage check when popping in yt miniplayer + longer doubleTapSeekReset (900ms) + image delay bug introduced in a33dff0 + unsorted yt history bug introduced in a33dff0
- 6818a61: ui tweaks
- 709febf: toast when importing subs/playlists
- d7797cc: display description/comment in yt playlist pages
- 0dbf341: top comments true by default and smol fix
- aa43912: some tweaks
- 8acfc81: temp workaround for playlists with hidden videos to stop fetching more items
- db989eb: history import refinements logic changes, should be a lot faster
- 40fa467: shuffling all items will put current item at first #88
- 0e02c15: improvements & fixes
- db5642d: transparent system navbar
- f5cdc2d: some tweaks
- 1266500: add comment as track search filter
- b1c9287: allow separate listen time local tracks, youtube, local videos
- 68a1395: restore yt active tab on startup
- 12a6106: go to channel button for video cards
- 53d8d03: expose yt download location closes #93
- 3731eee: stuff & stuff
- 1431c81: more stuff
-
fix:
- 5939e3a: not entering pip with yt videos
- d9c1a30: folder changing not being synced in playlist download page (top widget and the one in config dialog)
- 5d2f877: listing non-existing directories
- f7aadae: late initialization for miniplayer dimensions
- cc8b3f0: tapping the current item in queue will play/pause
- e14ecac: possible fix for waveform being out of sync #34
- 28035eb: not pausing when jumping to first item when crossfade is disabled + stopping methods fix
- 00387df: yt comments not loading properly
- bd1e40b: yt downloads will prefer not using webm format
- 4703c96: disable skipSilence for youtube causes desync and just not worth
- 8b27462: gigantic artwork scale & waveform bars when bitrate is high
- 3c703d4: opening external youtube links
- 9d6e4a0: mis-aligned popup menu
- 109a6d0: waveform bar width after coming back from landscape
- 291df20: video still downloads even after disabling video playback
- 7154054: track tile items not being updated properly
- 34c8a95: removing notification after sleep timer this allows system to kill namida if needed, since no ongoing notification is attached
- 17d917d: properly stop after sleep timer stops playback and kill notification, allows android to kill namida if needed
- 5dd1b5d: save track info file after updating duration
- de3ee38: hero animation for history tracks while opening dialog
- cc61d73: possible fix for fake error message, closes #86
- 9247543: playback issues especially when failed to play files + properly kill service when stopping closes #71 ref #92
- 9c91361: stopping player on queue emptied
- 717de50: minSdk 21 (Android 5.0) & fix desguaring issues desugaring disabled was causing crash in retrieving channel videos methods
-
core:
- 5472b9b: change yt images cache name logic
- 439a8da: better search matching - order of words wont matter - u can use artist + title and still get a match
- 97f5f69: enabling media store will disable respect .nomedia & folders to scan
- a0a1c13: better yt local search matching
- f7f20db: revert e10ee0f hehe, the updateCurrentVideo is already called inside player, calling it at first step wont matter, mostly the track wont be even ready also updateCurrentVideo will not return if still initializing
-
code: