Release v1.3.0: Multi-source downloads, audio analyzer resilience, mobile improvements

Major Features:
- Multi-source download system (Soulseek/Lidarr with fallback)
- Configurable enrichment speed control (1-5x)
- Mobile touch drag support for seek sliders
- iOS PWA media controls (Control Center, Lock Screen)
- Artist name alias resolution via Last.fm
- Circuit breaker pattern for audio analysis

Critical Fixes:
- Audio analyzer stability (non-ASCII, BrokenProcessPool, OOM)
- Discovery system race conditions and import failures
- Radio decade categorization using originalYear
- LastFM API response normalization
- Mood bucket infinite loop prevention

Security:
- Bull Board admin authentication
- Lidarr webhook signature verification
- JWT token expiration and refresh
- Encryption key validation on startup

Closes #2, #6, #9, #13, #21, #26, #31, #34, #35, #37, #40, #43
This commit is contained in:
Your Name
2026-01-06 20:07:33 -06:00
parent 8fe151a0d1
commit cc8d0f6969
242 changed files with 20562 additions and 7725 deletions
+102
View File
@@ -0,0 +1,102 @@
name: Bug Report
description: Report a bug or unexpected behavior
title: "[Bug]: "
labels: ["bug", "needs triage"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to report a bug. Please fill out the information below to help us diagnose and fix the issue.
- type: textarea
id: description
attributes:
label: Bug Description
description: A clear and concise description of what the bug is.
placeholder: Describe the bug...
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Steps to Reproduce
description: Step-by-step instructions to reproduce the behavior.
placeholder: |
1. Go to '...'
2. Click on '...'
3. Scroll down to '...'
4. See error
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected Behavior
description: What did you expect to happen?
placeholder: Describe what should have happened...
validations:
required: true
- type: textarea
id: actual
attributes:
label: Actual Behavior
description: What actually happened?
placeholder: Describe what actually happened...
validations:
required: true
- type: input
id: version
attributes:
label: Lidify Version
description: What version of Lidify are you running?
placeholder: "e.g., v1.0.0, nightly-2024-01-15, or commit hash"
validations:
required: true
- type: dropdown
id: deployment
attributes:
label: Deployment Method
description: How are you running Lidify?
options:
- Docker (docker-compose)
- Docker (standalone)
- Manual/Source
- Other
validations:
required: true
- type: textarea
id: environment
attributes:
label: Environment Details
description: Any relevant environment information (OS, browser, Docker version, etc.)
placeholder: |
- OS: Ubuntu 22.04
- Docker: 24.0.5
- Browser: Firefox 120
validations:
required: false
- type: textarea
id: logs
attributes:
label: Relevant Logs
description: Please copy and paste any relevant log output. This will be automatically formatted into code.
render: shell
validations:
required: false
- type: checkboxes
id: checklist
attributes:
label: Checklist
options:
- label: I have searched existing issues to ensure this bug hasn't already been reported
required: true
- label: I am using a supported version of Lidify
required: true
+5
View File
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Questions & Discussions
url: https://github.com/Chevron7Locked/lidify/discussions
about: Ask questions and discuss Lidify in GitHub Discussions
@@ -0,0 +1,64 @@
name: Feature Request
description: Suggest a new feature or enhancement
title: "[Feature]: "
labels: ["enhancement", "needs triage"]
body:
- type: markdown
attributes:
value: |
Thanks for suggesting a feature! Please provide as much detail as possible.
- type: textarea
id: problem
attributes:
label: Problem or Use Case
description: What problem does this feature solve? What are you trying to accomplish?
placeholder: "I'm trying to... but currently..."
validations:
required: true
- type: textarea
id: solution
attributes:
label: Proposed Solution
description: Describe the feature you'd like to see implemented.
placeholder: Describe your ideal solution...
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives Considered
description: Have you considered any alternative solutions or workarounds?
placeholder: Describe alternatives you've considered...
validations:
required: false
- type: dropdown
id: scope
attributes:
label: Feature Scope
description: How big of a change is this?
options:
- Small (UI tweak, minor enhancement)
- Medium (new component, significant enhancement)
- Large (new major feature, architectural change)
validations:
required: true
- type: checkboxes
id: contribution
attributes:
label: Contribution
options:
- label: I would be willing to help implement this feature
required: false
- type: checkboxes
id: checklist
attributes:
label: Checklist
options:
- label: I have searched existing issues to ensure this hasn't already been requested
required: true
+37
View File
@@ -0,0 +1,37 @@
## Description
<!-- Briefly describe what this PR does -->
## Type of Change
- [ ] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Enhancement (improvement to existing functionality)
- [ ] Documentation update
- [ ] Code cleanup / refactoring
- [ ] Other (please describe):
## Related Issues
Fixes #
## Changes Made
-
-
-
## Testing Done
- [ ] Tested locally with Docker
- [ ] Tested specific functionality:
## Screenshots (if applicable)
## Checklist
- [ ] My code follows the project's code style
- [ ] I have tested my changes locally
- [ ] I have updated documentation if needed
- [ ] My changes don't introduce new warnings
- [ ] This PR targets the `main` branch
+55
View File
@@ -0,0 +1,55 @@
name: Nightly Build
on:
push:
branches: [main]
tags-ignore:
- "v*" # Don't trigger on version tags - docker-publish handles those
env:
IMAGE_NAME: ${{ secrets.DOCKERHUB_USERNAME }}/lidify
jobs:
build-nightly:
name: Build & Push Nightly Image
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Free up disk space
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf /usr/local/share/boost
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Get short SHA
id: sha
run: echo "short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
- name: Build and push nightly
uses: docker/build-push-action@v5
with:
context: .
file: ./Dockerfile
push: true
tags: |
${{ env.IMAGE_NAME }}:nightly
${{ env.IMAGE_NAME }}:nightly-${{ steps.sha.outputs.short }}
labels: |
org.opencontainers.image.revision=${{ github.sha }}
org.opencontainers.image.version=nightly-${{ steps.sha.outputs.short }}
cache-from: type=gha
cache-to: type=gha,mode=max
# ARM64 disabled due to QEMU emulation issues with npm packages
platforms: linux/amd64
+48
View File
@@ -0,0 +1,48 @@
name: PR Checks
on:
pull_request:
branches: [main]
types: [opened, synchronize, reopened]
jobs:
lint-frontend:
name: Lint Frontend
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "npm"
cache-dependency-path: frontend/package-lock.json
- name: Install frontend dependencies
working-directory: frontend
run: npm ci
- name: Run ESLint on frontend
working-directory: frontend
run: npm run lint
build-docker:
name: Docker Build Check
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build Docker image (no push)
uses: docker/build-push-action@v5
with:
context: .
push: false
tags: lidify:pr-check
cache-from: type=gha
cache-to: type=gha,mode=max