Releases: queukat/AniLibriaStrmPlugin
Release list
AniLiberty STRM 2.0.0.11
AniLiberty STRM Support Trace & Docker Preflight
This update adds a safer diagnostics flow for Docker and headless Jellyfin setups: compact logs stay readable, while the Support Trace rail captures the full failure context needed for issue triage.
Diagnostic Command Center
- Added a Huge trace switch for explicit support sessions.
Show logsnow remains the compact operational view for normal task results.Show support traceexposes the high-volume diagnostic stream only after Huge trace is enabled and the task is rerun.Copy support bundlepackages sanitized configuration, compact logs, and captured support trace without exposing AniLiberty tokens.
Full Exception Visibility
- Support trace now records full exception details, including stack traces and inner exceptions.
- Compact logs keep short, readable error summaries so normal UI logging does not turn into a wall of text.
- Verified with a read-only Docker output path: the trace captures the filesystem failure, plugin preflight stack, task failure stack, and remediation hint.
Docker Output Flight Check
- Scheduled generation now validates that the configured output root is writable before fetching AniLiberty catalog data.
- Permission and path failures now stop early with a clear message about Docker volume mapping, host directory ownership, and PUID/PGID permissions.
- Favorites and full-catalog generation both run this preflight before network/catalog work begins.
Noise Suppression
- Detailed catalog page progress, per-title generation chatter, and stale-file dry-run lists are routed into support trace instead of compact logs.
- Compact logging defaults remain tuned for routine operation.
- Debug logging in compact logs is now described separately from support trace so the UI makes the diagnostic path clearer.
Verification
- Built and tested with the non-integration suite.
- Smoke-tested in Docker on Jellyfin 10.11 with manifest installation.
- Confirmed support trace captures full write-permission failures while compact logs remain short.
Not Included
- No Jellyfin 10.10 compatibility build.
- No change to AniLiberty API endpoint hosts.
- No change to the legacy repository URL used for the plugin manifest.
Links
- Full changelog: https://github.com/queukat/AniLibriaStrmPlugin/blob/aniLiberty-v2/CHANGELOG.md
- Compare with previous tag: v2.0.0.10...v2.0.0.11
Full Changelog: v2.0.0.10...v2.0.0.11
AniLiberty STRM 2.0.0.10
AniLiberty STRM Docker Playback Rail Fix
This update tightens the Docker playback path for AniLiberty STRM Plugin and documents the supported container workflow: repository manifest install, container-visible output path, scheduled reconstruction, Jellyfin library scan, and proxied HLS playback.
Docker Playback Proxy Rail
- Fixed a Docker/headless Jellyfin case where
ReverseVirtualPathcould resolve the playback proxy route asfile:///AniLibertyPlayback/hls. - Generated
.strmfiles now keep the Playback Proxy Rail on HTTP/HTTPS instead of writing unusablefile://proxy URLs. - Added proxy endpoint tests that preserve valid absolute HTTP routes and normalize non-HTTP absolute routes back into Jellyfin route paths.
Docker First Launch Flight Check
- Added a README path contract for Docker: plugin output path and Jellyfin media library path must use the same container-visible path.
- Documented a working volume pattern such as
/srv/aniliberty-strm:/media/aniliberty-strm. - Added a first-run sequence for full-catalog generation, favorites generation, scheduled tasks, and empty-output diagnostics.
Tested Environment
- Verified manifest-based installation in Docker using
jellyfin/jellyfin:10.11.0. - Smoke-tested on Windows 10 Pro with Docker Desktop 4.51.0, Docker Engine 28.5.2, and Docker Compose 2.40.3.
- Confirmed Jellyfin scans generated output as a TV library, recognizes generated series and episodes, returns item-level playback info, rewrites HLS playlists through the proxy, and streams HLS segments through the plugin route.
Not Included
- No Jellyfin 10.10 compatibility build.
- No change to AniLiberty API endpoint hosts.
- No change to the legacy repository URL used for the plugin manifest.
Links
- Full changelog: https://github.com/queukat/AniLibriaStrmPlugin/blob/aniLiberty-v2/CHANGELOG.md
- Compare with previous tag: v2.0.0.9...v2.0.0.10
Full Changelog: v2.0.0.9...v2.0.0.10
AniLiberty STRM nightly
Automated nightly build from aniLiberty-v2.
- Commit:
6fdf48c704a8fc7d3b56b5fd85f849a9c0c320c4 - Message: Document public repository status
- Base version:
2.0.0.11
Use this prerelease for smoke testing only.
AniLiberty STRM 2.0.0.9
AniLiberty STRM Hardening System Release
This update hardens AniLiberty STRM Plugin as a full Jellyfin reconstruction system: stable Jellyfin ABI targeting, explicit AniLiberty identity, safer generated-library governance, streaming playback proxying, and a stronger operational surface for administrators.
Jellyfin Compatibility & Quality Gates
- Pinned all
Jellyfin.*NuGet references to10.11.0to stop builds from silently drifting to newer Jellyfin packages. - Added committed
packages.lock.jsonfiles and locked restore in CI. - Added CI checks that verify every resolved
Jellyfin.*package remains on10.11.0whiletargetAbistays10.11.0.0. - Release automation now keeps
build.yaml, package version, assembly version, file version, and informational version in sync.
AniLiberty Identity & API Courtesy
- Rebranded the public plugin identity to AniLiberty STRM Plugin while keeping the legacy
AniLibriaStrmPluginrepository URL for install compatibility and branch history. - Added a shared
PluginIdentitywith display name, product token, repository URL, version discovery, and canonical User-Agent. - All AniLiberty API, media proxy, static media, and HLS clients now identify as:
AniLibertyStrmPlugin/<version> (Jellyfin; +https://github.com/queukat/AniLibriaStrmPlugin).
Mirror Governance Layer
- Added
.aniliberty-strm-plugin/manifest.jsoninside each output root to track files managed by the plugin. - The manifest records generated STRM, ANIID, EDL, chapter XML, NFO, artwork/thumbs, release/episode IDs, hashes, sources, and timestamps.
- First manifest run initializes the baseline and never prunes existing files.
- Generated NFO/artwork refreshes only when the file is known as plugin-managed through the manifest or generated marker.
- Existing unmarked
.nfofiles and artwork are preserved as user-owned content.
Safe Cleanup Modes
- Added
StaleCleanupMode:Off,DryRun, andDelete. - Default is
DryRun, which reports stale managed files without deleting anything. Deleteremoves only manifest-managed stale files and then removes empty directories created by that cleanup path.- Untracked user files are left alone.
Playback Proxy Rail
- Non-playlist HLS segments and keys now stream directly to
Response.Body. - The proxy no longer reads segment/key payloads into memory with
ReadAsByteArrayAsync. - Upstream host allow-listing and redirect validation remain in place.
- Playlist rewriting continues to route segments and keys through the Jellyfin proxy endpoint.
Identity & Access Command Center
- OTP codes are no longer persisted in plugin configuration after the OTP flow.
- Login/password and OTP sign-in clear stored OTP state.
- The token box is masked by default, with explicit reveal/copy actions.
- Auth logs no longer include the login e-mail address.
Operational Reliability
- Scheduled tasks now rethrow failures after logging so Jellyfin can mark task execution accurately.
- Cancellation flows are preserved instead of being swallowed as generic failures.
- AniLiberty progress pull no longer overwrites newer local Jellyfin playback positions with older remote timecodes.
- Clearing UI logs now persists the cleared state.
Presentation & Documentation
- README now presents the plugin as a coherent product system: Signal Acquisition Layer, Context-Aware Reconstruction Core, Playback Proxy Rail, Mirror Governance Layer, Operational Command Center, and Distribution Quality Gates.
- Added three README visual assets showing the reconstruction core, system capability layers, and operational command center.
Test Coverage
- Added tests for Jellyfin package pins and lock-file resolution.
- Added User-Agent and named/static HTTP client coverage.
- Added managed mirror tests for baseline creation, generated metadata refresh, unmarked NFO preservation, dry-run cleanup, delete cleanup, and empty-directory cleanup.
- Added proxy tests for streaming segments, playlist rewriting, unsupported upstream rejection, redirect validation, and upstream failure status.
- Added auth/config tests for OTP payload boundaries, safe defaults, and AniLiberty identity.
Not Included
- No Jellyfin 10.10 compatibility build in this release.
- No migration of AniLiberty API endpoint hosts.
- No destructive cleanup unless
StaleCleanupModeis explicitly changed toDelete.
AniLiberty STRM 2.0.0.8
Automated stable release.
Changes in this release
-
release: ship playback proxy and v2 stability updates (250992e)
-
Full changelog: https://github.com/queukat/AniLibriaStrmPlugin/blob/aniLiberty-v2/CHANGELOG.md
-
Compare with previous tag: v2.0.0.7...v2.0.0.8
Full Changelog: v2.0.0.7...v2.0.0.8
AniLiberty STRM 2.0.0.7
Automated stable release.
Changes in this release
-
release: fix comments - chore: normalize project comments - removed empty comments across source files (1f4236e)
-
release (0427582)
-
Merge remote-tracking branch 'origin/aniLiberty-v2' into aniLiberty-v2 (496cf9f)
-
release: fix checksum (31eb291)
-
chore(release): v2.0.0.6 (48b0d37)
-
release: fix pages (671a7d1)
-
Merge remote-tracking branch 'origin/aniLiberty-v2' into aniLiberty-v2 (5327aac)
-
fix(ci): make manifest jq update type-safe (6fa1961)
-
chore(release): v2.0.0.5 (3514fa1)
-
release: add AniLiberty watch progress sync (push + pull) with safe Jellyfin user mapping - Added AniLiberty playback progress push sync via /accounts/users/me/views/timecodes. - Added manual pull task to import AniLiberty watch progress into Jellyfin. - Added .aniid sidecar + NFO uniqueid mapping for reliable episode matching. - Added sync settings in plugin UI, including auto user selection for single-user Jellyfin servers. (d116df5)
-
release: automate stable/nightly releases and add playback diagnostics - Replace legacy build/publish workflows with a unified release pipeline: - Nightly: build on every push to main and update a moving prerelease tag "nightly" - Stable: when the head commit starts with "release:", bump 4-part version (X.Y.Z.W), tag vX.Y.Z.W and create a GitHub Release (b194dee)
-
Merge pull request #3 from queukat/codex/fill-changelog-from-release-notes (0954daf)
-
Full changelog: https://github.com/queukat/AniLibriaStrmPlugin/blob/aniLiberty-v2/CHANGELOG.md
Full Changelog: 2.0.0.4...v2.0.0.7
AniLiberty STRM 2.0.0.4
[unreleased]
CI
- (publish) Make jprm 1.1.1 happy & add full sourceUrl
- Fix git-cliff config for changelog generation
Fixes
- Correct image path for jprm + manifest iconUrl
- (ci) Inject release notes into build.yaml changelog
AniLiberty STRM 2.0.0.3
[unreleased]
CI
- (publish) Make jprm 1.1.1 happy & add full sourceUrl
- Fix git-cliff config for changelog generation
Fixes
- Correct image path for jprm + manifest iconUrl