github Listenarrs/Listenarr v0.2.72-canary
Canary 0.2.72

pre-release9 hours ago

Summary

This one's been a while coming. The API layer was directly importing EF Core types so controllers and services had ListenArrDbContext injected all over the place, making it impossible to unit test without spinning up a real database and tightly coupling business logic to persistence details. This PR fixes that, and takes the opportunity to upgrade the runtime stack at the same time.

Added

  • 17 new application-layer repository interfaces under listenarr.application/Repositories/ (IDownloadRepository, IDownloadHistoryRepository, IHistoryRepository, IIndexerRepository, IUserRepository, IUserSessionRepository, IApplicationSettingsRepository, IApiConfigurationRepository, IDownloadClientConfigurationRepository, IRemotePathMappingRepository, IAudiobookFileRepository, IMoveJobRepository, IMonitoredAuthorRepository, IMonitoredSeriesRepository, IProcessExecutionLogRepository, IDownloadProcessingJobRepository, IRootFolderRepository)
  • 13 new EF Core repository implementations under listenarr.infrastructure/Repositories/ (EfHistoryRepository, EfIndexerRepository, EfUserRepository, EfUserSessionRepository, EfApplicationSettingsRepository, EfApiConfigurationRepository, EfDownloadClientConfigurationRepository, EfRemotePathMappingRepository, EfAudiobookFileRepository, EfMoveJobRepository, EfMonitoredAuthorRepository, EfMonitoredSeriesRepository, EfProcessExecutionLogRepository)
  • IDatabaseConnectionProvider / EfDatabaseConnectionProvider for exposing raw connection info without leaking EF types
  • QueueStats domain model for download processing queue metrics
  • CI layering enforcement: run-tests.yml now fails the build if any file outside Program.cs in the API layer imports from listenarr.infrastructure, or if any async void appears in production code
  • CI now installs Node 24, runs frontend build, lint, type-check, and tests as part of the test job
  • Targeted download ...

Automated Canary build

Don't miss a new Listenarr release

NewReleases is sending notifications on new releases.