-
v0.5.0
Stablereleased this
2026-05-02 15:43:07 +02:00 | 58 commits to pgsql since this releaseBug Fixes
-
Re-analyze segments on settings change (#735)
-
Display full 4-part plugin version string
-
Fix
-
Fix2
-
Fix3
-
Use dotnet publish to include all runtime dependencies
-
Exclude design-time DLLs and enable dynamic loading
-
Db
-
Db2
-
Db3
-
Db4
-
Db5
Features
-
Enhanced binary caching mechanism (#726)
-
Native PostgreSQL provider for Intro Skipper
-
Initial pgsql plugin release
-
Exclude Jellyfin framework assemblies from plugin package
-
Adopt upstream cache dashboard for pgsql
Miscellaneous
-
Bump signpath/github-action-submit-signing-request from 2.0 to 2.1 (#732)
-
Bump Microsoft.NET.Test.Sdk from 18.3.0 to 18.4.0 (#733)
-
Update dashboard build artifacts
-
Update dashboard build artifacts
-
Update vite and related dependencies to version 8.0.8
-
Bump coverlet.collector from 8.0.1 to 10.0.0 (#744)
-
Bump github/codeql-action from 4.35.1 to 4.35.2 (#742)
-
Bump signpath/github-action-submit-signing-request (#743)
-
Replace analyzer filter logic with priority-based chain (#745)
-
Scope MediaSegments filter to itemId actions via convention
-
Add plugin fork management to build system
-
Update manifest for v1.10.11.17
-
Update manifest for v1.10.11.17 [skip ci]
-
Trigger release
-
Pull Jellyfin packages from Forgejo NuGet registry to match unsigned server build
-
Bundle meta.json with assemblies whitelist in release zip
Other
- Update README disclaimer to clarify data extraction and ownership risks (#729)
Agent-Logs-Url: https://github.com/intro-skipper/intro-skipper/sessions/ee5e5ac8-a1a5-4ed4-ae0a-f7dccb838003
Co-authored-by: copilot-swe-agent[bot] 198982749+Copilot@users.noreply.github.com
Co-authored-by: AbandonedCart 1173913+AbandonedCart@users.noreply.github.com- Tighten README disclaimer wording per code review feedback (#730)
Agent-Logs-Url: https://github.com/intro-skipper/intro-skipper/sessions/478ce14a-e660-4945-98a3-d608390b7b83
Co-authored-by: copilot-swe-agent[bot] 198982749+Copilot@users.noreply.github.com
Co-authored-by: AbandonedCart 1173913+AbandonedCart@users.noreply.github.com- Route DetectSegmentsTask through IMediaSegmentProvider (#731)
- Route scheduled analysis through IMediaSegmentProvider; trigger Jellyfin extraction task on completion
Agent-Logs-Url: https://github.com/intro-skipper/intro-skipper/sessions/c55336d3-8699-4e9e-b7ce-2839a53f8c94
Co-authored-by: AbandonedCart 1173913+AbandonedCart@users.noreply.github.com
-
Update BaseItemAnalyzerTask.cs
-
Update PluginConfiguration.cs
-
Remove UpdateMediaSegments overlap with pushToJellyfin in analysis path; drop dead log method
Agent-Logs-Url: https://github.com/intro-skipper/intro-skipper/sessions/8b2e5d52-1948-44e5-a28c-f0271c902a6b
Co-authored-by: AbandonedCart 1173913+AbandonedCart@users.noreply.github.com
- Add diagnostic logs for extraction task not found / not idle in DetectSegmentsTask
Agent-Logs-Url: https://github.com/intro-skipper/intro-skipper/sessions/5f4bdd76-94ba-4127-b140-6410f8df3998
Co-authored-by: AbandonedCart 1173913+AbandonedCart@users.noreply.github.com
- Update BaseItemAnalyzerTask.cs
It's not actually user facing, but this will silence review
Co-authored-by: copilot-swe-agent[bot] 198982749+Copilot@users.noreply.github.com
Co-authored-by: AbandonedCart 1173913+AbandonedCart@users.noreply.github.com- Fix scheduled task leaving stale segments after analysis (#734)
Remove pushToJellyfin parameter from BaseItemAnalyzerTask.AnalyzeItemsAsync and
the UpdateMediaSegments config gate from the analysis push path.Previously, DetectSegmentsTask passed pushToJellyfin: false and relied on
Jellyfin's TaskExtractMediaSegments to pull updated segments. This approach
could silently fail if the task wasn't found or wasn't idle, leaving users with
stale segments after analysis.Now all callers (scheduled task, automatic task, ScanSeason) push newly-analyzed
segments directly via UpdateMediaSegmentsAsync immediately after analysis,
consistent with how the dashboard's ScanSeason option works. The Jellyfin
extraction task trigger is kept as an additional sync for already-analyzed items.Agent-Logs-Url: https://github.com/intro-skipper/intro-skipper/sessions/b88f13fa-b316-42ed-81c2-fd76edf43fb7
Co-authored-by: copilot-swe-agent[bot] 198982749+Copilot@users.noreply.github.com
Co-authored-by: AbandonedCart 1173913+AbandonedCart@users.noreply.github.com- Respect config flag when updating media segments (#736)
Gate the media segment update behind the _config.UpdateMediaSegments option. The code now checks both updateMediaSegments and the configuration flag before calling UpdateMediaSegmentsAsync, preventing unwanted updates when the feature is disabled in settings.
- Add web dashboard and CI pnpm/node setup (#737)
Co-authored-by: Kilian von Pflugk github@jumoog.io
- No sdk (#739)
- Remove Jellyfin SDK; use direct API calls
Remove the @jellyfin/sdk dependency (package.json + pnpm-lock.yaml) and refactor jellyfin-client to call the server via a getJson helper instead of the SDK. Add lightweight Jellyfin response types to types.ts (library/media/season/episode response shapes) and update getLibraries/getShowsInLibrary/getSeasons/getEpisodes to build query URLs, parse the simplified responses, and handle missing data. This reduces dependency surface and simplifies HTTP handling while preserving existing functionality.
-
Rename dashboard assets to introskipper.*
-
fix(web): log errors in jellyfin-client fetch helpers
-
Reformat web files for consistent indentation
- Refresh anime Preview segment when credits shift on re-analyze (#741)
- fix: refresh anime Preview segment when credits shift
The anime-preview helper short-circuited whenever any valid Preview row
existed, so when #735's AnalyzeAgain path re-analyzed Credits after a
settings change the stale Preview (oldCreditsEnd → duration) was kept
instead of being rewritten to the new credits.End.Extract the decision into a pure ComputeAnimePreviewFromCredits helper
and skip only when an existing Preview's Start is within 0.5 s of the
current credits.End (chromaprint quantises to ~0.124 s, so sub-second
drift is noise). Also thread a guarded Plugin local through the call
chain so AnalyzeItemsAsync no longer relies on Plugin.Instance!.Co-Authored-By: Claude Opus 4.7 noreply@anthropic.com
- Address PR #741 review: respect user-provided Preview, inclusive tolerance
- Skip the anime preview path entirely when the episode already has a
user-provided Preview segment. UpdateTimestampAsync silently no-ops in
that case, so the previous code emitted a misleading "Created anime
preview" log and marked the episode Analyzed without a write
(Copilot review feedback). - Switch tolerance comparison from < to <= so an exact 0.5 s drift is
treated as equal, matching the doc text (Sourcery + Copilot feedback). - Add a boundary test for the inclusive comparison.
Co-Authored-By: Claude Opus 4.7 noreply@anthropic.com
- Also refresh anime Preview when episode duration changes
Copilot review on PR #741: comparing only Preview.Start vs credits.End
left a stale Preview.End if the episode file was replaced (different
cut, file swap) and credits.End happened to match. Add a parallel
tolerance check on existing.End vs the current episodeDuration.Co-Authored-By: Claude Opus 4.7 noreply@anthropic.com
Co-authored-by: Claude Opus 4.7 noreply@anthropic.com
Co-authored-by: TwistedUmbrellaX 1173913+AbandonedCart@users.noreply.github.com- Refactor BlackFrameAltAnalyzer: density gating, boundary refinement fix, and RefineCreditsBoundary toggle (#748)
- fix: use preceding keyframe for RefineBoundary probe range
FindBoundaryKeyframeTimes now returns the immediately preceding keyframe
regardless of its black percentage, instead of searching backward for the
last non-black keyframe. On dark shows where most frames exceed the black
threshold, the old behavior produced overly wide probe ranges that could
undo the transition-frame correction from DetectCreditScenes.Also renamed lastNonBlackTime to lastKeyframeTime throughout the boundary
refinement pipeline (FindBoundaryKeyframeTimes, RefineBoundary,
ConvertProbeTimestamp) for consistency.- feat: add RefineCreditsBoundary config option
New toggle (default: true) allows users to disable frame-level boundary
refinement in the alternative black frame analyzer, falling back to
keyframe-only accuracy for faster analysis.-
Update IntroSkipper.csproj
-
Add blackframe-alt fingerprint test files
Add three new fingerprint files to IntroSkipper.Tests/fingerprints: blackframe-alt-3, blackframe-alt-4, and blackframe-alt-5. Each file contains parsed blackframe output used as test data for intro-skipping detection logic.
- feat: add RefineCreditsBoundary toggle to Black Frame UI tab
Visible only when the alternative black frame analyzer is enabled.
Allows users to disable frame-level boundary refinement.- refactor: reuse production parser in tests, document searchStart invariants
Address PR review feedback:
-
TestBlackFrames.ParseFingerprintFile now delegates to FFmpegWrapper.ParseBlackFrame instead of duplicating the blackframe regex
-
FFmpegWrapper.ParseBlackFrame changed from private to internal (InternalsVisibleTo already configured)
-
Added XML docs to HasMinimumBlackFrameDensity explaining searchStart contract and monotonic-advance invariant
-
Added inline comments at each searchStart usage site in DetectCreditScenes (density gating, merge pass, transition-frame search)
- fix: tighten BlackFrameAltAnalyzer boundary refinement
- keep RefineCreditsBoundary enabled by default
- probe boundary refinement using a dynamic minimum threshold:
min(scene start frame percentage, sceneChange) - reject probe results at the preceding keyframe
- reject probe results after the transition-selected scene start
- add regression tests for probe threshold selection and refinement window validation
-
Reject rooted fingerprint file paths
-
Add boundary refinement checks and tests
- Remove unused using directives
Clean up unused using directives across the project to reduce compiler warnings and improve code readability. Many redundant System., Collections., Linq, Threading, IO and related usings were removed from analyzers, controllers, data models, DB context, managers, scheduled tasks and services. No logic or behavior changes intended.
- Target ES2018 for web dashboard build (#750)
- Target ES2018 for web dashboard bundle to ensure broader compatibility with older environments
Co-authored-by: rlauuzo 46294892+rlauuzo@users.noreply.github.com
- Use mutating reducer for cached shows
Co-authored-by: rlauuzo 46294892+rlauuzo@users.noreply.github.com
Co-authored-by: rlauuzo 46294892+rlauuzo@users.noreply.github.com
- Fix credits analyzer ordering
Co-authored-by: rlauuzo 46294892+rlauuzo@users.noreply.github.com
- Revert "Fix credits analyzer ordering"
This reverts commit
c62e910bfb.- Revert "Target ES2018 for web dashboard build (#750)"
This reverts commit
4f13cf7c73.-
[skip actions] update copyright headers to SPDX format across all files
-
[skip actions] update copyright headers to SPDX format across all files
-
Release v1.10.11.18
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-