Melodee 2.1.0 Released
release May 24, 2026Melodee 2.1.0 is here! This release focuses on performance, developer experience, and security hardening — making your server faster to load, easier to maintain, and safer to run.
What’s New in 2.1.0
SkiaSharp Image Processing
All image processing has migrated from SixLabors.ImageSharp to SkiaSharp, replacing the legacy library with a more performant and actively maintained alternative.
- New
IImageProcessorabstraction for decode, encode, resize, format detection, and hash generation - Clean dependency injection throughout services, Blazor components, CLI commands, and tests
- Conditional native asset inclusion (
SkiaSharp.NativeAssets.Linuxon Linux) — no extra runtime dependencies needed
Dashboard Performance
Page loads are faster and feel more responsive thanks to targeted optimizations.
- Dashboard data loading now occurs in
OnAfterRenderAsync— skeleton placeholders render immediately instead of blocking the initial page paint DoctorService.NeedsAttentionAsyncfast path uses lightweight file-existence checks, cutting dashboard first-render time by ~5 seconds
Bulk Delete Performance
Deleting large collections is now significantly faster.
SongService,AlbumService, andArtistServicebatch-load entities in a single query instead of executing N+1 queries per item- Dramatic speed improvements for cleaning up large libraries
Party Mode Optimization
Party Mode has been refactored for direct in-process performance.
PartyModeServicenow calls domain services (PartySessionService,PartyQueueService,PartyPlaybackService,PartySessionEndpointRegistryService) directly via dependency injection instead of making HTTP requests to the same application- Eliminates ~20 HTTP round-trips per user interaction (create, join, leave, queue, playback, endpoints)
- User identity resolved through
IAuthServicerather than cookie authentication
Developer Experience
Building and maintaining Melodee is now easier for contributors.
- Squashed 55 EF Core database migrations into a single
InitialBaselinemigration — smaller repository, faster CI builds, no fragile migration chains - Quartz job scheduling extracted into a reusable helper, shrinking
Program.csfrom 1,046 to ~860 lines .kilo/project configuration with slash commands (/build,/test,/test-mql,/lint,/migrate,/coverage) and amelodee-developeragent for consistent workflows- CodeQL analysis optimized — JavaScript/TypeScript scanning dropped, saving 5–10 minutes per CI run
Security Hardening
- Password reset endpoint no longer exposes reset tokens in API responses. Tokens are now only returned in development mode; in production, the endpoint returns a generic message and relies on email delivery.
Additional Improvements
- Min-width set on album detail action column for layout stability
- Removed unnecessary
EnsureArtistAliasTableAsynccall in MusicBrainz repository - NuGet dependency updates across the project
Upgrading
To upgrade to 2.1.0, follow the upgrade guide.
Database migrations will run automatically on startup. If you were on the latest 2.0.x migration, the squashed InitialBaseline migration is a no-op — existing databases are unaffected.
Documentation
Thank You
Thanks to everyone who contributed to this release through bug reports, feature requests, security audits, and pull requests!
Questions or feedback? Join our Discord community or open an issue on GitHub.
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.