diff --git a/.vscode/settings.json b/.vscode/settings.json index b2f9a94e..073e46d0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,37 @@ { - "gradle.autoDetect": "off", - "java.gradle.buildServer.enabled": "off" + "gradle.autoDetect": "off", + "java.gradle.buildServer.enabled": "off", + "cmake.configureOnOpen": false, + "cSpell.words": [ + "acousticness", + "ambiguate", + "Amoled", + "Buildless", + "configurators", + "danceability", + "fuzzywuzzy", + "gapless", + "instrumentalness", + "isrc", + "Mpris", + "RGBO", + "riverpod", + "Scrobblenaut", + "shadcn", + "skeletonizer", + "songlink", + "speechiness", + "Spotube", + "titlebar", + "winget" + ], + "editor.formatOnSave": true, + "explorer.fileNesting.enabled": true, + "explorer.fileNesting.patterns": { + "pubspec.yaml": "pubspec.lock,analysis_options.yaml,.packages,.flutter-plugins,.flutter-plugins-dependencies,flutter_launcher_icons*.yaml,flutter_native_splash*.yaml", + "README.md": "LICENSE,CODE_OF_CONDUCT.md,CONTRIBUTING.md,SECURITY.md,CONTRIBUTION.md,CHANGELOG.md,PRIVACY_POLICY.md", + "*.dart": "${capture}.g.dart,${capture}.freezed.dart" + }, + "dart.flutterSdkPath": ".fvm/versions/3.35.2", + "makefile.configureOnOpen": false } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index a3b42bf0..2953c4bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,8 @@ - **playback**: Add dab music source - **playback**: Add uncompressed flac playback support - Add plugin audio source models and api service +- **plugins**: Filter plugins by abilities in plugins page and show abilities as + badge - **plugins**: Filter plugins by abilities in plugins page and show abilities as badge - Add setting default audio source support @@ -54,6 +56,8 @@ - **metadata-plugin**: Add pagination support, feed and playlist CRUD endpoints - **metadata-plugin**: Add local storage api - Add webview, totp and setInterval apis for plugins +- Enhance local storage and webview APIs with improved error handling and + resource management - Enhance local storage and webview APIs with improved error handling and resource management - **metadata_plugin**: Add logout method @@ -92,6 +96,8 @@ - Local track not working and images of local not showing up - Local playback not working for tracks with special # (hashtag) characters - Inaccessible streaming url causing rapid skips +- **yt**: Fallback to different search result if all streaming url is + inaccessible - **yt**: Fallback to different search result if all streaming url is inaccessible - **playback**: Skip network requests if cached file already exists @@ -124,6 +130,10 @@ - **android**: navigation overlaying in app navigation - add to playlist not working in smaller screen devices - language picker search broken +- **generate_playlist**: create playlist not adding tracks nor navigating to + playlist page +- **desktop**: double titlebar in local library folders and massive space in + overlay player - **generate_playlist**: create playlist not adding tracks nor navigating to playlist page - **desktop**: double titlebar in local library folders and massive space in @@ -154,6 +164,8 @@ - youtube source taking too long to buffer - youtube tracks keeps skipping despite being matched correctly - follow artist not working #2057 +- youtube_explode_dart failing for many videos due to youtube ios client visitor + data change - youtube_explode_dart failing for many videos due to youtube ios client visitor data change - piped api not working @@ -180,6 +192,10 @@ #2039 - **mobile**: ensure audio session is activated when playback is resumed after interruption #2092 +- selecting an Alternative Track Source removes the current song from the queue + #2039 +- **mobile**: ensure audio session is activated when playback is resumed after + interruption #2092 ### Features @@ -215,11 +231,15 @@ - **translations**: correct some basque incorrect translations (#1815) - **lyrics**: LRCLIB lyrics should be usable without logging in #1803 - playlist displaying descriptions unescaped html #1784 +- **android**: pressing back while the player is open doesn't take to previous + page - **android**: pressing back while the player is open doesn't take to previous page - handle dublicated items in playback queue correctly #1852 - **desktop**: scrollbar overlapping with more options of tracks and playlists - **discord**: stop discord rpc from try update presence when not connected +- **stats**: minutes page shows plays and streams page shows minutes which + should be the opposite #1880 - **stats**: minutes page shows plays and streams page shows minutes which should be the opposite #1880 - **android**: clears queue upon swiping away notification @@ -1655,9 +1675,13 @@ ### New +- Playback Cache Support. So unfinished playlist and tracks remains cached & + starts automatically when application is launched again - Playback Cache Support. So unfinished playlist and tracks remains cached & starts automatically when application is launched again - Login Screen guided tutorial about how to obtain Client ID & Client Secret +- Signed Android Application so now longer need to uninstall the old version for + installing the new one - Signed Android Application so now longer need to uninstall the old version for installing the new one - OS Media controls for Linux. Keyboard media keys now work in Linux @@ -1677,6 +1701,10 @@ ### Improved - Loading screens & animations. Now uses Skeleton Loading +- Playlist & Album Pages now show Album Art & extra metadata as Header with + vibrant gradient background in a Sliver +- Playback is now more consistent & the API is simpler. Also its the single + source of truth for AudioPlayback instead of the AudioServiceHandler - Playlist & Album Pages now show Album Art & extra metadata as Header with vibrant gradient background in a Sliver - Playback is now more consistent & the API is simpler. Also its the single @@ -1686,6 +1714,10 @@ in Desktop edition - Track match Cache support for previously played tracks. This dramatically reduces track change latency & load on the YouTube search engine too +- Home Genre playlists can be scrolled horizontally by dragging with mouse even + in Desktop edition +- Track match Cache support for previously played tracks. This dramatically + reduces track change latency & load on the YouTube search engine too ### Bug Fixes @@ -1790,6 +1822,8 @@ - Search - now scrolls & paginates for Playlists & Albums - Authentication - allows guest accounts making authentication optional +- Lyrics - can be fetched without requiring GeniusAccessToken. This makes + geniusAccessToken optional - Lyrics - can be fetched without requiring GeniusAccessToken. This makes geniusAccessToken optional - UI snappiness & faster load times @@ -1806,6 +1840,8 @@ ### New +- Global custom reconfigurable _hotkey_ support for playback controls + (play-pause/next/previous) - Global custom reconfigurable _hotkey_ support for playback controls (play-pause/next/previous) - Credit section in the Settings page with important links @@ -1853,6 +1889,10 @@ ### Bug fixes +- Unsafe access to album art/artist/user Images with `.first` or `.last` causing + accessing empty List error +- `url_launcher`'s unstable `canLaunch` method blocks OAuth login in certain + \*nix OSs - Unsafe access to album art/artist/user Images with `.first` or `.last` causing accessing empty List error - `url_launcher`'s unstable `canLaunch` method blocks OAuth login in certain @@ -1876,6 +1916,8 @@ - Complete re-write in Flutter/Dart (799e13c) - mpv & youtube-dl runtime dependencies dropped (07b1891) +- just_audio (libwinmedia + libwebkit2gtk-4.0-dev) + youtube_explode based + playback & streaming - just_audio (libwinmedia + libwebkit2gtk-4.0-dev) + youtube_explode based playback & streaming - lyrics are provided by genius.com (requires access_token) (d647d5e) @@ -1893,6 +1935,8 @@ ### New +- Automated installer for Windows (now doesn't require manual mpv-player + install) - Automated installer for Windows (now doesn't require manual mpv-player install) - Playback caching @@ -1902,11 +1946,15 @@ ### Improved +- Inapp Shortcuts.Now it doesn't interfere while typing in a input box in Search + page - Inapp Shortcuts.Now it doesn't interfere while typing in a input box in Search page ### Bug fixes +- Cached image didn't get deleted after exiting certain cache limit fix. Cache + gets recreated after exiting the limit - Cached image didn't get deleted after exiting certain cache limit fix. Cache gets recreated after exiting the limit @@ -1925,12 +1973,16 @@ ### Bug Fixes +- `access_token not found` Error after OAuth Login with Spotify credentials + (used to need a restart of the app to load the access_token) - `access_token not found` Error after OAuth Login with Spotify credentials (used to need a restart of the app to load the access_token) - Volume level wasn't cached even after changing volume # v0.0.1 +Spotube v0.0.1 - initial release of the open source software for playing Spotify +music using Youtube public API Spotube v0.0.1 - initial release of the open source software for playing Spotify music using Youtube public API @@ -1939,6 +1991,8 @@ music using Youtube public API - Local playback handling - Playback Queue - Save to Liked Tracks/Playlists +- Bypass API rate limitation on basic usage using personal developer Apps for + spotify API - Bypass API rate limitation on basic usage using personal developer Apps for spotify API - Youtube search & get handled using scrape-yt