Skip to content

3.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 09 Jul 23:16
d7a1321

Summary

Large refactor of JacRed from a monolithic Engine layout into layered Application / Infrastructure architecture, with new security, configuration, logging, tracker sync services, background workers, and API/documentation updates.

Changes

Architecture & project structure

  • Reorganize codebase from JacRed.Engine into Application, Infrastructure, and Configuration namespaces
  • Replace legacy JacRed.sln with JacRed.slnx
  • Slim down AppInit.cs and move responsibilities into dedicated services/providers
  • Introduce BaseController with shared memory-caching support
  • Add HomeController for static HTML and OpenSearch
  • Add HealthController (/health, version, last DB update)

Database & indexing

  • Introduce FastDbIndex / IFastDbIndex for centralized fast-DB access
  • Integrate FastDbIndex into controllers, search, and migration flows
  • Add StatsTorrentIndex for stats aggregation
  • Fix FileDB: reset ffprobe when torrent magnet is updated

Tracker services

  • Split tracker logic into *Parser + *SyncService per tracker (Anidub, Aniliberty, AnimeLayer, Baibako, Bitru, Kinozal, Knaben, Lostfilm, Mazepa, Megapeer, NNMClub, Rutor, Rutracker, Selezen, Toloka, TorrentBy)
  • Consolidate tracker DI via TrackerServiceCollectionExtensions
  • Refactor CRON controllers to thin wrappers over sync services
  • Normalize CRON folder casing (CRONCron)
  • Optimize Kinozal hash fetching with ShouldSkipHashFetch when title/size unchanged

Background processing

  • Replace legacy threading/cron patterns with hosted background workers:
    • FastDbRefreshWorker, FileDbWorker, SyncWorker, TrackersWorker, StatsWorker, TracksWorker
  • Load master DB synchronously before Kestrel starts
  • Add CancellationToken support to cron-style operations

Dev & maintenance tooling

  • Add dev services: diagnostics, maintenance, migration, tracks admin
  • Add dev controllers for DB scan/repair, maintenance tasks, migration, and tracks export
  • Extract search into JackettSearchService and TorrentQueryService

Configuration

  • New configuration system: AppConfigurationLoader, AppConfigurationProvider, AppConfigurationReloadWorker
  • Hot-reload support for init.yaml / init.conf
  • Extend config models with structured logging options
  • Update example/init config files and settings UI

Security & access control

  • New security framework:
    • ClientNetworkContext, JacRedAccessEvaluator, JacRedAuthorizationMiddleware
    • JacRedAccessCatalog, JacRedEndpointRegistry, JacRedKeyValidators
  • Centralized route/policy registration in Startup
  • Remove deprecated ModHeaders middleware and per-controller authorize attributes
  • Add AccessTraceabilityMatrix.md documenting policies and endpoint access (RU)

Logging

  • Structured logging via JacRedLog, categories, console formatter, and DI extensions
  • Configurable console/file logging levels and categories
  • Remove deprecated top-level log option; use logFdb / logParsers (and related settings)
  • Replace Console.WriteLine usage with structured logging

API & sync

  • Remove deprecated Sync v1 (GET /sync/torrents) and opensync_v1 config
  • Update Sync v2 flow and related docs
  • Fix route: /api/v1.0/torrents/qualitys/api/v1.0/qualitys
  • Stats API additions:
    • GET /stats/tracks (tracks export aggregate)
    • GET /stats/trackers/new, GET /stats/trackers/updated
    • GET /stats/trackers/{name} (per-tracker summary)
  • Expand openapi.yaml and README for new/changed endpoints

Build & runtime

  • Upgrade .NET 9 → .NET 10 (project, Dockerfile, CI workflows, packages)
  • Enable single-file publish; adjust build.sh and Docker build
  • Update Swagger/OpenAPI integration for new library conventions

Documentation & localization

  • Major README updates (architecture, config, API, access control)
  • Russian translations for Access Traceability Matrix and related docs

Breaking changes

  • Sync v1 removed
  • log config option removed
  • opensync_v1 config removed
  • Qualitys API route changed
  • Requires .NET 10
  • Large internal namespace/layout changes (EngineInfrastructure / Application)

Full Changelog: 2.8.3...3.0.0