mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-08-02 17:18:36 +02:00
chore(repo): improve contributor experience
This commit is contained in:
@@ -1,30 +1,29 @@
|
||||
name: Bug Report
|
||||
description: Report a bug or unexpected behavior
|
||||
description: Report a reproducible bug or unexpected behavior
|
||||
title: "[Bug]: "
|
||||
labels: ["bug"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for taking the time to report a bug! Please fill out the form below.
|
||||
Thanks for reporting a SpotiFLAC Mobile bug. Please provide enough detail for another person to reproduce it.
|
||||
|
||||
- type: checkboxes
|
||||
id: checklist
|
||||
attributes:
|
||||
label: Checklist
|
||||
description: Please confirm the following before submitting
|
||||
options:
|
||||
- label: I have searched existing issues and this bug hasn't been reported yet
|
||||
- label: I searched existing issues and did not find this bug.
|
||||
required: true
|
||||
- label: I am using the latest version of SpotiFLAC (Stable Version)
|
||||
- label: I can reproduce this on the release channel selected below.
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Bug Description
|
||||
description: A clear and concise description of what the bug is
|
||||
placeholder: Describe the bug...
|
||||
label: Description
|
||||
description: What happened, and what did you expect instead?
|
||||
placeholder: Include the visible error and any relevant context.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
@@ -32,29 +31,26 @@ body:
|
||||
id: steps
|
||||
attributes:
|
||||
label: Steps to Reproduce
|
||||
description: Steps to reproduce the behavior
|
||||
placeholder: |
|
||||
1. Go to '...'
|
||||
2. Click on '...'
|
||||
3. See error
|
||||
1. Open ...
|
||||
2. Enable ...
|
||||
3. Tap ...
|
||||
4. Observe ...
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: expected
|
||||
- type: dropdown
|
||||
id: trigger
|
||||
attributes:
|
||||
label: Expected Behavior
|
||||
description: What did you expect to happen?
|
||||
placeholder: Describe what you expected...
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: actual
|
||||
attributes:
|
||||
label: Actual Behavior
|
||||
description: What actually happened?
|
||||
placeholder: Describe what actually happened...
|
||||
label: Area
|
||||
options:
|
||||
- App startup
|
||||
- Search or navigation
|
||||
- Download or verification
|
||||
- Library or metadata
|
||||
- Playback or background service
|
||||
- Audio analysis
|
||||
- Other
|
||||
validations:
|
||||
required: true
|
||||
|
||||
@@ -62,62 +58,73 @@ body:
|
||||
id: version
|
||||
attributes:
|
||||
label: App Version
|
||||
description: Which version of SpotiFLAC are you using? (Check in Settings > About)
|
||||
placeholder: "e.g., v2.2.0"
|
||||
description: Find this in Settings > About.
|
||||
placeholder: "e.g. 4.8.1 (139)"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
id: platform
|
||||
id: channel
|
||||
attributes:
|
||||
label: Platform
|
||||
description: Which platform are you using?
|
||||
label: Release Channel
|
||||
options:
|
||||
- Android
|
||||
- iOS
|
||||
- Stable
|
||||
- Beta
|
||||
- Local or development build
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
id: device
|
||||
attributes:
|
||||
label: Device & OS Version
|
||||
description: What device and OS version are you using?
|
||||
placeholder: "e.g., Samsung Galaxy S24, Android 14"
|
||||
label: Device and OS
|
||||
placeholder: "e.g. Samsung Galaxy S24, Android 16"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
id: download-service
|
||||
id: storage
|
||||
attributes:
|
||||
label: Download Service
|
||||
description: Which download service were you using when the bug occurred?
|
||||
label: Download Storage
|
||||
options:
|
||||
- Tidal
|
||||
- Qobuz
|
||||
- Amazon Music
|
||||
- Deezer (search only)
|
||||
- SAF folder
|
||||
- App-specific folder
|
||||
- Not applicable
|
||||
- Not sure
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
id: worker
|
||||
attributes:
|
||||
label: Download Worker
|
||||
options:
|
||||
- Native worker
|
||||
- Dart worker
|
||||
- Not applicable
|
||||
- Not sure
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
id: provider
|
||||
attributes:
|
||||
label: Extension or Provider
|
||||
description: If relevant, include the extension/provider name and version.
|
||||
placeholder: "Name, version, and selected priority"
|
||||
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Logs / Screenshots
|
||||
label: Logs and Media
|
||||
description: |
|
||||
If applicable, add logs or screenshots to help explain your problem.
|
||||
|
||||
**To get logs:**
|
||||
1. Go to Settings > Options > Detailed Logging (turn ON)
|
||||
2. Reproduce the bug
|
||||
3. Go to Settings > Logs
|
||||
4. Tap Share button to export logs
|
||||
placeholder: Paste logs or drag & drop screenshots here...
|
||||
Enable detailed logging, reproduce the problem, then export logs from Settings > Logs. For an Android cold-start crash, attach `adb logcat -b crash -d`. Add screenshots or a short recording when useful. Remove credentials and personal data first.
|
||||
placeholder: Paste logs or drag files here.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: additional
|
||||
attributes:
|
||||
label: Additional Context
|
||||
description: Any other context about the problem
|
||||
placeholder: Add any other context...
|
||||
placeholder: Settings, frequency, regression version, or anything else that may help.
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: README
|
||||
url: https://github.com/zarzet/SpotiFLAC-Mobile#readme
|
||||
url: https://github.com/spotiflacapp/SpotiFLAC-Mobile#readme
|
||||
about: Check the README for setup instructions and FAQ
|
||||
- name: Extension Development Guide
|
||||
url: https://spotiflac.zarz.moe/docs
|
||||
about: Documentation for building SpotiFLAC extensions
|
||||
about: Documentation for building SpotiFLAC Mobile extensions
|
||||
|
||||
@@ -1,111 +1,124 @@
|
||||
name: Download Issue
|
||||
description: Report issues with downloading specific tracks or albums
|
||||
description: Report a wrong, missing, failed, or low-quality download
|
||||
title: "[Download]: "
|
||||
labels: ["download-issue"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Having trouble downloading a specific track or album? Please provide details below.
|
||||
Download matching is extension-driven. Include the source item, provider order, and logs so the exact decision path can be inspected.
|
||||
|
||||
- type: checkboxes
|
||||
id: checklist
|
||||
attributes:
|
||||
label: Checklist
|
||||
description: Please confirm the following before submitting
|
||||
options:
|
||||
- label: I have tried downloading with a different service (Tidal/Qobuz/Amazon)
|
||||
- label: I searched existing issues and did not find this problem.
|
||||
required: true
|
||||
- label: I am using the latest version of SpotiFLAC (Stable Version)
|
||||
- label: I updated the affected extension and retried once.
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
id: issue-type
|
||||
attributes:
|
||||
label: Issue Type
|
||||
description: What kind of download issue are you experiencing?
|
||||
options:
|
||||
- Track not found on service
|
||||
- Track or album not found
|
||||
- Wrong track downloaded
|
||||
- Download fails/errors
|
||||
- Metadata incorrect
|
||||
- Audio quality issue
|
||||
- Download fails or stalls
|
||||
- Metadata or cover is incorrect
|
||||
- Audio format or quality is incorrect
|
||||
- Duplicate or replacement behavior
|
||||
- Other
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
id: spotify-url
|
||||
id: source-url
|
||||
attributes:
|
||||
label: Spotify URL
|
||||
description: The Spotify URL of the track/album you're trying to download
|
||||
placeholder: "https://open.spotify.com/track/..."
|
||||
validations:
|
||||
required: true
|
||||
label: Source URL
|
||||
description: URL pasted or opened in SpotiFLAC Mobile, if available.
|
||||
placeholder: "https://..."
|
||||
|
||||
- type: input
|
||||
id: track-info
|
||||
attributes:
|
||||
label: Track Info
|
||||
description: Artist name and track title
|
||||
placeholder: "Artist - Track Title"
|
||||
label: Track or Album
|
||||
placeholder: "Artist - Track or album title"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
id: metadata-source
|
||||
attributes:
|
||||
label: Search or Metadata Extension
|
||||
placeholder: "Extension name and version"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
id: download-provider
|
||||
attributes:
|
||||
label: Selected Download Extension
|
||||
placeholder: "Extension name and version"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: priority
|
||||
attributes:
|
||||
label: Provider Priority and Requested Quality
|
||||
placeholder: |
|
||||
Provider order: first, second, third
|
||||
Requested quality: best / 24-bit / ...
|
||||
Automatic fallback: on/off
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
id: download-service
|
||||
id: storage
|
||||
attributes:
|
||||
label: Download Service
|
||||
description: Which service did you try to download from?
|
||||
label: Download Storage
|
||||
options:
|
||||
- Tidal
|
||||
- Qobuz
|
||||
- Amazon Music
|
||||
- All services
|
||||
- SAF folder
|
||||
- App-specific folder
|
||||
- Not sure
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
id: search-service
|
||||
id: worker
|
||||
attributes:
|
||||
label: Search Service
|
||||
description: Which search service are you using?
|
||||
label: Download Worker
|
||||
options:
|
||||
- Spotify
|
||||
- Deezer
|
||||
- Native worker
|
||||
- Dart worker
|
||||
- Not sure
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description
|
||||
description: Describe the issue in detail
|
||||
placeholder: |
|
||||
What happened? What did you expect?
|
||||
If wrong track was downloaded, what track was downloaded instead?
|
||||
label: What Happened?
|
||||
description: For a wrong match, identify both the expected and downloaded recording.
|
||||
placeholder: Describe the result and the expected result.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
id: version
|
||||
id: environment
|
||||
attributes:
|
||||
label: App Version
|
||||
description: Which version of SpotiFLAC are you using?
|
||||
placeholder: "e.g., v2.2.0"
|
||||
label: App Version, Device, and OS
|
||||
placeholder: "4.8.1 (139), device model, Android/iOS version"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: screenshots
|
||||
id: logs
|
||||
attributes:
|
||||
label: Screenshots / Logs
|
||||
description: |
|
||||
If applicable, add screenshots or logs.
|
||||
|
||||
**To get logs:**
|
||||
1. Go to Settings > Options > Detailed Logging (turn ON)
|
||||
2. Try downloading the track again
|
||||
3. Go to Settings > Logs
|
||||
4. Tap Share button to export logs
|
||||
placeholder: Drag & drop screenshots or paste logs here...
|
||||
label: Logs and Screenshots
|
||||
description: Enable detailed logging, retry once, and export Settings > Logs. Remove credentials and personal data.
|
||||
placeholder: Paste logs or drag files here.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
@@ -6,7 +6,7 @@ body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for helping improve the SpotiFLAC Extension API!
|
||||
Thanks for helping improve the SpotiFLAC Mobile Extension API!
|
||||
This form is for extension developers who need new features or capabilities that don't exist yet.
|
||||
|
||||
- type: checkboxes
|
||||
@@ -15,7 +15,7 @@ body:
|
||||
label: Checklist
|
||||
description: Please confirm the following before submitting
|
||||
options:
|
||||
- label: I have read the [Extension Development Guide](https://github.com/zarzet/SpotiFLAC-Mobile/blob/main/docs/EXTENSION_DEVELOPMENT.md)
|
||||
- label: I have read the [Extension Development Guide](https://github.com/spotiflacapp/SpotiFLAC-Mobile/blob/main/docs/EXTENSION_DEVELOPMENT.md)
|
||||
required: true
|
||||
- label: I have searched existing issues and this API feature hasn't been requested yet
|
||||
required: true
|
||||
|
||||
@@ -50,7 +50,7 @@ body:
|
||||
options:
|
||||
- UI/UX Improvement
|
||||
- Download Feature
|
||||
- New Service Integration
|
||||
- Extension System/API
|
||||
- Metadata/Tagging
|
||||
- Performance
|
||||
- Settings/Configuration
|
||||
|
||||
@@ -1,27 +1,42 @@
|
||||
## Description
|
||||
## Summary
|
||||
|
||||
<!-- What does this PR do? Why is it needed? -->
|
||||
<!-- What changed, why is it needed, and which user-visible behavior is affected? -->
|
||||
|
||||
## Related Issues
|
||||
|
||||
<!-- Link related issues, e.g. "Fixes #123" -->
|
||||
<!-- Use "Fixes #123" when this PR should close an issue. -->
|
||||
|
||||
## Type of Change
|
||||
|
||||
- [ ] Bug fix
|
||||
- [ ] New feature
|
||||
- [ ] Refactor (no functional change)
|
||||
- [ ] Documentation
|
||||
- [ ] Other (describe below)
|
||||
- [ ] Feature
|
||||
- [ ] Performance improvement
|
||||
- [ ] Refactor with no intended behavior change
|
||||
- [ ] Tests, build, or repository maintenance
|
||||
- [ ] Documentation or localization
|
||||
|
||||
## Checklist
|
||||
## Validation
|
||||
|
||||
- [ ] Code follows project conventions
|
||||
- [ ] `flutter analyze` and `flutter test` pass
|
||||
- [ ] `go vet ./...` and `go test ./...` pass in `go_backend/` (if Go code changed)
|
||||
- [ ] Documentation updated (if needed)
|
||||
- [ ] Commit messages follow the [conventional commits](https://www.conventionalcommits.org) format
|
||||
<!-- Check only commands relevant to this change. Explain skipped checks below. -->
|
||||
|
||||
## Screenshots
|
||||
- [ ] `dart format --output=none --set-exit-if-changed lib test`
|
||||
- [ ] `flutter analyze`
|
||||
- [ ] `flutter test`
|
||||
- [ ] `gofmt`, `go vet ./...`, and `go test ./...` in `go_backend/`
|
||||
- [ ] Android or iOS native checks
|
||||
- [ ] Manual reproduction or device test
|
||||
|
||||
<!-- For UI changes, add before/after screenshots. Delete this section otherwise. -->
|
||||
Validation notes:
|
||||
|
||||
<!-- Devices, commands, test cases, or the reason a check was not applicable. -->
|
||||
|
||||
## Contributor Checklist
|
||||
|
||||
- [ ] This PR is focused and contains no unrelated changes.
|
||||
- [ ] Extension-specific behavior, if any, uses a generic capability or manifest contract.
|
||||
- [ ] User-facing strings, documentation, and generated files are updated where needed.
|
||||
- [ ] No credentials, downloaded media, or build artifacts are included.
|
||||
|
||||
## Screenshots or Recordings
|
||||
|
||||
<!-- Add before/after media for UI changes. Delete this section otherwise. -->
|
||||
|
||||
@@ -37,6 +37,7 @@ jobs:
|
||||
- 'pubspec.lock'
|
||||
- 'analysis_options.yaml'
|
||||
- 'l10n.yaml'
|
||||
- '.fvmrc'
|
||||
- '.github/workflows/ci.yml'
|
||||
go:
|
||||
- 'go_backend/**'
|
||||
@@ -51,6 +52,7 @@ jobs:
|
||||
- 'lib/services/platform_bridge.dart'
|
||||
- 'pubspec.yaml'
|
||||
- 'pubspec.lock'
|
||||
- '.fvmrc'
|
||||
- '.github/workflows/ci.yml'
|
||||
|
||||
flutter:
|
||||
@@ -67,6 +69,7 @@ jobs:
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: "stable"
|
||||
flutter-version-file: .fvmrc
|
||||
cache: true
|
||||
|
||||
- name: Cache pub dependencies
|
||||
@@ -102,8 +105,7 @@ jobs:
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v6
|
||||
with:
|
||||
# Keep in sync with release.yml
|
||||
go-version: "1.26.5"
|
||||
go-version-file: go_backend/go.mod
|
||||
cache-dependency-path: go_backend/go.sum
|
||||
|
||||
- name: Check formatting
|
||||
@@ -134,13 +136,14 @@ jobs:
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version: "1.26.5"
|
||||
go-version-file: go_backend/go.mod
|
||||
cache-dependency-path: go_backend/go.sum
|
||||
|
||||
- name: Setup Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: "stable"
|
||||
flutter-version-file: .fvmrc
|
||||
cache: true
|
||||
|
||||
- name: Setup Gradle
|
||||
|
||||
@@ -70,7 +70,7 @@ jobs:
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version: "1.26.5"
|
||||
go-version-file: go_backend/go.mod
|
||||
cache-dependency-path: go_backend/go.sum
|
||||
|
||||
# Cache Gradle for faster builds
|
||||
@@ -129,6 +129,7 @@ jobs:
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: "stable"
|
||||
flutter-version-file: .fvmrc
|
||||
cache: true
|
||||
|
||||
- name: Cache pub dependencies
|
||||
@@ -146,13 +147,10 @@ jobs:
|
||||
|
||||
- name: Build APK (Release - unsigned)
|
||||
run: |
|
||||
flutter build apk --release --split-per-abi || true
|
||||
# Verify APKs were created
|
||||
flutter build apk --release --split-per-abi
|
||||
ls -la build/app/outputs/flutter-apk/
|
||||
if [ ! -f "build/app/outputs/flutter-apk/app-arm64-v8a-release.apk" ]; then
|
||||
echo "ERROR: APK not found!"
|
||||
exit 1
|
||||
fi
|
||||
test -f build/app/outputs/flutter-apk/app-arm64-v8a-release.apk
|
||||
test -f build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk
|
||||
|
||||
- name: Sign APKs
|
||||
uses: r0adkll/sign-android-release@v1
|
||||
@@ -168,12 +166,29 @@ jobs:
|
||||
|
||||
- name: Rename APKs
|
||||
run: |
|
||||
VERSION=${{ needs.get-version.outputs.version }}
|
||||
VERSION="${{ needs.get-version.outputs.version }}"
|
||||
cd build/app/outputs/flutter-apk
|
||||
# Signed files have -signed suffix
|
||||
mv app-arm64-v8a-release-signed.apk SpotiFLAC-${VERSION}-arm64.apk || mv app-arm64-v8a-release.apk SpotiFLAC-${VERSION}-arm64.apk || true
|
||||
mv app-armeabi-v7a-release-signed.apk SpotiFLAC-${VERSION}-arm32.apk || mv app-armeabi-v7a-release.apk SpotiFLAC-${VERSION}-arm32.apk || true
|
||||
mv app-release-signed.apk SpotiFLAC-${VERSION}-universal.apk || mv app-release.apk SpotiFLAC-${VERSION}-universal.apk || true
|
||||
|
||||
rename_required_apk() {
|
||||
unsigned="$1"
|
||||
destination="$2"
|
||||
signed="${unsigned%.apk}-signed.apk"
|
||||
if [ -f "$signed" ]; then
|
||||
mv "$signed" "$destination"
|
||||
elif [ -f "$unsigned" ]; then
|
||||
mv "$unsigned" "$destination"
|
||||
else
|
||||
echo "ERROR: Missing APK: $unsigned"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
rename_required_apk \
|
||||
app-arm64-v8a-release.apk \
|
||||
"SpotiFLAC-${VERSION}-arm64.apk"
|
||||
rename_required_apk \
|
||||
app-armeabi-v7a-release.apk \
|
||||
"SpotiFLAC-${VERSION}-arm32.apk"
|
||||
ls -la
|
||||
|
||||
- name: Upload APK artifact
|
||||
@@ -198,7 +213,7 @@ jobs:
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version: "1.26.5"
|
||||
go-version-file: go_backend/go.mod
|
||||
cache-dependency-path: go_backend/go.sum
|
||||
|
||||
# Cache CocoaPods
|
||||
@@ -274,6 +289,7 @@ jobs:
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: "stable"
|
||||
flutter-version-file: .fvmrc
|
||||
cache: true
|
||||
|
||||
- name: Cache pub dependencies
|
||||
@@ -474,7 +490,7 @@ jobs:
|
||||
|
||||
jq --arg ver "$VERSION_NUM" \
|
||||
--arg date "$DATE" \
|
||||
--arg url "https://github.com/zarzet/SpotiFLAC-Mobile/releases/download/${VERSION}/SpotiFLAC-${VERSION}-ios-unsigned.ipa" \
|
||||
--arg url "https://github.com/${{ github.repository }}/releases/download/${VERSION}/SpotiFLAC-${VERSION}-ios-unsigned.ipa" \
|
||||
--argjson size "$IPA_SIZE" \
|
||||
'.apps[0].version = $ver | .apps[0].versionDate = $date | .apps[0].downloadURL = $url | .apps[0].size = $size' \
|
||||
apps.json > apps.json.tmp && mv apps.json.tmp apps.json
|
||||
|
||||
Reference in New Issue
Block a user