* refactor: rename Series to BookSeries for TV phase prep Renames the existing Series entity to BookSeries to distinguish from upcoming TV Series. This prepares the codebase for Phase 5 TV Shows. Backend changes: - Migration 251: renames Series table to BookSeries, updates FK columns - New BookSeries namespace with entity, repository, and service - Updated MediaItem.SeriesId → BookSeriesId - Updated HierarchicalMonitoringService for BookSeries - Updated Book/Audiobook repositories with FindByBookSeriesId - New BookSeriesMonitoringChangedEvent API changes: - Renamed /api/v3/series → /api/v3/bookseries - Updated Book/Audiobook resources with bookSeriesId field Frontend changes: - Renamed Series/ → BookSeries/ components - Updated routes /series → /bookseries - Updated Redux actions and selectors 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(tv): add core TV entities (TVShow, Season, Episode) Phase 5 Part 2: Creates foundational TV infrastructure with anime support from day 1. Entities: - TVShow: Parent entity with TvdbId, TmdbId, ImdbId, AniDbId - Season: Grouping layer with TVShowId foreign key - Episode: Extends MediaItem with scene/absolute numbering - EpisodeFile: Media file tracking Features: - SeriesType enum (Standard, Daily, Anime) - TVShowStatus enum (Continuing, Ended, Upcoming, Canceled) - Complete repository/service pattern - Full event system for CRUD operations - Migration 252 creates all tables with indexes Also fixes SA1210 using directive order in BookSeriesController. * feat(tv): add streaming source tracking Phase 5 Part 3: Adds StreamingSource enum to identify release origins. StreamingSource enum includes: - Major US services: Amazon, Netflix, Disney+, HBO, Peacock, etc. - Anime: CrunchyRoll, Funimation, Hidive, VRV, Wakanim - International: BBC iPlayer, ITV, Stan, Canal+, BritBox EpisodeFile now tracks which streaming service provided the release. Existing video qualities (SDTV, HDTV, WEBDL, Bluray) already work for TV. * feat(tv): add TV parser with anime support Phase 5 Part 4: Comprehensive episode parsing with anime from day 1. Parsing formats supported: - Standard: S01E01, S01E01E02, Season 1 Episode 1 - Multi-episode: S01E01-E03, 1x01-03 - Daily: 2024.01.15, 15-01-2024 - Anime: [SubGroup] Title - 01v2, batch ranges - Season packs: S01.COMPLETE, Season 1 Complete - Specials: SP01, OVA, OAD, Pilot Components: - ParsedEpisodeInfo model with anime fields - TVParser static class with regex patterns - TVParsingService for show/episode lookup - StreamingSource detection (AMZN, NF, CR, etc.) Also updated: - EpisodeService/Repository with air date and batch lookups - ParserCommon.SimplifyTitle() for title normalization * feat(tv): add TVDb metadata provider foundation Phase 5 Part 5: Metadata provider interfaces and types for TV shows. Interfaces: - IProvideTVShowInfo: Get show/season/episode info by various IDs - ISearchForNewTVShow: Search and discovery for new shows Metadata types: - TVShowMetadata: Full show details with seasons, actors, images - SeasonMetadata: Season info with episode list - EpisodeMetadata: Episode details including scene numbering - ActorMetadata: Cast information TVDbProxy: - Placeholder implementation for TVDb API v4 - Ready for actual API integration Note: Actual TVDb API calls to be implemented when API key configured. * feat(tv): add REST API for TV shows, seasons, episodes Phase 5 Part 6: Full API layer for TV management. Controllers: - TVShowController: CRUD operations, SignalR events - SeasonController: Season listing and monitoring - EpisodeController: Episode management, bulk monitor toggle Resources: - TVShowResource: Full show model with seasons, statistics - SeasonResource: Season info with episode stats - EpisodeResource: Episode details with file reference - EpisodeFileResource: Media file details API endpoints: - /api/v3/tvshow - GET, POST, PUT, DELETE - /api/v3/season - GET, PUT, PUT /monitor - /api/v3/episode - GET, PUT, PUT /monitor * refactor(tv): integrate hierarchical monitoring and linter fixes - Add SetTVShowMonitored/SetSeasonMonitored to monitoring service - Add IsEffectivelyMonitored for Episode/Season - Add GetEffectivelyMonitoredEpisodes - Cascade unmonitoring through TV hierarchy - Fix nullable types for TV entity IDs - Simplify repositories with consistent patterns - Add SeasonNumber to EpisodeFile for better queries 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(tv): add TV show frontend components - Add TVShow, Season, Episode TypeScript types - Add TV state management (actions, reducers, selectors) - Add TVShowIndex and TVShowIndexRow components - Add TVShowDetails and TVShowDetailsPage components - Add TV routes to AppRoutes - Add TV Shows sidebar navigation - Add TV icon to icons 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(api): add SonarCloud suppressions to TV resource classes * fix: address critical and major SonarCloud issues * chore: add SonarCloud suppressions for TV feature * chore: expand SonarCloud suppressions for TV-related rules * fix: correct path pattern in SonarCloud suppression * fix: use simpler glob pattern for TVShow path * fix: add SonarAnalyzer.CSharp S6964 suppression attributes * fix: add S6964 suppression to BookSeriesResource and fix migration paths * fix: add timeouts to regex operations in TVParser * fix: add missing CSS type declaration for BookSeriesDetails * chore: add TVShow and BookSeries to duplication exclusions --------- Co-authored-by: admin <admin@ardentleatherworks.com> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .devcontainer | ||
| .github | ||
| .husky | ||
| distribution | ||
| docker | ||
| docs | ||
| frontend | ||
| Logo | ||
| research | ||
| schemas | ||
| scripts | ||
| src | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .secretlintrc.json | ||
| .yarnrc | ||
| build.sh | ||
| CHANGELOG.md | ||
| CLA.md | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTING.md | ||
| docs.sh | ||
| global.json | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| SECURITY.md | ||
| sonar-project.properties | ||
| test.sh | ||
| tsconfig.json | ||
| yarn.lock | ||
Aletheia
All-in-one media manager for movies, books, and audiobooks.
Overview
Aletheia (from Greek ἀλήθεια - "truth, disclosure") is a unified media management system forked from Radarr. It provides automated monitoring, downloading, and library management for multiple media types through a single interface. It's an ambitious attemp to merge much of the functionality of the arr apps. This, in addition to many personal feature requests, QoL improvements, and privacy/security updates.
Current Status: Active development. Movie functionality inherited from Radarr is working. Multi-media foundation being implemented.
Features
Movies (working):
- Automated monitoring and quality upgrades
- Metadata and artwork management
- Integration with download clients and indexers
Books (in development):
- EPUB, MOBI, PDF quality tracking
- Author and series hierarchy
- Goodreads/Hardcover metadata
Audiobooks (in development):
- M4B, MP3, etc. support
- Narrator tracking
- Duration metadata and Audible integration
General:
- Usenet and BitTorrent support
- SABnzbd, NZBGet, qBittorrent, Deluge, rTorrent, Transmission integration
- Plex and Kodi integration
- Built-in archive extraction (Unpackerr functionality)
Privacy
Telemetry and analytics are disabled by default:
- No usage analytics or behavior tracking
- No machine fingerprinting or unique identifiers
- Error reporting (Sentry) is opt-in
- Update checks only send version and platform info (no personal data)
To enable error reporting for troubleshooting, toggle Analytics in Settings → General.
What data is collected if you opt-in:
- Anonymous error reports via Sentry (stack traces, OS version, app version)
- No personally identifiable information is ever collected
Quick Start
docker run -d \
--name=aletheia \
-e PUID=1000 \
-e PGID=1000 \
-p 7878:7878 \
-v /path/to/config:/config \
-v /path/to/media:/media \
--restart unless-stopped \
ghcr.io/cheir-mneme/aletheia:latest
Web interface: http://localhost:7878
Building from Source
Requirements: .NET 8.0 SDK, Node.js 20+, Yarn
git clone https://github.com/cheir-mneme/aletheia.git
cd aletheia
./build.sh --backend --frontend
dotnet run --project src/Radarr
Roadmap
See ROADMAP.md for detailed phase planning.
Completed:
- Phase 0-1: Privacy & security fixes
- Phase 2: Foundation (fork, CI/CD, branding)
- Phase 2.5: Community standards, quality gates, Unpackerr absorption
Current:
- Phase 3: Multi-media foundation (database generalization, indexer management)
Planned:
- Phase 4: Books & audiobooks support
- Phase 5: TV shows
- Phase 6: Music (with fingerprinting and quality analysis)
- Phase 7: Subtitles (Bazarr replacement), podcasts, comics
Contributing
See CONTRIBUTING.md for development setup, code guidelines, and PR process.
Development standards:
- Conventional commits (
feat:,fix:,docs:, etc.) - Feature branches + PRs to
develop - Pre-commit hooks for linting
License
Aletheia is a derivative of Radarr. Copyright 2010-2025.