diff --git a/.env.example b/.env.example index af1b481f..920fe826 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,11 @@ -POCKETBASE_URL= -USERNAME= -PASSWORD= +SUPABASE_URL= +SUPABASE_API_KEY= # The format: # SPOTIFY_SECRETS=clintId1:clientSecret1,clientId2:clientSecret2 -SPOTIFY_SECRETS= \ No newline at end of file +SPOTIFY_SECRETS= + +# 0 or 1 +# 0 = disable +# 1 = enable +ENABLE_UPDATE_CHECK= \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 8a480132..816c7b89 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -46,7 +46,7 @@ body: attributes: label: Spotube version description: In which version of Spotube did you encounter this bug? - placeholder: (e.g.) v2.7.1 + placeholder: (e.g.) v3.0.0 - type: dropdown attributes: label: Installation source diff --git a/.github/workflows/spotube-publish-binary.yml b/.github/workflows/spotube-publish-binary.yml index 31e262a6..93ded44c 100644 --- a/.github/workflows/spotube-publish-binary.yml +++ b/.github/workflows/spotube-publish-binary.yml @@ -4,7 +4,7 @@ on: inputs: version: description: Version to publish (x.x.x) - default: 2.7.1 + default: 3.0.0 required: true dry_run: description: Dry run diff --git a/.github/workflows/spotube-release-binary.yml b/.github/workflows/spotube-release-binary.yml index 2335b682..754dfb8d 100644 --- a/.github/workflows/spotube-release-binary.yml +++ b/.github/workflows/spotube-release-binary.yml @@ -4,7 +4,7 @@ on: inputs: version: description: Version to release (x.x.x) - default: 2.7.1 + default: 3.0.0 required: true channel: type: choice @@ -14,12 +14,20 @@ on: - stable - nightly default: nightly + debug: + description: Debug on failed when channel is nightly + required: true + type: boolean + default: false dry_run: description: Dry run required: true type: boolean default: true +env: + FLUTTER_VERSION: '3.10.0' + jobs: windows: runs-on: windows-latest @@ -28,6 +36,7 @@ jobs: - uses: subosito/flutter-action@v2.10.0 with: cache: true + flutter-version: ${{ env.FLUTTER_VERSION }} - name: Replace pubspec version and BUILD_VERSION Env (nightly) if: ${{ inputs.channel == 'nightly' }} @@ -61,7 +70,7 @@ jobs: run: | flutter config --enable-windows-desktop flutter pub get - flutter pub run build_runner build --delete-conflicting-outputs + dart run build_runner build --delete-conflicting-outputs --enable-experiment=records,patterns - name: Build Windows Executable run: | @@ -78,6 +87,12 @@ jobs: make choco mv dist/spotube.*.nupkg dist/Spotube-windows-x86_64.nupkg + - name: Debug With SSH When fails + if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }} + uses: mxschmitt/action-tmate@v3 + with: + limit-access-to-actor: true + - name: Upload Artifact uses: actions/upload-artifact@v3 with: @@ -91,6 +106,7 @@ jobs: - uses: subosito/flutter-action@v2.10.0 with: cache: true + flutter-version: ${{ env.FLUTTER_VERSION }} - name: Get current date id: date @@ -99,7 +115,7 @@ jobs: - name: Install Dependencies run: | sudo apt-get update -y - sudo apt-get install -y tar clang cmake ninja-build pkg-config libgtk-3-dev make python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libunwind-dev locate patchelf libsecret-1-0 libjsoncpp25 libsecret-1-dev libjsoncpp-dev + sudo apt-get install -y tar clang cmake ninja-build pkg-config libgtk-3-dev make python3-pip python3-setuptools desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse libunwind-dev locate patchelf gir1.2-appindicator3-0.1 libappindicator3-1 libappindicator3-dev libsecret-1-0 libjsoncpp1 libsecret-1-dev libjsoncpp-dev libnotify-bin libnotify-dev mpv libmpv-dev - name: Install AppImage Tool run: | @@ -136,15 +152,15 @@ jobs: run: | flutter config --enable-linux-desktop flutter pub get - flutter pub run build_runner build --delete-conflicting-outputs + dart run build_runner build --delete-conflicting-outputs --enable-experiment=records,patterns - name: Build Linux Packages run: | dart pub global activate flutter_distributor alias dpkg-deb="dpkg-deb --Zxz" + flutter_distributor package --platform=linux --targets=deb flutter_distributor package --platform=linux --targets=appimage flutter_distributor package --platform=linux --targets=rpm - flutter_distributor package --platform=linux --targets=deb - name: Create tar.xz (stable) if: ${{ inputs.channel == 'stable' }} @@ -161,18 +177,25 @@ jobs: mv dist/**/spotube-*-linux.rpm dist/Spotube-linux-x86_64.rpm mv dist/**/spotube-*-linux.AppImage dist/Spotube-linux-x86_64.AppImage + - name: Debug With SSH When fails + if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }} + uses: mxschmitt/action-tmate@v3 + with: + limit-access-to-actor: true + - uses: actions/upload-artifact@v3 with: name: Spotube-Release-Binaries path: dist/ android: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: subosito/flutter-action@v2.10.0 with: cache: true + flutter-version: ${{ env.FLUTTER_VERSION }} - name: Install Dependencies run: | @@ -203,7 +226,7 @@ jobs: - name: Generate Secrets run: | flutter pub get - flutter pub run build_runner build --delete-conflicting-outputs + dart run build_runner build --delete-conflicting-outputs --enable-experiment=records,patterns - name: Sign Apk run: | @@ -215,6 +238,12 @@ jobs: flutter build apk mv build/app/outputs/apk/release/app-release.apk build/Spotube-android-all-arch.apk + - name: Debug With SSH When fails + if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }} + uses: mxschmitt/action-tmate@v3 + with: + limit-access-to-actor: true + - uses: actions/upload-artifact@v3 with: name: Spotube-Release-Binaries @@ -228,6 +257,7 @@ jobs: - uses: subosito/flutter-action@v2.10.0 with: cache: true + flutter-version: ${{ env.FLUTTER_VERSION }} - name: Replace pubspec version and BUILD_VERSION Env (nightly) if: ${{ inputs.channel == 'nightly' }} @@ -253,7 +283,8 @@ jobs: - name: Generate Secrets run: | flutter pub get - flutter pub run build_runner build --delete-conflicting-outputs + flutter pub remove media_kit_native_event_loop + dart run build_runner build --delete-conflicting-outputs --enable-experiment=records,patterns - name: Build Macos App run: | @@ -265,16 +296,22 @@ jobs: run: | npm install -g appdmg mkdir -p build/${{ env.BUILD_VERSION }} - appdmg appdmg.json build/Spotube-macos-x86_64.dmg + appdmg appdmg.json build/Spotube-macos-universal.dmg + + - name: Debug With SSH When fails + if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }} + uses: mxschmitt/action-tmate@v3 + with: + limit-access-to-actor: true - uses: actions/upload-artifact@v3 with: name: Spotube-Release-Binaries path: | - build/Spotube-macos-x86_64.dmg + build/Spotube-macos-universal.dmg upload: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest needs: - windows - linux diff --git a/.vscode/launch.json b/.vscode/launch.json index 6c0bb0d8..3c8209ff 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -2,11 +2,25 @@ "version": "0.2.0", "configurations": [ { - "name": "Flutter", + "name": "spotube", "type": "dart", "request": "launch", - "program": "${workspaceFolder}/lib/main.dart" + "program": "lib/main.dart" }, + { + "name": "spotube (profile)", + "type": "dart", + "request": "launch", + "program": "lib/main.dart", + "flutterMode": "profile" + }, + { + "name": "spotube (release)", + "type": "dart", + "request": "launch", + "program": "lib/main.dart", + "flutterMode": "release" + } ], "compounds": [] } \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 1b5691af..fa4f1f51 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,11 @@ { "cmake.configureOnOpen": false, "cSpell.words": [ + "acousticness", + "danceability", + "instrumentalness", "Mpris", + "speechiness", "Spotube", "winget" ] diff --git a/CHANGELOG.md b/CHANGELOG.md index 8aee5918..03610611 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,158 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [3.0.0](https://github.com/KRTirtho/spotube/compare/v2.7.1...v3.0.0) (2023-07-02) + + +### Features + +* adaptive controllers ([c8b7de0](https://github.com/KRTirtho/spotube/commit/c8b7de087917ec3037c015d5b55693cb3dbdecca)) +* adaptive popup and bottom sheet list widget ([ddc1c5f](https://github.com/KRTirtho/spotube/commit/ddc1c5f373a4d72cc231c35dd70c3d577b84f7f5)) +* add generated to playlist(s) ([c91d8c8](https://github.com/KRTirtho/spotube/commit/c91d8c8efa8b526c64881fa829992b8c250e7c89)) +* add german locale ([ba3f428](https://github.com/KRTirtho/spotube/commit/ba3f4281f1a6bc7ddf38775e9d40dad863ed3692)) +* add piped search mode ([17a25a5](https://github.com/KRTirtho/spotube/commit/17a25a501e0d5e2512d8de0921fd602ea906d30f)) +* add sleep timer support ([4a75f3d](https://github.com/KRTirtho/spotube/commit/4a75f3dbd1e7e6f68899de001df70e809533f142)) +* adjust lyric page blurriness and player playbutton ([54d5907](https://github.com/KRTirtho/spotube/commit/54d5907f14df04f3f983ba2b0401ba05785da03b)) +* album art dominant color as accent color ([#447](https://github.com/KRTirtho/spotube/issues/447)) ([31b9249](https://github.com/KRTirtho/spotube/commit/31b9249cc8f7313a132a514a9ca825c2ae1e2256)) +* **android:** add splash screen ([c232fcc](https://github.com/KRTirtho/spotube/commit/c232fcc6dd1479ed33a8baa9887de2702a8ea22e)) +* **android:** disable battery optimization for better playback ([fe5b429](https://github.com/KRTirtho/spotube/commit/fe5b429ddacc576fc9fdb5e66718782cda163b27)) +* artist card redesign ([92a418c](https://github.com/KRTirtho/spotube/commit/92a418c8a8a9df99e27407b628e5e3cc9ccb4115)) +* Better download manager with download progress ([6752adc](https://github.com/KRTirtho/spotube/commit/6752adc9398818f51b69fced226b4b8410fb9e9b)) +* better language picker, adaptive select tile and settings section contrast ([6430a25](https://github.com/KRTirtho/spotube/commit/6430a2587075aa24483ab26ce6f0f6b2b630e139)) +* cache encryption for sensitive data ([b110d83](https://github.com/KRTirtho/spotube/commit/b110d834561ac53129ac9ec80238c014c84832ec)) +* color scheme picker dialog vertical list view instead of wrap ([bb60b01](https://github.com/KRTirtho/spotube/commit/bb60b01ef2f2ba3da8f6fe3a19add168b2ee8a4e)) +* compact and adaptive playbutton card design ([eeb8cab](https://github.com/KRTirtho/spotube/commit/eeb8cabf491d5242bd434b3c71c39363f24bdcf9)) +* compact button tabbar ([67380f6](https://github.com/KRTirtho/spotube/commit/67380f68765f18e4dcd3d60117083c7e9c6761c2)) +* create a basic installer script ([1763a36](https://github.com/KRTirtho/spotube/commit/1763a36a262178306df61d4588c17ff795a32790)) +* curved navigation bar ([776edf8](https://github.com/KRTirtho/spotube/commit/776edf84afcf99f96cf6e337b0c84ed89034ca8e)) +* custom error toast ([96f04c1](https://github.com/KRTirtho/spotube/commit/96f04c17565c0ab7f115d5c1f167f6660a69480d)) +* custom playlist generator ([f4b0d13](https://github.com/KRTirtho/spotube/commit/f4b0d134ca724b75bf65b885bce4dba206f1e090)) +* desktop mini player support ([471812d](https://github.com/KRTirtho/spotube/commit/471812d789eb2c861268ab8451d50104ac2fbe2e)) +* **desktop:** close button for minimize notification ([1688f99](https://github.com/KRTirtho/spotube/commit/1688f99096af940ead65e67832c6f061a6f635ac)) +* **desktop:** show minimized to system tray notification ([296f96c](https://github.com/KRTirtho/spotube/commit/296f96cf17cf21ff09b406cc24952ff60da52d5e)) +* disable/enable smtc on demand ([7fa50e5](https://github.com/KRTirtho/spotube/commit/7fa50e5c5ee9ca3ba95dca55f8a4831047f17570)) +* download button on each track ([925fa86](https://github.com/KRTirtho/spotube/commit/925fa86271fa10ff77b8137ba8d09b8067d0e819)) +* enable caching of queue ([ec11af5](https://github.com/KRTirtho/spotube/commit/ec11af53a16c435fbea3d0c81910dca371be9ce7)) +* heart button animation ([8432dc6](https://github.com/KRTirtho/spotube/commit/8432dc6286fbdfda52bbeb39c6d4ababa05881bc)) +* improved track item API and UI ([617aa89](https://github.com/KRTirtho/spotube/commit/617aa89409ce29eb3c197aee5c1189d763a3913c)) +* **installer:** get latest version from Github API ([957c085](https://github.com/KRTirtho/spotube/commit/957c085e1243ec0af5bc45d38691c74e2ba91ad8)) +* **local_tracks:** delete local track ([#484](https://github.com/KRTirtho/spotube/issues/484)) ([52835b2](https://github.com/KRTirtho/spotube/commit/52835b2ce2212925f80e1a1595c0ca30e6860a8d)) +* locale category/genre title ([88137f0](https://github.com/KRTirtho/spotube/commit/88137f01b27150b306327a01e67ec8a35a60e82e)) +* **locale:** add bengali translations for search page ([a1cdbad](https://github.com/KRTirtho/spotube/commit/a1cdbad18782a74b43f0625facfe3e35c516bf43)) +* **locale:** localize search, library, lyrics, artist with both Bengali and English ([11fe9ec](https://github.com/KRTirtho/spotube/commit/11fe9ec74462441b67a0ab0df73824f36dd15e2d)) +* **locale:** player, playlist view, track tile bengali and english translations ([c55133d](https://github.com/KRTirtho/spotube/commit/c55133dc8bba307823e5b67a30cfab03c923cb7f)) +* localize settings, about, login, player queue with Bengali and English translations ([a5c36bb](https://github.com/KRTirtho/spotube/commit/a5c36bbb20cc69d609bfb5ab973c7e288c1ea9de)) +* logs page in settings ([b78e7f5](https://github.com/KRTirtho/spotube/commit/b78e7f57a05db344aae59206cbb0f43b3ee199a9)) +* macos title bar spacing and lyrics page margin separate ([a0b3771](https://github.com/KRTirtho/spotube/commit/a0b377104f9822561d3b46dbc6551bb561842480)) +* make snackbar floating ([9dbb817](https://github.com/KRTirtho/spotube/commit/9dbb8171a6d6b81120ca7ccd74577e5c890ff930)) +* merge floating player with nav bar and nav bar translucent bg ([a90261e](https://github.com/KRTirtho/spotube/commit/a90261ed199f6cff9e8d0fe24934f8f1d8e9ed98)) +* **mini_player:** remove window shadow ([6259014](https://github.com/KRTirtho/spotube/commit/625901482ada4b441b838f640c0ab7167119b321)) +* **mini_player:** show/hide UI on hover toggle ([2e8b647](https://github.com/KRTirtho/spotube/commit/2e8b647a51f87840c2bd39f0a1dc25ddc91528fc)) +* new sidebar widget and translucent bottom player ([4ba1e70](https://github.com/KRTirtho/spotube/commit/4ba1e70636b4ba43697663128fc5422b1d0b2a2f)) +* newly released albums of user followed artist ([33cb794](https://github.com/KRTirtho/spotube/commit/33cb7947d63d0a2692a004f87a2ccd5777bf054e)) +* optimize image load + genre page and reduce page size of loaded categories ([7131efa](https://github.com/KRTirtho/spotube/commit/7131efa07fdbcf17965fc59ff635a6198b0e5e25)) +* persistent volume percentage ([3724bd5](https://github.com/KRTirtho/spotube/commit/3724bd5a10eef7a099d6f596fd038e6fea228359)) +* personal playlist recommendations ([ae820a2](https://github.com/KRTirtho/spotube/commit/ae820a22f291082c49554d621c25cc62212a6708)) +* piped instance picker on settings ([bed0d3b](https://github.com/KRTirtho/spotube/commit/bed0d3bd70438df413633ee03fd258a2ca4a1688)) +* platform specific title bar buttons ([6267720](https://github.com/KRTirtho/spotube/commit/62677209a23172162defb7a8e542d981569eba08)) +* **playback:** integrate android, ios, macos with JustAudio ([d487fe5](https://github.com/KRTirtho/spotube/commit/d487fe55630993e2b729050ebd0bf4e1e4be1fb3)) +* **playback:** use assets_audio_player to fix macos double duration problems and android high loading latency ([1fff0f1](https://github.com/KRTirtho/spotube/commit/1fff0f1bd0d811c348f293f733cbcb7cd57e02f8)) +* player details dialog and separate location of lyrics button in player page ([ce38233](https://github.com/KRTirtho/spotube/commit/ce38233de8f4775018a1d01e951b1635776fe743)) +* **player:** add playlist related methods to audio player ([f1080e1](https://github.com/KRTirtho/spotube/commit/f1080e1675aee1208d05658adfabfbed04ff45b6)) +* **player:** animated gradient background ([49b5d0e](https://github.com/KRTirtho/spotube/commit/49b5d0e6948d80abb8ee09203e0d655d68377245)) +* **player:** custom playlist implementation for media_kit to replace unpredictable playlist of mpv ([eaf65b6](https://github.com/KRTirtho/spotube/commit/eaf65b6db208aaad745821d4d42afc05f51cee7c)) +* **player:** proper coloring of elements ([b2c4ea1](https://github.com/KRTirtho/spotube/commit/b2c4ea13f6157c2b7bec3957e1f7f50fbf0002c7)) +* **player:** replace bg blur with gradient, proper fg color and align title and artist name ([159f03e](https://github.com/KRTirtho/spotube/commit/159f03e7ca62e6b3b86389e2795da84de61fba78)) +* playlist create support for generated playlist ([91c72f9](https://github.com/KRTirtho/spotube/commit/91c72f9ec9556f301c5d129fc82e19e791a02fbe)) +* playlist generation all parameters support ([9877d5f](https://github.com/KRTirtho/spotube/commit/9877d5f51736db03d5839dadf164d11d0cce82f0)) +* **playlist,album page:** play and shuffle take full width on smaller screens, add new xs breakpoint ([dce1b88](https://github.com/KRTirtho/spotube/commit/dce1b88694cfcb6b7e63d6ee614ac1dbbd017f6e)) +* **queue:** add track(s) for playing next ([#460](https://github.com/KRTirtho/spotube/issues/460)) ([cac8ea6](https://github.com/KRTirtho/spotube/commit/cac8ea638812f5d9cb4305144b6351141a2cf407)) +* **queue:** reorder tracks support ([441b43b](https://github.com/KRTirtho/spotube/commit/441b43bef6b92fd7df6c4e1bef39d67b4a76cd22)) +* re-designed playlist/album page ([0cedc7a](https://github.com/KRTirtho/spotube/commit/0cedc7a4187771efce8152003f890e242116c78c)) +* re-introduce youtube API along with piped ([b54ee96](https://github.com/KRTirtho/spotube/commit/b54ee96233b29d7517eba66e3f8dd9270c2790df)) +* reactive volume slider and slicker bottom bar with lowered height ([9d14517](https://github.com/KRTirtho/spotube/commit/9d14517202d5c9d993a947808bf0c6520ed54ea3)) +* remove SponsorBlock in favor of YT Music and remove pocketbase backend track support ([fb780da](https://github.com/KRTirtho/spotube/commit/fb780da327a213d7a82cbc3b567ece858dc2f0e8)) +* repeat button all 3 mode and disable player controls when track is fetching ([1418378](https://github.com/KRTirtho/spotube/commit/14183781dd3f1e16c121e78ad637a326de7b5dcf)) +* replace YouTube API with piped API ([1ecc36d](https://github.com/KRTirtho/spotube/commit/1ecc36da57af61fd9c2ca928589088cd4325f605)) +* responsive playlist generate page and scrollable multi autocomplete ([d57aad5](https://github.com/KRTirtho/spotube/commit/d57aad5612f7622dcd638ea8c0ec4d96f741de2b)) +* search alternative track source ([dfea195](https://github.com/KRTirtho/spotube/commit/dfea195ec178de733717cfe3226cede7521ee2d3)) +* setup localization (l10n) and language switcher, add sidebar and navbar locale ([f12d812](https://github.com/KRTirtho/spotube/commit/f12d81259f9e7005e681a7ca9867291d9228a8b1)) +* show album release year ([#387](https://github.com/KRTirtho/spotube/issues/387)) and fix layout of artist's album ([6a6ddf6](https://github.com/KRTirtho/spotube/commit/6a6ddf6e1f6dc72b794cae49adf8348da272babd)) +* show country code piped instance list ([60328a6](https://github.com/KRTirtho/spotube/commit/60328a6bafcbff1b7d0ee5099825f0e3d545b60f)) +* show loading when track metadata is being fetched, android, ios, macos enable shuffling ([bf59570](https://github.com/KRTirtho/spotube/commit/bf59570251720a80efe0aa6be481899864da5079)) +* sort tracks by newest and oldest dates ([b4713e3](https://github.com/KRTirtho/spotube/commit/b4713e377a938cbebe70089874216f86fe550c34)) +* supabase integration ([8bcce92](https://github.com/KRTirtho/spotube/commit/8bcce9282eae08c5996a27f16f89cbc187a06823)) +* system tray support ([#31](https://github.com/KRTirtho/spotube/issues/31)) ([06a0437](https://github.com/KRTirtho/spotube/commit/06a043764d9f65fb448fcf088ccf2737145e23e8)) +* track populate sibling support ([3aeb026](https://github.com/KRTirtho/spotube/commit/3aeb026776716b6e2eb89c8406a4996a86c7ca60)) +* **translation:** add hindi and french translations using ChatGPT ([6d836bd](https://github.com/KRTirtho/spotube/commit/6d836bdb658c180ca8e2c71e7e290fafa3520727)) +* **translation:** add Japanase locale ([4b52a71](https://github.com/KRTirtho/spotube/commit/4b52a71c0914bda6c831d8f637a5934f7bcf8fcb)) +* use system color scheme ([862c4b8](https://github.com/KRTirtho/spotube/commit/862c4b8faf2c751d803e373e29981a116bf08ed5)) +* volume slider in player page ([7abe2c1](https://github.com/KRTirtho/spotube/commit/7abe2c10735bc38c644487139557a731d25e80e6)) +* windows OS media control panel support ([f0b426a](https://github.com/KRTirtho/spotube/commit/f0b426ae89f2e01f4a9c8757ef4e0b4a21b50c7b)) + + +### Bug Fixes + +* add to playlist dialog not showing playlist name ([8944581](https://github.com/KRTirtho/spotube/commit/8944581c09eec0162220e7ff684205484fafb599)) +* album sync not working ([74906f3](https://github.com/KRTirtho/spotube/commit/74906f393250934c36530a73ad7312f59f8627ed)) +* alternative track source not playing new source ([a9b5a71](https://github.com/KRTirtho/spotube/commit/a9b5a714e47d40407d799966ae95f84338f9b59a)) +* **android:** use multi assetAudioPlayer instance fix patch and disable Pre-download and play by default in Android too ([cdb3268](https://github.com/KRTirtho/spotube/commit/cdb32685e4bbb899706ed16d58ef9a3a074e283a)) +* **artist:** follower count shows as float when < 1000 ([#482](https://github.com/KRTirtho/spotube/issues/482)) ([fd1846e](https://github.com/KRTirtho/spotube/commit/fd1846eecf9632e59e4b70fb70e97c556b6374f5)) +* bottom navbar first item icon color not changing on primary color change ([6eb4244](https://github.com/KRTirtho/spotube/commit/6eb4244f3244a96fe6858261534cc03eb3de803c)) +* cached currently playing track infinite loading ([9401718](https://github.com/KRTirtho/spotube/commit/94017189c6b9bf55ec62cbf29cd6b0e9fffca42a)) +* cached queue tracks expired stream ([ed29ab5](https://github.com/KRTirtho/spotube/commit/ed29ab5137416d9fb2e7e9fe840f56ef52df6f61)) +* collection currently playing state persist on restart ([1c89e3e](https://github.com/KRTirtho/spotube/commit/1c89e3efb0f05c648fc1c8e09039e62333de18d1)) +* color not syncing and add new screenshot ([6205501](https://github.com/KRTirtho/spotube/commit/62055018feade0b895663a0bfc5f85f265ae2154)) +* content going below bottom player or nav bar ([1bdce9f](https://github.com/KRTirtho/spotube/commit/1bdce9fe964de88a667bb160846c11dc70b77c00)) +* disable background_downloader due to android build failures ([7d23bee](https://github.com/KRTirtho/spotube/commit/7d23beec5ef07c4d649185a69e7a2b9697dc6953)) +* disable play when loading track and buffering event ([30c933c](https://github.com/KRTirtho/spotube/commit/30c933cdf3d4524be164e171094afdd27b0252b7)) +* error log ([e3d8239](https://github.com/KRTirtho/spotube/commit/e3d8239b9f5700bfb17c4758d95ba1db1f0e718a)) +* excessive repaints caused by Player progress bar ([09b24cf](https://github.com/KRTirtho/spotube/commit/09b24cf1fd1644c549f85904545db54b39cc2431)) +* failed download no error icon ([1266a3f](https://github.com/KRTirtho/spotube/commit/1266a3f1607de11e793a294071850996527d494a)) +* **home:** bottom player transparency ([20c424c](https://github.com/KRTirtho/spotube/commit/20c424c77fe273a693213ebf88d50e4025bc8608)) +* language changer not working ([7b7b1f2](https://github.com/KRTirtho/spotube/commit/7b7b1f2647591b7cd4cc7841526716c6a2877e55)) +* less frequent position updates ([0a49b56](https://github.com/KRTirtho/spotube/commit/0a49b56566abd00cf7703e4207cfa90f93c381fd)) +* linux mpris not showing up and overall media notification service ([1abcad1](https://github.com/KRTirtho/spotube/commit/1abcad1de510c209a34196f2de17045af4dd3bc2)) +* local tracks getting fetched on first load ([73c012c](https://github.com/KRTirtho/spotube/commit/73c012c71ab5050636f79e010d654b4390978ee7)) +* local tracks not working when there's a invalid music file in the folder ([5855820](https://github.com/KRTirtho/spotube/commit/5855820569dfad7cd26f1e0f0c985babd0d9485d)) +* lyrics page blur in player and cut off text when line too big ([6b4584e](https://github.com/KRTirtho/spotube/commit/6b4584e91bd4f4aee0c56e48a7aec7015c7c418b)) +* macos build by removing media_kit native event loop ([62fc773](https://github.com/KRTirtho/spotube/commit/62fc7739b508f0e874978408a2bab0a1d422deb6)) +* macos build error, mobile player duration and playing state and background disposal of player ([be91e33](https://github.com/KRTirtho/spotube/commit/be91e33828630c7062886cd15e4d57496daaa4d5)) +* **macos,ios:** use regular shared prefs ([1b5bfec](https://github.com/KRTirtho/spotube/commit/1b5bfec27fbcfe9faabff64d46296bdeebe00161)) +* memoize child of animated widget and make player bg animation faster ([fcb5c8f](https://github.com/KRTirtho/spotube/commit/fcb5c8f8dabd0d4e3033f80ea3e5d006243cdfb5)) +* mini player not working in release mode ([28ff321](https://github.com/KRTirtho/spotube/commit/28ff3216efee81184798eedfbb10ba66395bbf36)) +* **mkPlayer:** remove method and wrong active index on modifying playlist ([3bafa7b](https://github.com/KRTirtho/spotube/commit/3bafa7b80c963fa52b90ed4cb1393fb121cac713)) +* mobile audio notification not working ([8f9303b](https://github.com/KRTirtho/spotube/commit/8f9303bc0fddb9d179303a1f0eb76dd5b02410e7)) +* multiple instance of theme ([4ec0424](https://github.com/KRTirtho/spotube/commit/4ec04240a5bde6af5c920a61ab6260e7a93bfc54)) +* navigation to settings not working ([ce10aa1](https://github.com/KRTirtho/spotube/commit/ce10aa1fe2c95d4738835687f613930cf7829f3a)) +* no progress update when track changed ([6ae8964](https://github.com/KRTirtho/spotube/commit/6ae896441a787fce1bc6e5eb5379856dc2f4e96d)) +* null exception on proxy playlist and audio player ([a455a89](https://github.com/KRTirtho/spotube/commit/a455a89c5861fd455f6950c7b68beae24bdcc6ed)) +* overflowing clickable artists links ([4077fac](https://github.com/KRTirtho/spotube/commit/4077fac39fb667b87e959e53d2dcaceefb63cd2d)) +* personalized playlists not loading ([caa3408](https://github.com/KRTirtho/spotube/commit/caa340803fdf3859fe5a8a996abae1502ef2e4e7)) +* playback not moving to next track after a track ends ([27e8acb](https://github.com/KRTirtho/spotube/commit/27e8acbfe75a37c0a8fa69a444fdd86e92dbe4f0)) +* **player:** gradient bg not taking full height ([62ad86e](https://github.com/KRTirtho/spotube/commit/62ad86e88d74b5114af78138b221314192e5a801)) +* **player:** playback element placement ([5e47faa](https://github.com/KRTirtho/spotube/commit/5e47faa6060d7a8aa0d143060e812dc06b8dd790)) +* **player:** queue button not showing when not logged in ([6c2d655](https://github.com/KRTirtho/spotube/commit/6c2d65587b0e6e167be1d0b086df103c7e72d4b2)) +* **player:** volume slider, prefetching of media_kit and stuttering on sponsorblock skip ([1f32554](https://github.com/KRTirtho/spotube/commit/1f3255481f058c50968561db88172e56b58494f4)) +* playlist generate slider shape ([2b35c04](https://github.com/KRTirtho/spotube/commit/2b35c044adb15a97a58692e7880694a251899732)) +* pop sheet list not scrollable ([cca5625](https://github.com/KRTirtho/spotube/commit/cca5625df7e432da8581a4504306baad154deb48)) +* re-enable add to queue and play next support, favorite button query exceptions ([e529c79](https://github.com/KRTirtho/spotube/commit/e529c79c4f0cd964b7d89e010d3fe51378ea7222)) +* re-enable download manager ([ea45c4f](https://github.com/KRTirtho/spotube/commit/ea45c4f42ae89b8991e470e84a5290b3be3b0f36)) +* remove unnecessary broadcast stream conversions ([bf04962](https://github.com/KRTirtho/spotube/commit/bf04962e90ea5345a2bc0d4793999f7db712cab2)) +* remove useBreakpoints as it clogs up memory with unnecessary state updates ([e1c0f5c](https://github.com/KRTirtho/spotube/commit/e1c0f5cf1e4cece2c4aa235bfbf8511ad7b1fe59)) +* replace download multiple pops and add translations ([4a21249](https://github.com/KRTirtho/spotube/commit/4a21249ee386426b0974451542a93e84f532fb3f)) +* screen breakpoints and persist lyrics delay across screens ([df79638](https://github.com/KRTirtho/spotube/commit/df79638fb622a55aaa2b36c9a1425c2d9c4a8e52)) +* sidebar task counter badge and bottom player play button progress color ([af278d8](https://github.com/KRTirtho/spotube/commit/af278d8feaa08c14528627766bce6d724b846954)) +* status bar color of playlist/album page ([65fa3cb](https://github.com/KRTirtho/spotube/commit/65fa3cb624c240360de5a06778a1f72ad10bbe2d)) +* system color scheme not persisting on restart when system color scheme changed ([e04515d](https://github.com/KRTirtho/spotube/commit/e04515d8e213b4c7f85d11385959a33b042bd9b1)) +* track collection view status bar not transparent ([9251121](https://github.com/KRTirtho/spotube/commit/9251121ba0154599975e33819a43719477c644f8)) +* track doesn't play after change ([17e5ab6](https://github.com/KRTirtho/spotube/commit/17e5ab611cc417cce7c17cafc7045f5aa2eb970e)) +* track stops at last second ([f554f6d](https://github.com/KRTirtho/spotube/commit/f554f6d43bb714f662a27977f501d7ad44b070c3)) +* **track_collection_view:** keyboard focus on scroll and no space for search results in playlist/album ([7a8bd92](https://github.com/KRTirtho/spotube/commit/7a8bd921047e3766dbbf24449e2873afe3dbecf8)) +* track_table_view table headers ([d88d287](https://github.com/KRTirtho/spotube/commit/d88d287fc586ec33351de9f3b4359f189054868b)) +* track_tile active and blacklist color, playbutton card action positioning ([3f5a1b9](https://github.com/KRTirtho/spotube/commit/3f5a1b9587efe9b7b2c69008345867933f79ec67)) +* use id based source getters instead of index ([a074463](https://github.com/KRTirtho/spotube/commit/a0744630ba2dc713babdb8db6500f9dd0f1e6096)) + ### [2.7.1](https://github.com/KRTirtho/spotube/compare/v2.7.0...v2.7.1) (2023-04-10) diff --git a/CONTRIBUTION.md b/CONTRIBUTION.md index c19d8ff1..da630db0 100644 --- a/CONTRIBUTION.md +++ b/CONTRIBUTION.md @@ -118,26 +118,26 @@ Enhancement suggestions are tracked as [GitHub issues](https://github.com/KRTirt Do the following: -- Download the latest Flutter SDK (>=2.15.1) & enable desktop support +- Download the latest Flutter SDK (>=3.10.0) & enable desktop support - Install Development dependencies in linux - - Debian/Ubuntu + - Debian (>=12/Bookworm)/Ubuntu ```bash - $ apt-get install libjsoncpp1 libjsoncpp-dev libsecret-1-0 libsecret-1-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev + $ apt-get install mpv libmpv-dev libappindicator3-1 gir1.2-appindicator3-0.1 libappindicator3-dev libsecret-1-0 libjsoncpp1 libsecret-1-dev libjsoncpp-dev libnotify-bin libnotify-dev ``` - Use `libjsoncpp25` instead of `libjsoncpp1` (for Ubuntu >= 22.04) - Arch/Manjaro ```bash - yay -S libsecret jsoncpp gstreamer gst-libav gst-plugins-base gst-plugins-good + yay -S mpv libappindicator-gtk3 libsecret jsoncpp libnotify ``` - Fedora ```bash - dnf install libsecret libsecret-devel jsoncpp gstreamer1-devel gstreamer1-plugins-base-tools gstreamer1-doc gstreamer1-plugins-base-devel gstreamer1-plugins-good gstreamer1-plugins-good-extras + dnf install mpv mpv-devel libappindicator-gtk3 libappindicator-gtk3-devel libsecret libsecret-devel jsoncpp jsoncpp-devel libnotify libnotify-devel ``` - Clone the Repo - Create a `.env` in root of the project following the `.env.example` template - Now run the following to bootstrap the project ```bash - flutter pub get && flutter pub run build_runner build --delete-conflicting-outputs + flutter pub get && dart run build_runner build --delete-conflicting-outputs --enable-experiment=records,patterns ``` - Finally run these following commands in the root of the project to start the Spotube Locally ```bash diff --git a/LICENSE b/LICENSE index 5119c222..f965af85 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ BSD-4-Clause License -Copyright (c) 2022 Kingkor Roy Tirtho. All rights reserved. +Copyright (c) 2023 Kingkor Roy Tirtho. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/README.md b/README.md index 14ac5697..177e4c21 100644 --- a/README.md +++ b/README.md @@ -1,158 +1,214 @@ -

Spotube Logo

+
+ Spotube Logo -

- spotube.netlify.app -

+ An open source, cross-platform Spotify client that doesn't require Premium nor uses Electron!
-

- - GitHub Workflow Status - - - GitHub release - - - License - - - Maintainer - - - Open Collective backers and sponsors - - - Discord - -

+ Visit the website + Discord Server + Support me on Patron + Buy me a Coffee -Spotube is a [Flutter](https://flutter.dev) based lightweight Spotify client. It utilizes the power of Spotify & Youtube's public APIs to create a reliable, robust & resource-light user experience. + Donate to our Open Collective -####

Desktop

+ --- -![Application Desktop Screenshot](assets/spotube-screenshot.jpg) + Spotube Desktop Spotube Mobile -####

Mobile

+
-![Application Mobile Screenshot](assets/mobile-screenshots/mobile-combined.jpg) +## 🌃 Features -

- - - -

+- 🚫 No ads, thanks to the use of public & free Spotify and YT Music APIs¹ +- ⬇️ Downloadable tracks +- 🖥️ 📱 Cross-platform support +- 🪶 Small size & less data usage +- 🕵️ Anonymous/guest login +- 🕒 Time synced lyrics +- ✋ No telemetry, diagnostics or user data collection +- 🚀 Native performance +- 📖 Open source/libre software +- 🔉 Playback control is done locally, not on the server -# Features +**¹** It is still **recommended** to support the creators by watching/liking/subscribing to the artists' YouTube channels or liking their tracks on Spotify (or purchasing a Spotify Premium subscription too). -Following are the features that currently Spotube offers: +### ❌ Unsupported features -- Open source/libre software -- Anonymous/guest login -- Cross platform support -- No telemetry, diagnostics or user data collection -- Lightweight & resource-friendly -- Native performance (Thanks to Flutter+Skia) -- Playback control is done locally instead of on the server -- Small size & less data usage -- No Spotify or YouTube ads since it uses all public & free APIs (It is still recommended to support the creators by watching/liking/subscribing to the artists' YouTube channels or liking their tracks on Spotify. Purchasing Spotify Premium is usually the best way to support their valuable creations.) -- Time synced lyrics -- Downloadable tracks +- 🗣️ **Spotify Shows & Podcasts:** Shows and Podcasts can **never be supported** because the audio tracks are _only_ available on Spotify and accessing them would require Spotify Premium. +- 🎧 **Spotify Listen Along:** [Coming soon!](https://github.com/KRTirtho/spotube/issues/8) -# Support development +## 📜 ⬇️ Installation guide - -[!["Donate to out Collective"](https://opencollective.com/spotube/donate/button.png?color=blue)](https://opencollective.com/spotube) -[!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/krtirtho) +New releases usually appear after 3-4 months.
+This handy table lists all methods you can use to install Spotube: -# Installation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PlatformPackage/Installation Method
Windows + + Windows Download + +
MacOS + + MacOS Download + +
Android + + APK download + +
+ + Download from F-Droid + +
Flatpak +

flatpak install com.github.KRTirtho.Spotube

+ + Download on Flathub + +
AppImage + + Download AppImage + +

Note: AppimageLauncher is required!

+
Debian/Ubuntu + + Debian/Ubuntu Download + +

Then run: sudo apt install Spotube-linux-x86_64.deb

+
Arch/Manjaro +

With pamac: sudo pamac install spotube-bin

+

With yay: yay -Sy spotube-bin

+
Fedora/OpenSuse + + Fedora/OpenSuse Download + +

For Fedora: sudo dnf install ./Spotube-linux-x86_64.rpm

+

For OpenSuse: sudo zypper in ./Spotube-linux-x86_64.rpm

+
Linux (tarball) + + Tarball Download + +
Windows - Chocolatey +

choco install spotube

+
Windows - Scoop +

scoop bucket add extras

+

scoop install spotube

+
Windows - WinGet +

winget install --id KRTirtho.Spotube

+
-I'm always releasing newer versions of binaries of the software every 2-3 months with minor changes & every 6-8 months with major changes. Grab them! +### 🔄 Nightly Builds -| Platform | Package/Installation Method | -| ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Android | [Android Download][android-dlink]
[Android Download][fdroid-dlink] | -| Debian/Ubuntu | [Linux Debian/Ubuntu Download][deb-dlink]
Then run: `sudo apt install Spotube-linux-x86_64.deb` | -| Fedora/OpenSuse | [Linux Fedora/OpenSuse Download][rpm-dlink]
For Fedora: `sudo dnf install ./Spotube-linux-x86_64.rpm`
For OpenSuse: `sudo zypper in ./Spotube-linux-x86_64.rpm` | -| Flatpak | `flatpak install com.github.KRTirtho.Spotube`
Download on Flathub | -| Arch/Manjaro | pamac: `pamac install spotube-bin`
yay: `yay -Sy spotube-bin` | -| AppImage | [AppImage Download][appimage-dlink]
**Note**: AppImages require [appimage-launcher](https://github.com/TheAssassin/AppImageLauncher) to be installed | -| Linux (tarball) | [Tarball Download][linux-dlink] | -| Windows | [Windows Download][win32-dlink] | -| Windows (Chocolatey) | `choco install spotube` | -| Windows (Scoop) | `scoop bucket add extras`
`scoop install spotube` | -| Windows (WinGet) | `winget install --id KRTirtho.Spotube` | -| MacOS | [MacOS Download][mac-dlink] | +Grab the latest nightly builds of Spotube [from the GitHub Releases](https://github.com/KRTirtho/spotube/releases/tag/nightly). -> **Note!:** If you don't understand this download table. You can read [installation instructions][wiki-installation-instructions] from the wiki +## 🕳️ Building from source -## Nightly Builds -Get the latest nightly builds of Spotube [here](https://github.com/KRTirtho/spotube/releases/tag/nightly). +GitHub Workflow Status -# TODO: -- [ ] Windows OS Media Control & Media Keys Support -- [ ] Spotify Listen Along -- [x] Skip non-music sections from Audio Track -- [ ] Language Translations/Localization +You can compile Spotube's source code by [following these instructions](CONTRIBUTION.md#your-first-code-contribution). -# Building from source +## 👥 The Spotube team -You can find the details [here](CONTRIBUTION.md#your-first-code-contribution). +- [Kingkor Roy Tirtho](https://github.com/KRTirtho) - The Founder, Maintainer and Lead Developer +- [Owen Connor](https://github.com/owencz1998) - The Cool Discord Moderator +- [Piotr Rogowski](https://github.com/karniv00l) - The MacOS Developer +- [RaptaG](https://github.com/RaptaG) - The GitHub Moderator and Community Manager +- [Rusty Apple](https://github.com/RustyApple) - The Mysterious Unknown Guy -# Things that do not work +## 💼 License -- Shows & Podcasts are not supported, as a premium subscription would be needed for that functionality. +Spotube is open source and licensed under the [BSD-4-Clause](/LICENSE) License. -# License +If you are concerned, feel free to [read the reason of choosing this license](https://dev.to/krtirtho/choosing-open-source-license-wisely-1m3p). -[BSD-4-Clause](/LICENSE) +
+ +

[Click to show] 🙏 Library/Plugin/Framework Credits

+
-But why? You can learn about it [here](https://dev.to/krtirtho/choosing-open-source-license-wisely-1m3p). - -# Financial contributors -## Backers -![Backers](https://opencollective.com/spotube/backer.svg?button=false) -![Donors](https://opencollective.com/spotube/tiers/donor.svg?button=false) - -## Sponsors -

- Sponsor Spotube -

- -# Library/Plugin/Framework Credits - -1. [Flutter](https://flutter.dev/) - Flutter transforms the app development process. Build, test, and deploy beautiful mobile, web, desktop, and embedded apps from a single codebase -1. [Spotify API](https://developer.spotify.com/documentation/web-api/) - The Spotify Web API is a RESTful API that provides access to Spotify data -1. [Linux](https://www.linux.org/) - Linux is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged in a Linux distribution -1. [AUR](https://aur.archlinux.org/) - AUR stands for Arch User Repository. It is a community-driven repository for Arch-based Linux distributions users -1. [Flatpak](https://flatpak.org/) - Flatpak is a utility for software deployment and package management for Linux -1. [rentanadviser](https://www.rentanadviser.com/) - Generous Synced lyrics API provider service -1. [SponsorBlock](https://sponsor.ajay.app/) - SponsorBlock is an open-source crowdsourced browser extension and open API for skipping sponsor segments in YouTube videos. +1. [Flutter](https://flutter.dev) - Flutter transforms the app development process. Build, test, and deploy beautiful mobile, web, desktop, and embedded apps from a single codebase +1. [Spotify API](https://developer.spotify.com/documentation/web-api) - The Spotify Web API is a RESTful API that provides access to Spotify data +1. [Piped](https://piped-docs.kavin.rocks/) - Piped is a privacy friendly alternative YouTube frontend, which is efficient and scalable by design. +1. [YouTube](https://youtube.com/) - YouTube is an American online video-sharing platform headquartered in San Bruno, California. Three former PayPal employees—Chad Hurley, Steve Chen, and Jawed Karim—created the service in February 2005 +1. [Linux](https://www.linux.org) - Linux is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged in a Linux distribution +1. [AUR](https://aur.archlinux.org) - AUR stands for Arch User Repository. It is a community-driven repository for Arch-based Linux distributions users +1. [Flatpak](https://flatpak.org) - Flatpak is a utility for software deployment and package management for Linux +1. [SponsorBlock](https://sponsor.ajay.app) - SponsorBlock is an open-source crowdsourced browser extension and open API for skipping sponsor segments in YouTube videos. 1. [Inno Setup](https://jrsoftware.org/isinfo.php) - Inno Setup is a free installer for Windows programs by Jordan Russell and Martijn Laan -1. [F-Droid](https://f-droid.org/) - F-Droid is an installable catalogue of FOSS (Free and Open Source Software) applications for the Android platform. The client makes it easy to browse, install, and keep track of updates on your device - -1. [adwaita](https://github.com/gtk-flutter/adwaita) - Adwaita style - The default theme for GTK+ for your Flutter app. +1. [F-Droid](https://f-droid.org) - F-Droid is an installable catalogue of FOSS (Free and Open Source Software) applications for the Android platform. The client makes it easy to browse, install, and keep track of updates on your device 1. [args](https://pub.dev/packages/args) - Library for defining parsers for parsing raw command-line arguments into a set of options and values using GNU and POSIX style options. 1. [async](https://pub.dev/packages/async) - Utility functions and classes related to the 'dart:async' library. 1. [audio_service](https://github.com/ryanheise/audio_service/tree/master/audio_service) - Flutter plugin to play audio in the background while the screen is off. 1. [audio_session](https://github.com/ryanheise/audio_session) - Sets the iOS audio session category and Android audio attributes for your app, and manages your app's audio focus, mixing and ducking behaviour. -1. [audioplayers](https://github.com/bluefireteam/audioplayers) - A Flutter plugin to play multiple audio files simultaneously 1. [auto_size_text](https://github.com/leisim/auto_size_text) - Flutter widget that automatically resizes text to fit perfectly within its bounds. -1. [badges](https://pub.dev/packages/badges) - A package for creating badges. Badges can be used for an additional marker for any widget, e.g. show a number of items in a shopping cart. +1. [buttons_tabbar](https://afonsoraposo.com) - A Flutter package that implements a TabBar where each label is a toggle button. 1. [cached_network_image](https://github.com/Baseflow/flutter_cached_network_image) - Flutter library to load and cache network images. Can also be used with placeholder and error widgets. 1. [collection](https://pub.dev/packages/collection) - Collections and utilities functions and classes related to collections. 1. [cupertino_icons](https://pub.dev/packages/cupertino_icons) - Default icons asset for Cupertino widgets based on Apple styled icons -1. [dbus](https://github.com/canonical/dbus.dart) - A native Dart implementation of the D-Bus message bus client. This package allows Dart applications to directly access services on the Linux desktop. +1. [curved_navigation_bar](https://github.com/rafalbednarczuk/curved_navigation_bar) - Stunning Animating Curved Shape Navigation Bar. Adjustable color, background color, animation curve, animation duration. +1. [envied](https://github.com/petercinibulk/envied) - Explicitly reads environment variables into a dart file from a .env file for more security and faster start up times. 1. [file_picker](https://github.com/miguelpruivo/plugins_flutter_file_picker) - A package that allows you to use a native file explorer to pick single or multiple absolute file paths, with extension filtering support. 1. [fl_query](https://fl-query.vercel.app) - Asynchronous data caching, refetching & invalidation library for Flutter 1. [fl_query_hooks](https://fl-query.vercel.app) - Elite flutter_hooks compatible library for fl_query, the Asynchronous data caching, refetching & invalidation library for Flutter -1. [fluent_ui](https://github.com/bdlukaa/fluent_ui) - Implements Windows UI in Flutter. Based on the official documentation +1. [fl_query_connectivity_plus_adapter](https://fl-query.vercel.app) - Connectivity Plus adapter for FlQuery Connectivity 1. [fluentui_system_icons](https://github.com/microsoft/fluentui-system-icons/tree/main) - Fluent UI System Icons are a collection of familiar, friendly and modern icons from Microsoft. 1. [flutter_cache_manager](https://github.com/Baseflow/flutter_cache_manager/tree/master/flutter_cache_manager) - Generic cache manager for flutter. Saves web files on the storages of the device and saves the cache info using sqflite. -1. [flutter_dotenv](https://github.com/java-james/flutter_dotenv) - Easily configure any flutter application with global variables using a `.env` file. 1. [flutter_feather_icons](https://github.com/muj-programmer/flutter_feather_icons) - Feather is a collection of simply beautiful open source icons. Each icon is designed on a 24x24 grid with an emphasis on simplicity, consistency and usability. 1. [flutter_hooks](https://github.com/rrousselGit/flutter_hooks) - A flutter implementation of React hooks. It adds a new kind of widget with enhanced code reuse. 1. [flutter_inappwebview](https://inappwebview.dev/) - A Flutter plugin that allows you to add an inline webview, to use an headless webview, and to open an in-app browser window. +1. [flutter_native_splash](https://pub.dev/packages/flutter_native_splash) - Customize Flutter's default white native splash screen with background color and splash image. Supports dark mode, full screen, and more. 1. [flutter_riverpod](https://riverpod.dev) - A simple way to access state from anywhere in your application while robust and testable. +1. [flutter_secure_storage](https://pub.dev/packages/flutter_secure_storage) - Flutter Secure Storage provides API to store data in secure storage. Keychain is used in iOS, KeyStore based solution is used in Android. 1. [flutter_svg](https://pub.dev/packages/flutter_svg) - An SVG rendering and widget library for Flutter, which allows painting and displaying Scalable Vector Graphics 1.1 files. 1. [fuzzywuzzy](https://github.com/sphericalkat/dart-fuzzywuzzy) - An implementation of the popular fuzzywuzzy package in Dart, to suit all your fuzzy string matching/searching needs! 1. [go_router](https://pub.dev/packages/go_router) - A declarative router for Flutter based on Navigation 2 supporting deep linking, data-driven routes and more @@ -161,13 +217,16 @@ But why? You can learn about it [here](https://dev.to/krtirtho/choosing-open-sou 1. [hooks_riverpod](https://riverpod.dev) - A simple way to access state from anywhere in your application while robust and testable. 1. [html](https://pub.dev/packages/html) - APIs for parsing and manipulating HTML content outside the browser. 1. [http](https://pub.dev/packages/http) - A composable, multi-platform, Future-based API for HTTP requests. +1. [intl](https://pub.dev/packages/intl) - Contains code to deal with internationalized/localized messages, date and number formatting and parsing, bi-directional text, and other internationalization issues. 1. [introduction_screen](https://github.com/pyozer/introduction_screen) - Introduction/Onboarding package for flutter app with some customizations possibilities 1. [json_annotation](https://pub.dev/packages/json_annotation) - Classes and helper functions that support JSON code generation via the `json_serializable` package. -1. [json_serializable](https://pub.dev/packages/json_serializable) - Automatically generate code for converting to and from JSON by annotating Dart classes. -1. [libadwaita](https://github.com/gtk-flutter/libadwaita) - Libadwaita's widgets for Flutter. Following Gnome HIG and available on all platforms. 1. [logger](https://pub.dev/packages/logger) - Small, easy to use and extensible logger which prints beautiful logs. -1. [macos_ui](https://macosui.dev) - Flutter widgets and themes implementing the current macOS design language. -1. [marquee](https://pub.dev/packages/marquee) - A Flutter widget that scrolls text infinitely. Provides many customizations including custom scroll directions, durations, curves as well as pauses after every round. +1. [media_kit](https://github.com/alexmercerind/media_kit) - A complete video & audio playback library for Flutter & Dart. Performant, stable, feature-proof & modular. +1. [media_kit_libs_android_audio](https://github.com/alexmercerind/media_kit.git) - Android package providing audio (only) native libraries for package:media_kit. +1. [media_kit_libs_ios_audio](https://github.com/alexmercerind/media_kit.git) - iOS package providing audio native libraries for package:media_kit. +1. [media_kit_libs_linux](https://github.com/alexmercerind/media_kit.git) - GNU/Linux dependency package for package:media_kit. Necessary for initialization. +1. [media_kit_libs_macos_audio](https://github.com/alexmercerind/media_kit.git) - macOS package providing audio native libraries for package:media_kit. +1. [media_kit_libs_windows_audio](https://github.com/alexmercerind/media_kit.git) - Windows package providing audio (only) native libraries for package:media_kit. 1. [metadata_god](https://github.com/KRTirtho/metadata_god) - Plugin for retrieving and writing audio tags/metadata from audio files 1. [mime](https://pub.dev/packages/mime) - Utilities for handling media (MIME) types, including determining a type from a file extension and file contents. 1. [package_info_plus](https://plus.fluttercommunity.dev/) - Flutter plugin for querying information about the application package, such as CFBundleVersion on iOS or versionCode on Android. @@ -175,54 +234,43 @@ But why? You can learn about it [here](https://dev.to/krtirtho/choosing-open-sou 1. [path](https://pub.dev/packages/path) - A string-based path manipulation library. All of the path operations you know and love, with solid support for Windows, POSIX (Linux and Mac OS X), and the web. 1. [path_provider](https://pub.dev/packages/path_provider) - Flutter plugin for getting commonly used locations on host platform file systems, such as the temp and app data directories. 1. [permission_handler](https://pub.dev/packages/permission_handler) - Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions. -1. [pocketbase](https://pub.dev/packages/pocketbase) - Multi-platform Dart SDK for PocketBase, an open source realtime backend in 1 file. 1. [popover](https://github.com/minikin/popover) - A popover is a transient view that appears above other content onscreen when you tap a control or in an area. -1. [queue](https://github.com/rknell/dart_queue) - Queue up futures from multiple sources and await their return anywhere in your code. 1. [scroll_to_index](https://github.com/quire-io/scroll-to-index) - Scroll to a specific child of any scrollable widget in Flutter 1. [shared_preferences](https://pub.dev/packages/shared_preferences) - Flutter plugin for reading and writing simple key-value pairs. Wraps NSUserDefaults on iOS and SharedPreferences on Android. +1. [sidebarx](https://github.com/Frezyx/sidebarx) - flutter multiplatform navigation sidebar / side navigationbar / drawer widget 1. [skeleton_text](https://github.com/101Loop/Skeleton-Text) - A package that provides an easy way to add skeleton text loading animation in Flutter project. This project is a part of 101Loop community. -1. [tuple](https://pub.dev/packages/tuple) - A library providing a tuple data structure. +1. [smtc_windows](https://github.com/KRTirtho/smtc_windows) - Windows `SystemMediaTransportControls` implementation for Flutter giving access to Windows OS Media Control applet. +1. [spotify](https://github.com/rinukkusu/spotify-dart) - An incomplete dart library for interfacing with the Spotify Web API. +1. [system_theme](https://pub.dev/packages/system_theme) - A plugin to get the current system theme info. Supports Android, Web, Windows, Linux and macOS +1. [titlebar_buttons](https://github.com/gtk-flutter/titlebar_buttons) - A package which provides most of the titlebar buttons from windows, linux and macos. 1. [url_launcher](https://pub.dev/packages/url_launcher) - Flutter plugin for launching a URL. Supports web, phone, SMS, and email schemes. 1. [uuid](https://github.com/Daegalus/dart-uuid) - RFC4122 (v1, v4, v5) UUID Generator and Parser for all Dart platforms (Web, VM, Flutter) 1. [version](https://github.com/dartninja/version) - Provides a simple class for parsing and comparing semantic versions as defined by http://semver.org/ 1. [visibility_detector](https://pub.dev/packages/visibility_detector) - A widget that detects the visibility of its child and notifies a callback. 1. [window_manager](https://github.com/leanflutter/window_manager) - This plugin allows Flutter desktop apps to resizing and repositioning the window. +1. [piped_client](https://github.com/KRTirtho/piped_client) - API Client for piped.video +1. [supabase_flutter](https://supabase.com) - Flutter integration for Supabase. This package makes it simple for developers to build secure and scalable products. +1. [device_preview](https://github.com/aloisdeniel/flutter_device_preview) - Approximate how your Flutter app looks and performs on another device. +1. [media_kit_native_event_loop](https://github.com/alexmercerind/media_kit) - Platform specific threaded event handling for media_kit. Enables support for higher number of concurrent instances. +1. [dbus](https://github.com/canonical/dbus.dart) - A native Dart implementation of the D-Bus message bus client. This package allows Dart applications to directly access services on the Linux desktop. +1. [background_downloader](https://pub.dev/packages/background_downloader) - A multi-platform background file downloader and uploader. Define the task, enqueue and monitor progress +1. [duration](https://github.com/desktop-dart/duration) - Utilities to make working with 'Duration's easier. Formats duration in human readable form and also parses duration in human readable form to Dart's Duration. +1. [disable_battery_optimization](https://github.com/pvsvamsi/Disable-Battery-Optimizations) - Flutter plugin to check and disable battery optimizations. Also shows custom steps to disable the optimizations in devices like mi, xiaomi, samsung, oppo, huawei, oneplus etc 1. [youtube_explode_dart](https://github.com/Hexer10/youtube_explode_dart) - A port in dart of the youtube explode library. Supports several API functions without the need of Youtube API Key. 1. [build_runner](https://pub.dev/packages/build_runner) - A build system for Dart code generation and modular compilation. -1. [flutter_distributor](https://github.com/leanflutter/flutter_distributor) - A complete tool for packaging and publishing your Flutter apps. +1. [envied_generator](https://github.com/petercinibulk/envied) - Generator for the Envied package. See https://pub.dev/packages/envied. +1. [flutter_distributor](https://distributor.leanflutter.org) - A complete tool for packaging and publishing your Flutter apps. 1. [flutter_gen_runner](https://github.com/FlutterGen/flutter_gen) - The Flutter code generator for your assets, fonts, colors, … — Get rid of all String-based APIs. 1. [flutter_launcher_icons](https://github.com/fluttercommunity/flutter_launcher_icons) - A package which simplifies the task of updating your Flutter app's launcher icon. 1. [flutter_lints](https://pub.dev/packages/flutter_lints) - Recommended lints for Flutter apps, packages, and plugins to encourage good coding practices. 1. [hive_generator](https://github.com/hivedb/hive/tree/master/hive_generator) - Extension for Hive. Automatically generates TypeAdapters to store any class. +1. [json_serializable](https://pub.dev/packages/json_serializable) - Automatically generate code for converting to and from JSON by annotating Dart classes. 1. [pub_api_client](https://github.com/leoafarias/pub_api_client) - An API Client for Pub to interact with public package information. 1. [pubspec_parse](https://pub.dev/packages/pubspec_parse) - Simple package for parsing pubspec.yaml files with a type-safe API and rich error reporting. 1. [catcher](https://github.com/jhomlala/catcher) - Plugin for error catching which provides multiple handlers for dealing with errors when they are not caught by the developer. -1. [platform_ui](https://github.com/KRTirtho/platform_ui) - Platform specific Widgets and UI toolkit -1. [spotify](https://github.com/rinukkusu/spotify-dart) - An incomplete dart library for interfacing with the Spotify Web API. +1. [flutter_desktop_tools](https://github.com/KRTirtho/flutter_desktop_tools) - Essential collection of tools for flutter desktop app development 1. [window_size](https://github.com/google/flutter-desktop-embedding.git) - Allows resizing and repositioning the window containing Flutter. -# The team +
-- [Kingkor Roy Tirtho](https://github.com/KRTirtho) - The Founder, Maintainer and Lead Developer -- [Owen Conor](https://github.com/owencz1998) - The Cool Discord Moderator -- [Piotr Rogowski](https://github.com/karniv00l) - The MacOS Developer -- [RaptaG](https://github.com/raptag) - The GitHub Moderator and Community Manager -- [Rusty Apple](https://github.com/RustyApple) - The Mysterious Unknown Guy - -# Social platforms - -Follow me on [Twitter](https://twitter.com/@krtirtho), or join our amazing [Discord](https://discord.gg/uJ94vxB6vg) server to always get newer updates about the application. - -

© 2023 Spotube

- - -[win32-dlink]: https://github.com/KRTirtho/spotube/releases/latest/download/Spotube-windows-x86_64-setup.exe -[deb-dlink]: https://github.com/KRTirtho/spotube/releases/latest/download/Spotube-linux-x86_64.deb -[rpm-dlink]: https://github.com/KRTirtho/spotube/releases/latest/download/Spotube-linux-x86_64.rpm -[linux-dlink]: https://github.com/KRTirtho/spotube/releases/latest -[appimage-dlink]: https://github.com/KRTirtho/spotube/releases/latest/download/Spotube-linux-x86_64.AppImage -[mac-dlink]: https://github.com/KRTirtho/spotube/releases/latest/download/Spotube-macos-x86_64.dmg -[android-dlink]: https://github.com/KRTirtho/spotube/releases/latest/download/Spotube-android-all-arch.apk -[fdroid-dlink]: https://f-droid.org/packages/oss.krtirtho.spotube/ - -[wiki-installation-instructions]: https://github.com/KRTirtho/spotube/wiki/Installation-Instrcutions +

© Copyright Spotube 2023

diff --git a/analysis_options.yaml b/analysis_options.yaml index d1b7c95f..4f0718e4 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -28,3 +28,7 @@ linter: # Additional information about this file can be found at # https://dart.dev/guides/language/analysis-options +analyzer: + enable-experiment: + - records + - patterns \ No newline at end of file diff --git a/android/app/build.gradle b/android/app/build.gradle index 1d519014..d05a90a1 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -34,6 +34,8 @@ if (keystorePropertiesFile.exists()) { android { compileSdkVersion 33 + ndkVersion "21.4.7075529" + compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 @@ -50,7 +52,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "oss.krtirtho.spotube" - minSdkVersion 19 + minSdkVersion 24 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName @@ -77,6 +79,17 @@ flutter { } dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + constraints { + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version") { + because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib") + } + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version") { + because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib") + } + } + implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1' + + // other deps so just ignore implementation 'com.android.support:multidex:2.0.1' } diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 523f66b9..f47bab2e 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -24,7 +24,7 @@ android:requestLegacyExternalStorage="true" > - + + - - + + diff --git a/android/app/src/main/res/drawable-hdpi-v31/android12branding.png b/android/app/src/main/res/drawable-hdpi-v31/android12branding.png new file mode 100644 index 00000000..9e62c813 Binary files /dev/null and b/android/app/src/main/res/drawable-hdpi-v31/android12branding.png differ diff --git a/android/app/src/main/res/drawable-hdpi/android12splash.png b/android/app/src/main/res/drawable-hdpi/android12splash.png new file mode 100644 index 00000000..0d4e1c68 Binary files /dev/null and b/android/app/src/main/res/drawable-hdpi/android12splash.png differ diff --git a/android/app/src/main/res/drawable-hdpi/branding.png b/android/app/src/main/res/drawable-hdpi/branding.png new file mode 100644 index 00000000..9e62c813 Binary files /dev/null and b/android/app/src/main/res/drawable-hdpi/branding.png differ diff --git a/android/app/src/main/res/drawable-hdpi/splash.png b/android/app/src/main/res/drawable-hdpi/splash.png new file mode 100644 index 00000000..0979b5e4 Binary files /dev/null and b/android/app/src/main/res/drawable-hdpi/splash.png differ diff --git a/android/app/src/main/res/drawable-mdpi-v31/android12branding.png b/android/app/src/main/res/drawable-mdpi-v31/android12branding.png new file mode 100644 index 00000000..80579983 Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi-v31/android12branding.png differ diff --git a/android/app/src/main/res/drawable-mdpi/android12splash.png b/android/app/src/main/res/drawable-mdpi/android12splash.png new file mode 100644 index 00000000..5d9760d4 Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi/android12splash.png differ diff --git a/android/app/src/main/res/drawable-mdpi/branding.png b/android/app/src/main/res/drawable-mdpi/branding.png new file mode 100644 index 00000000..80579983 Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi/branding.png differ diff --git a/android/app/src/main/res/drawable-mdpi/splash.png b/android/app/src/main/res/drawable-mdpi/splash.png new file mode 100644 index 00000000..c5e4aca0 Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi/splash.png differ diff --git a/android/app/src/main/res/drawable-night-hdpi-v31/android12branding.png b/android/app/src/main/res/drawable-night-hdpi-v31/android12branding.png new file mode 100644 index 00000000..9e62c813 Binary files /dev/null and b/android/app/src/main/res/drawable-night-hdpi-v31/android12branding.png differ diff --git a/android/app/src/main/res/drawable-night-hdpi/android12splash.png b/android/app/src/main/res/drawable-night-hdpi/android12splash.png new file mode 100644 index 00000000..0d4e1c68 Binary files /dev/null and b/android/app/src/main/res/drawable-night-hdpi/android12splash.png differ diff --git a/android/app/src/main/res/drawable-night-mdpi-v31/android12branding.png b/android/app/src/main/res/drawable-night-mdpi-v31/android12branding.png new file mode 100644 index 00000000..80579983 Binary files /dev/null and b/android/app/src/main/res/drawable-night-mdpi-v31/android12branding.png differ diff --git a/android/app/src/main/res/drawable-night-mdpi/android12splash.png b/android/app/src/main/res/drawable-night-mdpi/android12splash.png new file mode 100644 index 00000000..5d9760d4 Binary files /dev/null and b/android/app/src/main/res/drawable-night-mdpi/android12splash.png differ diff --git a/android/app/src/main/res/drawable-night-xhdpi-v31/android12branding.png b/android/app/src/main/res/drawable-night-xhdpi-v31/android12branding.png new file mode 100644 index 00000000..0bcf138d Binary files /dev/null and b/android/app/src/main/res/drawable-night-xhdpi-v31/android12branding.png differ diff --git a/android/app/src/main/res/drawable-night-xhdpi/android12splash.png b/android/app/src/main/res/drawable-night-xhdpi/android12splash.png new file mode 100644 index 00000000..8e5ceb0a Binary files /dev/null and b/android/app/src/main/res/drawable-night-xhdpi/android12splash.png differ diff --git a/android/app/src/main/res/drawable-night-xxhdpi-v31/android12branding.png b/android/app/src/main/res/drawable-night-xxhdpi-v31/android12branding.png new file mode 100644 index 00000000..c7d01776 Binary files /dev/null and b/android/app/src/main/res/drawable-night-xxhdpi-v31/android12branding.png differ diff --git a/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png b/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png new file mode 100644 index 00000000..fb89da37 Binary files /dev/null and b/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png differ diff --git a/android/app/src/main/res/drawable-night-xxxhdpi-v31/android12branding.png b/android/app/src/main/res/drawable-night-xxxhdpi-v31/android12branding.png new file mode 100644 index 00000000..5477b799 Binary files /dev/null and b/android/app/src/main/res/drawable-night-xxxhdpi-v31/android12branding.png differ diff --git a/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png b/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png new file mode 100644 index 00000000..38e4a12c Binary files /dev/null and b/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png differ diff --git a/android/app/src/main/res/drawable-v21/background.png b/android/app/src/main/res/drawable-v21/background.png new file mode 100644 index 00000000..203fc77a Binary files /dev/null and b/android/app/src/main/res/drawable-v21/background.png differ diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml index f74085f3..52e8749e 100644 --- a/android/app/src/main/res/drawable-v21/launch_background.xml +++ b/android/app/src/main/res/drawable-v21/launch_background.xml @@ -1,12 +1,12 @@ - - - - - + + + + + + + + + diff --git a/android/app/src/main/res/drawable-xhdpi-v31/android12branding.png b/android/app/src/main/res/drawable-xhdpi-v31/android12branding.png new file mode 100644 index 00000000..0bcf138d Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi-v31/android12branding.png differ diff --git a/android/app/src/main/res/drawable-xhdpi/android12splash.png b/android/app/src/main/res/drawable-xhdpi/android12splash.png new file mode 100644 index 00000000..8e5ceb0a Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi/android12splash.png differ diff --git a/android/app/src/main/res/drawable-xhdpi/branding.png b/android/app/src/main/res/drawable-xhdpi/branding.png new file mode 100644 index 00000000..0bcf138d Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi/branding.png differ diff --git a/android/app/src/main/res/drawable-xhdpi/splash.png b/android/app/src/main/res/drawable-xhdpi/splash.png new file mode 100644 index 00000000..41222c6c Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi/splash.png differ diff --git a/android/app/src/main/res/drawable-xxhdpi-v31/android12branding.png b/android/app/src/main/res/drawable-xxhdpi-v31/android12branding.png new file mode 100644 index 00000000..c7d01776 Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi-v31/android12branding.png differ diff --git a/android/app/src/main/res/drawable-xxhdpi/android12splash.png b/android/app/src/main/res/drawable-xxhdpi/android12splash.png new file mode 100644 index 00000000..fb89da37 Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi/android12splash.png differ diff --git a/android/app/src/main/res/drawable-xxhdpi/branding.png b/android/app/src/main/res/drawable-xxhdpi/branding.png new file mode 100644 index 00000000..c7d01776 Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi/branding.png differ diff --git a/android/app/src/main/res/drawable-xxhdpi/splash.png b/android/app/src/main/res/drawable-xxhdpi/splash.png new file mode 100644 index 00000000..5ab19d32 Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi/splash.png differ diff --git a/android/app/src/main/res/drawable-xxxhdpi-v31/android12branding.png b/android/app/src/main/res/drawable-xxxhdpi-v31/android12branding.png new file mode 100644 index 00000000..5477b799 Binary files /dev/null and b/android/app/src/main/res/drawable-xxxhdpi-v31/android12branding.png differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/android12splash.png b/android/app/src/main/res/drawable-xxxhdpi/android12splash.png new file mode 100644 index 00000000..38e4a12c Binary files /dev/null and b/android/app/src/main/res/drawable-xxxhdpi/android12splash.png differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/branding.png b/android/app/src/main/res/drawable-xxxhdpi/branding.png new file mode 100644 index 00000000..5477b799 Binary files /dev/null and b/android/app/src/main/res/drawable-xxxhdpi/branding.png differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/splash.png b/android/app/src/main/res/drawable-xxxhdpi/splash.png new file mode 100644 index 00000000..a6d40b89 Binary files /dev/null and b/android/app/src/main/res/drawable-xxxhdpi/splash.png differ diff --git a/android/app/src/main/res/drawable/background.png b/android/app/src/main/res/drawable/background.png new file mode 100644 index 00000000..203fc77a Binary files /dev/null and b/android/app/src/main/res/drawable/background.png differ diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml index 304732f8..52e8749e 100644 --- a/android/app/src/main/res/drawable/launch_background.xml +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -1,12 +1,12 @@ - - - - - + + + + + + + + + diff --git a/android/app/src/main/res/values-night-v31/styles.xml b/android/app/src/main/res/values-night-v31/styles.xml new file mode 100644 index 00000000..96980835 --- /dev/null +++ b/android/app/src/main/res/values-night-v31/styles.xml @@ -0,0 +1,23 @@ + + + + + + + diff --git a/android/app/src/main/res/values-v31/styles.xml b/android/app/src/main/res/values-v31/styles.xml new file mode 100644 index 00000000..981a07a9 --- /dev/null +++ b/android/app/src/main/res/values-v31/styles.xml @@ -0,0 +1,23 @@ + + + + + + + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index d460d1e9..0fdc7036 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -5,6 +5,10 @@ @drawable/launch_background + false + false + false + shortEdges + diff --git a/macos/Runner/Release.entitlements b/macos/Runner/Release.entitlements index db95233f..4a447fde 100644 --- a/macos/Runner/Release.entitlements +++ b/macos/Runner/Release.entitlements @@ -4,10 +4,16 @@ com.apple.security.app-sandbox - com.apple.security.network.client - com.apple.security.network.server + com.apple.security.network.client + + + diff --git a/metadata/en-US/full_description.txt b/metadata/en-US/full_description.txt index db8cd81c..a30d10c7 100644 --- a/metadata/en-US/full_description.txt +++ b/metadata/en-US/full_description.txt @@ -2,14 +2,13 @@ Open source Spotify client that doesn't require Premium nor uses Electron! Avail Features: -* Open source/libre software -* Anonymous/guest login -* Cross platform support -* No telemetry, diagnostics or user data collection -* Lightweight & resource-friendly -* Native performance (Thanks to Flutter+Skia) -* Playback control is done locally instead of on the server -* Small size & less data usage -* No Spotify or YouTube ads since it uses all public & free APIs (It is still recommended to support the creators by watching/liking/subscribing to the artists' YouTube channels or liking their tracks on Spotify. Purchasing Spotify Premium is usually the best way to support their valuable creations.) -* Time synced lyrics +* No ads, thanks to the use of public & free Spotify and YT Music APIs¹ * Downloadable tracks +* Cross-platform support +* Small size & less data usage +* Anonymous/guest login +* Time synced lyrics +* No telemetry, diagnostics or user data collection +* Native performance +* Open source/libre software +* Playback control is done locally, not on the server diff --git a/metadata/en-US/images/phoneScreenshots/screenshot-home-dark.jpg b/metadata/en-US/images/phoneScreenshots/screenshot-home-dark.jpg index 2912649c..bdad74f8 100644 Binary files a/metadata/en-US/images/phoneScreenshots/screenshot-home-dark.jpg and b/metadata/en-US/images/phoneScreenshots/screenshot-home-dark.jpg differ diff --git a/metadata/en-US/images/phoneScreenshots/screenshot-home-light.jpg b/metadata/en-US/images/phoneScreenshots/screenshot-home-light.jpg new file mode 100644 index 00000000..930d496a Binary files /dev/null and b/metadata/en-US/images/phoneScreenshots/screenshot-home-light.jpg differ diff --git a/metadata/en-US/images/phoneScreenshots/screenshot-lockscreen.jpg b/metadata/en-US/images/phoneScreenshots/screenshot-lockscreen.jpg index 402a4fb0..a826c68c 100644 Binary files a/metadata/en-US/images/phoneScreenshots/screenshot-lockscreen.jpg and b/metadata/en-US/images/phoneScreenshots/screenshot-lockscreen.jpg differ diff --git a/metadata/en-US/images/phoneScreenshots/screenshot-player-view.jpg b/metadata/en-US/images/phoneScreenshots/screenshot-player-view.jpg index 60b0a663..3bad761e 100644 Binary files a/metadata/en-US/images/phoneScreenshots/screenshot-player-view.jpg and b/metadata/en-US/images/phoneScreenshots/screenshot-player-view.jpg differ diff --git a/metadata/en-US/images/phoneScreenshots/screentshot-home-light.jpg b/metadata/en-US/images/phoneScreenshots/screentshot-home-light.jpg deleted file mode 100644 index 021c8e2d..00000000 Binary files a/metadata/en-US/images/phoneScreenshots/screentshot-home-light.jpg and /dev/null differ diff --git a/pubspec.lock b/pubspec.lock index d059d5e5..e830beba 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -9,14 +9,6 @@ packages: url: "https://pub.dev" source: hosted version: "52.0.0" - adwaita: - dependency: "direct main" - description: - name: adwaita - sha256: "535781747357779fa2830815e0a1b6b7888c8c538194ba73ac4fc8d82412baec" - url: "https://pub.dev" - source: hosted - version: "0.5.2" analyzer: dependency: transitive description: @@ -25,6 +17,14 @@ packages: url: "https://pub.dev" source: hosted version: "5.4.0" + app_links: + dependency: transitive + description: + name: app_links + sha256: d572dcdff49c4cfcfa6f315e2683e518ec6eb54e084d01e51d9631a4dcc1b5e8 + url: "https://pub.dev" + source: hosted + version: "3.4.2" app_package_maker: dependency: transitive description: @@ -93,26 +93,26 @@ packages: dependency: transitive description: name: archive - sha256: d6347d54a2d8028e0437e3c099f66fdb8ae02c4720c1e7534c9f24c10351f85d + sha256: "80e5141fafcb3361653ce308776cfd7d45e6e9fbb429e14eec571382c0c5fecb" url: "https://pub.dev" source: hosted - version: "3.3.6" + version: "3.3.2" args: dependency: "direct main" description: name: args - sha256: "139d809800a412ebb26a3892da228b2d0ba36f0ef5d9a82166e5e52ec8d61611" + sha256: c372bb384f273f0c2a8aaaa226dad84dc27c8519a691b888725dec59518ad53a url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.4.1" async: dependency: "direct main" description: name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.11.0" audio_service: dependency: "direct main" description: @@ -145,62 +145,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.1.13" - audioplayers: - dependency: "direct main" - description: - name: audioplayers - sha256: "16451eab798b23ad9307aef6f9ca62bb8fb06542af8810eead0d236d3fd40a42" - url: "https://pub.dev" - source: hosted - version: "3.0.1" - audioplayers_android: - dependency: transitive - description: - name: audioplayers_android - sha256: b2c833e6f718b6b030454e329931229afafe9327fdb002874dd544dc8bf2484d - url: "https://pub.dev" - source: hosted - version: "2.0.0" - audioplayers_darwin: - dependency: transitive - description: - name: audioplayers_darwin - sha256: e7a3c8759bf11ecfe4b20df338bf9f3d37c7719a5761c46a3833aba0ceeaacff - url: "https://pub.dev" - source: hosted - version: "3.0.1" - audioplayers_linux: - dependency: transitive - description: - name: audioplayers_linux - sha256: e95b65e1f4d4764601dac5e65f8d8186fc29401043ab020f1dacec483d708707 - url: "https://pub.dev" - source: hosted - version: "1.0.4" - audioplayers_platform_interface: - dependency: transitive - description: - name: audioplayers_platform_interface - sha256: "178581a44cb685fd798d2108111d2e98cca3400e30b9c3a05546f124fb37f600" - url: "https://pub.dev" - source: hosted - version: "4.0.0" - audioplayers_web: - dependency: transitive - description: - name: audioplayers_web - sha256: "859ba09be2a57e57a787273f18c8cf0d9b61383870c5ee4b5632fe9adbc37edf" - url: "https://pub.dev" - source: hosted - version: "2.2.0" - audioplayers_windows: - dependency: transitive - description: - name: audioplayers_windows - sha256: "622e01c4c357c2aaf1b956c3a0f89d97c3cb40315c03f16e3b6c2a31ff9c38bc" - url: "https://pub.dev" - source: hosted - version: "1.1.3" auto_size_text: dependency: "direct main" description: @@ -209,14 +153,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.0" - badges: + background_downloader: dependency: "direct main" description: - name: badges - sha256: "727580d938b7a1ff47ea42df730d581415606b4224cfa708671c10287f8d3fe6" + name: background_downloader + sha256: "5e38a1d5d88a5cfea35c44cb376b89427688070518471ee52f6b04d07d85668e" url: "https://pub.dev" source: hosted - version: "2.0.3" + version: "7.4.0" boolean_selector: dependency: transitive description: @@ -297,6 +241,14 @@ packages: url: "https://pub.dev" source: hosted version: "8.4.3" + buttons_tabbar: + dependency: "direct main" + description: + name: buttons_tabbar + sha256: d8a53cd3be0ce5b662d01378b1cd842eb44ee68da5abeeff3c081ee3bf614160 + url: "https://pub.dev" + source: hosted + version: "1.3.6" cached_network_image: dependency: "direct main" description: @@ -326,18 +278,26 @@ packages: description: path: "." ref: HEAD - resolved-ref: "5ccf7c0d8bbb07329667cff561aede1a9bee4934" + resolved-ref: "5c91db2578abd0c1609dc409ee3daee168d8b20e" url: "https://github.com/ThexXTURBOXx/catcher" source: git - version: "0.7.1" + version: "0.8.0" + change_case: + dependency: transitive + description: + name: change_case + sha256: f4e08feaa845e75e4f5ad2b0e15f24813d7ea6c27e7b78252f0c17f752cf1157 + url: "https://pub.dev" + source: hosted + version: "1.1.0" characters: dependency: transitive description: name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" checked_yaml: dependency: transitive description: @@ -350,10 +310,10 @@ packages: dependency: transitive description: name: cli_util - sha256: "66f86e916d285c1a93d3b79587d94bd71984a66aac4ff74e524cfa7877f1395c" + sha256: b8db3080e59b2503ca9e7922c3df2072cf13992354d5e944074ffa836fba43b7 url: "https://pub.dev" source: hosted - version: "0.3.5" + version: "0.4.0" clock: dependency: transitive description: @@ -374,10 +334,10 @@ packages: dependency: "direct main" description: name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.17.1" color: dependency: transitive description: @@ -394,6 +354,22 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.0" + connectivity_plus: + dependency: transitive + description: + name: connectivity_plus + sha256: "8599ae9edca5ff96163fca3e36f8e481ea917d1e71cdad912c084b5579913f34" + url: "https://pub.dev" + source: hosted + version: "4.0.1" + connectivity_plus_platform_interface: + dependency: transitive + description: + name: connectivity_plus_platform_interface + sha256: cf1d1c28f4416f8c654d7dc3cd638ec586076255d407cef3ddbdaf178272a71a + url: "https://pub.dev" + source: hosted + version: "1.2.4" convert: dependency: transitive description: @@ -426,6 +402,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.5" + curved_navigation_bar: + dependency: "direct main" + description: + name: curved_navigation_bar + sha256: ea6412d00c5d83501bbf1cf9d1ac2ff11a20fbaf910c103c95ace7de82910334 + url: "https://pub.dev" + source: hosted + version: "1.0.3" dart_style: dependency: transitive description: @@ -450,14 +434,22 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.8" + device_frame: + dependency: transitive + description: + name: device_frame + sha256: afe76182aec178d171953d9b4a50a43c57c7cf3c77d8b09a48bf30c8fa04dd9d + url: "https://pub.dev" + source: hosted + version: "1.1.0" device_info_plus: dependency: transitive description: name: device_info_plus - sha256: "1d6e5a61674ba3a68fb048a7c7b4ff4bebfed8d7379dbe8f2b718231be9a7c95" + sha256: "9b1a0c32b2a503f8fe9f8764fac7b5fcd4f6bd35d8f49de5350bccf9e2a33b8a" url: "https://pub.dev" source: hosted - version: "8.1.0" + version: "9.0.0" device_info_plus_platform_interface: dependency: transitive description: @@ -466,14 +458,30 @@ packages: url: "https://pub.dev" source: hosted version: "7.0.0" + device_preview: + dependency: "direct main" + description: + name: device_preview + sha256: "2f097bf31b929e15e6756dbe0ec1bcb63952ab9ed51c25dc5a2c722d2b21fdaf" + url: "https://pub.dev" + source: hosted + version: "1.1.0" dio: dependency: transitive description: name: dio - sha256: "7d328c4d898a61efc3cd93655a0955858e29a0aa647f0f9e02d59b3bb275e2e8" + sha256: "347d56c26d63519552ef9a569f2a593dda99a81fdbdff13c584b7197cfe05059" url: "https://pub.dev" source: hosted - version: "4.0.6" + version: "5.1.2" + disable_battery_optimization: + dependency: "direct main" + description: + name: disable_battery_optimization + sha256: b3441975ab2a3ab0c19ed78e909a88d245ce689d43d17f9b23582b1ed41c047b + url: "https://pub.dev" + source: hosted + version: "1.1.0+1" dots_indicator: dependency: transitive description: @@ -482,30 +490,30 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.0" + duration: + dependency: "direct main" + description: + name: duration + sha256: d0b29d0a345429e3986ac56d60e4aef65b37d11e653022b2b9a4b361332b777f + url: "https://pub.dev" + source: hosted + version: "3.0.12" envied: dependency: "direct main" description: name: envied - sha256: d5d978fbd578b5c00123003609c39185e0b1ddf9d2ac460d710dd0eb2fc223d7 + sha256: "60d3f5606c7b35bc6ef493e650d916b34351d8af2e58b7ac45881ba59dfcf039" url: "https://pub.dev" source: hosted - version: "0.3.0" + version: "0.3.0+3" envied_generator: dependency: "direct dev" description: name: envied_generator - sha256: "6c5a98c27c5eae925807692eb252ccac2b8e81f09bace1f07207c47dfb6a4eb0" + sha256: dfdbe5dc52863e54c036a4c4042afbdf1bd528cb4c1e638ecba26228ba72e9e5 url: "https://pub.dev" source: hosted - version: "0.3.0" - fading_edge_scrollview: - dependency: transitive - description: - name: fading_edge_scrollview - sha256: c25c2231652ce774cc31824d0112f11f653881f43d7f5302c05af11942052031 - url: "https://pub.dev" - source: hosted - version: "3.0.0" + version: "0.3.0+3" fake_async: dependency: transitive description: @@ -534,10 +542,10 @@ packages: dependency: "direct main" description: name: file_picker - sha256: d090ae03df98b0247b82e5928f44d1b959867049d18d73635e2e0bc3f49542b9 + sha256: c7a8e25ca60e7f331b153b0cb3d405828f18d3e72a6fa1d9440c86556fffc877 url: "https://pub.dev" source: hosted - version: "5.2.5" + version: "5.3.0" fixnum: dependency: transitive description: @@ -550,26 +558,26 @@ packages: dependency: "direct main" description: name: fl_query - sha256: b119e0d7e4cb615780f6cab00e7b40f88f8f549d9f8d20f6e1076e08cbf97c42 + sha256: "64f482fc09eb1166adca232f68772b2b11c616d88bce3208b2753c940ebc9f71" url: "https://pub.dev" source: hosted - version: "1.0.0-alpha.2" + version: "1.0.0-alpha.3" + fl_query_connectivity_plus_adapter: + dependency: "direct main" + description: + name: fl_query_connectivity_plus_adapter + sha256: a0e69615e25f6dfe74d1e5a0909aeeb865e93c65dd4e0b236f0846f9e54f758b + url: "https://pub.dev" + source: hosted + version: "0.1.0-alpha.2" fl_query_hooks: dependency: "direct main" description: name: fl_query_hooks - sha256: "9a4263cc5e1ef6e246089602256011172a9d3be212c41c08d67bc365ce6fec22" + sha256: b0ffc81fb047cbcedd9766776f9c72b95382730ce173226f0695c3f45774b0bc url: "https://pub.dev" source: hosted - version: "1.0.0-alpha.2" - fluent_ui: - dependency: "direct main" - description: - name: fluent_ui - sha256: ff172e78492faad2c9eca01b24ea8341f2bd6e1ce6986b15d4886fd2e7c3fb09 - url: "https://pub.dev" - source: hosted - version: "4.3.0" + version: "1.0.0-alpha.3" fluentui_system_icons: dependency: "direct main" description: @@ -615,6 +623,15 @@ packages: url: "https://pub.dev" source: hosted version: "3.3.0" + flutter_desktop_tools: + dependency: "direct main" + description: + path: "." + ref: "1f0bec3283626dcbd8ee2f54e238d096d8dea50e" + resolved-ref: "1f0bec3283626dcbd8ee2f54e238d096d8dea50e" + url: "https://github.com/KRTirtho/flutter_desktop_tools.git" + source: git + version: "0.0.1" flutter_distributor: dependency: "direct dev" description: @@ -623,6 +640,11 @@ packages: url: "https://pub.dev" source: hosted version: "0.0.2" + flutter_driver: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" flutter_feather_icons: dependency: "direct main" description: @@ -667,10 +689,10 @@ packages: dependency: "direct dev" description: name: flutter_launcher_icons - sha256: ce0e501cfc258907842238e4ca605e74b7fd1cdf04b3b43e86c43f3e40a1592c + sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea" url: "https://pub.dev" source: hosted - version: "0.11.0" + version: "0.13.1" flutter_lints: dependency: "direct dev" description: @@ -680,7 +702,7 @@ packages: source: hosted version: "2.0.1" flutter_localizations: - dependency: transitive + dependency: "direct main" description: flutter source: sdk version: "0.0.0" @@ -692,14 +714,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.2" + flutter_native_splash: + dependency: "direct main" + description: + name: flutter_native_splash + sha256: af665ef80a213a9ed502845a3d7a61b9acca4100ee7e9f067a7440bc3acd6730 + url: "https://pub.dev" + source: hosted + version: "2.2.19" flutter_plugin_android_lifecycle: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "60fc7b78455b94e6de2333d2f95196d32cf5c22f4b0b0520a628804cb463503b" + sha256: "96af49aa6b57c10a312106ad6f71deed5a754029c24789bbf620ba784f0bd0b0" url: "https://pub.dev" source: hosted - version: "2.0.7" + version: "2.0.14" flutter_riverpod: dependency: "direct main" description: @@ -806,6 +836,19 @@ packages: url: "https://pub.dev" source: hosted version: "3.2.0" + fuchsia_remote_debug_protocol: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + functions_client: + dependency: transitive + description: + name: functions_client + sha256: "26059c5fb000ffd0986ae3144d43c2a6f54931610fd61c2584e18e308c7eaa52" + url: "https://pub.dev" + source: hosted + version: "1.2.1" fuzzywuzzy: dependency: "direct main" description: @@ -830,6 +873,14 @@ packages: url: "https://pub.dev" source: hosted version: "6.0.6" + gotrue: + dependency: transitive + description: + name: gotrue + sha256: c08f5ac76dcae2dd06cc7f8e80a8ede12c66454fef06caac3b191c8c7a603811 + url: "https://pub.dev" + source: hosted + version: "1.7.1" graphs: dependency: transitive description: @@ -882,10 +933,10 @@ packages: dependency: "direct main" description: name: html - sha256: d9793e10dbe0e6c364f4c59bf3e01fb33a9b2a674bc7a1081693dba0614b6269 + sha256: "58e3491f7bf0b6a4ea5110c0c688877460d1a6366731155c4a4580e7ded773e8" url: "https://pub.dev" source: hosted - version: "0.15.1" + version: "0.15.3" http: dependency: "direct main" description: @@ -914,18 +965,23 @@ packages: dependency: transitive description: name: image - sha256: "8e9d133755c3e84c73288363e6343157c383a0c6c56fc51afcc5d4d7180306d6" + sha256: a72242c9a0ffb65d03de1b7113bc4e189686fc07c7147b8b41811d0dd0e0d9bf url: "https://pub.dev" source: hosted - version: "3.3.0" + version: "4.0.17" + integration_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" intl: - dependency: transitive + dependency: "direct main" description: name: intl - sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91" + sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6 url: "https://pub.dev" source: hosted - version: "0.17.0" + version: "0.18.0" introduction_screen: dependency: "direct main" description: @@ -946,42 +1002,34 @@ packages: dependency: transitive description: name: js - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 url: "https://pub.dev" source: hosted - version: "0.6.5" + version: "0.6.7" json_annotation: dependency: "direct main" description: name: json_annotation - sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317 + sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 url: "https://pub.dev" source: hosted - version: "4.8.0" + version: "4.8.1" json_serializable: - dependency: "direct main" + dependency: "direct dev" description: name: json_serializable - sha256: dadc08bd61f72559f938dd08ec20dbfec6c709bba83515085ea943d2078d187a + sha256: "43793352f90efa5d8b251893a63d767b2f7c833120e3cc02adad55eefec04dc7" url: "https://pub.dev" source: hosted - version: "6.6.1" - libadwaita: - dependency: "direct main" - description: - name: libadwaita - sha256: de4dba194e6ba468af70988891164cc616126dc7ccbc4f42756851be93aa6de6 - url: "https://pub.dev" - source: hosted - version: "1.2.5" - libadwaita_core: + version: "6.6.2" + jwt_decode: dependency: transitive description: - name: libadwaita_core - sha256: "1a7689e4130e96be4b0ec615863fded25cd86c2b95a682e7cec9659d420de37c" + name: jwt_decode + sha256: d2e9f68c052b2225130977429d30f187aa1981d789c76ad104a32243cfdebfbb url: "https://pub.dev" source: hosted - version: "0.5.4" + version: "0.3.1" lints: dependency: transitive description: @@ -990,6 +1038,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.1" + local_notifier: + dependency: transitive + description: + name: local_notifier + sha256: cc855aa6362c8840e3d3b35b1c3b058a3a8becdb2b03d5a9aa3f3a1e861f0a03 + url: "https://pub.dev" + source: hosted + version: "0.1.5" logger: dependency: "direct main" description: @@ -1006,14 +1062,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.1" - macos_ui: - dependency: "direct main" - description: - name: macos_ui - sha256: "2b31858b56d44e807cf192c58cf6660b584c997f4746496d4892a903c1c27a49" - url: "https://pub.dev" - source: hosted - version: "1.9.1" mailer: dependency: transitive description: @@ -1022,22 +1070,14 @@ packages: url: "https://pub.dev" source: hosted version: "6.0.0" - marquee: - dependency: "direct main" - description: - name: marquee - sha256: "4b5243d2804373bdc25fc93d42c3b402d6ec1f4ee8d0bb72276edd04ae7addb8" - url: "https://pub.dev" - source: hosted - version: "2.2.3" matcher: dependency: transitive description: name: matcher - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" url: "https://pub.dev" source: hosted - version: "0.12.13" + version: "0.12.15" material_color_utilities: dependency: transitive description: @@ -1046,22 +1086,78 @@ packages: url: "https://pub.dev" source: hosted version: "0.2.0" + media_kit: + dependency: "direct main" + description: + name: media_kit + sha256: d9a32b3f6eafdfbba6aff2e37045a3a80009b6dfbdeec638d51d85e8b254a6a2 + url: "https://pub.dev" + source: hosted + version: "0.0.7+1" + media_kit_libs_android_audio: + dependency: "direct main" + description: + name: media_kit_libs_android_audio + sha256: e16292bbb1d737ce026fa68154b2fcf5c6f88d6fa752bdb4c0d079c98a82b523 + url: "https://pub.dev" + source: hosted + version: "1.0.4" + media_kit_libs_ios_audio: + dependency: "direct main" + description: + name: media_kit_libs_ios_audio + sha256: bb18ed87e8a155fc1d2ee4bf59462ca04d02a0eeb38d0b454facee6d32441ce7 + url: "https://pub.dev" + source: hosted + version: "1.0.4" + media_kit_libs_linux: + dependency: "direct main" + description: + name: media_kit_libs_linux + sha256: "21acc71cbae3518b3aeef9023a6a3a3decb579a40153764333814987ccd61040" + url: "https://pub.dev" + source: hosted + version: "1.0.2" + media_kit_libs_macos_audio: + dependency: "direct main" + description: + name: media_kit_libs_macos_audio + sha256: b9f4a2995396fd5cc243901e618c0586d4f1781eecf2302999b77d6faee8b250 + url: "https://pub.dev" + source: hosted + version: "1.0.5" + media_kit_libs_windows_audio: + dependency: "direct main" + description: + name: media_kit_libs_windows_audio + sha256: f6ad5a1b910a6748a7350360756cd99a718fc9661a9583a7fd86a308d068dd81 + url: "https://pub.dev" + source: hosted + version: "1.0.3" + media_kit_native_event_loop: + dependency: "direct main" + description: + name: media_kit_native_event_loop + sha256: "521125e534603c3f603b93283db3938f557f33ecc383fbd62edd4beb3bf73747" + url: "https://pub.dev" + source: hosted + version: "1.0.4" meta: dependency: transitive description: name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" metadata_god: dependency: "direct main" description: name: metadata_god - sha256: "02de939fc2dcfdc959ed34768eecc97038b6e95ebaa3415f9f7582d71a2ad047" + sha256: "562c223d83a7bbf0a289ed0d5ed6a8cf8d94d673263203e9ff4930b44bd2f066" url: "https://pub.dev" source: hosted - version: "0.4.1" + version: "0.5.0" mime: dependency: "direct main" description: @@ -1078,6 +1174,22 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.1" + nested: + dependency: transitive + description: + name: nested + sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + nm: + dependency: transitive + description: + name: nm + sha256: "2c9aae4127bdc8993206464fcc063611e0e36e72018696cd9631023a31b24254" + url: "https://pub.dev" + source: hosted + version: "0.5.0" oauth2: dependency: transitive description: @@ -1130,10 +1242,10 @@ packages: dependency: "direct main" description: name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.8.3" path_drawing: dependency: transitive description: @@ -1194,10 +1306,10 @@ packages: dependency: transitive description: name: path_provider_windows - sha256: bcabbe399d4042b8ee687e17548d5d3f527255253b4a639f5f8d2094a9c2b45c + sha256: d3f80b32e83ec208ac95253e0cd4d298e104fbc63cb29c5c69edaed43b0c69d6 url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.6" pedantic: dependency: transitive description: @@ -1254,6 +1366,14 @@ packages: url: "https://pub.dev" source: hosted version: "5.1.0" + piped_client: + dependency: "direct main" + description: + name: piped_client + sha256: "8b96e1f9d8533c1da7eff7fbbd4bf188256fc76a20900d378b52be09418ea771" + url: "https://pub.dev" + source: hosted + version: "0.1.0" platform: dependency: transitive description: @@ -1262,39 +1382,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.0" - platform_ui: - dependency: "direct main" - description: - path: "." - ref: "339ea7922d2f881d9a72b565aeebc7e2c4b22509" - resolved-ref: "339ea7922d2f881d9a72b565aeebc7e2c4b22509" - url: "https://github.com/KRTirtho/platform_ui.git" - source: git - version: "0.1.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - sha256: dbf0f707c78beedc9200146ad3cb0ab4d5da13c246336987be6940f026500d3a + sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" url: "https://pub.dev" source: hosted - version: "2.1.3" - pocketbase: - dependency: "direct main" - description: - name: pocketbase - sha256: "125e32fe39393cc54436ce518ccfd5649419f15879a1278599f2f58564e5231c" - url: "https://pub.dev" - source: hosted - version: "0.7.1+1" - pointycastle: - dependency: transitive - description: - name: pointycastle - sha256: db7306cf0249f838d1a24af52b5a5887c5bf7f31d8bb4e827d071dc0939ad346 - url: "https://pub.dev" - source: hosted - version: "3.6.2" + version: "2.1.4" pool: dependency: transitive description: @@ -1311,14 +1406,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.2.8+1" - popover_gtk: + postgrest: dependency: transitive description: - name: popover_gtk - sha256: c293bfa3bcb9436fe189f20f6397199ce996ba40d4b081e26793adcf3ceac45b + name: postgrest + sha256: "7b91eb7b40621d07aaae687f47f3032f30e1b86a9ccebfcfca52d001223f8b6e" url: "https://pub.dev" source: hosted - version: "0.2.6+3" + version: "1.2.4" process: dependency: transitive description: @@ -1327,6 +1422,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.2.4" + provider: + dependency: transitive + description: + name: provider + sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f + url: "https://pub.dev" + source: hosted + version: "6.0.5" pub_api_client: dependency: "direct dev" description: @@ -1367,14 +1470,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.22.0" - queue: - dependency: "direct main" - description: - name: queue - sha256: "9a41ecadc15db79010108c06eae229a45c56b18db699760f34e8c9ac9b831ff9" - url: "https://pub.dev" - source: hosted - version: "3.1.0+2" quiver: dependency: transitive description: @@ -1383,14 +1478,22 @@ packages: url: "https://pub.dev" source: hosted version: "3.2.1" - recase: + realtime_client: dependency: transitive description: - name: recase - sha256: e4eb4ec2dcdee52dcf99cb4ceabaffc631d7424ee55e56f280bc039737f89213 + name: realtime_client + sha256: "0f2614f72e5639ddd7abc3dede336f23554f9f744d0b064d41009f9ca94a53d2" url: "https://pub.dev" source: hosted - version: "4.1.0" + version: "1.0.4" + retry: + dependency: transitive + description: + name: retry + sha256: a8a1e475a100a0bdc73f529ca8ea1e9c9c76bec8ad86a1f47780139a34ce7aea + url: "https://pub.dev" + source: hosted + version: "3.1.1" riverpod: dependency: transitive description: @@ -1407,6 +1510,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.27.7" + safe_local_storage: + dependency: transitive + description: + name: safe_local_storage + sha256: ede4eb6cb7d88a116b3d3bf1df70790b9e2038bc37cb19112e381217c74d9440 + url: "https://pub.dev" + source: hosted + version: "1.0.2" screen_retriever: dependency: transitive description: @@ -1415,14 +1526,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.1.6" - scroll_pos: - dependency: transitive - description: - name: scroll_pos - sha256: cfca311b6b8d51538ff90e206fbe6ce3b36e7125ea6da4a40eb626c7f9f083b1 - url: "https://pub.dev" - source: hosted - version: "0.3.0" scroll_to_index: dependency: "direct main" description: @@ -1435,66 +1538,66 @@ packages: dependency: transitive description: name: sentry - sha256: "81c1f32496ff04476d6ddfe5894215b1034d185301d2e3dffd272853392c5ea7" + sha256: "1c5498c8d1754dbf4fa51ca14d31c8c34ea0a0f897ff666ecd516dbd588dad6a" url: "https://pub.dev" source: hosted - version: "6.20.1" + version: "7.5.2" shared_preferences: dependency: "direct main" description: name: shared_preferences - sha256: "5949029e70abe87f75cfe59d17bf5c397619c4b74a099b10116baeb34786fad9" + sha256: "858aaa72d8f61637d64e776aca82e1c67e6d9ee07979123c5d17115031c1b13b" url: "https://pub.dev" source: hosted - version: "2.0.17" + version: "2.1.0" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: "955e9736a12ba776bdd261cf030232b30eadfcd9c79b32a3250dd4a494e8c8f7" + sha256: "8304d8a1f7d21a429f91dee552792249362b68a331ac5c3c1caf370f658873f6" url: "https://pub.dev" source: hosted - version: "2.0.15" + version: "2.1.0" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "2b55c18636a4edc529fa5cd44c03d3f3100c00513f518c5127c951978efcccd0" + sha256: cf2a42fb20148502022861f71698db12d937c7459345a1bdaa88fc91a91b3603 url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.2.0" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - sha256: f8ea038aa6da37090093974ebdcf4397010605fd2ff65c37a66f9d28394cb874 + sha256: "9d387433ca65717bbf1be88f4d5bb18f10508917a8fa2fb02e0fd0d7479a9afa" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.2.0" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - sha256: da9431745ede5ece47bc26d5d73a9d3c6936ef6945c101a5aca46f62e52c1cf3 + sha256: fb5cf25c0235df2d0640ac1b1174f6466bd311f621574997ac59018a6664548d url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.2.0" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - sha256: a4b5bc37fe1b368bbc81f953197d55e12f49d0296e7e412dfe2d2d77d6929958 + sha256: "74083203a8eae241e0de4a0d597dbedab3b8fef5563f33cf3c12d7e93c655ca5" url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "2.1.0" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: "5eaf05ae77658d3521d0e993ede1af962d4b326cd2153d312df716dc250f00c9" + sha256: "5e588e2efef56916a3b229c3bfe81e6a525665a454519ca51dbcc4236a274173" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.2.0" shelf: dependency: transitive description: @@ -1519,6 +1622,38 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.3" + sidebarx: + dependency: "direct main" + description: + name: sidebarx + sha256: "26a8392ceddb659c8f2c688beba6c04bcbf520b4d5decb143c5fd7253653081f" + url: "https://pub.dev" + source: hosted + version: "0.15.0" + sign_in_with_apple: + dependency: transitive + description: + name: sign_in_with_apple + sha256: ac3b113767dfdd765078c507dad9d4d9fe96b669cc7bd88fc36fc15376fb3400 + url: "https://pub.dev" + source: hosted + version: "4.3.0" + sign_in_with_apple_platform_interface: + dependency: transitive + description: + name: sign_in_with_apple_platform_interface + sha256: a5883edee09ed6be19de19e7d9f618a617fe41a6fa03f76d082dfb787e9ea18d + url: "https://pub.dev" + source: hosted + version: "1.0.0" + sign_in_with_apple_web: + dependency: transitive + description: + name: sign_in_with_apple_web + sha256: "44b66528f576e77847c14999d5e881e17e7223b7b0625a185417829e5306f47a" + url: "https://pub.dev" + source: hosted + version: "1.0.1" skeleton_text: dependency: "direct main" description: @@ -1532,6 +1667,14 @@ packages: description: flutter source: sdk version: "0.0.99" + smtc_windows: + dependency: "direct main" + description: + name: smtc_windows + sha256: dd86d0f29b5a73ffed5650279e6abee01846017b9bc16c07c708e129648c08ac + url: "https://pub.dev" + source: hosted + version: "0.1.0" source_gen: dependency: transitive description: @@ -1559,12 +1702,11 @@ packages: spotify: dependency: "direct main" description: - path: "." - ref: "9e8ef4556942d42d74874de5491253156e7e6f43" - resolved-ref: "9e8ef4556942d42d74874de5491253156e7e6f43" - url: "https://github.com/rinukkusu/spotify-dart" - source: git - version: "0.9.0" + name: spotify + sha256: c7c3f157f052143f713477bd5a764b080a0023ed084428bd0cf5a9e3bc260cc6 + url: "https://pub.dev" + source: hosted + version: "0.11.0" sqflite: dependency: transitive description: @@ -1597,6 +1739,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.2+1" + storage_client: + dependency: transitive + description: + name: storage_client + sha256: "4ed4dc8a990d178c96962319d6d8c267c3e206fca2c2b98660bad6e001220ffc" + url: "https://pub.dev" + source: hosted + version: "1.3.1" stream_channel: dependency: transitive description: @@ -1621,14 +1771,62 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" + supabase: + dependency: transitive + description: + name: supabase + sha256: "403739cdfea48ba633450e5b191ceeaae81ac10ec89166c0e109235b3e1532f3" + url: "https://pub.dev" + source: hosted + version: "1.8.1" + supabase_flutter: + dependency: "direct main" + description: + name: supabase_flutter + sha256: "7cbdd9a7264dd5b7ab5a6e2da63346054b8e5ddf358467c7f2bc23d5c14d732c" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + sync_http: + dependency: transitive + description: + name: sync_http + sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961" + url: "https://pub.dev" + source: hosted + version: "0.3.1" synchronized: dependency: transitive description: name: synchronized - sha256: "33b31b6beb98100bf9add464a36a8dd03eb10c7a8cf15aeec535e9b054aaf04b" + sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.1.0" + system_theme: + dependency: "direct main" + description: + name: system_theme + sha256: "28bb63b997c252eee7fea6dc9e3528a9a6bf4b566ccbc8b49926389ca3e2c96b" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + system_theme_web: + dependency: transitive + description: + name: system_theme_web + sha256: "7566f5a928f6d28d7a60c97bea8a851d1c6bc9b86a4df2366230a97458489219" + url: "https://pub.dev" + source: hosted + version: "0.0.2" + system_tray: + dependency: transitive + description: + name: system_tray + sha256: "087edb877f22f286d82d42f330fa640138c192e98aa9d20c2b83aa4e406bb432" + url: "https://pub.dev" + source: hosted + version: "2.0.2" term_glyph: dependency: transitive description: @@ -1641,10 +1839,10 @@ packages: dependency: transitive description: name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb url: "https://pub.dev" source: hosted - version: "0.4.16" + version: "0.5.1" time: dependency: transitive description: @@ -1661,8 +1859,16 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.1" - tuple: + titlebar_buttons: dependency: "direct main" + description: + name: titlebar_buttons + sha256: babf62b48b80f290b9ef8b0135df7d9e9bebcb9c27e8380a53df9bb72f3fb03c + url: "https://pub.dev" + source: hosted + version: "1.0.0" + tuple: + dependency: transitive description: name: tuple sha256: "0ea99cd2f9352b2586583ab2ce6489d1f95a5f6de6fb9492faaf97ae2060f0aa" @@ -1681,10 +1887,10 @@ packages: dependency: transitive description: name: universal_io - sha256: "79f78ddad839ee3aae3ec7c01eb4575faf0d5c860f8e5223bc9f9c17f7f03cef" + sha256: "06866290206d196064fd61df4c7aea1ffe9a4e7c4ccaa8fcded42dd41948005d" url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "2.2.0" uri: dependency: transitive description: @@ -1693,6 +1899,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.0" + uri_parser: + dependency: transitive + description: + name: uri_parser + sha256: "6543c9fd86d2862fac55d800a43e67c0dcd1a41677cb69c2f8edfe73bbcf1835" + url: "https://pub.dev" + source: hosted + version: "2.0.2" url_launcher: dependency: "direct main" description: @@ -1789,6 +2003,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.3.3" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: f6deed8ed625c52864792459709183da231ebf66ff0cf09e69b573227c377efe + url: "https://pub.dev" + source: hosted + version: "11.3.0" watcher: dependency: transitive description: @@ -1805,14 +2027,62 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.0" + webdriver: + dependency: transitive + description: + name: webdriver + sha256: "3c923e918918feeb90c4c9fdf1fe39220fa4c0e8e2c0fffaded174498ef86c49" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + webview_flutter: + dependency: transitive + description: + name: webview_flutter + sha256: "1a37bdbaaf5fbe09ad8579ab09ecfd473284ce482f900b5aea27cf834386a567" + url: "https://pub.dev" + source: hosted + version: "4.2.0" + webview_flutter_android: + dependency: transitive + description: + name: webview_flutter_android + sha256: "1acea8def62592123e2fbbca164ed8681a98a890bdcbb88f916d5b4a22687759" + url: "https://pub.dev" + source: hosted + version: "3.7.0" + webview_flutter_platform_interface: + dependency: transitive + description: + name: webview_flutter_platform_interface + sha256: "78715dc442b7849dbde74e92bb67de1cecf5addf95531c5fb474e72f5fe9a507" + url: "https://pub.dev" + source: hosted + version: "2.3.0" + webview_flutter_wkwebview: + dependency: transitive + description: + name: webview_flutter_wkwebview + sha256: "4646bb68297803bdbb96d46853e8fcb560d6cb5e04153fa64581535767875dfe" + url: "https://pub.dev" + source: hosted + version: "3.4.3" win32: dependency: transitive description: name: win32 - sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46 + sha256: "5a751eddf9db89b3e5f9d50c20ab8612296e4e8db69009788d6c8b060a84191c" url: "https://pub.dev" source: hosted - version: "3.1.3" + version: "4.1.4" + win32_registry: + dependency: transitive + description: + name: win32_registry + sha256: "1c52f994bdccb77103a6231ad4ea331a244dbcef5d1f37d8462f713143b0bfae" + url: "https://pub.dev" + source: hosted + version: "1.1.0" window_manager: dependency: "direct main" description: @@ -1854,14 +2124,22 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.1" + yet_another_json_isolate: + dependency: transitive + description: + name: yet_another_json_isolate + sha256: "94ba4947ac1ce44bd6a1634d9df712e07b9b5025ba12abd6750be77ba5c08f18" + url: "https://pub.dev" + source: hosted + version: "1.0.4" youtube_explode_dart: dependency: "direct main" description: name: youtube_explode_dart - sha256: "3e2eb05dedc072a6275e8a061c675d9a53b7c6123265f0aa4ee1e6d50644dbd2" + sha256: "07889a6229a63e78f8d45a3b852897c2e0fa42e96c4daa38d411be211575bc38" url: "https://pub.dev" source: hosted - version: "1.12.3" + version: "1.12.4" sdks: - dart: ">=2.19.2 <3.0.0" - flutter: ">=3.7.0" + dart: ">=3.0.0 <4.0.0" + flutter: ">=3.10.0" diff --git a/pubspec.yaml b/pubspec.yaml index 7ffa368c..20df062c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,39 +3,45 @@ description: Open source Spotify client that doesn't require Premium nor uses El publish_to: "none" -version: 2.7.1+18 +version: 3.0.0+19 environment: - sdk: ">=2.17.0 <3.0.0" + sdk: ">=3.0.0 <4.0.0" + flutter: ">=3.10.0" dependencies: - adwaita: ^0.5.2 args: ^2.3.2 async: ^2.9.0 audio_service: ^0.18.9 audio_session: ^0.1.13 - audioplayers: ^3.0.1 auto_size_text: ^3.0.0 - badges: ^2.0.3 + buttons_tabbar: ^1.3.6 cached_network_image: ^3.2.2 catcher: git: url: https://github.com/ThexXTURBOXx/catcher collection: ^1.15.0 cupertino_icons: ^1.0.5 - dbus: ^0.7.8 + curved_navigation_bar: ^1.0.3 envied: ^0.3.0 file_picker: ^5.2.2 - fl_query: ^1.0.0-alpha.2 - fl_query_hooks: ^1.0.0-alpha.2 - fluent_ui: 4.3.0 + fl_query: ^1.0.0-alpha.3 + fl_query_hooks: ^1.0.0-alpha.3 + fl_query_connectivity_plus_adapter: ^0.1.0-alpha.2 fluentui_system_icons: ^1.1.189 flutter: sdk: flutter flutter_cache_manager: ^3.3.0 + flutter_desktop_tools: + git: + url: https://github.com/KRTirtho/flutter_desktop_tools.git + ref: 1f0bec3283626dcbd8ee2f54e238d096d8dea50e flutter_feather_icons: ^2.0.0+1 flutter_hooks: ^0.18.2+1 flutter_inappwebview: ^5.7.2+3 + flutter_localizations: + sdk: flutter + flutter_native_splash: ^2.2.19 flutter_riverpod: ^2.1.1 flutter_secure_storage: ^8.0.0 flutter_svg: ^1.1.6 @@ -46,35 +52,32 @@ dependencies: hooks_riverpod: ^2.1.1 html: ^0.15.1 http: ^0.13.5 + intl: ^0.18.0 introduction_screen: ^3.0.2 - json_annotation: ^4.8.0 - json_serializable: ^6.6.0 - libadwaita: ^1.2.5 + json_annotation: ^4.8.1 logger: ^1.1.0 - macos_ui: ^1.9.0 - marquee: ^2.2.3 - metadata_god: ^0.4.1 + media_kit: ^0.0.7+1 + media_kit_libs_android_audio: ^1.0.4 + media_kit_libs_ios_audio: ^1.0.4 + media_kit_libs_linux: ^1.0.2 + media_kit_libs_macos_audio: ^1.0.5 + media_kit_libs_windows_audio: ^1.0.3 + metadata_god: ^0.5.0 mime: ^1.0.2 package_info_plus: ^3.0.2 palette_generator: ^0.3.3 path: ^1.8.0 path_provider: ^2.0.8 permission_handler: ^10.2.0 - platform_ui: - git: - url: https://github.com/KRTirtho/platform_ui.git - ref: 339ea7922d2f881d9a72b565aeebc7e2c4b22509 - pocketbase: ^0.7.1+1 popover: ^0.2.6+3 - queue: ^3.1.0+1 scroll_to_index: ^3.0.1 shared_preferences: ^2.0.11 + sidebarx: ^0.15.0 skeleton_text: ^3.0.0 - spotify: - git: - url: https://github.com/rinukkusu/spotify-dart - ref: 9e8ef4556942d42d74874de5491253156e7e6f43 - tuple: ^2.0.1 + smtc_windows: ^0.1.0 + spotify: ^0.11.0 + system_theme: ^2.1.0 + titlebar_buttons: ^1.0.0 url_launcher: ^6.1.7 uuid: ^3.0.7 version: ^3.0.2 @@ -85,18 +88,29 @@ dependencies: url: https://github.com/google/flutter-desktop-embedding.git ref: a738913c8ce2c9f47515382d40827e794a334274 path: plugins/window_size - youtube_explode_dart: ^1.12.1 + piped_client: ^0.1.0 + supabase_flutter: ^1.9.1 + device_preview: ^1.1.0 + media_kit_native_event_loop: ^1.0.4 + dbus: ^0.7.8 + background_downloader: ^7.4.0 + duration: ^3.0.12 + disable_battery_optimization: ^1.1.0+1 + youtube_explode_dart: ^1.12.4 dev_dependencies: build_runner: ^2.3.2 - envied_generator: ^0.3.0 + envied_generator: ^0.3.0+3 flutter_distributor: ^0.0.2 flutter_gen_runner: ^5.1.0+1 - flutter_launcher_icons: ^0.11.0 + flutter_launcher_icons: ^0.13.1 flutter_lints: ^2.0.1 flutter_test: sdk: flutter + integration_test: + sdk: flutter hive_generator: ^2.0.0 + json_serializable: ^6.6.2 pub_api_client: ^2.4.0 pubspec_parse: ^1.2.2 @@ -104,10 +118,12 @@ dependency_overrides: package_info_plus: ^3.0.2 flutter: + generate: true uses-material-design: true assets: - assets/ - assets/tutorial/ + - LICENSE flutter_icons: android: true @@ -124,3 +140,14 @@ flutter_icons: flutter_gen: output: lib/collections + +flutter_native_splash: + background_image: assets/bengali-patterns-bg.jpg + image: assets/spotube-logo.png + branding: assets/branding.png + android_12: + image: assets/spotube-logo_android12.png + branding: assets/branding.png + color: "#000000" + icon_background_color: "#000000" + web: false diff --git a/scripts/install.sh b/scripts/install.sh new file mode 100755 index 00000000..52526f95 --- /dev/null +++ b/scripts/install.sh @@ -0,0 +1,182 @@ +#!/bin/bash + + +INSTLLATION_DIR=/usr/share/spotube +DESKTOP_FILE_PATH=/usr/share/applications/spotube.desktop +APP_DATA_PATH=/usr/share/appdata/spotube.appdata.xml +ICON_PATH=/usr/share/icons/spotube/spotube-logo.png +BIN_SYMLINK_PATH=/usr/bin/spotube + +TEMP_DIR=/tmp/spotube-installer + +# get latest version from github api +VERSION=$(curl --silent "https://api.github.com/repos/KRTirtho/spotube/releases/latest" \ + | grep -Po '"tag_name": "\K.*?(?=")') + +function spotube_help(){ + # available flags are -v or --version to specify what version to download + echo "Usage: ./install.sh [flags]" + echo "Flags:" + echo " -v, --version Specify what version to download. Default: $VERSION" + echo " -h, --help Show this help message" + echo " -r, --remove Remove spotube from your system" + exit 0 +} + +# a function to check if a given command exists or not and returns bool +function command_exists() { + command -v "$@" >/dev/null 2>&1 +} + +function install_deps(){ + local DEBIAN_DEPS="curl tar mpv libappindicator3-1 gir1.2-appindicator3-0.1 libsecret-1-0 libnotify-bin libjsoncpp25" + local RPM_DEPS="curl tar mpv libappindicator jsoncpp libsecret libnotify" + local ARCH_DEPS="curl tar mpv libappindicator-gtk3 libsecret jsoncpp libnotify" + + if command_exists apt; then + sudo apt install -y $DEBIAN_DEPS + elif command_exists dnf; then + sudo dnf install -y $RPM_DEPS + elif command_exists yum; then + sudo yum install -y $RPM_DEPS + elif command_exists zypper; then + sudo zypper install -y $RPM_DEPS + elif command_exists pacman; then + sudo pacman -Sy $ARCH_DEPS + else + echo "Your package manager is not supported by this script. Please install the dependencies manually." + echo "The dependencies are: curl, tar, mpv, appindicator, libsecret, jsoncpp, libnotify" +fi +} + +function download_extract_spotube(){ + local TAR_PATH=/tmp/spotube-$VERSION.tar.xz + local DOWNLOAD_URL=https://github.com/KRTirtho/spotube/releases/download/v$VERSION/spotube-linux-$VERSION-x86_64.tar.xz + + # check if version is nightly + + if [ "$VERSION" = "nightly" ]; then + DOWNLOAD_URL=https://github.com/KRTirtho/spotube/releases/download/nightly/spotube-linux-nightly-x86_64.tar.xz + fi + + + rm -rf $TEMP_DIR + mkdir -p $TEMP_DIR + + + # check if already exists downloaded file + if [ -f $TAR_PATH ]; then + echo "Found spotube-$VERSION.tar.xz in /tmp. Skipping download..." + else + echo "Downloading spotube-$VERSION.tar.xz..." + curl -L $DOWNLOAD_URL -o $TAR_PATH + fi + + # Extract the tarball + tar -xf $TAR_PATH -C $TEMP_DIR + + # check if $TEMP_DIR empty or not + + if [ ! "$(ls -A $TEMP_DIR)" ]; then + echo "Failed to extract the tarball. Redownloading..." + rm -f $TAR_PATH + curl -L $DOWNLOAD_URL -o $TAR_PATH + tar -xf $TAR_PATH -C $TEMP_DIR + fi + + # checking one last time + if [ ! "$(ls -A $TEMP_DIR)" ]; then + echo "Failed to extract the tarball. Aborting installation..." + exit 1 + fi +} + +function install_spotube(){ + # check if exists and uninstall if user allows + + if [ -d $INSTLLATION_DIR ]; then + echo "Spotube is already installed. Do you want to uninstall it and then install? [y/N]" + read -r uninstall + if [ "$uninstall" = "y" ] || [ "$uninstall" = "Y" ]; then + uninstall_spotube + else + echo "Aborting installation..." + exit 1 + fi + fi + + # Move the files to /usr/share/spotube + + sudo mkdir -p $INSTLLATION_DIR + + sudo mv $TEMP_DIR/data $INSTLLATION_DIR + sudo mv $TEMP_DIR/lib $INSTLLATION_DIR + sudo mv $TEMP_DIR/spotube $INSTLLATION_DIR + + # Move the desktop file to /usr/share/applications + + sudo mv $TEMP_DIR/spotube.desktop $DESKTOP_FILE_PATH + + # Move the appdata file to /usr/share/appdata + + sudo mv $TEMP_DIR/com.github.KRTirtho.Spotube.appdata.xml $APP_DATA_PATH + + # Move the logo to /usr/share/icons/spotube + + sudo mkdir -p /usr/share/icons/spotube + + sudo mv $TEMP_DIR/spotube-logo.png $ICON_PATH + + # Create a symlink to /usr/bin + + sudo ln -s /usr/share/spotube/spotube $BIN_SYMLINK_PATH + + # Clean up + + rm -rf $TEMP_DIR + + echo "Spotube $VERSION has been installed successfully!" +} + +function uninstall_spotube(){ + # confirm + + echo "Are you sure you want to uninstall Spotube?" + echo + echo "This will remove following files and directories:" + echo " $INSTLLATION_DIR" + echo " $DESKTOP_FILE_PATH" + echo " $APP_DATA_PATH" + echo " $ICON_PATH" + echo " $BIN_SYMLINK_PATH" + echo + echo "[y/N]" + + read -r CONFIRMATION + + if [[ "$CONFIRMATION" != "y" ]]; then + echo "Aborting uninstallation..." + exit 0 + fi + + # remove the files + + + sudo rm -rf $INSTLLATION_DIR $DESKTOP_FILE_PATH $APP_DATA_PATH $ICON_PATH $BIN_SYMLINK_PATH +} + +# parse arguments -v, --version, -r, --remove, -h, --help + +while [[ "$#" -gt 0 ]]; do + case $1 in + -v|--version) VERSION="$2"; shift ;; + -r|--remove) uninstall_spotube; exit 0 ;; + -h|--help) spotube_help; exit 0 ;; + *) echo "Unknown parameter passed: $1"; spotube_help; exit 1 ;; + esac + shift +done + +install_deps +download_extract_spotube +install_spotube \ No newline at end of file diff --git a/scripts/update_flathub_version.py b/scripts/update_flathub_version.py index 27d6682d..3ac5d6f7 100644 --- a/scripts/update_flathub_version.py +++ b/scripts/update_flathub_version.py @@ -15,6 +15,7 @@ with open(YAML_FILENAME, mode="r", encoding="utf-8") as input: # Requires the 2nd VERSION argument to be passed version = sys.argv[1:][0] + tar_url = f"https://github.com/{REPO}/releases/download/v{version}/spotube-linux-{version}-x86_64.tar.xz" tar_sha256 = hashlib.sha256() print(f"Downloading file {tar_url} to generete sha256 sum") @@ -23,7 +24,7 @@ for chunk in tar.iter_content(): if chunk: tar_sha256.update(chunk) -tar_source = config["modules"][0]["sources"][0] +tar_source = config["modules"][-1]["sources"][0] tar_source["url"] = tar_url tar_source["sha256"] = tar_sha256.hexdigest() diff --git a/untranslated_messages.json b/untranslated_messages.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/untranslated_messages.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/website/components/DownloadButton.tsx b/website/components/DownloadButton.tsx index 4805640b..1aa43e70 100644 --- a/website/components/DownloadButton.tsx +++ b/website/components/DownloadButton.tsx @@ -50,7 +50,7 @@ const DownloadLinks = Object.freeze({ [Platform.mac]: [ { name: "dmg", - url: baseURL + "Spotube-macos-x86_64.dmg", + url: baseURL + "Spotube-macos-universal.dmg", icon: , }, ], diff --git a/website/posts/getting-started-with-spotube.md b/website/posts/getting-started-with-spotube.md index 81a8712e..e0da2574 100644 --- a/website/posts/getting-started-with-spotube.md +++ b/website/posts/getting-started-with-spotube.md @@ -1,6 +1,6 @@ --- title: Getting Started With Spotube -cover_image: https://github.com/KRTirtho/spotube/raw/master/assets/spotube-screenshot.jpg +cover_image: https://github.com/KRTirtho/spotube/raw/master/assets/spotube-screenshot.png date: "July 16, 2022" author: Kingkor Roy Tirtho author_avatar_url: https://avatars.githubusercontent.com/u/61944859?v=4 diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 552e8d72..93029f40 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,26 +6,41 @@ #include "generated_plugin_registrant.h" -#include +#include #include +#include #include +#include +#include #include #include +#include +#include #include #include #include void RegisterPlugins(flutter::PluginRegistry* registry) { - AudioplayersWindowsPluginRegisterWithRegistrar( - registry->GetRegistrarForPlugin("AudioplayersWindowsPlugin")); + AppLinksPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("AppLinksPluginCApi")); CatcherPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("CatcherPlugin")); + ConnectivityPlusWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin")); FlutterSecureStorageWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin")); + LocalNotifierPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("LocalNotifierPlugin")); + MediaKitLibsWindowsAudioPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("MediaKitLibsWindowsAudioPluginCApi")); PermissionHandlerWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin")); ScreenRetrieverPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("ScreenRetrieverPlugin")); + SystemThemePluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("SystemThemePlugin")); + SystemTrayPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("SystemTrayPlugin")); UrlLauncherWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("UrlLauncherWindows")); WindowManagerPluginRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index aedb0000..eeb98007 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,18 +3,25 @@ # list(APPEND FLUTTER_PLUGIN_LIST - audioplayers_windows + app_links catcher + connectivity_plus flutter_secure_storage_windows + local_notifier + media_kit_libs_windows_audio permission_handler_windows screen_retriever + system_theme + system_tray url_launcher_windows window_manager window_size ) list(APPEND FLUTTER_FFI_PLUGIN_LIST + media_kit_native_event_loop metadata_god + smtc_windows ) set(PLUGIN_BUNDLED_LIBRARIES)