Namida v4.7.2 Changelog
namidaco🎉 New Features:
• local video library & playback
• replay gain (normalize volume) for local tracks & youtube
• left & right swipe actions for track tile
• use search floating button as submit beside closing search page (switches dynamically)
• option to disable personalized related videos
• show video endcards option
• yt channel tabs & about page
• listen count & latest listen date in track tile info
• yt downloads filename builder ([check here](https://github.com/namidaco/namida?tab=readme-ov-file#streaming--youtube) for info)
• allow info builders for metadata tags too as well as filenames as earlier
• pressing "jump to day" icon will open with the current day at scroll position
• in history pages, display the nth listen on card top right, and cake when its first listen
• in homepage, pressing top recents or lost memories will now open the most played page with the actual date range
• flag option to auto extract download info for nightcore videos by relying on description, and add `genre` field for downloads
• "first listen" as sort option & as optional info in track tile
• flag to add yt history to local history (merge)
• removing download video/group, will prompt "delete" or "cancel"
• folder tiles can display text if `.info.txt` file exists in the folder
• importing takeout playlists now supports whole directory with multiple takeouts, duplicated playlists are merged by default & fix date extraction in playlists csv
• recommended sorting when clearing video/audio cache files
• sort yt playlists
• add/edit/delete comments & replies
🛠️ Bug fixes & Improvements:
- chore:
• allow adding/removing videos in a playlist & creating playlists without membership
• pressing play button when playback is already finished will now skip to next
• try split track/disc number before parsing it (like `2/16`)
• fallback artwork to a yt thumbnail if exists
• sorting folders will prefer first number after `Music` in a pattern like `Music 12 - 2024` instead of the last number which would be 2024
• show original genre for track tile
• parse `description` & `synopsis` from metadata tags
• improve icons touch area
• improve snackbar design
• long press yt copy button to copy url with timestamp normal tap will copy url only
• use monet icon for fallback notification & sidebar
• tracks generated by date range are now sorted by listen count in that range
• allow double tap lyrics gesture in yt local player
• auto set most played time to `allTime` only if `custom` was selected
• always show unavailable videos in playlists
• properly split moods using general splitter
• improve hiding controls mechanism for video container in yt miniplayer
• increase max video cache to 32gb & audio to 12gb
• allow precise speed/pitch/volume etc
• display multi language lyrics properly
• allow refreshing patreon/coupon & sign out & properly notify about expired token
• allow android auto to detect app * not tested
• allow opening info dialog for non-existing tracks
• rework track clear dialog this also includes - logic rework for managing and clearing video cache - add clearing cache tile in all video cards
• display full folder path when similar folders exist in track dialog
• add auto coloring as a performance factor
• rename "kps" to "kbps"
• show "share url" in all video cards
• hide "remove from playlist" in playlist dialog
• add yt flag to force refresh js player
• refactor some parts
• optimize and fix most played subpages + yt horizontal list & history not refreshing properly on startup
• some ui changes
• improved missing tracks loading progress details
• copy instead of share in video menu - press to copy video link - long press to copy different stuff - share icon in right part
• add clear cache button to snackbar when video error occurs
• allow importing multiple history files at once (yt & lastfm)
• improve details extraction for yt playlists import
• download group for single videos inside a playlist is set to playlist name by default
• save group download options across sessions
• tweak download sheet initial quality & group - video will be selected only if audioOnly disabled - for other video cards in a playlist, initial group will follow playlist name
• ui tweaks - maximum width for snackbar button - bigger buttons - in track info dialog, put gain info at end + adjust title padding so that text is aligned with the icon - adjust padding of expansion tile to align with list tile in dialogs/etc - dont re-light a dimmed miniplayer when changing tracks - adjust padding for video cards in channel home page/etc
• change default client to web
• fix info extraction from description and make it optional
• rename "flac" to "FLAC"
• failed tag edits will not cause the progress to stuck
• disable media store artwork fallback when not using media store bcz it can generate non-accurate artworks
• ui thingys
• fallback info for yt miniplayer
• re-design yt offline search results to be horizontal - this also eliminates some code that differentiate between 3-result page & full results page, making everything unified and tied - increase timer to dispose offline search resources to 1 min
• internally manage skipping to next when playback finished
• use network yt thumbnail for cached items list
• dont display shimmer when info available in yt miniplayer
• rename default playlists when downloading
• ui fixes - duration not refreshing in miniplayer if required - yt miniplayer not having proper padding initially - video quality menu around whole tile in dl options dialog - show more format info in local miniplayer video streams - displaying that audio is cached even tho cache list is empty
• disable `jumpToFirstTrackAfterFinishingQueue` by default
- fix:
• pull to refresh issues
• lyrics not updating after coming from fullscreen
• splitting artists/genres with blacklist the issue used to happen mostly when a blacklist is exactly the same as the artist/genre, with no additions etc
• android 12 splash screen
• fix most played chips not being properly rebuilt
• fix default color tiles not enabled/disabled properly
• fix downloaded file not being added to library properly
• fix 'dont show again' for battery optimization request
• fix resuming after interruption then pause manually
• white screen when trying to reorder 2 items at the same time..
• sublists scrolling
• getting yt account info after login
• wrong video when playing yt notifications
• playback decisions with `_playWhenReady`
• theme not refreshing after toggling pitch black setting
• playing on next/prev when enabled
• keyboard showing after closing popup menus
• picking videos when source is specified
• allow opening external links on android 12+
• history empty space when shorts are hidden
• fallback artworks from the same folder, they are now also more restricted, only known cover names will be picked instead of fuzzy matching
• add smol bugs
• picking files with specific extensions using native file picker
• description tag extraction fallback
• not using dark color when auto coloring is off
• parsing relative paths in m3u playlist
• pasting video id in yt offline search now brings the video
• bottom padding in yt downloads page
• albums in artist page are now sorted like the albums page
• false check of playback interrupted
• refresh everything after indexer (separators/extract feat artists) change
• playlist related stuff
• initial value for some ui parts like loudness enhancer
• volume mute when pausing and switching item quickly
• not resuming after 7 seconds of track failed play dialog
• library sections (album/artist/etc) not ignoring text case
• notification queue start index not accurate when there are comments this time we needed to check if the comment will affect the index or not while reversing the list
• auto sorting of recent listens in home page
• channel subpages wont display empty items when failed to fetch new items
• fallback to low res thumbnail if failed
• most played page not refreshing when changing time range
• possible wrong indices while downloading playlists
• download related issues - downloading after clearing group - pausing group and resuming causes to ignore audio_only setting - wrong playlist indices in some cases
• some fixes - library pages sorting - sharing empty log file - yt local playlist items not being dismissible
• make sure artists/genres etc are splitted when tags are edited
• thumbnail fetching and no longer saving thumb copy while fixing ytdlp thumbnails
• channel subpage not loading the first time
• editing thumbnail for videos was removing the video stream
• folders searching
• indexer stuck while indexing (hopefully), also - accurate path being extracted - properly dispose event channel on android side
• non-accurate start day when opening "jump to day" dialog in history pages
• download related issues
• channels suggestion in a channel homepage not showing
• deleting history day/multiple tracks in a day
• attempt fix for thumbnail downloading partial data and saving if connection lost
• yt sign in
• silly mistakes >.<
- core:
• rewrite yt playback behavior
• improve tags extraction
• properly extract & use embedded rating/moods along with app-specific rating/moods and allow editing - editing app-related stats now edits the tags too. and vice versa
• change how yt videos are matched from filename, now only requires `v=video_id` or `id=video_id` in order to get matched
• various fixes & tweaks
• add `animatedTheme` setting, editable by performance mode
• allow mixed player queue (hidden setting)
• refactor search related stuff - running search is managed by a single `int` - slight improve search page checks
• better management for duplicated tracks/playlists addition (which applies to yt playlists section too, instead of just adding the missing ones) - this was done while doing the new merge system of importing yt takeout playlists
• allow choosing whole directory when importing yt/lastfm history
• add flag setting to explicity allow experimental codecs like av1 & vp9 - now webm is prefered over av1 - the process is done using `List<VideoStream>.withoutWebmIfNeccessaryOrExperimentalCodecs()`
• allow unlimited cache size
• force request playlist fetching
• enable/disable "include videos" option
- perf:
• improvements for home page loading
• faster loading for latest queue (by disabling maximumItems check)
• optimize file extensions lookup this includes refactor for many parts
• break early when getting cached playable audios for a yt video
• faster app startup time by ~1 second achieved by using sync methods. since most of the functions are executed on startup only
• faster playlist download page startup no longer calculating files count in each download subfolder
• significant improve for indexer missing tracks page loading
• spam `RepaintBoundary` across app tehe ;p
• `StringBuffer` for building lrc obtained from search
• async cache read for yt pages
• refactor download tasks page to make it faster
• smol optimizations for history importing
• use async db operations whereas possible
• elimiate possible lag for yt offline search & yt tracks generate dialog, this was caused by huge backup info map being copied, now we load a new one in the isolate which takes longer ofc
• cache yt info functions like `getVideoName()`, `getVideoChannelName()`, `getVideoChannelID()`, etc.. usually they can be cached in `tempVideoInfosFromStreams` but this ensures that info obtained from database is cached, providing faster cards builds, etc
• rewrite `_addTheseTracksToAlbumGenreArtistEtc()` making it significantly faster and more reliable eliminating possible related issues, this can be noticed while (editing tags/reindexing tracks/playing external files)
• migrate video details to db, includeing rewrite for cache checking parts and other functions making it more efficient
- following data is migrated to a database format
• tracks & track stats
• download tasks
• video details (local and cached)
this means that it might take some time on first start due to migration