diff --git a/.github/workflows/flutter-build.yml b/.github/workflows/flutter-build.yml index be450bce..ac12781b 100644 --- a/.github/workflows/flutter-build.yml +++ b/.github/workflows/flutter-build.yml @@ -29,6 +29,7 @@ jobs: - run: make appimage # Building Android Application - run: flutter build apk + - run: mv build/app/outputs/apk/release/app-release.apk build/Spotube-android-arm64-v8a.apk - uses: actions/upload-artifact@v2 with: name: Spotube-Linux-Bundle @@ -36,7 +37,7 @@ jobs: build/Spotube-linux-x86_64.deb build/Spotube-linux-x86_64.tar.xz build/Spotube-*-x86_64.AppImage - build/app/outputs/apk/release/app-release.apk + build/Spotube-android-arm64-v8a.apk build_windows: runs-on: windows-latest steps: diff --git a/CHANGELOG.md b/CHANGELOG.md index 27d49948..fc3ce8dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,30 @@ +# v2.0.0 + +### New +- Android Support https://github.com/KRTirtho/spotube/issues/24 +- Responsive UI (Mobile, Tablet) +- Anonymous/Guest Account +- Mini floating player +- Full page PlayerView for smaller devices +- Horizontal CategoryCard Scroll & pagination for quicker access to Playlists +- Bottom bar for smaller devices +- Collapsed Sidebar for medium sized devices +- Persists Volume level +- Android NavigationPanel controls (OS media controls of Android) + +### Improved +- Search - now scrolls & paginates for Playlists & Albums +- Authentication - allows guest accounts making authentication optional +- Lyrics - can be fetched without requiring GeniusAccessToken. This makes geniusAccessToken optional +- UI snappiness & faster load times +- Simpler logic, faster calculations & better caching (flutter_hooks) +- shared state management - uses riverpod & hooks combination + +### Bug fixes +- Can't play any song in macos https://github.com/KRTirtho/spotube/issues/23 +- Downloaded tracks can't be played as they're WebAudio (.weba) instead of MP3 +- delay while changing Playlist/Single tracks + # v1.2.0 ### New diff --git a/README.md b/README.md index 861a40ef..19e64bd9 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,9 @@ Spotube is a [Flutter](https://flutter.dev) based lightweight spotify client. It Following are the features that currently spotube offers: - Open Source -- No telementry, diagnostics or user data collection +- Anonymous/Guest Login +- Cross platform +- No telemetry, diagnostics or user data collection - Lightweight & resource friendly - Native performance (Thanks to Flutter+Skia) - Playback control is on user's machine instead of server based @@ -36,7 +38,7 @@ Following are the features that currently spotube offers: - Lyrics - Downloadable track -Spotube - A lightweight+free Spotify desktop-client made with flutter | Product Hunt +Spotube - A lightweight+free Spotify crossplatform-client made with flutter | Product Hunt # Installation @@ -44,6 +46,10 @@ I'm always releasing newer versions of binary of the software each 2-3 month wit All the binaries are located in the [releases](https://github.com/krtirtho/spotube/releases), just download +## Android + +Download the [Android app](https://github.com/KRTirtho/spotube/releases/latest/download/Spotube-android-arm64-v8a.apk) & install it on your phone/tablet + ## Windows Download the [setup file](https://github.com/KRTirtho/spotube/releases/latest/download/Spotube-windows-x86_64-setup.exe) & follow along the installer @@ -98,30 +104,33 @@ Download the [Mac OS Disk Image (.dmg) file](https://github.com/KRTirtho/spotube **I'll/try to upload the package binaries to linux debian/arch/ubuntu/snap/flatpack/redhat/chocolatey/homebrew stores or software centers or repositories** -# Configuration -There are some configurations that needs to be done to start using this software +## Optional Configurations +
+ Login with Spotify -You need a spotify account & a developer app for + You need a spotify account & a developer app for -- clientId -- clientSecret + - clientId + - clientSecret -**Grab credentials:** + **Grab credentials:** -- Go to https://developer.spotify.com/dashboard/login & login with your spotify account (Skip if you're logged in) - ![Step 1](https://user-images.githubusercontent.com/61944859/111762106-d1d37680-88ca-11eb-9884-ec7a40c0dd27.png) + - Go to https://developer.spotify.com/dashboard/login & login with your spotify account (Skip if you're logged in) + ![Step 1](https://user-images.githubusercontent.com/61944859/111762106-d1d37680-88ca-11eb-9884-ec7a40c0dd27.png) -- Create an web app for Spotify Public API - ![step 2](https://user-images.githubusercontent.com/61944859/111762507-473f4700-88cb-11eb-91f3-d480e9584883.png) + - Create an web app for Spotify Public API + ![step 2](https://user-images.githubusercontent.com/61944859/111762507-473f4700-88cb-11eb-91f3-d480e9584883.png) -- Give the app a name & description. Then Edit settings & add **http://localhost:4304/auth/spotify/callback** as **Redirect URI** for the app. Its important for authenticating - ![setp-3](https://user-images.githubusercontent.com/61944859/111768971-d308a180-88d2-11eb-9108-3e7444cef049.png) + - Give the app a name & description. Then Edit settings & add **http://localhost:4304/auth/spotify/callback** as **Redirect URI** for the app. Its important for authenticating + ![setp-3](https://user-images.githubusercontent.com/61944859/111768971-d308a180-88d2-11eb-9108-3e7444cef049.png) -- Click on **SHOW CLIENT SECRET** to reveal the **clientSecret**. Then copy the **clientID**, **clientSecret** & paste in the **Spotube's** respective fields - ![step-4](https://user-images.githubusercontent.com/61944859/111769501-7fe31e80-88d3-11eb-8fc1-f3655dbd4711.png) + - Click on **SHOW CLIENT SECRET** to reveal the **clientSecret**. Then copy the **clientID**, **clientSecret** & paste in the **Spotube's** respective fields + ![step-4](https://user-images.githubusercontent.com/61944859/111769501-7fe31e80-88d3-11eb-8fc1-f3655dbd4711.png) +
-**Setup Genius Lyrics (Optional)** +
+Setup Genius Lyrics - Signup/Login into [genius](https://genius.com/signup) for **lyrics** - Go To [Genius Developer Portal](https://genius.com/api-clients/new) for creating an API client @@ -132,6 +141,7 @@ You need a spotify account & a developer app for ![Step 4](https://user-images.githubusercontent.com/61944859/158823984-17f08534-5c92-41bc-918a-23194aad00f5.png) > **Note!**: No personal data or any kind of sensitive information won't be collected from spotify. Don't believe? See the code for yourself +
# TODO: @@ -140,6 +150,7 @@ You need a spotify account & a developer app for - [x] Track download - [ ] Support for playing/streaming podcasts/shows - [x] Artist, User & Album pages +- [x] Android Support # Building from source @@ -179,6 +190,16 @@ Bu why? You can learn about it [here](https://dev.to/krtirtho/choosing-open-sour - [bitsdojo_window](https://github.com/bitsdojo/bitsdojo_window) - A Flutter package that makes it easy to customize and work with your Flutter desktop app window on Windows, macOS and Linux - [hotkey_manager](https://github.com/leanflutter/hotkey_manager) - A flutter plugin that allow Flutter desktop apps to defines system/inapp wide hotkey - [Inno Setup](https://jrsoftware.org/isinfo.php) - Inno Setup is a free installer for Windows programs by Jordan Russell and Martijn Laan +- [collection](https://github.com/dart-lang/collection) - The collection package for Dart contains a number of separate libraries with utility functions and classes that makes working with collections easier +- [flutter_riverpod](https://riverpod.dev/) - A Reactive Caching and Data-binding Framework +- [flutter_hooks](https://github.com/rrousselGit/flutter_hooks) - React hooks for Flutter. Hooks are a new kind of object that manages a Widget life-cycles. They are used to increase code sharing between widgets and as a complete replacement for StatefulWidget +- [hooks_riverpod](https://riverpod.dev/) - Riverpod with hooks +- [go_router](https://github.com/flutter/packages/tree/main/packages/go_router) - A declarative router for Flutter based on Navigation 2 supporting deep linking, data-driven routes and more +- [palette_generator](https://github.com/flutter/packages/tree/main/packages/palette_generator) - Flutter package for generating palette colors from a source image. +- [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. +- [logger](https://github.com/leisim/logger) - Small, easy to use and extensible logger which prints beautiful logs +- [flutter_launcher_icons](https://github.com/fluttercommunity/flutter_launcher_icons) - A package which simplifies the task of updating your Flutter app's launcher icon. +- [permission_handler](https://github.com/baseflow/flutter-permission-handler) - Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions. # Social handlers diff --git a/android/app/build.gradle b/android/app/build.gradle index ceb59302..f162c8cb 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -26,7 +26,7 @@ apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion flutter.compileSdkVersion + compileSdkVersion 31 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 5d1d8687..97ea4c61 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -3,6 +3,8 @@ + + @@ -12,7 +14,7 @@ - +