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
1.3 KiB
1.3 KiB
Contributing to Lidify
First off, thanks for taking the time to contribute! 🎉
Getting Started
- Fork the repository
- Clone your fork locally
- Set up the development environment (see README.md)
- Create a new branch from
mainfor your changes
Branch Strategy
All development happens on the main branch:
- All PRs should target
main - Every push to
maintriggers a nightly Docker build - Stable releases are created via version tags
Making Contributions
Bug Fixes
- Check existing issues to see if the bug has been reported
- If not, open a bug report issue first
- Fork, branch, fix, and submit a PR referencing the issue
Small Enhancements
- Open a feature request issue to discuss first
- Keep changes focused and minimal
Large Features
Please open an issue to discuss before starting work.
Code Style
Frontend
The frontend uses ESLint. Before submitting a PR:
cd frontend
npm run lint
Backend
Follow existing code patterns and TypeScript conventions.
Pull Request Process
- Target the
mainbranch - Fill out the PR template completely
- Ensure the Docker build check passes
- Wait for review - we'll provide feedback or approve
Questions?
Open a Discussion thread for questions that aren't bugs or feature requests.
Thanks for contributing!