Skip to content

Releases: queukat/AniLibriaStrmPlugin

AniLiberty STRM 2.0.0.11

Choose a tag to compare

@github-actions github-actions released this 10 May 21:30

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 logs now remains the compact operational view for normal task results.
  • Show support trace exposes the high-volume diagnostic stream only after Huge trace is enabled and the task is rerun.
  • Copy support bundle packages 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: v2.0.0.10...v2.0.0.11

AniLiberty STRM 2.0.0.10

Choose a tag to compare

@github-actions github-actions released this 10 May 17:53

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 ReverseVirtualPath could resolve the playback proxy route as file:///AniLibertyPlayback/hls.
  • Generated .strm files now keep the Playback Proxy Rail on HTTP/HTTPS instead of writing unusable file:// 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: v2.0.0.9...v2.0.0.10

AniLiberty STRM nightly

Pre-release

Choose a tag to compare

@github-actions github-actions released this 26 Feb 12:29

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

Choose a tag to compare

@github-actions github-actions released this 09 May 20:28

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 to 10.11.0 to stop builds from silently drifting to newer Jellyfin packages.
  • Added committed packages.lock.json files and locked restore in CI.
  • Added CI checks that verify every resolved Jellyfin.* package remains on 10.11.0 while targetAbi stays 10.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 AniLibriaStrmPlugin repository URL for install compatibility and branch history.
  • Added a shared PluginIdentity with 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.json inside 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 .nfo files and artwork are preserved as user-owned content.

Safe Cleanup Modes

  • Added StaleCleanupMode: Off, DryRun, and Delete.
  • Default is DryRun, which reports stale managed files without deleting anything.
  • Delete removes 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 StaleCleanupMode is explicitly changed to Delete.

AniLiberty STRM 2.0.0.8

Choose a tag to compare

@github-actions github-actions released this 14 Mar 22:49

Automated stable release.

Changes in this release

Full Changelog: v2.0.0.7...v2.0.0.8

AniLiberty STRM 2.0.0.7

Choose a tag to compare

@github-actions github-actions released this 26 Feb 22:00

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

Choose a tag to compare

@queukat queukat released this 08 Feb 14:28
0954daf

[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

Choose a tag to compare

@queukat queukat released this 02 Dec 11:37

[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

AniLiberty STRM 2.0.0.1

Choose a tag to compare

@queukat queukat released this 02 Oct 15:56
polly

AniLiberty STRM 2.0.0.0

Choose a tag to compare

@queukat queukat released this 19 Jul 09:55
clean up