Merge branch 'dev' into website
177
.circleci/config.yml
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
version: 2.1
|
||||||
|
|
||||||
|
orbs:
|
||||||
|
gh: circleci/github-cli@2.2.0
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
flutter_linux_arm:
|
||||||
|
machine:
|
||||||
|
image: ubuntu-2204:current
|
||||||
|
resource_class: arm.medium
|
||||||
|
parameters:
|
||||||
|
version:
|
||||||
|
type: string
|
||||||
|
default: 3.1.1
|
||||||
|
channel:
|
||||||
|
type: enum
|
||||||
|
enum:
|
||||||
|
- release
|
||||||
|
- nightly
|
||||||
|
default: release
|
||||||
|
github_run_number:
|
||||||
|
type: string
|
||||||
|
default: "0"
|
||||||
|
dry_run:
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- gh/setup
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: Get current date
|
||||||
|
command: |
|
||||||
|
echo "export CURRENT_DATE=$(date +%Y-%m-%d)" >> $BASH_ENV
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: Install dependencies
|
||||||
|
command: |
|
||||||
|
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 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 libjsoncpp25 libsecret-1-dev libjsoncpp-dev libnotify-bin libnotify-dev mpv libmpv-dev zip rpm
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: Install Flutter
|
||||||
|
command: |
|
||||||
|
git clone https://github.com/flutter/flutter.git
|
||||||
|
cd flutter && git checkout stable && cd ..
|
||||||
|
export PATH="$PATH:`pwd`/flutter/bin"
|
||||||
|
flutter precache
|
||||||
|
flutter doctor -v
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: Install AppImageTool
|
||||||
|
command: |
|
||||||
|
wget -O appimagetool "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-aarch64.AppImage"
|
||||||
|
chmod +x appimagetool
|
||||||
|
mv appimagetool flutter/bin
|
||||||
|
|
||||||
|
- persist_to_workspace:
|
||||||
|
root: flutter
|
||||||
|
paths:
|
||||||
|
- .
|
||||||
|
|
||||||
|
- when:
|
||||||
|
condition:
|
||||||
|
equal: [<< parameters.channel >>, nightly]
|
||||||
|
steps:
|
||||||
|
- run:
|
||||||
|
name: Replace pubspec version and BUILD_VERSION Env (nightly)
|
||||||
|
command: |
|
||||||
|
curl -sS https://webi.sh/yq | sh
|
||||||
|
yq -i '.version |= sub("\+\d+", "+<< parameters.channel >>.")' pubspec.yaml
|
||||||
|
yq -i '.version += strenv(GITHUB_RUN_NUMBER)' pubspec.yaml
|
||||||
|
echo 'export BUILD_VERSION="<< parameters.version >>+<< parameters.channel >>.<< parameters.github_run_number >>"' >> $BASH_ENV
|
||||||
|
|
||||||
|
- when:
|
||||||
|
condition:
|
||||||
|
equal: [<< parameters.channel >>, release]
|
||||||
|
steps:
|
||||||
|
- run: echo 'export BUILD_VERSION="<< parameters.version >>"' >> $BASH_ENV
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: Generate .env file
|
||||||
|
command: |
|
||||||
|
echo "SPOTIFY_SECRETS=${SPOTIFY_SECRETS}" >> .env
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: Replace Version in files
|
||||||
|
command: |
|
||||||
|
sed -i 's|%{{APPDATA_RELEASE}}%|<release version="${BUILD_VERSION}" date="${CURRENT_DATE}" />|' linux/com.github.KRTirtho.Spotube.appdata.xml
|
||||||
|
echo "build_arch: aarch64" >> linux/packaging/rpm/make_config.yaml
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: Build secrets
|
||||||
|
command: |
|
||||||
|
export PATH="$PATH:`pwd`/flutter/bin"
|
||||||
|
flutter config --enable-linux-desktop
|
||||||
|
flutter pub get
|
||||||
|
dart run build_runner build --delete-conflicting-outputs --enable-experiment=records,patterns
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: Build Flutter app
|
||||||
|
command: |
|
||||||
|
export PATH="$PATH:`pwd`/flutter/bin"
|
||||||
|
export PATH="$PATH":"$HOME/.pub-cache/bin"
|
||||||
|
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
|
||||||
|
|
||||||
|
- when:
|
||||||
|
condition:
|
||||||
|
equal: [<< parameters.channel >>, nightly]
|
||||||
|
steps:
|
||||||
|
- run: make tar VERSION=nightly ARCH=arm64 PKG_ARCH=aarch64
|
||||||
|
|
||||||
|
- when:
|
||||||
|
condition:
|
||||||
|
equal: [<< parameters.channel >>, release]
|
||||||
|
steps:
|
||||||
|
- run: make tar VERSION=${BUILD_VERSION} ARCH=arm64 PKG_ARCH=aarch64
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: Move artifacts
|
||||||
|
command: |
|
||||||
|
mkdir bundle
|
||||||
|
mv build/spotube-linux-*-aarch64.tar.xz bundle/
|
||||||
|
mv dist/**/spotube-*-linux.deb bundle/Spotube-linux-aarch64.deb
|
||||||
|
mv dist/**/spotube-*-linux.rpm bundle/Spotube-linux-aarch64.rpm
|
||||||
|
mv dist/**/spotube-*-linux.AppImage bundle/Spotube-linux-aarch64.AppImage
|
||||||
|
zip -r Spotube-linux-aarch64.zip bundle
|
||||||
|
|
||||||
|
- store_artifacts:
|
||||||
|
path: Spotube-linux-aarch64.zip
|
||||||
|
|
||||||
|
- when:
|
||||||
|
condition:
|
||||||
|
and:
|
||||||
|
- equal: [<< parameters.dry_run >>, false]
|
||||||
|
- equal: [<< parameters.channel >>, release]
|
||||||
|
steps:
|
||||||
|
- run:
|
||||||
|
name: Upload to release (release)
|
||||||
|
command: gh release upload v<< parameters.version >> bundle/* --clobber
|
||||||
|
|
||||||
|
- when:
|
||||||
|
condition:
|
||||||
|
and:
|
||||||
|
- equal: [<< parameters.dry_run >>, false]
|
||||||
|
- equal: [<< parameters.channel >>, nightly]
|
||||||
|
steps:
|
||||||
|
- run:
|
||||||
|
name: Upload to release (nightly)
|
||||||
|
command: gh release upload nightly bundle/* --clobber
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
GHA_Actor:
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
GHA_Action:
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
GHA_Event:
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
GHA_Meta:
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
|
||||||
|
workflows:
|
||||||
|
build_flutter_for_arm_workflow:
|
||||||
|
when: << pipeline.parameters.GHA_Action >>
|
||||||
|
jobs:
|
||||||
|
- flutter_linux_arm:
|
||||||
|
context:
|
||||||
|
- org-global
|
||||||
|
- GITHUB_CREDS
|
@ -1,6 +1,3 @@
|
|||||||
SUPABASE_URL=
|
|
||||||
SUPABASE_API_KEY=
|
|
||||||
|
|
||||||
# The format:
|
# The format:
|
||||||
# SPOTIFY_SECRETS=clintId1:clientSecret1,clientId2:clientSecret2
|
# SPOTIFY_SECRETS=clintId1:clientSecret1,clientId2:clientSecret2
|
||||||
SPOTIFY_SECRETS=
|
SPOTIFY_SECRETS=
|
||||||
@ -8,4 +5,7 @@ SPOTIFY_SECRETS=
|
|||||||
# 0 or 1
|
# 0 or 1
|
||||||
# 0 = disable
|
# 0 = disable
|
||||||
# 1 = enable
|
# 1 = enable
|
||||||
ENABLE_UPDATE_CHECK=
|
ENABLE_UPDATE_CHECK=
|
||||||
|
|
||||||
|
LASTFM_API_KEY=
|
||||||
|
LASTFM_API_SECRET=
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"flutterSdkVersion": "3.10.0",
|
"flutterSdkVersion": "3.16.0",
|
||||||
"flavors": {}
|
"flavors": {}
|
||||||
}
|
}
|
7
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@ -71,3 +71,10 @@ body:
|
|||||||
description: Anything else you'd like to include?
|
description: Anything else you'd like to include?
|
||||||
validations:
|
validations:
|
||||||
required: false
|
required: false
|
||||||
|
- type: checkboxes
|
||||||
|
attributes:
|
||||||
|
label: Self grab
|
||||||
|
description: If you are a developer and want to work on this issue yourself, you can check this box and wait for maintainer response. We welcome contributions!
|
||||||
|
options:
|
||||||
|
- label: I'm ready to work on this issue!
|
||||||
|
required: false
|
9
.github/ISSUE_TEMPLATE/new_feature.yml
vendored
@ -35,4 +35,11 @@ body:
|
|||||||
label: Additional information
|
label: Additional information
|
||||||
description: Anything else you'd like to include?
|
description: Anything else you'd like to include?
|
||||||
validations:
|
validations:
|
||||||
required: false
|
required: false
|
||||||
|
- type: checkboxes
|
||||||
|
attributes:
|
||||||
|
label: Self grab
|
||||||
|
description: If you are a developer and want to work on this issue yourself, you can check this box and wait for maintainer response. We welcome contributions!
|
||||||
|
options:
|
||||||
|
- label: I'm ready to work on this issue!
|
||||||
|
required: false
|
32
.github/workflows/pr-lint.yml
vendored
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
name: Lint
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
env:
|
||||||
|
FLUTTER_VERSION: '3.16.0'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: subosito/flutter-action@v2
|
||||||
|
with:
|
||||||
|
flutter-version: ${{ env.FLUTTER_VERSION }}
|
||||||
|
|
||||||
|
- name: Configure repo
|
||||||
|
run: |
|
||||||
|
flutter pub get
|
||||||
|
echo '${{ secrets.DOTENV_NIGHTLY }}' > .env
|
||||||
|
dart run build_runner build --delete-conflicting-outputs
|
||||||
|
|
||||||
|
- name: Lint Dart files
|
||||||
|
run: |
|
||||||
|
dart analyze --no-fatal-warnings
|
||||||
|
|
||||||
|
- name: Lint translations & config files
|
||||||
|
run: |
|
||||||
|
npm install -g @prantlf/jsonlint
|
||||||
|
jsonlint -q -D --enforce-double-quotes ./lib/l10n/*.arb
|
||||||
|
jsonlint -q -D --enforce-double-quotes -T .vscode/*.json
|
8
.github/workflows/spotube-publish-binary.yml
vendored
@ -4,7 +4,7 @@ on:
|
|||||||
inputs:
|
inputs:
|
||||||
version:
|
version:
|
||||||
description: Version to publish (x.x.x)
|
description: Version to publish (x.x.x)
|
||||||
default: 3.0.0
|
default: 3.1.0
|
||||||
required: true
|
required: true
|
||||||
dry_run:
|
dry_run:
|
||||||
description: Dry run
|
description: Dry run
|
||||||
@ -22,12 +22,12 @@ jobs:
|
|||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
if: contains(inputs.jobs, 'flathub')
|
if: contains(inputs.jobs, 'flathub')
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
repository: KRTirtho/com.github.KRTirtho.Spotube
|
repository: KRTirtho/com.github.KRTirtho.Spotube
|
||||||
token: ${{ secrets.FLATHUB_TOKEN }}
|
token: ${{ secrets.FLATHUB_TOKEN }}
|
||||||
|
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
path: spotube
|
path: spotube
|
||||||
|
|
||||||
@ -50,7 +50,7 @@ jobs:
|
|||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
if: contains(inputs.jobs, 'aur')
|
if: contains(inputs.jobs, 'aur')
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- uses: dsaltares/fetch-gh-release-asset@master
|
- uses: dsaltares/fetch-gh-release-asset@master
|
||||||
with:
|
with:
|
||||||
|
177
.github/workflows/spotube-release-binary.yml
vendored
@ -4,7 +4,7 @@ on:
|
|||||||
inputs:
|
inputs:
|
||||||
version:
|
version:
|
||||||
description: Version to release (x.x.x)
|
description: Version to release (x.x.x)
|
||||||
default: 3.0.0
|
default: 3.4.1
|
||||||
required: true
|
required: true
|
||||||
channel:
|
channel:
|
||||||
type: choice
|
type: choice
|
||||||
@ -26,14 +26,14 @@ on:
|
|||||||
default: true
|
default: true
|
||||||
|
|
||||||
env:
|
env:
|
||||||
FLUTTER_VERSION: '3.10.0'
|
FLUTTER_VERSION: '3.16.3'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
windows:
|
windows:
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: subosito/flutter-action@v2.10.0
|
- uses: subosito/flutter-action@v2.12.0
|
||||||
with:
|
with:
|
||||||
cache: true
|
cache: true
|
||||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
flutter-version: ${{ env.FLUTTER_VERSION }}
|
||||||
@ -87,23 +87,27 @@ jobs:
|
|||||||
make choco
|
make choco
|
||||||
mv dist/spotube.*.nupkg dist/Spotube-windows-x86_64.nupkg
|
mv dist/spotube.*.nupkg dist/Spotube-windows-x86_64.nupkg
|
||||||
|
|
||||||
|
|
||||||
|
- name: Upload Artifact
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
if-no-files-found: error
|
||||||
|
name: Spotube-Release-Binaries
|
||||||
|
path: |
|
||||||
|
dist/Spotube-windows-x86_64.nupkg
|
||||||
|
dist/Spotube-windows-x86_64-setup.exe
|
||||||
|
|
||||||
- name: Debug With SSH When fails
|
- name: Debug With SSH When fails
|
||||||
if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }}
|
if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }}
|
||||||
uses: mxschmitt/action-tmate@v3
|
uses: mxschmitt/action-tmate@v3
|
||||||
with:
|
with:
|
||||||
limit-access-to-actor: true
|
limit-access-to-actor: true
|
||||||
|
|
||||||
- name: Upload Artifact
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: Spotube-Release-Binaries
|
|
||||||
path: dist/
|
|
||||||
|
|
||||||
linux:
|
linux:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: subosito/flutter-action@v2.10.0
|
- uses: subosito/flutter-action@v2.12.0
|
||||||
with:
|
with:
|
||||||
cache: true
|
cache: true
|
||||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
flutter-version: ${{ env.FLUTTER_VERSION }}
|
||||||
@ -159,23 +163,31 @@ jobs:
|
|||||||
dart pub global activate flutter_distributor
|
dart pub global activate flutter_distributor
|
||||||
alias dpkg-deb="dpkg-deb --Zxz"
|
alias dpkg-deb="dpkg-deb --Zxz"
|
||||||
flutter_distributor package --platform=linux --targets=deb
|
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=rpm
|
||||||
|
|
||||||
- name: Create tar.xz (stable)
|
- name: Create tar.xz (stable)
|
||||||
if: ${{ inputs.channel == 'stable' }}
|
if: ${{ inputs.channel == 'stable' }}
|
||||||
run: make tar VERSION=${{ env.BUILD_VERSION }}
|
run: make tar VERSION=${{ env.BUILD_VERSION }} ARCH=x64 PKG_ARCH=x86_64
|
||||||
|
|
||||||
- name: Create tar.xz (nightly)
|
- name: Create tar.xz (nightly)
|
||||||
if: ${{ inputs.channel == 'nightly' }}
|
if: ${{ inputs.channel == 'nightly' }}
|
||||||
run: make tar VERSION=nightly
|
run: make tar VERSION=nightly ARCH=x64 PKG_ARCH=x86_64
|
||||||
|
|
||||||
- name: Move Files to dist
|
- name: Move Files to dist
|
||||||
run: |
|
run: |
|
||||||
mv build/spotube-linux-*-x86_64.tar.xz dist/
|
mv build/spotube-linux-*-x86_64.tar.xz dist/
|
||||||
mv dist/**/spotube-*-linux.deb dist/Spotube-linux-x86_64.deb
|
mv dist/**/spotube-*-linux.deb dist/Spotube-linux-x86_64.deb
|
||||||
mv dist/**/spotube-*-linux.rpm dist/Spotube-linux-x86_64.rpm
|
mv dist/**/spotube-*-linux.rpm dist/Spotube-linux-x86_64.rpm
|
||||||
mv dist/**/spotube-*-linux.AppImage dist/Spotube-linux-x86_64.AppImage
|
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
if-no-files-found: error
|
||||||
|
name: Spotube-Release-Binaries
|
||||||
|
path: |
|
||||||
|
dist/Spotube-linux-x86_64.deb
|
||||||
|
dist/Spotube-linux-x86_64.rpm
|
||||||
|
dist/spotube-linux-${{ env.BUILD_VERSION }}-x86_64.tar.xz
|
||||||
|
|
||||||
- name: Debug With SSH When fails
|
- name: Debug With SSH When fails
|
||||||
if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }}
|
if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }}
|
||||||
@ -183,16 +195,12 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
limit-access-to-actor: true
|
limit-access-to-actor: true
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: Spotube-Release-Binaries
|
|
||||||
path: dist/
|
|
||||||
|
|
||||||
android:
|
android:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: subosito/flutter-action@v2.10.0
|
- uses: subosito/flutter-action@v2.12.0
|
||||||
with:
|
with:
|
||||||
cache: true
|
cache: true
|
||||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
flutter-version: ${{ env.FLUTTER_VERSION }}
|
||||||
@ -235,10 +243,8 @@ jobs:
|
|||||||
|
|
||||||
- name: Build Apk
|
- name: Build Apk
|
||||||
run: |
|
run: |
|
||||||
flutter build apk
|
flutter build apk --flavor ${{ inputs.channel }}
|
||||||
flutter build appbundle
|
mv build/app/outputs/flutter-apk/app-${{ inputs.channel }}-release.apk build/Spotube-android-all-arch.apk
|
||||||
mv build/app/outputs/apk/release/app-release.apk build/Spotube-android-all-arch.apk
|
|
||||||
mv build/app/outputs/bundle/release/app-release.aab build/Spotube-playstore-all-arch.aab
|
|
||||||
|
|
||||||
- name: Build Playstore AppBundle
|
- name: Build Playstore AppBundle
|
||||||
run: |
|
run: |
|
||||||
@ -247,8 +253,17 @@ jobs:
|
|||||||
export MANIFEST=android/app/src/main/AndroidManifest.xml
|
export MANIFEST=android/app/src/main/AndroidManifest.xml
|
||||||
xmlstarlet ed -d '//meta-data[@android:name="com.google.android.gms.car.application"]' $MANIFEST > $MANIFEST.tmp
|
xmlstarlet ed -d '//meta-data[@android:name="com.google.android.gms.car.application"]' $MANIFEST > $MANIFEST.tmp
|
||||||
mv $MANIFEST.tmp $MANIFEST
|
mv $MANIFEST.tmp $MANIFEST
|
||||||
flutter build appbundle
|
flutter build appbundle --flavor ${{ inputs.channel }}
|
||||||
mv build/app/outputs/bundle/release/app-release.aab build/Spotube-playstore-all-arch.aab
|
mv build/app/outputs/bundle/${{ inputs.channel }}Release/app-${{ inputs.channel }}-release.aab build/Spotube-playstore-all-arch.aab
|
||||||
|
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
if-no-files-found: error
|
||||||
|
name: Spotube-Release-Binaries
|
||||||
|
path: |
|
||||||
|
build/Spotube-android-all-arch.apk
|
||||||
|
build/Spotube-playstore-all-arch.aab
|
||||||
|
|
||||||
- name: Debug With SSH When fails
|
- name: Debug With SSH When fails
|
||||||
if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }}
|
if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }}
|
||||||
@ -256,17 +271,76 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
limit-access-to-actor: true
|
limit-access-to-actor: true
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: Spotube-Release-Binaries
|
|
||||||
path: |
|
|
||||||
build/Spotube-android-all-arch.apk
|
|
||||||
build/Spotube-playstore-all-arch.aab
|
|
||||||
|
|
||||||
macos:
|
macos:
|
||||||
|
|
||||||
runs-on: macos-12
|
runs-on: macos-12
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
- uses: subosito/flutter-action@v2.12.0
|
||||||
|
with:
|
||||||
|
cache: true
|
||||||
|
flutter-version: ${{ env.FLUTTER_VERSION }}
|
||||||
|
|
||||||
|
- name: Replace pubspec version and BUILD_VERSION Env (nightly)
|
||||||
|
if: ${{ inputs.channel == 'nightly' }}
|
||||||
|
run: |
|
||||||
|
brew install yq
|
||||||
|
yq -i '.version |= sub("\+\d+", "+${{ inputs.channel }}.")' pubspec.yaml
|
||||||
|
yq -i '.version += strenv(GITHUB_RUN_NUMBER)' pubspec.yaml
|
||||||
|
echo "BUILD_VERSION=${{ inputs.version }}+${{ inputs.channel }}.${{ github.run_number }}" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: BUILD_VERSION Env (stable)
|
||||||
|
if: ${{ inputs.channel == 'stable' }}
|
||||||
|
run: |
|
||||||
|
echo "BUILD_VERSION=${{ inputs.version }}" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Create Stable .env
|
||||||
|
if: ${{ inputs.channel == 'stable' }}
|
||||||
|
run: echo '${{ secrets.DOTENV_RELEASE }}' > .env
|
||||||
|
|
||||||
|
- name: Create Nightly .env
|
||||||
|
if: ${{ inputs.channel == 'nightly' }}
|
||||||
|
run: echo '${{ secrets.DOTENV_NIGHTLY }}' > .env
|
||||||
|
|
||||||
|
- name: Generate Secrets
|
||||||
|
run: |
|
||||||
|
dart pub global activate flutter_distributor
|
||||||
|
flutter pub get
|
||||||
|
dart run build_runner build --delete-conflicting-outputs --enable-experiment=records,patterns
|
||||||
|
|
||||||
|
- name: Build Macos App
|
||||||
|
run: |
|
||||||
|
flutter config --enable-macos-desktop
|
||||||
|
flutter build macos
|
||||||
|
du -sh build/macos/Build/Products/Release/spotube.app
|
||||||
|
|
||||||
|
- name: Package Macos App
|
||||||
|
run: |
|
||||||
|
python3 -m pip install setuptools
|
||||||
|
npm install -g appdmg
|
||||||
|
mkdir -p build/${{ env.BUILD_VERSION }}
|
||||||
|
appdmg appdmg.json build/Spotube-macos-universal.dmg
|
||||||
|
flutter_distributor package --platform=macos --targets pkg --skip-clean
|
||||||
|
mv dist/**/spotube-*-macos.pkg build/Spotube-macos-universal.pkg
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
if-no-files-found: error
|
||||||
|
name: Spotube-Release-Binaries
|
||||||
|
path: |
|
||||||
|
build/Spotube-macos-universal.dmg
|
||||||
|
build/Spotube-macos-universal.pkg
|
||||||
|
|
||||||
|
- name: Debug With SSH When fails
|
||||||
|
if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }}
|
||||||
|
uses: mxschmitt/action-tmate@v3
|
||||||
|
with:
|
||||||
|
limit-access-to-actor: true
|
||||||
|
|
||||||
|
iOS:
|
||||||
|
runs-on: macos-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
- uses: subosito/flutter-action@v2.10.0
|
- uses: subosito/flutter-action@v2.10.0
|
||||||
with:
|
with:
|
||||||
cache: true
|
cache: true
|
||||||
@ -296,40 +370,36 @@ jobs:
|
|||||||
- name: Generate Secrets
|
- name: Generate Secrets
|
||||||
run: |
|
run: |
|
||||||
flutter pub get
|
flutter pub get
|
||||||
flutter pub remove media_kit_native_event_loop
|
|
||||||
dart run build_runner build --delete-conflicting-outputs --enable-experiment=records,patterns
|
dart run build_runner build --delete-conflicting-outputs --enable-experiment=records,patterns
|
||||||
|
|
||||||
- name: Build Macos App
|
- name: Build iOS iPA
|
||||||
run: |
|
run: |
|
||||||
flutter config --enable-macos-desktop
|
flutter build ios --release --no-codesign --flavor ${{ inputs.channel }}
|
||||||
flutter build macos
|
ln -sf ./build/ios/iphoneos Payload
|
||||||
du -sh build/macos/Build/Products/Release/spotube.app
|
zip -r9 Spotube-iOS.ipa Payload/${{ inputs.channel }}.app
|
||||||
|
|
||||||
- name: Package Macos App
|
- uses: actions/upload-artifact@v3
|
||||||
run: |
|
with:
|
||||||
npm install -g appdmg
|
if-no-files-found: error
|
||||||
mkdir -p build/${{ env.BUILD_VERSION }}
|
name: Spotube-Release-Binaries
|
||||||
appdmg appdmg.json build/Spotube-macos-universal.dmg
|
path: |
|
||||||
|
Spotube-iOS.ipa
|
||||||
|
|
||||||
- name: Debug With SSH When fails
|
- name: Debug With SSH When fails
|
||||||
if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }}
|
if: ${{ failure() && inputs.debug && inputs.channel == 'nightly' }}
|
||||||
uses: mxschmitt/action-tmate@v3
|
uses: mxschmitt/action-tmate@v3
|
||||||
with:
|
with:
|
||||||
limit-access-to-actor: true
|
limit-access-to-actor: true
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: Spotube-Release-Binaries
|
|
||||||
path: |
|
|
||||||
build/Spotube-macos-universal.dmg
|
|
||||||
|
|
||||||
upload:
|
upload:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
needs:
|
needs:
|
||||||
- windows
|
- windows
|
||||||
- linux
|
- linux
|
||||||
- android
|
- android
|
||||||
- macos
|
- macos
|
||||||
|
- iOS
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/download-artifact@v3
|
- uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
@ -348,6 +418,7 @@ jobs:
|
|||||||
|
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
|
if-no-files-found: error
|
||||||
name: Spotube-Release-Binaries
|
name: Spotube-Release-Binaries
|
||||||
path: |
|
path: |
|
||||||
RELEASE.md5sum
|
RELEASE.md5sum
|
||||||
|
12
.vscode/launch.json
vendored
@ -5,7 +5,17 @@
|
|||||||
"name": "spotube",
|
"name": "spotube",
|
||||||
"type": "dart",
|
"type": "dart",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"program": "lib/main.dart"
|
"program": "lib/main.dart",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "spotube (mobile)",
|
||||||
|
"type": "dart",
|
||||||
|
"request": "launch",
|
||||||
|
"program": "lib/main.dart",
|
||||||
|
"args": [
|
||||||
|
"--flavor",
|
||||||
|
"dev"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "spotube (profile)",
|
"name": "spotube (profile)",
|
||||||
|
31
.vscode/settings.json
vendored
@ -1,13 +1,20 @@
|
|||||||
{
|
{
|
||||||
"cmake.configureOnOpen": false,
|
"cmake.configureOnOpen": false,
|
||||||
"cSpell.words": [
|
"cSpell.words": [
|
||||||
"acousticness",
|
"acousticness",
|
||||||
"danceability",
|
"danceability",
|
||||||
"instrumentalness",
|
"instrumentalness",
|
||||||
"Mpris",
|
"Mpris",
|
||||||
"riverpod",
|
"riverpod",
|
||||||
"speechiness",
|
"Scrobblenaut",
|
||||||
"Spotube",
|
"speechiness",
|
||||||
"winget"
|
"Spotube",
|
||||||
]
|
"winget"
|
||||||
}
|
],
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"explorer.fileNesting.enabled": true,
|
||||||
|
"explorer.fileNesting.patterns": {
|
||||||
|
"pubspec.yaml": "pubspec.lock,analysis_options.yaml,.packages,.flutter-plugins,.flutter-plugins-dependencies,flutter_launcher_icons*.yaml,flutter_native_splash*.yaml",
|
||||||
|
"README.md": "LICENSE,CODE_OF_CONDUCT.md,CONTRIBUTING.md,SECURITY.md,CONTRIBUTION.md,CHANGELOG.md,PRIVACY_POLICY.md",
|
||||||
|
}
|
||||||
|
}
|
183
CHANGELOG.md
@ -2,6 +2,189 @@
|
|||||||
|
|
||||||
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.
|
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.4.1](https://personal.github.com/krtirtho/spotube/compare/v3.4.0...v3.4.1) (2024-01-27)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add create playlist button in add playlist dialog ([2168a64](https://personal.github.com/krtirtho/spotube/commit/2168a640af3104a43139c303d78e2c2326a1bda7))
|
||||||
|
* add spotify friends activity ([#1130](https://personal.github.com/krtirtho/spotube/issues/1130)) ([7983932](https://personal.github.com/krtirtho/spotube/commit/79839329b0970acccb0c566a31eee508adbc8557))
|
||||||
|
* **deep-link:** add track opening page ([988a975](https://personal.github.com/krtirtho/spotube/commit/988a975bf1a675df0cfc7b17776bcec74c67f1f2))
|
||||||
|
* haptic feedback on long press and reordering actions ([6242200](https://personal.github.com/krtirtho/spotube/commit/624220090572eb643dce37ca8ffd85d2b3f5c9df))
|
||||||
|
* improve youtube/piped matching by suffixing "- Topic" ([8184555](https://personal.github.com/krtirtho/spotube/commit/8184555ee89fd30aaf886af9fc1d52c142fdebb0))
|
||||||
|
* **translations:** add Nepali (नेपाली) translations ([#1111](https://personal.github.com/krtirtho/spotube/issues/1111)) ([c3ebf56](https://personal.github.com/krtirtho/spotube/commit/c3ebf56ac149b0af8815a5533fe6c386df743440)), closes [#1074](https://personal.github.com/krtirtho/spotube/issues/1074) [#1100](https://personal.github.com/krtirtho/spotube/issues/1100)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* alternative searched sources doesn't play [#1059](https://personal.github.com/krtirtho/spotube/issues/1059) ([a8e9b82](https://personal.github.com/krtirtho/spotube/commit/a8e9b824f33add8f6a83f0d147e889eb6beeb442))
|
||||||
|
* alternative source doesn't persist on next restart [#840](https://personal.github.com/krtirtho/spotube/issues/840) ([62fde50](https://personal.github.com/krtirtho/spotube/commit/62fde50442f04f93255b5b1b1dcca23d116a13ec))
|
||||||
|
* **android:** download failing for permission issues [#1015](https://personal.github.com/krtirtho/spotube/issues/1015) ([5509cae](https://personal.github.com/krtirtho/spotube/commit/5509cae91c8b1f5cb9fac179060f477397a4a27f))
|
||||||
|
* artist page error [#1018](https://personal.github.com/krtirtho/spotube/issues/1018) ([8cd650b](https://personal.github.com/krtirtho/spotube/commit/8cd650b07e5f4c4c2f296bf4374e5ee67fb3eb50))
|
||||||
|
* audio resumes after a phone call even if it was paused before [#926](https://personal.github.com/krtirtho/spotube/issues/926) ([fd1899f](https://personal.github.com/krtirtho/spotube/commit/fd1899f162395752142d7aa7320d1c39b0995070))
|
||||||
|
* better error message for failing to find lyrics [#1085](https://personal.github.com/krtirtho/spotube/issues/1085) ([e58e18d](https://personal.github.com/krtirtho/spotube/commit/e58e18de33d7bc6fb0e4ddd7ccf6ea14472642b1))
|
||||||
|
* Black window flash when starting the app ([#1003](https://personal.github.com/krtirtho/spotube/issues/1003)) ([02e44fc](https://personal.github.com/krtirtho/spotube/commit/02e44fc6b849a873adad382f5d46ed8caf32359f))
|
||||||
|
* **linux:** crash after login ([0dfd401](https://personal.github.com/krtirtho/spotube/commit/0dfd40153714b7a4b83ac30f0c56830bc0c05ffd))
|
||||||
|
* **macos:** backbutton and window button overlap and unused empty space on home ([b9417ca](https://personal.github.com/krtirtho/spotube/commit/b9417ca3575992673357230dab49e0124dd576b1))
|
||||||
|
* **macos:** download folder unchangeable ([9d74cf5](https://personal.github.com/krtirtho/spotube/commit/9d74cf5fc250a6a143321d49b8e045519b4c2872))
|
||||||
|
* **macos:** Respect Minimize to tray option ([#1001](https://personal.github.com/krtirtho/spotube/issues/1001)) ([69559ba](https://personal.github.com/krtirtho/spotube/commit/69559ba24285636e42b2f2231f956c31388c5cf3))
|
||||||
|
* **macos:** system tray shows name and sidebar weird gap [#1083](https://personal.github.com/krtirtho/spotube/issues/1083) ([27057ea](https://personal.github.com/krtirtho/spotube/commit/27057ea0c8d83c9701057c18b473f1af4e4e82be))
|
||||||
|
* releases section is empty when user doesn't follow any artists [#1104](https://personal.github.com/krtirtho/spotube/issues/1104) ([682e88e](https://personal.github.com/krtirtho/spotube/commit/682e88e0c55bc0f4708bc0b4681b129e5c61c999))
|
||||||
|
* search page vertical scrollbar moves on horizontal scroll [#1017](https://personal.github.com/krtirtho/spotube/issues/1017) ([c203ac6](https://personal.github.com/krtirtho/spotube/commit/c203ac69ee74ba8722dae3da4b47761cd8d59c34))
|
||||||
|
* songs doesn't play when sources with preferred audio codec is empty ([#976](https://personal.github.com/krtirtho/spotube/issues/976)) ([ba4e11a](https://personal.github.com/krtirtho/spotube/commit/ba4e11a40ab18308437a05333a46eace6f8eeb5a))
|
||||||
|
* track index not showing after 200 ([a752cf4](https://personal.github.com/krtirtho/spotube/commit/a752cf4c978d1b05851aabb6c84c7862de551320))
|
||||||
|
* track pad horizontal scrolling not working ([59e0e6b](https://personal.github.com/krtirtho/spotube/commit/59e0e6bb659b70831f6e0ae064100381c57f149c))
|
||||||
|
|
||||||
|
## [3.4.0](https://github.com/KRTirtho/spotube/compare/v3.3.0...v3.4.0) (2023-12-30)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* Add Go to Album option in track option [#917](https://github.com/KRTirtho/spotube/issues/917) ([b0beeca](https://github.com/KRTirtho/spotube/commit/b0beeca0cbaf810fae27832cff98cfda95715050))
|
||||||
|
* **translations:** add Italian language translations ([#818](https://github.com/KRTirtho/spotube/issues/818)) ([e4eb0e2](https://github.com/KRTirtho/spotube/commit/e4eb0e2596ade2bb5195e183f03af42742fc8486)), closes [#676](https://github.com/KRTirtho/spotube/issues/676) [#676](https://github.com/KRTirtho/spotube/issues/676)
|
||||||
|
* compact genre view in home page ([82ed5e9](https://github.com/KRTirtho/spotube/commit/82ed5e90576b57ef32e61a65015e04862ab15461))
|
||||||
|
* Deep link support ([#950](https://github.com/KRTirtho/spotube/issues/950)) ([4050f55](https://github.com/KRTirtho/spotube/commit/4050f556400aaec5515231578512cf1a6b990110))
|
||||||
|
* improve loading animations ([b92583d](https://github.com/KRTirtho/spotube/commit/b92583d0df7b8dee0d121cd2bb666b14c77d8c86))
|
||||||
|
* toggle for discord rpc ([24a2294](https://github.com/KRTirtho/spotube/commit/24a2294512bb0c4aff77bc8dcad9b4de3e8b45c6))
|
||||||
|
* **translations:** add Dutch Language ([#969](https://github.com/KRTirtho/spotube/issues/969)) ([3ad7ba6](https://github.com/KRTirtho/spotube/commit/3ad7ba66b56e93e69d2181d47029b7549ed225fc))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* add safe area in home ([9ee6067](https://github.com/KRTirtho/spotube/commit/9ee60677f6d50df7468e12dc6653ecedefa2494f))
|
||||||
|
* amoled mode and color scheme can't be changed ([840e014](https://github.com/KRTirtho/spotube/commit/840e014f2b18f193d040baef0e0cd595088a4a84))
|
||||||
|
* doesn't minimize to tray when system title bar close button is used [#866](https://github.com/KRTirtho/spotube/issues/866) ([bb8f250](https://github.com/KRTirtho/spotube/commit/bb8f250f5f351c1a353791b77b25b9de7586191f))
|
||||||
|
* genre border issues ([2fb16e6](https://github.com/KRTirtho/spotube/commit/2fb16e64e9cdfca54d633cdf287b0544ecdda3b6))
|
||||||
|
* Incorrect "Artist" label/heading on Search Results Page [#920](https://github.com/KRTirtho/spotube/issues/920) ([f86d544](https://github.com/KRTirtho/spotube/commit/f86d5449168068e338f769d7f504d2146b86dc79))
|
||||||
|
* metadata not getting added for YouTube tracks [#916](https://github.com/KRTirtho/spotube/issues/916) and Wrong duration of downloaded tracks [#912](https://github.com/KRTirtho/spotube/issues/912) ([a7b9398](https://github.com/KRTirtho/spotube/commit/a7b9398708ede865dc2c25fb791c8e98eeff7a38))
|
||||||
|
* Playlist refresh not working [#915](https://github.com/KRTirtho/spotube/issues/915) ([5f1df5a](https://github.com/KRTirtho/spotube/commit/5f1df5a87d8fb7980b52cf57b7b6bedea57a1269))
|
||||||
|
* track view header title overflow and player view drag glitch ([b04d884](https://github.com/KRTirtho/spotube/commit/b04d8849e7169824ec5b980236b5d61b2629f56e))
|
||||||
|
* wrong artist name sent while scrobbling [#958](https://github.com/KRTirtho/spotube/issues/958) ([dcbe729](https://github.com/KRTirtho/spotube/commit/dcbe7294b742d43fbff4e89ab4c4825e94421dd9))
|
||||||
|
|
||||||
|
## [3.3.0](https://github.com/KRTirtho/spotube/compare/v3.2.0...v3.3.0) (2023-11-27)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* Add JioSaavn as audio source ([#881](https://github.com/KRTirtho/spotube/issues/881)) ([14069cd](https://github.com/KRTirtho/spotube/commit/14069cd4fe08597c8d9aa0810270fb4c386c1d55))
|
||||||
|
* **android:** better quick scroll/drag to scroll implementation ([2e2c44f](https://github.com/KRTirtho/spotube/commit/2e2c44f0afef69bf9bc485db97d45127a0847c8e))
|
||||||
|
* **artist:** modularize page and add wikipedia section ([2a69886](https://github.com/KRTirtho/spotube/commit/2a698865567883271471ace9a44123bbfd8fcd2f))
|
||||||
|
* discord RPC integration [#98](https://github.com/KRTirtho/spotube/issues/98) ([88b8785](https://github.com/KRTirtho/spotube/commit/88b8785cb86a19900f3a867b044c1ccb2fe400bb))
|
||||||
|
* **mini_player:** show/hide lyrics [#851](https://github.com/KRTirtho/spotube/issues/851) ([dcbb156](https://github.com/KRTirtho/spotube/commit/dcbb1568337969841acc0abe0e7185ee5e4c3590))
|
||||||
|
* paginated playlist and album page ([28a5d6b](https://github.com/KRTirtho/spotube/commit/28a5d6bb3820ab0bd4007664f73d685f6e1d2c90))
|
||||||
|
* **translations:** add Turkish translations ([0c22469](https://github.com/KRTirtho/spotube/commit/0c22469503f32dbbf1a5d31419c1b76c699fa966))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* "Add () to Playlist" option not showing in favorited playlists [#904](https://github.com/KRTirtho/spotube/issues/904) ([96021e1](https://github.com/KRTirtho/spotube/commit/96021e1a49d22bd25fd052c122f49f439c2bea43))
|
||||||
|
* 0:00 media duration in queue after application restart [#782](https://github.com/KRTirtho/spotube/issues/782) ([83c0b49](https://github.com/KRTirtho/spotube/commit/83c0b49da962d9f3d40de9525f90f0b320e8f7b8))
|
||||||
|
* Add to Playlist Dialog memory leak [#817](https://github.com/KRTirtho/spotube/issues/817) ([fed36ec](https://github.com/KRTirtho/spotube/commit/fed36ecdd81e8a0f8358693eff0a6233dea32e5d))
|
||||||
|
* **album_card:** show loading state during adding track to queue/play ([5633367](https://github.com/KRTirtho/spotube/commit/5633367397812148f6d712d06e97a4f84033f968))
|
||||||
|
* alternative track source safearea overflow [#876](https://github.com/KRTirtho/spotube/issues/876) ([7b72a90](https://github.com/KRTirtho/spotube/commit/7b72a90bc65b541cbe2e24ef2234524b522ad71d))
|
||||||
|
* android invalid download location Download not starting or not explaining error [#720](https://github.com/KRTirtho/spotube/issues/720) ([d056dbf](https://github.com/KRTirtho/spotube/commit/d056dbf9eeef7033dbc012d0c05800063e820042))
|
||||||
|
* changed settings are not persisting after force stop [#821](https://github.com/KRTirtho/spotube/issues/821) ([e29a38d](https://github.com/KRTirtho/spotube/commit/e29a38dfa43ddf7a38046d1d40424f01dbe62261))
|
||||||
|
* check for unsynced lyrics and error handling for timed lyrics query ([1d77556](https://github.com/KRTirtho/spotube/commit/1d77556157d158600f29cf2ea5f26c567607dec7))
|
||||||
|
* **genres:** lag while scrolling ([dc980b0](https://github.com/KRTirtho/spotube/commit/dc980b024edad3132e72cbb2f0087297a4b76469))
|
||||||
|
* infinite list disappearing for a moment everytime new page is fetched ([1334a62](https://github.com/KRTirtho/spotube/commit/1334a62aaea31f97031b3ebf455e94c583f37314))
|
||||||
|
* last track of queue keeps repeating [#718](https://github.com/KRTirtho/spotube/issues/718) ([58e5698](https://github.com/KRTirtho/spotube/commit/58e569864dddd74c3064624998dfc184046e97eb))
|
||||||
|
* Navigating to settings, redirects to home page [#812](https://github.com/KRTirtho/spotube/issues/812) ([da04f06](https://github.com/KRTirtho/spotube/commit/da04f068f9b7effff8d50cb5714d93ea80c22b7f))
|
||||||
|
* new releases section flickering on scroll glitch ([ee94b7c](https://github.com/KRTirtho/spotube/commit/ee94b7cbb24e0f0bc22a6d49c830d4055aa02895))
|
||||||
|
* **playbutton_card:** annoying animation ([574406d](https://github.com/KRTirtho/spotube/commit/574406dd5fc410914b27e7fce374323696845012))
|
||||||
|
* scrobbling not working for first track or single track ([0a6b54d](https://github.com/KRTirtho/spotube/commit/0a6b54da367345b73fe6e954f1d9368d9f9ead71))
|
||||||
|
* settings page scrollbar position ([ee82290](https://github.com/KRTirtho/spotube/commit/ee8229020b3b03fc074b316db4b322af13b807bd))
|
||||||
|
* shuffle doesn't move active track to top ([4956bf3](https://github.com/KRTirtho/spotube/commit/4956bf367baae39c88b5de7c6c136513a14f8ad2))
|
||||||
|
* spotube doesn't exit properly, hangs in infinite loop [#768](https://github.com/KRTirtho/spotube/issues/768) ([353ca79](https://github.com/KRTirtho/spotube/commit/353ca79be334077c3ac27b4f64e8b4b15eca7175))
|
||||||
|
* trim login field padding ([286ef83](https://github.com/KRTirtho/spotube/commit/286ef83e8ec516db70019398d9e3e724437a4172))
|
||||||
|
* use CustomScrollView for personalized page ([7d05c40](https://github.com/KRTirtho/spotube/commit/7d05c40dc0d04208b059f2483c1e4de199c8b51d))
|
||||||
|
* user_playlists layout, track tile index, ([487c2ed](https://github.com/KRTirtho/spotube/commit/487c2ed6bdc4af33006ba52532eb4eaaa261dceb))
|
||||||
|
* **windows:** media control not working [#641](https://github.com/KRTirtho/spotube/issues/641) ([7818574](https://github.com/KRTirtho/spotube/commit/7818574356d0fb8ff567e1f6a83fd0b6f2ee7c8a))
|
||||||
|
|
||||||
|
## [3.2.0](https://github.com/KRTirtho/spotube/compare/v3.1.2...v3.2.0) (2023-10-16)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* ability to select/copy lyrics [#802](https://github.com/KRTirtho/spotube/issues/802) ([0eb9ee8](https://github.com/KRTirtho/spotube/commit/0eb9ee8648bee43a8009e6752674b1be646c0916))
|
||||||
|
* add Amoled theme [#724](https://github.com/KRTirtho/spotube/issues/724) ([5c5dbf6](https://github.com/KRTirtho/spotube/commit/5c5dbf69ecea95c92d3c3900ad690a500d75b4e2))
|
||||||
|
* add audio normalization [#164](https://github.com/KRTirtho/spotube/issues/164) ([da10ab2](https://github.com/KRTirtho/spotube/commit/da10ab2e291d4ba4d3082b9a6ae535639fb8f1b7))
|
||||||
|
* add restore default settings button ([94c3866](https://github.com/KRTirtho/spotube/commit/94c386638f2e5a42d21c8f157835443333ee6d5c))
|
||||||
|
* configurable audio normalization switch ([c325911](https://github.com/KRTirtho/spotube/commit/c325911c0d87758a203a52df02179c1513bad3fd))
|
||||||
|
* customizable stream/download file formats ([#757](https://github.com/KRTirtho/spotube/issues/757)) ([e54762b](https://github.com/KRTirtho/spotube/commit/e54762be6add6524ab614d103fc3557a101c75f4))
|
||||||
|
* improve and unify the logging framework ([#738](https://github.com/KRTirtho/spotube/issues/738)) ([c7432bb](https://github.com/KRTirtho/spotube/commit/c7432bbd986d576a93957f0a22bdbca5c1e87f20))
|
||||||
|
* LastFM scrobbling support ([#761](https://github.com/KRTirtho/spotube/issues/761)) ([f5bd907](https://github.com/KRTirtho/spotube/commit/f5bd90731d9abc19d684c8bcb231eff399e73023))
|
||||||
|
* loading indicator for genre and personalized pages ([ffe8d9c](https://github.com/KRTirtho/spotube/commit/ffe8d9ca6da25cb3e6fd2c781d5ed3a7b919510e))
|
||||||
|
* manual offline detection ([854ab89](https://github.com/KRTirtho/spotube/commit/854ab8910dffb2837c011d3439173a1f0ebe9c6c))
|
||||||
|
* show error dialog on failed to login ([101c325](https://github.com/KRTirtho/spotube/commit/101c32523d3be8c05527261f6f63f939d388ad79))
|
||||||
|
* sliding up player support ([083319f](https://github.com/KRTirtho/spotube/commit/083319fd2445ab179e3dcda0a6aeaca6f13dda29))
|
||||||
|
* swipe to open player view ([#765](https://github.com/KRTirtho/spotube/issues/765)) ([9aee056](https://github.com/KRTirtho/spotube/commit/9aee0568bf42eed9fea8d517e960a010abf0ebf2))
|
||||||
|
* thicken the scrollbars & make 'em interactive for mobile ([#764](https://github.com/KRTirtho/spotube/issues/764)) ([84a4bcd](https://github.com/KRTirtho/spotube/commit/84a4bcd948ab459489aaf6f39d6954776c3401d7))
|
||||||
|
* **translations:** add Arabic Translations ([#740](https://github.com/KRTirtho/spotube/issues/740)) ([38493f9](https://github.com/KRTirtho/spotube/commit/38493f9dd75303890857a626c0b276ee1ab75bb2))
|
||||||
|
* **translations:** add Farsi Translations ([#760](https://github.com/KRTirtho/spotube/issues/760)) ([fe42cfe](https://github.com/KRTirtho/spotube/commit/fe42cfe8430035d9b67dd158fb7b835ee4071497))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* add libmpv1 for ubuntu-based systems ([#739](https://github.com/KRTirtho/spotube/issues/739)) ([5115e04](https://github.com/KRTirtho/spotube/commit/5115e041e78c20fce798a80f1d844bfc60746958))
|
||||||
|
* add xdg-user-dirs as deps ([f3e331e](https://github.com/KRTirtho/spotube/commit/f3e331ecf733995da24c9b907efc5ed4bd02ffdd))
|
||||||
|
* **android :** file_selector getDirectoryPath returns unusable content urls [#720](https://github.com/KRTirtho/spotube/issues/720) ([b3cf639](https://github.com/KRTirtho/spotube/commit/b3cf639ee2f970f4df9b394b260c3ad8a5732a9c))
|
||||||
|
* **android:** audio doesn't resume on interruption end ([15d466a](https://github.com/KRTirtho/spotube/commit/15d466a04538ec70c3a0c132f2baaaf8690f8d4e))
|
||||||
|
* **android:** system navigator back doesn't close player ([20d7092](https://github.com/KRTirtho/spotube/commit/20d70927c909347e84ffa8e456f8fab88d49d179))
|
||||||
|
* get rid of overflow errors & status bar dark color ([5bb8231](https://github.com/KRTirtho/spotube/commit/5bb8231782287faf75c778fadb3a03ac774d14f0))
|
||||||
|
* keyboard shortcuts changing route but not update sidebar ([2d93441](https://github.com/KRTirtho/spotube/commit/2d934411887bd104d8265236df5bf595c5ad2278))
|
||||||
|
* last track repeats ([ed6ca00](https://github.com/KRTirtho/spotube/commit/ed6ca006ce237ed8d509cde9ed47cd6ea3396b63))
|
||||||
|
* minor glitches ([e5d0aaf](https://github.com/KRTirtho/spotube/commit/e5d0aaf80d22b2291b6f7e7c5e18dd99ae1a7a82))
|
||||||
|
* not fetching all followed artists ([#759](https://github.com/KRTirtho/spotube/issues/759)) ([c09a572](https://github.com/KRTirtho/spotube/commit/c09a5729251d8df820442d55477455f78c19c52e))
|
||||||
|
* use audio_service_mpris plugin ([e29cc25](https://github.com/KRTirtho/spotube/commit/e29cc2578cab36729e235b117c1b5489c3452902))
|
||||||
|
* valid non-ASCII characters get removed from downloaded file name [#745](https://github.com/KRTirtho/spotube/issues/745) ([a7e102f](https://github.com/KRTirtho/spotube/commit/a7e102ffc726d00df369560ec9a7f742f9d387bb))
|
||||||
|
|
||||||
|
## [3.1.2](https://github.com/KRTirtho/spotube/compare/v3.1.1...v3.1.2) (2023-09-15)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **player_queue:** filtering track support ([d4f99ec](https://github.com/KRTirtho/spotube/commit/d4f99ec89927ea78f070707509ff3222ec402942))
|
||||||
|
* right click to open track option ([1540999](https://github.com/KRTirtho/spotube/commit/1540999f50d7ba78d9706d73127483b98d800d86))
|
||||||
|
* search loading animation ([b9d5c70](https://github.com/KRTirtho/spotube/commit/b9d5c70301dd33ec26332e5e9a456ce5bfe73da0))
|
||||||
|
* show loading indicator on play track ([d12ea48](https://github.com/KRTirtho/spotube/commit/d12ea48b97596205d6309012d561ce83e5cbc9c1))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* add missing dependency in debian package ([#704](https://github.com/KRTirtho/spotube/issues/704)) ([c987ea7](https://github.com/KRTirtho/spotube/commit/c987ea78414f094dead2c2b35ddf8ae83a70f2fe))
|
||||||
|
* hour not showing for tracks longer than 60 minutes ([#648](https://github.com/KRTirtho/spotube/issues/648)) ([de335f4](https://github.com/KRTirtho/spotube/commit/de335f48342e45a077d6c3202706ef48dfb0a326))
|
||||||
|
* liked tracks card play not working ([d3e1cef](https://github.com/KRTirtho/spotube/commit/d3e1cef8a21ef7d64e74ca4e99b4b57b653b60a7))
|
||||||
|
* limit cover image upload to allowed 256kb size ([1c50612](https://github.com/KRTirtho/spotube/commit/1c50612559a78dce9c108f7e7b816d1b84540fe4))
|
||||||
|
* playlist grey page ([#707](https://github.com/KRTirtho/spotube/issues/707)) ([0df8d9c](https://github.com/KRTirtho/spotube/commit/0df8d9cacee718fbb4cf3ec7b950b489630f3145))
|
||||||
|
* rewind breaks track progress bar ([#695](https://github.com/KRTirtho/spotube/issues/695)) ([e321743](https://github.com/KRTirtho/spotube/commit/e3217436c9985b86c68dab93ea65ee414b32fb49))
|
||||||
|
* Windows memory leak due refetchOnStale user-liked-tracks ([#705](https://github.com/KRTirtho/spotube/issues/705)) ([142dc49](https://github.com/KRTirtho/spotube/commit/142dc498f8f9d26e6b370c9c52f790a20832fc38))
|
||||||
|
|
||||||
|
## [3.1.1](https://github.com/KRTirtho/spotube/compare/v3.1.0...v3.1.1) (2023-08-28)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* ability to toggle system title bar & custom title bar ([#185](https://github.com/KRTirtho/spotube/issues/185)) ([8d46029](https://github.com/KRTirtho/spotube/commit/8d4602962be20ea4bafc20db10eae1160f83ac52))
|
||||||
|
* jump to specific time on lyric click ([#590](https://github.com/KRTirtho/spotube/issues/590)) ([a14fb9e](https://github.com/KRTirtho/spotube/commit/a14fb9ec389822e5ffa0c537e162b87cbba34e6c))
|
||||||
|
* paginated user albums ([d239d64](https://github.com/KRTirtho/spotube/commit/d239d641ff8f1b3edd64243994fd4a58cf71a5d3))
|
||||||
|
* **translations:** add Russian translation ([#661](https://github.com/KRTirtho/spotube/issues/661)) ([e9a0911](https://github.com/KRTirtho/spotube/commit/e9a0911bfcea2374ee282aee738c12ad9ed93b02)), closes [#625](https://github.com/KRTirtho/spotube/issues/625)
|
||||||
|
* **translations:** added Portuguese (Brazil) translation ([#634](https://github.com/KRTirtho/spotube/issues/634)) ([76f30a0](https://github.com/KRTirtho/spotube/commit/76f30a0f20f2b09680d27525cde3d1c9617fad5a))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* always fetching SponsorBlock if no segments found & download failing ([6ced0a0](https://github.com/KRTirtho/spotube/commit/6ced0a0fad06f9f431636ca0fe5dae83eafe33ce))
|
||||||
|
* debian bookworm invalid dependencies ([633415d](https://github.com/KRTirtho/spotube/commit/633415dd3e702a38c5a7e7d7b3b1c2713d9c9cc9))
|
||||||
|
* disable android auto for playstore version :"( ([0f0d240](https://github.com/KRTirtho/spotube/commit/0f0d240c04d77db6f7c127d59ba8b331d5534469))
|
||||||
|
* infinite route push glitch ([e90eceb](https://github.com/KRTirtho/spotube/commit/e90eceb285a84028df690c25a687ff9b5168bba8))
|
||||||
|
* jump to track going to wrong track ([190df17](https://github.com/KRTirtho/spotube/commit/190df17adcf4c01cb2bcebfdec47908828b33816))
|
||||||
|
* last track of queue never plays & repeat playlist never works ([c3c09f5](https://github.com/KRTirtho/spotube/commit/c3c09f5b76c9547a306d15cd3768dacc1622876d))
|
||||||
|
* lyrics page text contrast ([179d536](https://github.com/KRTirtho/spotube/commit/179d536ccc10a5e63f11a63680a6e61c2d1314c8))
|
||||||
|
* replace connectivity_plus with internet_connection_checker ([f23e871](https://github.com/KRTirtho/spotube/commit/f23e8719eec7f5bed677ea866cb4bfab7aee5373))
|
||||||
|
* sanitize song title for file name ([#644](https://github.com/KRTirtho/spotube/issues/644)) ([1a7ea0c](https://github.com/KRTirtho/spotube/commit/1a7ea0ce6aae1a7cbe195f6b2fae7d99082bb828))
|
||||||
|
* sorting by date crashes app ([#551](https://github.com/KRTirtho/spotube/issues/551)) ([48e90a4](https://github.com/KRTirtho/spotube/commit/48e90a42294a6287cad65f840a7cc305988d34ff))
|
||||||
|
* window size remains same after exiting mini player ([#618](https://github.com/KRTirtho/spotube/issues/618)) ([fb36003](https://github.com/KRTirtho/spotube/commit/fb360035ade09c270b46a0c3b99ab1594ece07c0))
|
||||||
|
|
||||||
## [3.1.0](https://github.com/KRTirtho/spotube/compare/v3.0.1...v3.1.0) (2023-08-18)
|
## [3.1.0](https://github.com/KRTirtho/spotube/compare/v3.0.1...v3.1.0) (2023-08-18)
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,6 +25,7 @@ All types of contributions are encouraged and valued. See the [Table of Contents
|
|||||||
- [Before Submitting an Enhancement](#before-submitting-an-enhancement)
|
- [Before Submitting an Enhancement](#before-submitting-an-enhancement)
|
||||||
- [How Do I Submit a Good Enhancement Suggestion?](#how-do-i-submit-a-good-enhancement-suggestion)
|
- [How Do I Submit a Good Enhancement Suggestion?](#how-do-i-submit-a-good-enhancement-suggestion)
|
||||||
- [Your First Code Contribution](#your-first-code-contribution)
|
- [Your First Code Contribution](#your-first-code-contribution)
|
||||||
|
- [Submit translations](#submit-translations)
|
||||||
|
|
||||||
## Code of Conduct
|
## Code of Conduct
|
||||||
|
|
||||||
@ -118,20 +119,20 @@ Enhancement suggestions are tracked as [GitHub issues](https://github.com/KRTirt
|
|||||||
|
|
||||||
Do the following:
|
Do the following:
|
||||||
|
|
||||||
- Download the latest Flutter SDK (>=3.10.0) & enable desktop support
|
- Download the latest Flutter SDK (>=3.16.0) & enable desktop support
|
||||||
- Install Development dependencies in linux
|
- Install Development dependencies in linux
|
||||||
- Debian (>=12/Bookworm)/Ubuntu
|
- Debian (>=12/Bookworm)/Ubuntu
|
||||||
```bash
|
```bash
|
||||||
$ apt-get install mpv libmpv-dev libappindicator3-1 gir1.2-appindicator3-0.1 libappindicator3-dev libsecret-1-0 libjsoncpp25 libsecret-1-dev libjsoncpp-dev libnotify-bin libnotify-dev network-manager
|
$ apt-get install mpv libmpv-dev libappindicator3-1 gir1.2-appindicator3-0.1 libappindicator3-dev libsecret-1-0 libjsoncpp25 libsecret-1-dev libjsoncpp-dev libnotify-bin libnotify-dev
|
||||||
```
|
```
|
||||||
- Use `libjsoncpp1` instead of `libjsoncpp25` (for Ubuntu < 22.04)
|
- Use `libjsoncpp1` instead of `libjsoncpp25` (for Ubuntu < 22.04)
|
||||||
- Arch/Manjaro
|
- Arch/Manjaro
|
||||||
```bash
|
```bash
|
||||||
yay -S mpv libappindicator-gtk3 libsecret jsoncpp libnotify networkmanager
|
yay -S mpv libappindicator-gtk3 libsecret jsoncpp libnotify
|
||||||
```
|
```
|
||||||
- Fedora
|
- Fedora
|
||||||
```bash
|
```bash
|
||||||
dnf install mpv mpv-devel libappindicator-gtk3 libappindicator-gtk3-devel libsecret libsecret-devel jsoncpp jsoncpp-devel libnotify libnotify-devel NetworkManager
|
dnf install mpv mpv-devel libappindicator-gtk3 libappindicator-gtk3-devel libsecret libsecret-devel jsoncpp jsoncpp-devel libnotify libnotify-devel
|
||||||
```
|
```
|
||||||
- Clone the Repo
|
- Clone the Repo
|
||||||
- Create a `.env` in root of the project following the `.env.example` template
|
- Create a `.env` in root of the project following the `.env.example` template
|
||||||
@ -144,4 +145,22 @@ Do the following:
|
|||||||
flutter run -d <window|macos|linux|(<android-device-id>)>
|
flutter run -d <window|macos|linux|(<android-device-id>)>
|
||||||
```
|
```
|
||||||
|
|
||||||
Do debugging/testing/build etc then submit to us with PR against the development branch (master) & we'll review your code
|
Do debugging/testing/build etc then submit to us with PR against the development branch (dev) & we'll review your code
|
||||||
|
|
||||||
|
|
||||||
|
### Submit Translations
|
||||||
|
|
||||||
|
Make sure you're familiar with [Flutter localization](https://docs.flutter.dev/ui/accessibility-and-localization/internationalization). Then, you can start translating the app by following these steps:
|
||||||
|
|
||||||
|
- Do all the steps in [Your First Code Contribution](#your-first-code-contribution)
|
||||||
|
- Make sure application starts in debug mode
|
||||||
|
- Now, in `lib/l10n/app_<2-letter code of your language>.arb` (create if not exists) add necessary translations
|
||||||
|
> (You can follow the `lib/l10n/app_en.arb` for reference)
|
||||||
|
- If you're adding missing translations, you can check the `/untranslated_messages.json` file to see which messages are missing in your native locale
|
||||||
|
- If you added entirely new translations:
|
||||||
|
- Add `const Locale('<2-letter language code>', '<2-letter ISO country code>')` in `lib/l10n/l10n.dart`'s `static final all = [...]` variable
|
||||||
|
- Uncomment the Map entry of your locale from `lib/collections/language_codes.dart`'s `static final Map isoLangs = {` variable
|
||||||
|
- Now restart (hot restart if running already) the app in debug mode & go to "Settings" > "Language" & see if your locale shows up
|
||||||
|
- If it does, select it & see if the app is translated properly
|
||||||
|
- Now git commit the changes & push
|
||||||
|
- Finally, submit a PR against the development branch (dev) & we'll review your code
|
||||||
|
17
Makefile
@ -1,17 +1,8 @@
|
|||||||
INNO_VERSION=6.2.0
|
INNO_VERSION=6.2.0
|
||||||
TEMP_DIR=/tmp/spotube-tar
|
TEMP_DIR=/tmp/spotube-tar
|
||||||
USR_SHARE=deb-struct/usr/share
|
USR_SHARE=deb-struct/usr/share
|
||||||
BUNDLE_DIR=build/linux/x64/release/bundle
|
BUNDLE_DIR=build/linux/${ARCH}/release/bundle
|
||||||
MIRRORLIST=${PWD}/build/mirrorlist
|
MIRRORLIST=${PWD}/build/mirrorlist
|
||||||
deb:
|
|
||||||
mkdir -p ${USR_SHARE}/spotube\
|
|
||||||
&& mkdir -p $(USR_SHARE)/applications $(USR_SHARE)/icons/spotube $(USR_SHARE)/spotube $(USR_SHARE)/appdata\
|
|
||||||
&& cp -r $(BUNDLE_DIR)/* $(USR_SHARE)/spotube\
|
|
||||||
&& cp linux/spotube.desktop $(USR_SHARE)/applications/\
|
|
||||||
&& cp linux/com.github.KRTirtho.Spotube.appdata.xml $(USR_SHARE)/appdata/spotube.appdata.xml\
|
|
||||||
&& cp assets/spotube-logo.png $(USR_SHARE)/icons/spotube\
|
|
||||||
&& sed -i 's|com.github.KRTirtho.Spotube|spotube|' $(USR_SHARE)/appdata/spotube.appdata.xml\
|
|
||||||
&& dpkg-deb -b deb-struct/ build/Spotube-linux-x86_64.deb
|
|
||||||
|
|
||||||
tar:
|
tar:
|
||||||
mkdir -p $(TEMP_DIR)\
|
mkdir -p $(TEMP_DIR)\
|
||||||
@ -19,13 +10,9 @@ tar:
|
|||||||
&& cp linux/spotube.desktop $(TEMP_DIR)\
|
&& cp linux/spotube.desktop $(TEMP_DIR)\
|
||||||
&& cp assets/spotube-logo.png $(TEMP_DIR)\
|
&& cp assets/spotube-logo.png $(TEMP_DIR)\
|
||||||
&& cp linux/com.github.KRTirtho.Spotube.appdata.xml $(TEMP_DIR)\
|
&& cp linux/com.github.KRTirtho.Spotube.appdata.xml $(TEMP_DIR)\
|
||||||
&& tar -cJf build/spotube-linux-${VERSION}-x86_64.tar.xz -C $(TEMP_DIR) .\
|
&& tar -cJf build/spotube-linux-${VERSION}-${PKG_ARCH}.tar.xz -C $(TEMP_DIR) .\
|
||||||
&& rm -rf $(TEMP_DIR)
|
&& rm -rf $(TEMP_DIR)
|
||||||
|
|
||||||
appimage:
|
|
||||||
appimage-builder --recipe AppImageBuilder.yml\
|
|
||||||
&& mv Spotube-*-x86_64.AppImage build
|
|
||||||
|
|
||||||
aursrcinfo:
|
aursrcinfo:
|
||||||
docker run -e EXPORT_SRC=1 -v ${PWD}/aur-struct:/pkg -v ${MIRRORLIST}:/etc/pacman.d/mirrorlist:ro whynothugo/makepkg
|
docker run -e EXPORT_SRC=1 -v ${PWD}/aur-struct:/pkg -v ${MIRRORLIST}:/etc/pacman.d/mirrorlist:ro whynothugo/makepkg
|
||||||
|
|
||||||
|
94
README.md
@ -1,29 +1,32 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
<img width="600" src="assets/spotube_banner.png" alt="Spotube Logo">
|
<img width="600" src="assets/spotube_banner.png" alt="Spotube Logo">
|
||||||
|
|
||||||
An open source, cross-platform Spotify client that doesn't require Premium nor uses Electron!<br />
|
An open source, cross-platform Spotify client compatible across multiple platforms<br />
|
||||||
That uses Spotify's data/discovery API and YouTube (or Piped.video) as audio source
|
utilizing Spotify's data API and YouTube, Piped.video or JioSaavn as an audio source,<br />
|
||||||
|
eliminating the need for Spotify Premium
|
||||||
|
|
||||||
<a href="https://spotube.netlify.app"><img alt="Visit the website" height="56" src="https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/documentation/website_vector.svg"></a>
|
Btw it's not just another Electron app 😉
|
||||||
<a href="https://discord.gg/uJ94vxB6vg"><img alt="Discord Server" height="56" src="https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/social/discord-plural_vector.svg"></a>
|
|
||||||
|
|
||||||
<a href="https://patreon.com/krtirtho"><img alt="Support me on Patron" height="56" src="https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/donate/patreon-singular_vector.svg"></a>
|
<a href="https://spotube.netlify.app"><img alt="Visit the website" height="56" src="https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/documentation/website_vector.svg"></a>
|
||||||
<a href="https://www.buymeacoffee.com/krtirtho"><img alt="Buy me a Coffee" height="56" src="https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/donate/buymeacoffee-singular_vector.svg"></a>
|
<a href="https://discord.gg/uJ94vxB6vg"><img alt="Discord Server" height="56" src="https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/social/discord-plural_vector.svg"></a>
|
||||||
|
|
||||||
<a href="https://opencollective.com/spotube"><img src="https://opencollective.com/spotube/donate/button.png?color=blue" alt="Donate to our Open Collective" height="45"></a>
|
<a href="https://patreon.com/krtirtho"><img alt="Support me on Patron" height="56" src="https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/donate/patreon-singular_vector.svg"></a>
|
||||||
|
<a href="https://www.buymeacoffee.com/krtirtho"><img alt="Buy me a Coffee" height="56" src="https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/donate/buymeacoffee-singular_vector.svg"></a>
|
||||||
|
|
||||||
---
|
<a href="https://opencollective.com/spotube"><img src="https://opencollective.com/spotube/donate/button.png?color=blue" alt="Donate to our Open Collective" height="45"></a>
|
||||||
|
|
||||||

|
---
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
## 🌃 Features
|
## 🌃 Features
|
||||||
|
|
||||||
- 🚫 No ads, thanks to the use of public & free Spotify and YT Music APIs¹
|
- 🚫 No ads, thanks to the use of public & free Spotify and YT Music APIs¹
|
||||||
- ⬇️ Downloadable tracks
|
- ⬇️ Freely downloadable tracks
|
||||||
- 🖥️ 📱 Cross-platform support
|
- 🖥️ 📱 Cross-platform support
|
||||||
- 🪶 Small size & less data usage
|
- 🪶 Small size & less data usage
|
||||||
- 🕵️ Anonymous/guest login
|
- 🕵️ Anonymous/guest login
|
||||||
@ -33,17 +36,17 @@
|
|||||||
- 📖 Open source/libre software
|
- 📖 Open source/libre software
|
||||||
- 🔉 Playback control is done locally, not on the server
|
- 🔉 Playback control is done locally, not on the server
|
||||||
|
|
||||||
**¹** 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).
|
**¹** It is still **recommended** to support creators by engaging with their YouTube channels/Spotify tracks (or preferably by buying their merch/concert tickets/physical media).
|
||||||
|
|
||||||
### ❌ Unsupported features
|
### ❌ Unsupported features
|
||||||
|
|
||||||
- 🗣️ **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 Shows & Podcasts:** Shows and Podcasts will <ins>**never be supported**</ins> because the audio tracks are <ins>_only_</ins> available on Spotify and accessing them would require Spotify Premium.
|
||||||
- 🎧 **Spotify Listen Along:** [Coming soon!](https://github.com/KRTirtho/spotube/issues/8)
|
- 🎧 **Spotify Listen Along:** [Coming soon!](https://github.com/KRTirtho/spotube/issues/8)
|
||||||
|
|
||||||
## 📜 ⬇️ Installation guide
|
## 📜 ⬇️ Installation guide
|
||||||
|
|
||||||
New releases usually appear after 3-4 months.<br />
|
New versions usually release every 3-4 months.<br />
|
||||||
This handy table lists all methods you can use to install Spotube:
|
This handy table lists all the methods you can use to install Spotube:
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
@ -105,7 +108,7 @@ This handy table lists all methods you can use to install Spotube:
|
|||||||
<a href="https://github.com/KRTirtho/spotube/releases/latest/download/Spotube-linux-x86_64.deb">
|
<a href="https://github.com/KRTirtho/spotube/releases/latest/download/Spotube-linux-x86_64.deb">
|
||||||
<img width="220" alt="Debian/Ubuntu Download" src="https://user-images.githubusercontent.com/61944859/169097994-e92aff78-fd75-4c93-b6e4-f072a4b5a7ed.png">
|
<img width="220" alt="Debian/Ubuntu Download" src="https://user-images.githubusercontent.com/61944859/169097994-e92aff78-fd75-4c93-b6e4-f072a4b5a7ed.png">
|
||||||
</a>
|
</a>
|
||||||
<p>Then run: <code>sudo apt install Spotube-linux-x86_64.deb</code></p>
|
<p>Then run: <code>sudo apt install ./Spotube-linux-x86_64.deb</code></p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@ -158,7 +161,7 @@ This handy table lists all methods you can use to install Spotube:
|
|||||||
|
|
||||||
Grab the latest nightly builds of Spotube [from the GitHub Releases](https://github.com/KRTirtho/spotube/releases/tag/nightly).
|
Grab the latest nightly builds of Spotube [from the GitHub Releases](https://github.com/KRTirtho/spotube/releases/tag/nightly).
|
||||||
|
|
||||||
## 🕳️ Building from source
|
## 🕳️ Building from source
|
||||||
|
|
||||||
<a href="https://github.com/KRTirtho/spotube/actions"><img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/KRTirtho/spotube/spotube-release-binary.yml?+label=Build%20Status"></a>
|
<a href="https://github.com/KRTirtho/spotube/actions"><img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/KRTirtho/spotube/spotube-release-binary.yml?+label=Build%20Status"></a>
|
||||||
|
|
||||||
@ -167,8 +170,9 @@ You can compile Spotube's source code by [following these instructions](CONTRIBU
|
|||||||
## 👥 The Spotube team
|
## 👥 The Spotube team
|
||||||
|
|
||||||
- [Kingkor Roy Tirtho](https://github.com/KRTirtho) - The Founder, Maintainer and Lead Developer
|
- [Kingkor Roy Tirtho](https://github.com/KRTirtho) - The Founder, Maintainer and Lead Developer
|
||||||
- [Owen Connor](https://github.com/owencz1998) - The Cool Discord Moderator
|
|
||||||
- [RaptaG](https://github.com/RaptaG) - The GitHub Moderator and Community Manager
|
- [RaptaG](https://github.com/RaptaG) - The GitHub Moderator and Community Manager
|
||||||
|
- [Owen Connor](https://github.com/owencz1998) - The Cool Discord Moderator
|
||||||
|
- [Meenbeese](https://github.com/meenbeese) - The Android Developer
|
||||||
- [Piotr Rogowski](https://github.com/karniv00l) - The MacOS Developer
|
- [Piotr Rogowski](https://github.com/karniv00l) - The MacOS Developer
|
||||||
- [Rusty Apple](https://github.com/RustyApple) - The Mysterious Unknown Guy
|
- [Rusty Apple](https://github.com/RustyApple) - The Mysterious Unknown Guy
|
||||||
|
|
||||||
@ -180,26 +184,32 @@ If you are concerned, you can [read the reason of choosing this license](https:/
|
|||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>
|
<summary>
|
||||||
<h2><code>[Click to show]</code> 🙏 Library/Plugin/Framework Credits</h2>
|
<h2><code>[Click to show]</code> 🙏 Services/Package/Plugin Credits</h2>
|
||||||
</summary>
|
</summary>
|
||||||
|
|
||||||
|
### Services
|
||||||
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. [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. [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. [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. [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. [JioSaavn](https://www.jiosaavn.com) - JioSaavn is an Indian online music streaming service and a digital distributor of Bollywood, English and other regional Indian music across the world. Since it was founded in 2007 as Saavn, the company has acquired rights to over 5 crore (50 million) music tracks in 15 languages
|
||||||
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. [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. [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. [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. [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. [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. [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. [LastFM](https://last.fm) - Last.fm is a music streaming and discovery platform that helps users discover and share new music. It tracks users' music listening habits across many devices and platforms.
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
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. [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. [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_service](https://pub.dev/packages/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. [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. [auto_size_text](https://github.com/leisim/auto_size_text) - Flutter widget that automatically resizes text to fit perfectly within its bounds.
|
1. [auto_size_text](https://github.com/leisim/auto_size_text) - Flutter widget that automatically resizes text to fit perfectly within its bounds.
|
||||||
1. [buttons_tabbar](https://afonsoraposo.com) - A Flutter package that implements a TabBar where each label is a toggle button.
|
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. [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. [catcher_2](https://github.com/ThexXTURBOXx/catcher_2) - Plugin for error catching which provides multiple handlers for dealing with errors when they are not caught by the developer.
|
||||||
1. [collection](https://pub.dev/packages/collection) - Collections and utilities functions and classes related to collections.
|
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. [cupertino_icons](https://pub.dev/packages/cupertino_icons) - Default icons asset for Cupertino widgets based on Apple styled icons
|
||||||
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. [curved_navigation_bar](https://github.com/rafalbednarczuk/curved_navigation_bar) - Stunning Animating Curved Shape Navigation Bar. Adjustable color, background color, animation curve, animation duration.
|
||||||
@ -210,10 +220,10 @@ If you are concerned, you can [read the reason of choosing this license](https:/
|
|||||||
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. [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. [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. [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. [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. [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. [file_selector](https://pub.dev/packages/file_selector) - Flutter plugin for opening and saving files, or selecting directories, using native file selection UI.
|
||||||
1. [fl_query](https://fl-query.vercel.app) - Asynchronous data caching, refetching & invalidation library for Flutter
|
1. [fl_query](https://fl-query.krtirtho.dev) - 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. [fl_query_hooks](https://fl-query.krtirtho.dev) - Elite flutter_hooks compatible library for fl_query, the Asynchronous data caching, refetching & invalidation library for Flutter
|
||||||
1. [fl_query_connectivity_plus_adapter](https://fl-query.vercel.app) - Connectivity Plus adapter for FlQuery Connectivity
|
1. [fl_query_devtools](https://fl-query.krtirtho.dev) - Devtools support for Fl-Query
|
||||||
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. [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/develop/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_cache_manager](https://github.com/Baseflow/flutter_cache_manager/tree/develop/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_displaymode](https://github.com/ajinasokan/flutter_displaymode) - A Flutter plugin to set display mode (resolution, refresh rate) on Android platform. Allows to enable high refresh rate on supported devices.
|
1. [flutter_displaymode](https://github.com/ajinasokan/flutter_displaymode) - A Flutter plugin to set display mode (resolution, refresh rate) on Android platform. Allows to enable high refresh rate on supported devices.
|
||||||
@ -224,25 +234,22 @@ If you are concerned, you can [read the reason of choosing this license](https:/
|
|||||||
1. [flutter_riverpod](https://riverpod.dev) - A simple way to access state from anywhere in your application while robust and testable.
|
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_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. [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. [form_validator](https://github.com/TheMisir/form-validator) - Simplest form validation library for flutter's form field widgets
|
||||||
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. [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. [google_fonts](https://pub.dev/packages/google_fonts) - A Flutter package to use fonts from fonts.google.com. Supports HTTP fetching, caching, and asset bundling.
|
|
||||||
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
|
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
|
||||||
|
1. [google_fonts](https://pub.dev/packages/google_fonts) - A Flutter package to use fonts from fonts.google.com. Supports HTTP fetching, caching, and asset bundling.
|
||||||
1. [hive](https://github.com/hivedb/hive/tree/master/hive) - Lightweight and blazing fast key-value database written in pure Dart. Strongly encrypted using AES-256.
|
1. [hive](https://github.com/hivedb/hive/tree/master/hive) - Lightweight and blazing fast key-value database written in pure Dart. Strongly encrypted using AES-256.
|
||||||
1. [hive_flutter](https://github.com/hivedb/hive/tree/master/hive_flutter) - Extension for Hive. Makes it easier to use Hive in Flutter apps.
|
1. [hive_flutter](https://github.com/hivedb/hive/tree/master/hive_flutter) - Extension for Hive. Makes it easier to use Hive in Flutter apps.
|
||||||
1. [hooks_riverpod](https://riverpod.dev) - A simple way to access state from anywhere in your application while robust and testable.
|
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. [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. [http](https://pub.dev/packages/http) - A composable, multi-platform, Future-based API for HTTP requests.
|
||||||
|
1. [image_picker](https://pub.dev/packages/image_picker) - Flutter plugin for selecting images from the Android and iOS image library, and taking new pictures with the camera.
|
||||||
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. [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. [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_annotation](https://pub.dev/packages/json_annotation) - Classes and helper functions that support JSON code generation via the `json_serializable` package.
|
||||||
1. [logger](https://pub.dev/packages/logger) - Small, easy to use and extensible logger which prints beautiful logs.
|
1. [logger](https://pub.dev/packages/logger) - Small, easy to use and extensible logger which prints beautiful logs.
|
||||||
1. [media_kit](https://github.com/media-kit/media-kit) - A cross-platform video player & audio player for Flutter & Dart. Performant, stable, feature-proof & modular.
|
1. [media_kit](https://github.com/media-kit/media-kit) - A cross-platform video player & audio player for Flutter & Dart. Performant, stable, feature-proof & modular.
|
||||||
1. [media_kit_native_event_loop](https://github.com/media-kit/media-kit) - Platform specific threaded event handling for media_kit. Enables support for higher number of concurrent instances.
|
1. [media_kit_libs_audio](https://github.com/media-kit/media-kit.git) - package:media_kit audio (only) playback native libraries for all platforms.
|
||||||
1. [media_kit_libs_android_audio](https://github.com/media-kit/media-kit.git) - Android package providing audio (only) native libraries for package:media_kit.
|
|
||||||
1. [media_kit_libs_ios_audio](https://github.com/media-kit/media-kit.git) - iOS package providing audio native libraries for package:media_kit.
|
|
||||||
1. [media_kit_libs_macos_audio](https://github.com/media-kit/media-kit.git) - macOS package providing audio native libraries for package:media_kit.
|
|
||||||
1. [media_kit_libs_windows_audio](https://github.com/media-kit/media-kit.git) - Windows package providing audio (only) native libraries for package:media_kit.
|
|
||||||
1. [media_kit_libs_linux](https://github.com/media-kit/media-kit.git) - GNU/Linux dependency package for package:media_kit. Necessary for initialization.
|
|
||||||
1. [metadata_god](https://github.com/KRTirtho/metadata_god) - Plugin for retrieving and writing audio tags/metadata from audio files
|
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. [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.
|
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.
|
||||||
@ -253,20 +260,33 @@ If you are concerned, you can [read the reason of choosing this license](https:/
|
|||||||
1. [piped_client](https://github.com/KRTirtho/piped_client) - API Client for piped.video
|
1. [piped_client](https://github.com/KRTirtho/piped_client) - API Client for piped.video
|
||||||
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. [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. [scroll_to_index](https://github.com/quire-io/scroll-to-index) - Scroll to a specific child of any scrollable widget in Flutter
|
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. [sidebarx](https://github.com/Frezyx/sidebarx) - flutter multiplatform navigation sidebar / side navigationbar / drawer widget
|
||||||
|
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. [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. [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. [smtc_windows](https://github.com/KRTirtho/smtc_windows) - Windows `SystemMediaTransportControls` implementation for Flutter giving access to Windows OS Media Control applet.
|
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. [spotify](https://github.com/rinukkusu/spotify-dart) - An incomplete dart library for interfacing with the Spotify Web API.
|
||||||
1. [supabase](https://supabase.com) - A dart client for Supabase. This client makes it simple for developers to build secure and scalable products.
|
1. [stroke_text](https://github.com/MohamedAbd0/stroke_text) - A Simple Flutter plugin for applying stroke (border) style to a text widget
|
||||||
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. [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. [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. [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. [uuid](https://pub.dev/packages/uuid) - RFC4122 (v1, v4, v5, v6, v7, v8) UUID Generator and Parser for Dart
|
||||||
1. [version](https://github.com/dartninja/version) - Provides a simple class for parsing and comparing semantic versions as defined by http://semver.org/
|
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. [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. [window_manager](https://github.com/leanflutter/window_manager) - This plugin allows Flutter desktop apps to resizing and repositioning the window.
|
||||||
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. [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. [simple_icons](https://teavelopment.com/) - The Simple Icon pack available as Flutter Icons. Provides over 1500 Free SVG icons for popular brands.
|
||||||
|
1. [audio_service_mpris](https://github.com/bdrazhzhov/audio-service-mpris) - audio_service platform interface supporting Media Player Remote Interfacing Specification.
|
||||||
|
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. [jiosaavn](https://github.com/KRTirtho/jiosaavn) - Unofficial API client for jiosaavn.com
|
||||||
|
1. [very_good_infinite_list](https://github.com/VeryGoodOpenSource/very_good_infinite_list) - A library for easily displaying paginated data, created by Very Good Ventures. Great for activity feeds, news feeds, and more.
|
||||||
|
1. [gap](https://github.com/letsar/gap) - Flutter widgets for easily adding gaps inside Flex widgets such as Columns and Rows or scrolling views.
|
||||||
|
1. [sliver_tools](https://github.com/Kavantix) - A set of useful sliver tools that are missing from the flutter framework
|
||||||
|
1. [html_unescape](https://github.com/filiph/html_unescape) - A small library for un-escaping HTML. Supports all Named Character References, Decimal Character References and Hexadecimal Character References.
|
||||||
|
1. [wikipedia_api](https://github.com/KRTirtho/wikipedia_api) - Wikipedia API for dart and flutter
|
||||||
|
1. [skeletonizer](https://github.com/Milad-Akarie/skeletonizer) - Converts already built widgets into skeleton loaders with no extra effort.
|
||||||
|
1. [app_links](https://github.com/llfbandit/app_links) - Android App Links, Deep Links, iOs Universal Links and Custom URL schemes handler for Flutter (desktop included).
|
||||||
|
1. [win32_registry](https://win32.pub) - A package that provides a friendly Dart API for accessing the Windows Registry.
|
||||||
|
1. [flutter_sharing_intent](https://github.com/bhagat-techind/flutter_sharing_intent.git) - A flutter plugin that allow flutter apps to receive photos, videos, text, urls or any other file types from another app.
|
||||||
1. [build_runner](https://pub.dev/packages/build_runner) - A build system for Dart code generation and modular compilation.
|
1. [build_runner](https://pub.dev/packages/build_runner) - A build system for Dart code generation and modular compilation.
|
||||||
1. [envied_generator](https://github.com/petercinibulk/envied) - Generator for the Envied package. See https://pub.dev/packages/envied.
|
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_distributor](https://distributor.leanflutter.org) - A complete tool for packaging and publishing your Flutter apps.
|
||||||
@ -277,9 +297,11 @@ If you are concerned, you can [read the reason of choosing this license](https:/
|
|||||||
1. [json_serializable](https://pub.dev/packages/json_serializable) - Automatically generate code for converting to and from JSON by annotating Dart classes.
|
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. [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. [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. [flutter_desktop_tools](https://github.com/KRTirtho/flutter_desktop_tools) - Essential collection of tools for flutter desktop app development
|
1. [flutter_desktop_tools](https://github.com/KRTirtho/flutter_desktop_tools) - Essential collection of tools for flutter desktop app development
|
||||||
|
1. [scrobblenaut](https://github.com/Nebulino/Scrobblenaut) - A deadly simple LastFM API Wrapper for Dart. So deadly simple that it's gonna hit the mark.
|
||||||
1. [window_size](https://github.com/google/flutter-desktop-embedding.git) - Allows resizing and repositioning the window containing Flutter.
|
1. [window_size](https://github.com/google/flutter-desktop-embedding.git) - Allows resizing and repositioning the window containing Flutter.
|
||||||
|
1. [draggable_scrollbar](https://github.com/fluttercommunity/flutter-draggable-scrollbar) - A scrollbar that can be dragged for quickly navigation through a vertical list. Additional option is showing label next to scrollthumb with information about current item.
|
||||||
|
1. [dart_discord_rpc](https://github.com/alexmercerind/dart_discord_rpc) - Discord Rich Presence for Flutter & Dart apps & games.
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<div align="center"><h4>© Copyright Spotube 2023</h4></div>
|
<div align="center"><h4>© Copyright Spotube 2024</h4></div>
|
||||||
|
@ -31,4 +31,6 @@ linter:
|
|||||||
analyzer:
|
analyzer:
|
||||||
enable-experiment:
|
enable-experiment:
|
||||||
- records
|
- records
|
||||||
- patterns
|
- patterns
|
||||||
|
errors:
|
||||||
|
invalid_annotation_target: ignore
|
||||||
|
@ -32,7 +32,7 @@ if (keystorePropertiesFile.exists()) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 33
|
compileSdkVersion 34
|
||||||
|
|
||||||
ndkVersion "21.4.7075529"
|
ndkVersion "21.4.7075529"
|
||||||
|
|
||||||
@ -72,6 +72,28 @@ android {
|
|||||||
signingConfig signingConfigs.release
|
signingConfig signingConfigs.release
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
flavorDimensions "default"
|
||||||
|
|
||||||
|
productFlavors {
|
||||||
|
nightly {
|
||||||
|
dimension "default"
|
||||||
|
resValue "string", "app_name_en", "Spotube Nightly"
|
||||||
|
applicationIdSuffix ".nightly"
|
||||||
|
versionNameSuffix "-nightly"
|
||||||
|
}
|
||||||
|
dev {
|
||||||
|
dimension "default"
|
||||||
|
resValue "string", "app_name_en", "Spotube Dev"
|
||||||
|
applicationIdSuffix ".dev"
|
||||||
|
versionNameSuffix "-dev"
|
||||||
|
}
|
||||||
|
stable {
|
||||||
|
dimension "default"
|
||||||
|
resValue "string", "app_name_en", "Spotube"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
flutter {
|
flutter {
|
||||||
@ -92,4 +114,4 @@ dependencies {
|
|||||||
|
|
||||||
// other deps so just ignore
|
// other deps so just ignore
|
||||||
implementation 'com.android.support:multidex:2.0.1'
|
implementation 'com.android.support:multidex:2.0.1'
|
||||||
}
|
}
|
@ -18,7 +18,7 @@
|
|||||||
<application
|
<application
|
||||||
android:allowBackup="false"
|
android:allowBackup="false"
|
||||||
android:fullBackupContent="false"
|
android:fullBackupContent="false"
|
||||||
android:label="Spotube"
|
android:label="@string/app_name_en"
|
||||||
android:name="${applicationName}"
|
android:name="${applicationName}"
|
||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/ic_launcher"
|
||||||
android:usesCleartextTraffic="true"
|
android:usesCleartextTraffic="true"
|
||||||
@ -27,7 +27,7 @@
|
|||||||
<activity
|
<activity
|
||||||
android:name="com.ryanheise.audioservice.AudioServiceActivity"
|
android:name="com.ryanheise.audioservice.AudioServiceActivity"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:launchMode="singleTop"
|
android:launchMode="singleInstance"
|
||||||
android:theme="@style/LaunchTheme"
|
android:theme="@style/LaunchTheme"
|
||||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||||||
android:hardwareAccelerated="true"
|
android:hardwareAccelerated="true"
|
||||||
@ -48,6 +48,30 @@
|
|||||||
<category android:name="android.intent.category.LAUNCHER" />
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.VIEW" />
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
<category android:name="android.intent.category.BROWSABLE" />
|
||||||
|
<data
|
||||||
|
android:scheme="https"
|
||||||
|
android:host="open.spotify.com"
|
||||||
|
/>
|
||||||
|
</intent-filter>
|
||||||
|
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.SEND" />
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
<data android:mimeType="text/*" />
|
||||||
|
</intent-filter>
|
||||||
|
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.VIEW" />
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
<category android:name="android.intent.category.BROWSABLE" />
|
||||||
|
<!-- Accepts URIs that begin with "spotify:// -->
|
||||||
|
<data android:scheme="spotify" />
|
||||||
|
</intent-filter>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<!-- AudioService Config -->
|
<!-- AudioService Config -->
|
||||||
|
After Width: | Height: | Size: 11 KiB |
BIN
android/app/src/nightly/res/drawable-hdpi/android12splash.png
Normal file
After Width: | Height: | Size: 73 KiB |
BIN
android/app/src/nightly/res/drawable-hdpi/branding.png
Normal file
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 7.7 KiB |
BIN
android/app/src/nightly/res/drawable-hdpi/splash.png
Normal file
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 3.9 KiB |
BIN
android/app/src/nightly/res/drawable-mdpi/android12splash.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
android/app/src/nightly/res/drawable-mdpi/branding.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 4.1 KiB |
BIN
android/app/src/nightly/res/drawable-mdpi/splash.png
Normal file
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 78 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 220 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 213 KiB |
BIN
android/app/src/nightly/res/drawable-v21/background.png
Normal file
After Width: | Height: | Size: 3.1 MiB |
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<bitmap android:gravity="fill" android:src="@drawable/background"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<bitmap android:gravity="center" android:src="@drawable/splash"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<bitmap android:gravity="bottom" android:src="@drawable/branding"/>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
After Width: | Height: | Size: 12 KiB |
BIN
android/app/src/nightly/res/drawable-xhdpi/android12splash.png
Normal file
After Width: | Height: | Size: 78 KiB |
BIN
android/app/src/nightly/res/drawable-xhdpi/branding.png
Normal file
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
BIN
android/app/src/nightly/res/drawable-xhdpi/splash.png
Normal file
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 32 KiB |
BIN
android/app/src/nightly/res/drawable-xxhdpi/android12splash.png
Normal file
After Width: | Height: | Size: 220 KiB |
BIN
android/app/src/nightly/res/drawable-xxhdpi/branding.png
Normal file
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 24 KiB |
BIN
android/app/src/nightly/res/drawable-xxhdpi/splash.png
Normal file
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 20 KiB |
BIN
android/app/src/nightly/res/drawable-xxxhdpi/android12splash.png
Normal file
After Width: | Height: | Size: 213 KiB |
BIN
android/app/src/nightly/res/drawable-xxxhdpi/branding.png
Normal file
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 39 KiB |
BIN
android/app/src/nightly/res/drawable-xxxhdpi/splash.png
Normal file
After Width: | Height: | Size: 101 KiB |
BIN
android/app/src/nightly/res/drawable/background.png
Normal file
After Width: | Height: | Size: 3.1 MiB |
12
android/app/src/nightly/res/drawable/launch_background.xml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<bitmap android:gravity="fill" android:src="@drawable/background"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<bitmap android:gravity="center" android:src="@drawable/splash"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<bitmap android:gravity="bottom" android:src="@drawable/branding"/>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<background android:drawable="@color/ic_launcher_background"/>
|
||||||
|
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
|
||||||
|
</adaptive-icon>
|
BIN
android/app/src/nightly/res/mipmap-hdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 7.0 KiB |
BIN
android/app/src/nightly/res/mipmap-mdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
android/app/src/nightly/res/mipmap-xhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
android/app/src/nightly/res/mipmap-xxhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
android/app/src/nightly/res/mipmap-xxxhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 29 KiB |
23
android/app/src/nightly/res/values-night-v31/styles.xml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
|
||||||
|
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
||||||
|
<item name="android:forceDarkAllowed">false</item>
|
||||||
|
<item name="android:windowFullscreen">false</item>
|
||||||
|
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
|
||||||
|
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||||
|
<item name="android:windowSplashScreenBackground">#000000</item>
|
||||||
|
<item name="android:windowSplashScreenBrandingImage">@drawable/android12branding</item>
|
||||||
|
<item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item>
|
||||||
|
<item name="android:windowSplashScreenIconBackgroundColor">#000000</item>
|
||||||
|
</style>
|
||||||
|
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||||
|
This theme determines the color of the Android Window while your
|
||||||
|
Flutter UI initializes, as well as behind your Flutter UI while its
|
||||||
|
running.
|
||||||
|
|
||||||
|
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
||||||
|
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
||||||
|
<item name="android:windowBackground">?android:colorBackground</item>
|
||||||
|
</style>
|
||||||
|
</resources>
|
22
android/app/src/nightly/res/values-night/styles.xml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
|
||||||
|
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
||||||
|
<!-- Show a splash screen on the activity. Automatically removed when
|
||||||
|
the Flutter engine draws its first frame -->
|
||||||
|
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||||
|
<item name="android:forceDarkAllowed">false</item>
|
||||||
|
<item name="android:windowFullscreen">false</item>
|
||||||
|
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
|
||||||
|
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||||
|
</style>
|
||||||
|
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||||
|
This theme determines the color of the Android Window while your
|
||||||
|
Flutter UI initializes, as well as behind your Flutter UI while its
|
||||||
|
running.
|
||||||
|
|
||||||
|
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
||||||
|
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
||||||
|
<item name="android:windowBackground">?android:colorBackground</item>
|
||||||
|
</style>
|
||||||
|
</resources>
|
23
android/app/src/nightly/res/values-v31/styles.xml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
|
||||||
|
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
||||||
|
<item name="android:forceDarkAllowed">false</item>
|
||||||
|
<item name="android:windowFullscreen">false</item>
|
||||||
|
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
|
||||||
|
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||||
|
<item name="android:windowSplashScreenBackground">#000000</item>
|
||||||
|
<item name="android:windowSplashScreenBrandingImage">@drawable/android12branding</item>
|
||||||
|
<item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item>
|
||||||
|
<item name="android:windowSplashScreenIconBackgroundColor">#000000</item>
|
||||||
|
</style>
|
||||||
|
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||||
|
This theme determines the color of the Android Window while your
|
||||||
|
Flutter UI initializes, as well as behind your Flutter UI while its
|
||||||
|
running.
|
||||||
|
|
||||||
|
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
||||||
|
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
||||||
|
<item name="android:windowBackground">?android:colorBackground</item>
|
||||||
|
</style>
|
||||||
|
</resources>
|
4
android/app/src/nightly/res/values/colors.xml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<color name="ic_launcher_background">#242832</color>
|
||||||
|
</resources>
|
22
android/app/src/nightly/res/values/styles.xml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
|
||||||
|
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
||||||
|
<!-- Show a splash screen on the activity. Automatically removed when
|
||||||
|
the Flutter engine draws its first frame -->
|
||||||
|
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||||
|
<item name="android:forceDarkAllowed">false</item>
|
||||||
|
<item name="android:windowFullscreen">false</item>
|
||||||
|
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
|
||||||
|
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||||
|
</style>
|
||||||
|
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||||
|
This theme determines the color of the Android Window while your
|
||||||
|
Flutter UI initializes, as well as behind your Flutter UI while its
|
||||||
|
running.
|
||||||
|
|
||||||
|
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
||||||
|
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
||||||
|
<item name="android:windowBackground">?android:colorBackground</item>
|
||||||
|
</style>
|
||||||
|
</resources>
|
BIN
assets/jiosaavn.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
assets/liked-tracks.jpg
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
assets/spotube-hero-banner.png
Normal file
After Width: | Height: | Size: 771 KiB |
BIN
assets/spotube-nightly-logo-foreground.jpg
Normal file
After Width: | Height: | Size: 39 KiB |
BIN
assets/spotube-nightly-logo.png
Normal file
After Width: | Height: | Size: 128 KiB |
359
assets/spotube-nightly-logo.svg
Normal file
@ -0,0 +1,359 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
viewBox="0 0 762 762"
|
||||||
|
version="1.1"
|
||||||
|
id="svg270"
|
||||||
|
sodipodi:docname="spotube-nightly-logo.svg"
|
||||||
|
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||||
|
xml:space="preserve"
|
||||||
|
inkscape:export-filename="spotube-logo.png"
|
||||||
|
inkscape:export-xdpi="96"
|
||||||
|
inkscape:export-ydpi="96"
|
||||||
|
width="762"
|
||||||
|
height="762"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:bx="https://boxy-svg.com"><sodipodi:namedview
|
||||||
|
id="namedview272"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#000000"
|
||||||
|
borderopacity="0.25"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.26940768"
|
||||||
|
inkscape:cx="-413.87091"
|
||||||
|
inkscape:cy="562.34478"
|
||||||
|
inkscape:window-width="1518"
|
||||||
|
inkscape:window-height="1080"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
inkscape:current-layer="g236"
|
||||||
|
inkscape:lockguides="false"><inkscape:page
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="762"
|
||||||
|
height="762"
|
||||||
|
id="page3136" /><inkscape:page
|
||||||
|
x="640.44641"
|
||||||
|
y="132.29141"
|
||||||
|
width="89.999939"
|
||||||
|
height="89.999985"
|
||||||
|
id="page3138" /></sodipodi:namedview><defs
|
||||||
|
id="defs220"><linearGradient
|
||||||
|
id="linearGradient1211"><stop
|
||||||
|
offset="0.113"
|
||||||
|
style="stop-color:#ff4b4b;stop-opacity:1;"
|
||||||
|
id="stop1205" /><stop
|
||||||
|
offset="0.60799998"
|
||||||
|
style="stop-color:#d6a400;stop-opacity:1;"
|
||||||
|
id="stop1207" /><stop
|
||||||
|
offset="0.94400001"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:1;"
|
||||||
|
id="stop1209" /></linearGradient><linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="linearGradient5535"><stop
|
||||||
|
style="stop-color:#3b2100;stop-opacity:1;"
|
||||||
|
offset="0.25885531"
|
||||||
|
id="stop5531" /><stop
|
||||||
|
style="stop-color:#004256;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop5533" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient2809"><stop
|
||||||
|
offset="0.113"
|
||||||
|
style="stop-color:#ff4b4b;stop-opacity:1;"
|
||||||
|
id="stop2803" /><stop
|
||||||
|
offset="0.60799998"
|
||||||
|
style="stop-color:#d6a400;stop-opacity:1;"
|
||||||
|
id="stop2805" /><stop
|
||||||
|
offset="0.94400001"
|
||||||
|
style="stop-color:#ffffff;stop-opacity:1;"
|
||||||
|
id="stop2807" /></linearGradient><linearGradient
|
||||||
|
id="linearGradient938"><stop
|
||||||
|
offset="0.113"
|
||||||
|
style="stop-color:#ff4b4b;stop-opacity:1;"
|
||||||
|
id="stop932" /><stop
|
||||||
|
offset="0.60799998"
|
||||||
|
style="stop-color:#d6a400;stop-opacity:1;"
|
||||||
|
id="stop934" /><stop
|
||||||
|
offset="0.94400001"
|
||||||
|
style="stop-color:#fffcf1;stop-opacity:1;"
|
||||||
|
id="stop936" /></linearGradient><radialGradient
|
||||||
|
id="gradient-2-0"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
cx="251.179"
|
||||||
|
cy="248.821"
|
||||||
|
r="241.45"
|
||||||
|
gradientTransform="translate(-1.768285,0.589104)"
|
||||||
|
xlink:href="#gradient-2" /><linearGradient
|
||||||
|
id="gradient-2"><stop
|
||||||
|
offset="0.841"
|
||||||
|
style="stop-color: rgb(255, 255, 255);"
|
||||||
|
id="stop169" /><stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color: rgb(201, 201, 201);"
|
||||||
|
id="stop171" /></linearGradient><filter
|
||||||
|
id="drop-shadow-filter-0"
|
||||||
|
x="-0.050892502"
|
||||||
|
y="-0.050892502"
|
||||||
|
width="1.1017849"
|
||||||
|
height="1.1017849"
|
||||||
|
bx:preset="drop-shadow 1 0 0 10 0.42 rgba(201,201,201,1)"><feGaussianBlur
|
||||||
|
in="SourceAlpha"
|
||||||
|
stdDeviation="10"
|
||||||
|
id="feGaussianBlur174" /><feOffset
|
||||||
|
dx="0"
|
||||||
|
dy="0"
|
||||||
|
id="feOffset176" /><feComponentTransfer
|
||||||
|
result="offsetblur"
|
||||||
|
id="feComponentTransfer179"><feFuncA
|
||||||
|
id="spread-ctrl"
|
||||||
|
type="linear"
|
||||||
|
slope="0.84" /></feComponentTransfer><feFlood
|
||||||
|
flood-color="rgba(201,201,201,1)"
|
||||||
|
id="feFlood181" /><feComposite
|
||||||
|
in2="offsetblur"
|
||||||
|
operator="in"
|
||||||
|
id="feComposite183" /><feMerge
|
||||||
|
id="feMerge189"><feMergeNode
|
||||||
|
id="feMergeNode185" /><feMergeNode
|
||||||
|
in="SourceGraphic"
|
||||||
|
id="feMergeNode187" /></feMerge></filter><linearGradient
|
||||||
|
id="gradient-4-3"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="47.146"
|
||||||
|
y1="18.044001"
|
||||||
|
x2="47.146"
|
||||||
|
y2="75.353996"
|
||||||
|
xlink:href="#gradient-4" /><linearGradient
|
||||||
|
id="gradient-4"><stop
|
||||||
|
offset="0.113"
|
||||||
|
style="stop-color: rgb(83, 240, 111);"
|
||||||
|
id="stop193" /><stop
|
||||||
|
offset="0.608"
|
||||||
|
style="stop-color: rgb(0, 177, 86);"
|
||||||
|
id="stop195" /><stop
|
||||||
|
offset="0.944"
|
||||||
|
style="stop-color: rgb(2, 167, 156);"
|
||||||
|
id="stop197" /></linearGradient><filter
|
||||||
|
id="inner-shadow-filter-0"
|
||||||
|
x="-0.064836091"
|
||||||
|
y="-0.071329232"
|
||||||
|
width="1.1296722"
|
||||||
|
height="1.108079"
|
||||||
|
bx:preset="inner-shadow 1 0 0 4 0.5 rgba(0,0,0,0.7)"><feOffset
|
||||||
|
dx="0"
|
||||||
|
dy="0"
|
||||||
|
id="feOffset200" /><feGaussianBlur
|
||||||
|
stdDeviation="4"
|
||||||
|
id="feGaussianBlur202"
|
||||||
|
result="result1" /><feComposite
|
||||||
|
operator="out"
|
||||||
|
in="SourceGraphic"
|
||||||
|
in2="result1"
|
||||||
|
id="feComposite204" /><feComponentTransfer
|
||||||
|
result="choke"
|
||||||
|
id="feComponentTransfer208"><feFuncA
|
||||||
|
type="linear"
|
||||||
|
slope="1"
|
||||||
|
id="feFuncA206" /></feComponentTransfer><feFlood
|
||||||
|
flood-color="rgba(0,0,0,0.7)"
|
||||||
|
result="color"
|
||||||
|
id="feFlood210" /><feComposite
|
||||||
|
operator="in"
|
||||||
|
in="color"
|
||||||
|
in2="choke"
|
||||||
|
result="shadow"
|
||||||
|
id="feComposite212" /><feComposite
|
||||||
|
operator="over"
|
||||||
|
in="shadow"
|
||||||
|
in2="SourceGraphic"
|
||||||
|
id="feComposite214" /></filter><linearGradient
|
||||||
|
id="gradient-4-1"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="82.026001"
|
||||||
|
y1="144.832"
|
||||||
|
x2="82.026001"
|
||||||
|
y2="264.46201"
|
||||||
|
xlink:href="#linearGradient2809"
|
||||||
|
gradientTransform="translate(7.2213312)" /><linearGradient
|
||||||
|
id="gradient-4-2"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="143.69299"
|
||||||
|
y1="22.804001"
|
||||||
|
x2="143.69299"
|
||||||
|
y2="264.582"
|
||||||
|
xlink:href="#linearGradient938" /><linearGradient
|
||||||
|
id="gradient-4-0"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="205.862"
|
||||||
|
y1="146.28"
|
||||||
|
x2="205.862"
|
||||||
|
y2="265.91"
|
||||||
|
xlink:href="#gradient-4"
|
||||||
|
gradientTransform="translate(-7.2213312)" /><filter
|
||||||
|
style="color-interpolation-filters:sRGB"
|
||||||
|
inkscape:label="Drop Shadow"
|
||||||
|
id="filter2000"
|
||||||
|
x="-0.3425389"
|
||||||
|
y="-0.3425389"
|
||||||
|
width="1.6850778"
|
||||||
|
height="1.6850778"><feFlood
|
||||||
|
flood-opacity="1"
|
||||||
|
flood-color="rgb(0,0,0)"
|
||||||
|
result="flood"
|
||||||
|
id="feFlood1990" /><feComposite
|
||||||
|
in="flood"
|
||||||
|
in2="SourceGraphic"
|
||||||
|
operator="out"
|
||||||
|
result="composite1"
|
||||||
|
id="feComposite1992" /><feGaussianBlur
|
||||||
|
in="composite1"
|
||||||
|
stdDeviation="29.980818"
|
||||||
|
result="blur"
|
||||||
|
id="feGaussianBlur1994" /><feOffset
|
||||||
|
dx="0"
|
||||||
|
dy="0"
|
||||||
|
result="offset"
|
||||||
|
id="feOffset1996" /><feComposite
|
||||||
|
in="offset"
|
||||||
|
in2="SourceGraphic"
|
||||||
|
operator="atop"
|
||||||
|
result="fbSourceGraphic"
|
||||||
|
id="feComposite1998" /><feColorMatrix
|
||||||
|
result="fbSourceGraphicAlpha"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
|
||||||
|
id="feColorMatrix2062" /><feFlood
|
||||||
|
id="feFlood2064"
|
||||||
|
flood-opacity="1"
|
||||||
|
flood-color="rgb(0,0,0)"
|
||||||
|
result="flood"
|
||||||
|
in="fbSourceGraphic" /><feComposite
|
||||||
|
in2="fbSourceGraphic"
|
||||||
|
id="feComposite2066"
|
||||||
|
in="flood"
|
||||||
|
operator="out"
|
||||||
|
result="composite1" /><feGaussianBlur
|
||||||
|
id="feGaussianBlur2068"
|
||||||
|
in="composite1"
|
||||||
|
stdDeviation="28.6433"
|
||||||
|
result="blur" /><feOffset
|
||||||
|
id="feOffset2070"
|
||||||
|
dx="0"
|
||||||
|
dy="0"
|
||||||
|
result="offset" /><feComposite
|
||||||
|
in2="fbSourceGraphic"
|
||||||
|
id="feComposite2072"
|
||||||
|
in="offset"
|
||||||
|
operator="atop"
|
||||||
|
result="fbSourceGraphic" /><feColorMatrix
|
||||||
|
result="fbSourceGraphicAlpha"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
|
||||||
|
id="feColorMatrix3393" /><feFlood
|
||||||
|
id="feFlood3395"
|
||||||
|
flood-opacity="0.352941"
|
||||||
|
flood-color="rgb(0,0,0)"
|
||||||
|
result="flood"
|
||||||
|
in="fbSourceGraphic" /><feComposite
|
||||||
|
in2="fbSourceGraphic"
|
||||||
|
id="feComposite3397"
|
||||||
|
in="flood"
|
||||||
|
operator="in"
|
||||||
|
result="composite1" /><feGaussianBlur
|
||||||
|
id="feGaussianBlur3399"
|
||||||
|
in="composite1"
|
||||||
|
stdDeviation="6.59891"
|
||||||
|
result="blur" /><feOffset
|
||||||
|
id="feOffset3401"
|
||||||
|
dx="0"
|
||||||
|
dy="0"
|
||||||
|
result="offset" /><feComposite
|
||||||
|
in2="offset"
|
||||||
|
id="feComposite3403"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
operator="over"
|
||||||
|
result="composite2" /></filter><linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient1211"
|
||||||
|
id="linearGradient5506"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(117.34662)"
|
||||||
|
x1="82.026001"
|
||||||
|
y1="144.832"
|
||||||
|
x2="82.026001"
|
||||||
|
y2="264.46201" /><radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient5535"
|
||||||
|
id="radialGradient5537"
|
||||||
|
cx="143.6935"
|
||||||
|
cy="143.69299"
|
||||||
|
fx="143.6935"
|
||||||
|
fy="143.69299"
|
||||||
|
r="152.72653"
|
||||||
|
gradientTransform="matrix(1,0,0,0.8506841,0,21.45565)"
|
||||||
|
gradientUnits="userSpaceOnUse" /></defs><circle
|
||||||
|
style="opacity:1;fill:#242832;fill-opacity:1;stroke:#000000;stroke-width:10;stroke-dasharray:none;stroke-opacity:0.961795;filter:url(#filter2000)"
|
||||||
|
id="path1157"
|
||||||
|
cx="381.48901"
|
||||||
|
cy="381.48901"
|
||||||
|
inkscape:label="path1157"
|
||||||
|
r="235.79112"
|
||||||
|
sodipodi:insensitive="true" /><g
|
||||||
|
transform="matrix(0.319972,0,0,0.323174,379.08153,437.03375)"
|
||||||
|
id="g228"><g
|
||||||
|
style="opacity:1;fill:none;fill-rule:nonzero;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none"
|
||||||
|
transform="matrix(3.89,0,0,3.89,-175.05,-175.05)"
|
||||||
|
id="g226" /></g><g
|
||||||
|
id="g236"
|
||||||
|
style="fill:none;filter:url(#inner-shadow-filter-0)"
|
||||||
|
transform="matrix(1.107829,0,0,1.106267,221.95533,199.03714)"><path
|
||||||
|
d="m 78.642332,155.437 v 98.42 c 0,5.867 4.741,10.605 10.605,10.605 5.854,0 10.604995,-4.738 10.604995,-10.605 v -98.42 c 0,-5.856 -4.750995,-10.605 -10.604995,-10.605 -5.864,0 -10.605,4.744 -10.605,10.605 z"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:url(#gradient-4-1);stroke-width:9.80924px;stroke-linecap:round;stroke-linejoin:round"
|
||||||
|
id="path230" /><path
|
||||||
|
d="m 29.456,264.582 h 23.351 v -116.85 c 0.064,-0.56 0.166,-1.119 0.166,-1.693 0,-50.412 40.69,-91.42 90.698,-91.42 50.002,0 90.692,41.008 90.692,91.42 0,0.771 0.113,1.518 0.228,2.263 v 116.28 h 23.354 c 16.254,0 29.442,-13.64 29.442,-30.469 v -60.936 c 0,-13.878 -8.989,-25.57 -21.261,-29.249 C 264.997,76.957 210.518,22.804 143.676,22.804 76.816,22.804 22.329,76.962 21.211,143.954 8.956,147.638 0,159.32 0,173.187 v 60.926 c 0,16.819 13.187,30.469 29.456,30.469 z"
|
||||||
|
style="fill:url(#radialGradient5537);fill-opacity:1;stroke:url(#gradient-4-2);stroke-width:18.0661;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||||
|
id="path232" /><path
|
||||||
|
d="M 49.735541,279.35822 C 23.7214,267.48486 38.122112,248.62719 80.85964,237.45225 c 14.400662,-3.49216 25.08508,-5.12184 43.66659,-4.88901 11.61348,0.23282 24.62053,3.49216 24.62053,3.49216 0,-42.13877 -0.46471,-121.7601 -0.46471,-160.872338 4.6454,0 7.89719,-0.232827 14.40071,-0.232827 0,2.328107 0,4.190613 0,6.053093 0,2.095305 0,3.259358 0.46471,4.656212 4.6454,14.66709 11.14893,20.48736 43.66659,38.41381 41.34392,23.04827 53.42195,36.78411 53.42195,55.17616 -0.46471,17.22802 -30.65954,54.01213 -37.16306,52.61528 9.29075,-13.03741 22.2978,-27.00606 25.54958,-38.64661 4.18085,-14.20147 -7.43263,-34.2232 -26.01414,-44.69971 -14.86522,-8.8468 -50.17016,-16.52957 -59.92547,-16.52957 0,0 -0.46472,84.74317 -0.46472,116.87109 0,5.35464 -9.7553,14.89989 -15.32977,18.15925 -25.54958,15.36551 -75.25519,22.34984 -97.553043,12.33896 z"
|
||||||
|
id="path3079"
|
||||||
|
style="stroke-width:3.28861" /><path
|
||||||
|
d="m 188.76763,155.437 v 98.42 c 0,5.867 4.741,10.605 10.60501,10.605 5.854,0 10.605,-4.738 10.605,-10.605 v -98.42 c 0,-5.856 -4.751,-10.605 -10.605,-10.605 -5.86401,0 -10.60501,4.744 -10.60501,10.605 z"
|
||||||
|
style="fill:none;stroke:url(#linearGradient5506);stroke-width:9.80924px;stroke-linecap:round;stroke-linejoin:round"
|
||||||
|
id="path5502" /></g><g
|
||||||
|
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
||||||
|
id="g240" /><g
|
||||||
|
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
||||||
|
id="g242" /><g
|
||||||
|
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
||||||
|
id="g244" /><g
|
||||||
|
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
||||||
|
id="g246" /><g
|
||||||
|
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
||||||
|
id="g248" /><g
|
||||||
|
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
||||||
|
id="g250" /><g
|
||||||
|
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
||||||
|
id="g252" /><g
|
||||||
|
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
||||||
|
id="g254" /><g
|
||||||
|
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
||||||
|
id="g256" /><g
|
||||||
|
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
||||||
|
id="g258" /><g
|
||||||
|
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
||||||
|
id="g260" /><g
|
||||||
|
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
||||||
|
id="g262" /><g
|
||||||
|
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
||||||
|
id="g264" /><g
|
||||||
|
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
||||||
|
id="g266" /><g
|
||||||
|
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
||||||
|
id="g268" /></svg>
|
After Width: | Height: | Size: 14 KiB |
BIN
assets/spotube-nightly-logo_android12.png
Normal file
After Width: | Height: | Size: 295 KiB |
BIN
assets/spotube-tall-capsule.png
Normal file
After Width: | Height: | Size: 90 KiB |
BIN
assets/spotube-wide-capsule-large.png
Normal file
After Width: | Height: | Size: 90 KiB |
BIN
assets/spotube-wide-capsule-small.png
Normal file
After Width: | Height: | Size: 30 KiB |
@ -10,7 +10,7 @@ pkgbase = spotube-bin
|
|||||||
depends = libsecret
|
depends = libsecret
|
||||||
depends = jsoncpp
|
depends = jsoncpp
|
||||||
depends = libnotify
|
depends = libnotify
|
||||||
depends = networkmanager
|
depends = xdg-user-dirs
|
||||||
source = https://github.com/KRTirtho/spotube/releases/download/v2.3.0/Spotube-linux-x86_64.tar.xz
|
source = https://github.com/KRTirtho/spotube/releases/download/v2.3.0/Spotube-linux-x86_64.tar.xz
|
||||||
md5sums = 8cd6a7385c5c75d203dccd762f1d63ec
|
md5sums = 8cd6a7385c5c75d203dccd762f1d63ec
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ arch=(x86_64)
|
|||||||
url="https://github.com/KRTirtho/spotube/"
|
url="https://github.com/KRTirtho/spotube/"
|
||||||
license=('BSD-4-Clause')
|
license=('BSD-4-Clause')
|
||||||
groups=()
|
groups=()
|
||||||
depends=('mpv' 'libappindicator-gtk3' 'libsecret' 'jsoncpp' 'libnotify' 'networkmanager')
|
depends=('mpv' 'libappindicator-gtk3' 'libsecret' 'jsoncpp' 'libnotify' 'xdg-user-dirs')
|
||||||
makedepends=()
|
makedepends=()
|
||||||
checkdepends=()
|
checkdepends=()
|
||||||
optdepends=()
|
optdepends=()
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
import 'dart:developer';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
import 'package:path/path.dart';
|
|
||||||
import 'package:http/http.dart';
|
import 'package:http/http.dart';
|
||||||
import 'package:html/parser.dart';
|
import 'package:html/parser.dart';
|
||||||
import 'package:pub_api_client/pub_api_client.dart';
|
import 'package:pub_api_client/pub_api_client.dart';
|
||||||
@ -33,15 +33,20 @@ void main() async {
|
|||||||
|
|
||||||
final gitDeps = gitDepsList.map(
|
final gitDeps = gitDepsList.map(
|
||||||
(d) {
|
(d) {
|
||||||
|
final uri = Uri.parse(
|
||||||
|
d.value.url.toString().replaceAll('.git', ''),
|
||||||
|
);
|
||||||
return MapEntry(
|
return MapEntry(
|
||||||
d.key,
|
d.key,
|
||||||
join(
|
uri.replace(
|
||||||
d.value.url.toString().replaceAll('.git', ''),
|
pathSegments: [
|
||||||
'raw',
|
...uri.pathSegments,
|
||||||
d.value.ref ?? 'main',
|
'raw',
|
||||||
d.value.path ?? '',
|
d.value.ref ?? 'main',
|
||||||
'pubspec.yaml',
|
d.value.path ?? '',
|
||||||
),
|
'pubspec.yaml',
|
||||||
|
],
|
||||||
|
).toString(),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
).toList();
|
).toList();
|
||||||
@ -55,7 +60,10 @@ void main() async {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
final document = parse(res.body);
|
final document = parse(res.body);
|
||||||
final pre = document.querySelector('pre');
|
final pre = document.querySelector('pre');
|
||||||
if (pre == null) rethrow;
|
if (pre == null) {
|
||||||
|
log(d.toString());
|
||||||
|
rethrow;
|
||||||
|
}
|
||||||
return Pubspec.parse(pre.text);
|
return Pubspec.parse(pre.text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -68,6 +76,7 @@ void main() async {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// ignore: avoid_print
|
||||||
print(
|
print(
|
||||||
packageInfo
|
packageInfo
|
||||||
.map(
|
.map(
|
||||||
@ -76,6 +85,7 @@ void main() async {
|
|||||||
)
|
)
|
||||||
.join('\n'),
|
.join('\n'),
|
||||||
);
|
);
|
||||||
|
// ignore: avoid_print
|
||||||
print(
|
print(
|
||||||
gitPubspecs.map(
|
gitPubspecs.map(
|
||||||
(package) {
|
(package) {
|
||||||
|
@ -35,6 +35,12 @@ void main(List<String> args) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
print(
|
||||||
|
"Prompt:\n"
|
||||||
|
"Translate following to their appropriate locale for flutter arb translations files."
|
||||||
|
" Put the respective new translations in a map of their corresponding locale.",
|
||||||
|
);
|
||||||
|
// ignore: avoid_print
|
||||||
print(
|
print(
|
||||||
const JsonEncoder.withIndent(' ').convert(
|
const JsonEncoder.withIndent(' ').convert(
|
||||||
args.isNotEmpty ? messagesWithValues[args.first] : messagesWithValues,
|
args.isNotEmpty ? messagesWithValues[args.first] : messagesWithValues,
|
||||||
|
6
flutter_launcher_icons-nightly.yaml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
flutter_launcher_icons:
|
||||||
|
android: true
|
||||||
|
ios: true
|
||||||
|
image_path: "assets/spotube-nightly-logo.png"
|
||||||
|
adaptive_icon_foreground: "assets/spotube-nightly-logo-foreground.jpg"
|
||||||
|
adaptive_icon_background: "#242832"
|
9
flutter_native_splash-nightly.yaml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
flutter_native_splash:
|
||||||
|
background_image: assets/bengali-patterns-bg.jpg
|
||||||
|
image: assets/spotube-nightly-logo.png
|
||||||
|
branding: assets/branding.png
|
||||||
|
android_12:
|
||||||
|
image: assets/spotube-nightly-logo_android12.png
|
||||||
|
branding: assets/branding.png
|
||||||
|
color: "#000000"
|
||||||
|
icon_background_color: "#000000"
|
21
ios/Podfile
@ -34,6 +34,27 @@ target 'Runner' do
|
|||||||
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
|
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
target 'dev' do
|
||||||
|
use_frameworks!
|
||||||
|
use_modular_headers!
|
||||||
|
|
||||||
|
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
|
||||||
|
end
|
||||||
|
|
||||||
|
target 'stable' do
|
||||||
|
use_frameworks!
|
||||||
|
use_modular_headers!
|
||||||
|
|
||||||
|
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
|
||||||
|
end
|
||||||
|
|
||||||
|
target 'nightly' do
|
||||||
|
use_frameworks!
|
||||||
|
use_modular_headers!
|
||||||
|
|
||||||
|
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
|
||||||
|
end
|
||||||
|
|
||||||
post_install do |installer|
|
post_install do |installer|
|
||||||
installer.pods_project.targets.each do |target|
|
installer.pods_project.targets.each do |target|
|
||||||
flutter_additional_ios_build_settings(target)
|
flutter_additional_ios_build_settings(target)
|
||||||
|
153
ios/Podfile.lock
@ -1,13 +1,12 @@
|
|||||||
PODS:
|
PODS:
|
||||||
|
- app_links (0.0.1):
|
||||||
|
- Flutter
|
||||||
- audio_service (0.0.1):
|
- audio_service (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- audio_session (0.0.1):
|
- audio_session (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- audioplayers_darwin (0.0.1):
|
- device_info_plus (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- connectivity_plus (0.0.1):
|
|
||||||
- Flutter
|
|
||||||
- ReachabilitySwift
|
|
||||||
- DKImagePickerController/Core (4.3.4):
|
- DKImagePickerController/Core (4.3.4):
|
||||||
- DKImagePickerController/ImageDataManager
|
- DKImagePickerController/ImageDataManager
|
||||||
- DKImagePickerController/Resource
|
- DKImagePickerController/Resource
|
||||||
@ -42,6 +41,8 @@ PODS:
|
|||||||
- file_picker (0.0.1):
|
- file_picker (0.0.1):
|
||||||
- DKImagePickerController/PhotoGallery
|
- DKImagePickerController/PhotoGallery
|
||||||
- Flutter
|
- Flutter
|
||||||
|
- file_selector_ios (0.0.1):
|
||||||
|
- Flutter
|
||||||
- Flutter (1.0.0)
|
- Flutter (1.0.0)
|
||||||
- flutter_inappwebview (0.0.1):
|
- flutter_inappwebview (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
@ -50,44 +51,77 @@ PODS:
|
|||||||
- flutter_inappwebview/Core (0.0.1):
|
- flutter_inappwebview/Core (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- OrderedSet (~> 5.0)
|
- OrderedSet (~> 5.0)
|
||||||
|
- flutter_keyboard_visibility (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- flutter_mailer (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- flutter_native_splash (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- flutter_secure_storage (6.0.0):
|
||||||
|
- Flutter
|
||||||
|
- flutter_sharing_intent (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- fluttertoast (0.0.2):
|
||||||
|
- Flutter
|
||||||
|
- Toast
|
||||||
- FMDB (2.7.5):
|
- FMDB (2.7.5):
|
||||||
- FMDB/standard (= 2.7.5)
|
- FMDB/standard (= 2.7.5)
|
||||||
- FMDB/standard (2.7.5)
|
- FMDB/standard (2.7.5)
|
||||||
- metadata_god (0.0.1):
|
- image_picker_ios (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
|
- integration_test (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- media_kit_libs_ios_audio (1.0.4):
|
||||||
|
- Flutter
|
||||||
|
- media_kit_native_event_loop (1.0.0):
|
||||||
|
- Flutter
|
||||||
|
- metadata_god (0.0.1)
|
||||||
- OrderedSet (5.0.0)
|
- OrderedSet (5.0.0)
|
||||||
- package_info_plus (0.4.5):
|
- package_info_plus (0.4.5):
|
||||||
- Flutter
|
- Flutter
|
||||||
- path_provider_ios (0.0.1):
|
- path_provider_foundation (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- permission_handler_apple (9.0.4):
|
- FlutterMacOS
|
||||||
|
- permission_handler_apple (9.1.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- ReachabilitySwift (5.0.0)
|
- SDWebImage (5.18.8):
|
||||||
- SDWebImage (5.13.4):
|
- SDWebImage/Core (= 5.18.8)
|
||||||
- SDWebImage/Core (= 5.13.4)
|
- SDWebImage/Core (5.18.8)
|
||||||
- SDWebImage/Core (5.13.4)
|
- shared_preferences_foundation (0.0.1):
|
||||||
- shared_preferences_ios (0.0.1):
|
|
||||||
- Flutter
|
- Flutter
|
||||||
- sqflite (0.0.2):
|
- FlutterMacOS
|
||||||
|
- sqflite (0.0.3):
|
||||||
- Flutter
|
- Flutter
|
||||||
- FMDB (>= 2.7.5)
|
- FMDB (>= 2.7.5)
|
||||||
- SwiftyGif (5.4.3)
|
- SwiftyGif (5.4.4)
|
||||||
|
- Toast (4.0.0)
|
||||||
- url_launcher_ios (0.0.1):
|
- url_launcher_ios (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
|
|
||||||
DEPENDENCIES:
|
DEPENDENCIES:
|
||||||
|
- app_links (from `.symlinks/plugins/app_links/ios`)
|
||||||
- audio_service (from `.symlinks/plugins/audio_service/ios`)
|
- audio_service (from `.symlinks/plugins/audio_service/ios`)
|
||||||
- audio_session (from `.symlinks/plugins/audio_session/ios`)
|
- audio_session (from `.symlinks/plugins/audio_session/ios`)
|
||||||
- audioplayers_darwin (from `.symlinks/plugins/audioplayers_darwin/ios`)
|
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
|
||||||
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`)
|
|
||||||
- file_picker (from `.symlinks/plugins/file_picker/ios`)
|
- file_picker (from `.symlinks/plugins/file_picker/ios`)
|
||||||
|
- file_selector_ios (from `.symlinks/plugins/file_selector_ios/ios`)
|
||||||
- Flutter (from `Flutter`)
|
- Flutter (from `Flutter`)
|
||||||
- flutter_inappwebview (from `.symlinks/plugins/flutter_inappwebview/ios`)
|
- flutter_inappwebview (from `.symlinks/plugins/flutter_inappwebview/ios`)
|
||||||
|
- flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`)
|
||||||
|
- flutter_mailer (from `.symlinks/plugins/flutter_mailer/ios`)
|
||||||
|
- flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
|
||||||
|
- flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
|
||||||
|
- flutter_sharing_intent (from `.symlinks/plugins/flutter_sharing_intent/ios`)
|
||||||
|
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
|
||||||
|
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
|
||||||
|
- integration_test (from `.symlinks/plugins/integration_test/ios`)
|
||||||
|
- media_kit_libs_ios_audio (from `.symlinks/plugins/media_kit_libs_ios_audio/ios`)
|
||||||
|
- media_kit_native_event_loop (from `.symlinks/plugins/media_kit_native_event_loop/ios`)
|
||||||
- metadata_god (from `.symlinks/plugins/metadata_god/ios`)
|
- metadata_god (from `.symlinks/plugins/metadata_god/ios`)
|
||||||
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
|
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
|
||||||
- path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`)
|
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
|
||||||
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
|
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
|
||||||
- shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`)
|
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
|
||||||
- sqflite (from `.symlinks/plugins/sqflite/ios`)
|
- sqflite (from `.symlinks/plugins/sqflite/ios`)
|
||||||
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
|
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
|
||||||
|
|
||||||
@ -97,63 +131,96 @@ SPEC REPOS:
|
|||||||
- DKPhotoGallery
|
- DKPhotoGallery
|
||||||
- FMDB
|
- FMDB
|
||||||
- OrderedSet
|
- OrderedSet
|
||||||
- ReachabilitySwift
|
|
||||||
- SDWebImage
|
- SDWebImage
|
||||||
- SwiftyGif
|
- SwiftyGif
|
||||||
|
- Toast
|
||||||
|
|
||||||
EXTERNAL SOURCES:
|
EXTERNAL SOURCES:
|
||||||
|
app_links:
|
||||||
|
:path: ".symlinks/plugins/app_links/ios"
|
||||||
audio_service:
|
audio_service:
|
||||||
:path: ".symlinks/plugins/audio_service/ios"
|
:path: ".symlinks/plugins/audio_service/ios"
|
||||||
audio_session:
|
audio_session:
|
||||||
:path: ".symlinks/plugins/audio_session/ios"
|
:path: ".symlinks/plugins/audio_session/ios"
|
||||||
audioplayers_darwin:
|
device_info_plus:
|
||||||
:path: ".symlinks/plugins/audioplayers_darwin/ios"
|
:path: ".symlinks/plugins/device_info_plus/ios"
|
||||||
connectivity_plus:
|
|
||||||
:path: ".symlinks/plugins/connectivity_plus/ios"
|
|
||||||
file_picker:
|
file_picker:
|
||||||
:path: ".symlinks/plugins/file_picker/ios"
|
:path: ".symlinks/plugins/file_picker/ios"
|
||||||
|
file_selector_ios:
|
||||||
|
:path: ".symlinks/plugins/file_selector_ios/ios"
|
||||||
Flutter:
|
Flutter:
|
||||||
:path: Flutter
|
:path: Flutter
|
||||||
flutter_inappwebview:
|
flutter_inappwebview:
|
||||||
:path: ".symlinks/plugins/flutter_inappwebview/ios"
|
:path: ".symlinks/plugins/flutter_inappwebview/ios"
|
||||||
|
flutter_keyboard_visibility:
|
||||||
|
:path: ".symlinks/plugins/flutter_keyboard_visibility/ios"
|
||||||
|
flutter_mailer:
|
||||||
|
:path: ".symlinks/plugins/flutter_mailer/ios"
|
||||||
|
flutter_native_splash:
|
||||||
|
:path: ".symlinks/plugins/flutter_native_splash/ios"
|
||||||
|
flutter_secure_storage:
|
||||||
|
:path: ".symlinks/plugins/flutter_secure_storage/ios"
|
||||||
|
flutter_sharing_intent:
|
||||||
|
:path: ".symlinks/plugins/flutter_sharing_intent/ios"
|
||||||
|
fluttertoast:
|
||||||
|
:path: ".symlinks/plugins/fluttertoast/ios"
|
||||||
|
image_picker_ios:
|
||||||
|
:path: ".symlinks/plugins/image_picker_ios/ios"
|
||||||
|
integration_test:
|
||||||
|
:path: ".symlinks/plugins/integration_test/ios"
|
||||||
|
media_kit_libs_ios_audio:
|
||||||
|
:path: ".symlinks/plugins/media_kit_libs_ios_audio/ios"
|
||||||
|
media_kit_native_event_loop:
|
||||||
|
:path: ".symlinks/plugins/media_kit_native_event_loop/ios"
|
||||||
metadata_god:
|
metadata_god:
|
||||||
:path: ".symlinks/plugins/metadata_god/ios"
|
:path: ".symlinks/plugins/metadata_god/ios"
|
||||||
package_info_plus:
|
package_info_plus:
|
||||||
:path: ".symlinks/plugins/package_info_plus/ios"
|
:path: ".symlinks/plugins/package_info_plus/ios"
|
||||||
path_provider_ios:
|
path_provider_foundation:
|
||||||
:path: ".symlinks/plugins/path_provider_ios/ios"
|
:path: ".symlinks/plugins/path_provider_foundation/darwin"
|
||||||
permission_handler_apple:
|
permission_handler_apple:
|
||||||
:path: ".symlinks/plugins/permission_handler_apple/ios"
|
:path: ".symlinks/plugins/permission_handler_apple/ios"
|
||||||
shared_preferences_ios:
|
shared_preferences_foundation:
|
||||||
:path: ".symlinks/plugins/shared_preferences_ios/ios"
|
:path: ".symlinks/plugins/shared_preferences_foundation/darwin"
|
||||||
sqflite:
|
sqflite:
|
||||||
:path: ".symlinks/plugins/sqflite/ios"
|
:path: ".symlinks/plugins/sqflite/ios"
|
||||||
url_launcher_ios:
|
url_launcher_ios:
|
||||||
:path: ".symlinks/plugins/url_launcher_ios/ios"
|
:path: ".symlinks/plugins/url_launcher_ios/ios"
|
||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
|
app_links: 5ef33d0d295a89d9d16bb81b0e3b0d5f70d6c875
|
||||||
audio_service: f509d65da41b9521a61f1c404dd58651f265a567
|
audio_service: f509d65da41b9521a61f1c404dd58651f265a567
|
||||||
audio_session: 4f3e461722055d21515cf3261b64c973c062f345
|
audio_session: 4f3e461722055d21515cf3261b64c973c062f345
|
||||||
audioplayers_darwin: 387322cb364026a1782298c982693b1b6aa9fa1b
|
device_info_plus: 7545d84d8d1b896cb16a4ff98c19f07ec4b298ea
|
||||||
connectivity_plus: 413a8857dd5d9f1c399a39130850d02fe0feaf7e
|
|
||||||
DKImagePickerController: b512c28220a2b8ac7419f21c491fc8534b7601ac
|
DKImagePickerController: b512c28220a2b8ac7419f21c491fc8534b7601ac
|
||||||
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
|
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
|
||||||
file_picker: 817ab1d8cd2da9d2da412a417162deee3500fc95
|
file_picker: 15fd9539e4eb735dc54bae8c0534a7a9511a03de
|
||||||
|
file_selector_ios: 8c25d700d625e1dcdd6599f2d927072f2254647b
|
||||||
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
|
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
|
||||||
flutter_inappwebview: bfd58618f49dc62f2676de690fc6dcda1d6c3721
|
flutter_inappwebview: acd4fc0f012cefd09015000c241137d82f01ba62
|
||||||
|
flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069
|
||||||
|
flutter_mailer: 2ef5a67087bc8c6c4cefd04a178bf1ae2c94cd83
|
||||||
|
flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef
|
||||||
|
flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be
|
||||||
|
flutter_sharing_intent: e35380d0e1501d7111dbb7e46d5ac6339da6da98
|
||||||
|
fluttertoast: 31b00dabfa7fb7bacd9e7dbee580d7a2ff4bf265
|
||||||
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
|
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
|
||||||
metadata_god: cebcc48708aca3e9d1ef60c74b23404ff3730d5e
|
image_picker_ios: 4a8aadfbb6dc30ad5141a2ce3832af9214a705b5
|
||||||
|
integration_test: 13825b8a9334a850581300559b8839134b124670
|
||||||
|
media_kit_libs_ios_audio: 8f39d96a9c630685dfb844c289bd1d114c486fb3
|
||||||
|
media_kit_native_event_loop: 99111eded5acbdc9c2738021ea6550dd36ca8837
|
||||||
|
metadata_god: eceae399d0020475069a5cebc35943ce8562b5d7
|
||||||
OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
|
OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
|
||||||
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
|
package_info_plus: fd030dabf36271f146f1f3beacd48f564b0f17f7
|
||||||
path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02
|
path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943
|
||||||
permission_handler_apple: 44366e37eaf29454a1e7b1b7d736c2cceaeb17ce
|
permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6
|
||||||
ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
|
SDWebImage: a81bbb3ba4ea5f810f4069c68727cb118467a04a
|
||||||
SDWebImage: e5cc87bf736e60f49592f307bdf9e157189298a3
|
shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126
|
||||||
shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad
|
sqflite: 31f7eba61e3074736dff8807a9b41581e4f7f15a
|
||||||
sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904
|
SwiftyGif: 93a1cc87bf3a51916001cf8f3d63835fb64c819f
|
||||||
SwiftyGif: 6c3eafd0ce693cad58bb63d2b2fb9bacb8552780
|
Toast: 91b396c56ee72a5790816f40d3a94dd357abc196
|
||||||
url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de
|
url_launcher_ios: 08a3dfac5fb39e8759aeb0abbd5d9480f30fc8b4
|
||||||
|
|
||||||
PODFILE CHECKSUM: e9ba2289804955e1370e293b204c6e8651354f4a
|
PODFILE CHECKSUM: e36c7ad9836dfd8d22934c7680185432a658e28f
|
||||||
|
|
||||||
COCOAPODS: 1.11.3
|
COCOAPODS: 1.14.3
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Scheme
|
<Scheme
|
||||||
LastUpgradeVersion = "1300"
|
LastUpgradeVersion = "1430"
|
||||||
version = "1.3">
|
version = "1.3">
|
||||||
<BuildAction
|
<BuildAction
|
||||||
parallelizeBuildables = "YES"
|
parallelizeBuildables = "YES"
|
||||||
|
77
ios/Runner.xcodeproj/xcshareddata/xcschemes/dev.xcscheme
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Scheme
|
||||||
|
LastUpgradeVersion = "1510"
|
||||||
|
version = "1.7">
|
||||||
|
<BuildAction
|
||||||
|
parallelizeBuildables = "YES"
|
||||||
|
buildImplicitDependencies = "YES">
|
||||||
|
<BuildActionEntries>
|
||||||
|
<BuildActionEntry
|
||||||
|
buildForTesting = "YES"
|
||||||
|
buildForRunning = "YES"
|
||||||
|
buildForProfiling = "YES"
|
||||||
|
buildForArchiving = "YES"
|
||||||
|
buildForAnalyzing = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "B536BDAB2B405FDE009B3CE4"
|
||||||
|
BuildableName = "dev.app"
|
||||||
|
BlueprintName = "dev"
|
||||||
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildActionEntry>
|
||||||
|
</BuildActionEntries>
|
||||||
|
</BuildAction>
|
||||||
|
<TestAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
shouldAutocreateTestPlan = "YES">
|
||||||
|
</TestAction>
|
||||||
|
<LaunchAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
launchStyle = "0"
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
ignoresPersistentStateOnLaunch = "NO"
|
||||||
|
debugDocumentVersioning = "YES"
|
||||||
|
debugServiceExtension = "internal"
|
||||||
|
allowLocationSimulation = "YES">
|
||||||
|
<BuildableProductRunnable
|
||||||
|
runnableDebuggingMode = "0">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "B536BDAB2B405FDE009B3CE4"
|
||||||
|
BuildableName = "dev.app"
|
||||||
|
BlueprintName = "dev"
|
||||||
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildableProductRunnable>
|
||||||
|
</LaunchAction>
|
||||||
|
<ProfileAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
savedToolIdentifier = ""
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
debugDocumentVersioning = "YES">
|
||||||
|
<BuildableProductRunnable
|
||||||
|
runnableDebuggingMode = "0">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "B536BDAB2B405FDE009B3CE4"
|
||||||
|
BuildableName = "dev.app"
|
||||||
|
BlueprintName = "dev"
|
||||||
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildableProductRunnable>
|
||||||
|
</ProfileAction>
|
||||||
|
<AnalyzeAction
|
||||||
|
buildConfiguration = "Debug">
|
||||||
|
</AnalyzeAction>
|
||||||
|
<ArchiveAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
revealArchiveInOrganizer = "YES">
|
||||||
|
</ArchiveAction>
|
||||||
|
</Scheme>
|
77
ios/Runner.xcodeproj/xcshareddata/xcschemes/nightly.xcscheme
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Scheme
|
||||||
|
LastUpgradeVersion = "1510"
|
||||||
|
version = "1.7">
|
||||||
|
<BuildAction
|
||||||
|
parallelizeBuildables = "YES"
|
||||||
|
buildImplicitDependencies = "YES">
|
||||||
|
<BuildActionEntries>
|
||||||
|
<BuildActionEntry
|
||||||
|
buildForTesting = "YES"
|
||||||
|
buildForRunning = "YES"
|
||||||
|
buildForProfiling = "YES"
|
||||||
|
buildForArchiving = "YES"
|
||||||
|
buildForAnalyzing = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "B536BDCD2B4060B3009B3CE4"
|
||||||
|
BuildableName = "nightly.app"
|
||||||
|
BlueprintName = "nightly"
|
||||||
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildActionEntry>
|
||||||
|
</BuildActionEntries>
|
||||||
|
</BuildAction>
|
||||||
|
<TestAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
shouldAutocreateTestPlan = "YES">
|
||||||
|
</TestAction>
|
||||||
|
<LaunchAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
launchStyle = "0"
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
ignoresPersistentStateOnLaunch = "NO"
|
||||||
|
debugDocumentVersioning = "YES"
|
||||||
|
debugServiceExtension = "internal"
|
||||||
|
allowLocationSimulation = "YES">
|
||||||
|
<BuildableProductRunnable
|
||||||
|
runnableDebuggingMode = "0">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "B536BDCD2B4060B3009B3CE4"
|
||||||
|
BuildableName = "nightly.app"
|
||||||
|
BlueprintName = "nightly"
|
||||||
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildableProductRunnable>
|
||||||
|
</LaunchAction>
|
||||||
|
<ProfileAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
savedToolIdentifier = ""
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
debugDocumentVersioning = "YES">
|
||||||
|
<BuildableProductRunnable
|
||||||
|
runnableDebuggingMode = "0">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "B536BDCD2B4060B3009B3CE4"
|
||||||
|
BuildableName = "nightly.app"
|
||||||
|
BlueprintName = "nightly"
|
||||||
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildableProductRunnable>
|
||||||
|
</ProfileAction>
|
||||||
|
<AnalyzeAction
|
||||||
|
buildConfiguration = "Debug">
|
||||||
|
</AnalyzeAction>
|
||||||
|
<ArchiveAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
revealArchiveInOrganizer = "YES">
|
||||||
|
</ArchiveAction>
|
||||||
|
</Scheme>
|
77
ios/Runner.xcodeproj/xcshareddata/xcschemes/stable.xcscheme
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Scheme
|
||||||
|
LastUpgradeVersion = "1510"
|
||||||
|
version = "1.7">
|
||||||
|
<BuildAction
|
||||||
|
parallelizeBuildables = "YES"
|
||||||
|
buildImplicitDependencies = "YES">
|
||||||
|
<BuildActionEntries>
|
||||||
|
<BuildActionEntry
|
||||||
|
buildForTesting = "YES"
|
||||||
|
buildForRunning = "YES"
|
||||||
|
buildForProfiling = "YES"
|
||||||
|
buildForArchiving = "YES"
|
||||||
|
buildForAnalyzing = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "B536BD8C2B405DB1009B3CE4"
|
||||||
|
BuildableName = "stable.app"
|
||||||
|
BlueprintName = "stable"
|
||||||
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildActionEntry>
|
||||||
|
</BuildActionEntries>
|
||||||
|
</BuildAction>
|
||||||
|
<TestAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
shouldAutocreateTestPlan = "YES">
|
||||||
|
</TestAction>
|
||||||
|
<LaunchAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
launchStyle = "0"
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
ignoresPersistentStateOnLaunch = "NO"
|
||||||
|
debugDocumentVersioning = "YES"
|
||||||
|
debugServiceExtension = "internal"
|
||||||
|
allowLocationSimulation = "YES">
|
||||||
|
<BuildableProductRunnable
|
||||||
|
runnableDebuggingMode = "0">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "B536BD8C2B405DB1009B3CE4"
|
||||||
|
BuildableName = "stable.app"
|
||||||
|
BlueprintName = "stable"
|
||||||
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildableProductRunnable>
|
||||||
|
</LaunchAction>
|
||||||
|
<ProfileAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
savedToolIdentifier = ""
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
debugDocumentVersioning = "YES">
|
||||||
|
<BuildableProductRunnable
|
||||||
|
runnableDebuggingMode = "0">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "B536BD8C2B405DB1009B3CE4"
|
||||||
|
BuildableName = "stable.app"
|
||||||
|
BlueprintName = "stable"
|
||||||
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildableProductRunnable>
|
||||||
|
</ProfileAction>
|
||||||
|
<AnalyzeAction
|
||||||
|
buildConfiguration = "Debug">
|
||||||
|
</AnalyzeAction>
|
||||||
|
<ArchiveAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
revealArchiveInOrganizer = "YES">
|
||||||
|
</ArchiveAction>
|
||||||
|
</Scheme>
|
After Width: | Height: | Size: 289 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 9.4 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 8.3 KiB |
After Width: | Height: | Size: 15 KiB |