Repository navigation
Bump the tests group with 4 updates - #5
Closed
dependabot[bot] wants to merge 16 commits into
Closed
dependabot[bot] wants to merge 16 commits into
dependabot[bot] wants to merge 16 commits into
Conversation
Searches returned nothing because page requests sent no User-Agent, search depended on hidden jrCheckListing inputs, single-result searches redirect straight to the entry, and unidentified movies were never searched for. - New fanedit.org client: identifying User-Agent, request spacing, shared page cache, clear log message when Cloudflare bot protection blocks us - Parser ported from circulon/fanedit-provider, legacy markup as fallback - Permalink-slug ids; numeric ids from 1.x still resolve and migrate - Automatic matching during scans with fuzzy title scoring - Trailers, cover art, backdrops/thumbs for wide images, fanedit type and franchise tags, Changes in overview, optional IMDb id, IFDB link - Trusted Reviewer rating scaled to Jellyfin's 0-100 critic rating - Real settings page; ImageSharp dependency removed - Fix restore failure (pinned Logging.Abstractions vs Jellyfin 10.11.11) - Unit tests; workflows pinned to .NET 9 (shared workflows now default to net10.0, which Jellyfin 10.11 can't load) and run on dev - Dev builds publish to a rolling pre-release and manifest-dev.json Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y5FKGupEjVD8fRvS39hCFE
- Client state (cache, request queue, blocked-warning timer), configuration and clock are injected, so tests run isolated with a fake clock - Matching and metadata mapping split out of the providers - Logging guarded so .NET 10's CA1873 analyzer passes - Fix: HTTP 5xx and 3xx pages were cached for the cache lifetime - Cancellation is checked before a request starts - 174 tests at 100% line, branch and method coverage, enforced in CI; opt-in live tests (IFDB_LIVE_TESTS=1) with known searches and entries - Workflows: ci.yaml (build, coverage gate, script tests, package; SDK follows build.yaml), release.yaml (stable releases from tags, rolling dev build, both gated on CI), weekly newest-Jellyfin and live-site checks; non-functional template workflows removed; Dependabot on dev - Manifest script rewritten with tests; dev manifest lists only the latest build - Version 1.11.0: last release line for Jellyfin 10.11 (1.10.11 was the first release, so 1.1.0 would have sorted below it) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y5FKGupEjVD8fRvS39hCFE
Jellyfin.Controller/Model 12.*, net10.0, targetAbi 12.0.0.0. Jellyfin 10.11 continues on the jellyfin-10.11 branch as 1.11.x. No plugin API changes were needed; builds clean with the .NET 10 analyzers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y5FKGupEjVD8fRvS39hCFE
CodeQL already runs through GitHub's default code scanning setup, which conflicts with a second CodeQL workflow; the label sync copied Jellyfin's own label set. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y5FKGupEjVD8fRvS39hCFE
Security - Scraped image addresses must be http(s) on a public host name (no IP literals, localhost, single-label or .local/.lan/.internal/.home.arpa names), so a bad listing can't make the server fetch internal addresses. GetImageResponse applies the same rule. - Pages are capped at 5 MB, checked by Content-Length and while streaming. - Release workflow is read-only except the publish job. Performance - Time queued behind other requests no longer counts toward the request timeout (a long scan could time out requests that never ran). - Page cache capped at 100 pages (~30 MB) instead of 500; cache minutes clamped to a day; default User-Agent computed once. Correctness - Ratings, main image, cover art and fallback trailer embeds are read from the main content area, so sidebar widgets can't leak into an entry. - Ids from pasted URLs use the entry's own path segment, so reviews and discussion pages resolve to the entry. - HTTP 410 Gone is treated like 404. Cleanup and docs - Removed unused IfdbImage.IsMain and IfdbSearchResult.Url, a dead check, and the unused Renovate config (Dependabot handles updates). - Live tests also run on pushes to dev; coverage tool version pinned. - README: what happens with both repositories added, scraping safeguards, weekly checks only run from main; stale doc comment fixed. 198 tests, 100% line and branch coverage. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y5FKGupEjVD8fRvS39hCFE
It built Jellyfin.Plugin.Template.sln and copied net8.0 output. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y5FKGupEjVD8fRvS39hCFE
The first run showed fanedit.org challenging every request from GitHub's runners (HTTP 403). That reflects GitHub's datacenter addresses, not the plugin, so it no longer fails the job; any other live failure still does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y5FKGupEjVD8fRvS39hCFE
Images: Jellyfin saves whatever a provider's image response holds, named from its Content-Type, without checking it's an image. The plugin now buffers each download (max 20 MB), accepts only real JPEG, PNG, GIF or WebP data by file signature, and labels it with the detected type. SVG (which can carry script), HTML and anything else come back as 404, so Jellyfin skips to the next image. Text: scraped values have control characters (which break NFO XML), bidirectional override/isolate characters and HTML-tag-shaped text removed, and are length-limited (300 chars per value, 20000 per overview). Jellyfin's web client renders overviews as Markdown with HTML (cleaned by DOMPurify), so this keeps scraped markup out of it. Overview line breaks now use Markdown's two-space break, so the Changes section no longer collapses into one line in the web client. 229 tests, 100% line and branch coverage. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y5FKGupEjVD8fRvS39hCFE
- CHANGELOG.md (Keep a Changelog) is now the source of release notes: the GitHub release text, Jellyfin's catalog changelog and the packaged plugin's changelog all come from the version's section. CI fails if build.yaml's version has no section. scripts/changelog.js, with tests. - 2.0.0 notes cover everything changed since 1.10.11, written for users. - Dev builds are numbered 0.MAJOR.MINOR.RUN (Jellyfin versions must be four numbers, so "dev-" prefixes aren't possible). Being lower than any release, they now live in the main manifest.json: Jellyfin never installs one automatically, and testers pick it from the catalog. manifest-dev.json mirrors the latest dev build so its stale 2.0.0.x entry can't outrank a release. - README: single repository, how to test a dev build, release steps, and why manifests have their own branch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y5FKGupEjVD8fRvS39hCFE
Dev builds live in manifest.json now, so the separate dev manifest is removed rather than mirrored. If the repository has an image.png, the build packages it (Jellyfin shows it on the installed plugin's page) and the release workflow copies it to the manifest branch as the catalog image (imageUrl). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y5FKGupEjVD8fRvS39hCFE
Jellyfin has no per-plugin way to stop updates, so with dev builds in manifest.json numbered 0.x, servers kept moving back to the release. Dev builds now use their real upcoming version plus a build number (2.0.0.N) and are only listed in manifest-dev.json, which testers use instead of the release repository. image.png is circulon/fanedit-provider's logo (MIT, notice in THIRD_PARTY_NOTICES.md) on a dark 16:9 background for Jellyfin's plugin cards. It's packaged with the plugin and published as the catalog image in both manifests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y5FKGupEjVD8fRvS39hCFE
Blocked requests after the first were only logged at debug level for 15 minutes, and result counts only at debug, so a block and an empty search looked identical in a normal log. Now each blocked request gets a warning line (the full advice still at most every 15 minutes), each search logs its result count, and a search with no results logs the HTTP status, page size, page title and final address. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y5FKGupEjVD8fRvS39hCFE
Search outcomes and repeated block notices move to Debug level (the provider already logs each match at Information, and per-item warnings flooded scans while fanedit.org blocks everything). The block error now says what is known: Cloudflare refuses all automated requests, so a different User-Agent doesn't help. README explains enabling Debug logs. Changelog dated, with a known-issue note. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y5FKGupEjVD8fRvS39hCFE
A push to main releases build.yaml's version when it has no vX.Y.Z tag yet: the CHANGELOG.md heading must be dated, then CI runs, the GitHub release is created with the changelog notes and files, and manifest.json is updated. Afterwards dev is reset to main if both hold the same files. Maintenance branches release by running the workflow manually, without taking over GitHub's latest release. Replaces publishing a release by hand. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y5FKGupEjVD8fRvS39hCFE
- Actions move to their current Node 24 releases (checkout v7, setup-node v7, setup-dotnet v6, cache v6, upload-artifact v7, download-artifact v8), pinned to commits like the jprm action; Dependabot keeps them current. - Jobs run on ubuntu-24.04 instead of ubuntu-latest, which is moving to Ubuntu 26, so runner changes are deliberate. - changelog.js matches version headings with a prefix test instead of a regular expression built from the version (CodeQL: regular expression injection, incomplete escaping). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y5FKGupEjVD8fRvS39hCFE
Bumps coverlet.msbuild from 6.0.4 to 10.1.0 Bumps Microsoft.NET.Test.Sdk from 17.14.1 to 18.11.0 Bumps NSubstitute from 5.3.0 to 6.2.0 Bumps xunit.runner.visualstudio from 2.8.2 to 4.0.1 --- updated-dependencies: - dependency-name: coverlet.msbuild dependency-version: 10.1.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: tests - dependency-name: Microsoft.NET.Test.Sdk dependency-version: 18.11.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: tests - dependency-name: NSubstitute dependency-version: 6.2.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: tests - dependency-name: xunit.runner.visualstudio dependency-version: 4.0.1 dependency-type: direct:production update-type: version-update:semver-major dependency-group: tests ... Signed-off-by: dependabot[bot] <support@github.com>
raetha
pushed a commit
that referenced
this pull request
Oct 30, 2026
Takes Dependabot's #5 and #6 directly on dev (their branches were cut from dev before it was reset to main, so their diffs showed the whole 2.0.0 rewrite). - HtmlAgilityPack 1.13 adds nullable annotations: ParentNode is now nullable, so the two parent lookups say why it can't be null here. - coverlet 10 counts branches more accurately than 6 and found nine conditions only ever tested one way (a links field without IMDb, zero review counts, slashed dates, http base addresses, scheme-less site addresses and others). New tests cover the other side, and the cache prune is simpler. Coverage is back to 100% line and branch. - Microsoft.NET.Test.Sdk 18, xunit.runner.visualstudio 4, NSubstitute 6. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y5FKGupEjVD8fRvS39hCFE
raetha
pushed a commit
that referenced
this pull request
Oct 30, 2026
Takes Dependabot's #5 and #6 directly on dev (their branches were cut from dev before it was reset to main, so their diffs showed the whole 2.0.0 rewrite). - HtmlAgilityPack 1.13 adds nullable annotations: ParentNode is now nullable, so the two parent lookups say why it can't be null here. - coverlet 10 counts branches more accurately than 6 and found nine conditions only ever tested one way (a links field without IMDb, zero review counts, slashed dates, http base addresses, scheme-less site addresses and others). New tests cover the other side, and the cache prune is simpler. Coverage is back to 100% line and branch. - Microsoft.NET.Test.Sdk 18, xunit.runner.visualstudio 4, NSubstitute 6. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y5FKGupEjVD8fRvS39hCFE
Author
|
Looks like these dependencies are no longer updatable, so this is no longer needed. |
dependabot
Bot
deleted the
dependabot/nuget/Jellyfin.Plugin.Ifdb.Tests/dev/tests-34071731fb
branch
October 30, 2026 19:53
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Updated coverlet.msbuild from 6.0.4 to 10.1.0.
Release notes
Sourced from coverlet.msbuild's releases.
10.1.0
Improvements
Fixed
Diff between 10.0.1 and 10.1.0
10.0.1
Improvements
Fixed
Maintenance
Diff between 10.0.0 and 10.0.1
10.0.0
Improvements
--coverlet-file-prefixoption for unique report files #1869Fixed
Maintenance
Diff between 8.0.1 and 10.0.0
8.0.1
Fixed
Improvements
Diff between 8.0.0 and 8.0.1
8.0.0
Special Thanks: A huge thank you to @Bertk for driving the majority of the work in this release! 🎉
Fixed
Improvements
Diff between 6.0.4 and 8.0.0
Commits viewable in compare view.
Updated Microsoft.NET.Test.Sdk from 17.14.1 to 18.11.0.
Release notes
Sourced from Microsoft.NET.Test.Sdk's releases.
18.11.0
What's Changed
New Contributors
Full Changelog: microsoft/vstest@v18.10.1...v18.11.0
18.10.1
What's Changed
Full Changelog: microsoft/vstest@v18.10.0...v18.10.1
18.10.0
What's Changed
vstest.consoleand datacollector by @nohwnd in Run Microsoft.Testing.Platform test apps under vstest.console and datacollector microsoft/vstest#16201Full Changelog: microsoft/vstest@v18.9.0...v18.10.0
18.9.0
What's Changed
New Contributors
Full Changelog: microsoft/vstest@v18.8.0...v18.9.0
18.8.1
What's Changed
Full Changelog: microsoft/vstest@v18.8.0...v18.8.1
18.8.0
What's Changed
Full Changelog: microsoft/vstest@v18.7.0...v18.8.0
18.7.0
What's Changed
New Contributors
Full Changelog: microsoft/vstest@v18.6.0...v18.7.0
18.6.0
What's Changed
Changes to tests and infra
... (truncated)
18.5.1
What's Changed
Full Changelog: microsoft/vstest@v18.5.0...v18.5.1
18.5.0
What's Changed
Full Changelog: microsoft/vstest@v18.4.0...v18.5.0
18.4.0
What's Changed
Add LoongArch64 support by @stdmnpkg in Add LoongArch64 support microsoft/vstest#15359
Refactor Condition evaluation by @Youssef1313 in Refactor Condition evaluation microsoft/vstest#15357
Adding info on extensions points part 1 by @nohwnd in Adding info on extensions points part 1 microsoft/vstest#15360
Add option to ask for uploading code QL before the standard window ends by @nohwnd in Add option to ask for uploading code QL before the standard window ends microsoft/vstest#15373
Update runtime versions by @nohwnd in Update runtime versions microsoft/vstest#15372
Fix .NET 10 regression for traits by @Youssef1313 in Fix .NET 10 regression for traits microsoft/vstest#15370
Update target frameworks to net10.0 and net11.0 by @dotnet-maestro[bot] in Update target frameworks to net10.0 and net11.0 microsoft/vstest#15349
Fix names in pipeline matrix so we don't have to align them by @nohwnd in Fix names in pipeline matrix so we don't have to align them microsoft/vstest#15365
Update SECURITY.md by @Youssef1313 in Update SECURITY.md microsoft/vstest#15342
New Contributors
Full Changelog: microsoft/vstest@v18.3.0...v18.4.0
18.3.0
What's Changed
Internal fixes and updates
New Contributors
18.0.1
What's Changed
Fixing an issue with loading covrun64.dll on systems that have .NET 10 SDK installed: https://learn.microsoft.com/en-us/dotnet/core/compatibility/sdk/10.0/code-coverage-dynamic-native-instrumentation
Internal changes
Full Changelog: microsoft/vstest@v18.0.0...v18.0.1
18.0.0
What's Changed
Internal fixes and updates
... (truncated)
Commits viewable in compare view.
Updated NSubstitute from 5.3.0 to 6.2.0.
Release notes
Sourced from NSubstitute's releases.
6.2.0
NSubstitute v6.2.0
This release improves generic call matching (#989, #974, #990). Thanks to @zvirja and @JMolenkamp for fixes this.
We've also switched to using trusted nuget publishing linked to GitHub Releases. (#987, @zvirja)
What's Changed
Full Changelog: nsubstitute/NSubstitute@v6.1.0...v6.2.0
6.1.0
NSubstitute v6.1.0
This release reverts nullability support introduced in 6.0. This change caused a number of problems for callers (#973, #976), and trying to resolve these (#976) revealed the need for more fundamental changes to NSubstitute to effectively support this. As a result, nullability is again disabled for public API. Huge thanks to @jdb0123, @Romfos, and @Moha-sami for their PRs addressing this, and thanks for all those who raised issues. We also humbly award @zvirja with one unlimited "I told you so" pass to use as he sees fit.
What's Changed
New Contributors
Full Changelog: nsubstitute/NSubstitute@v6.0.0...v6.1.0
6.0.0
ℹ️ No changes from Release Candidate 1.
NSubstitute v6.0.0
From RC1 notes:
ArgMatchers.Matchingpredicate matcher as an alternative toIs(Expression<Predicate<T>>. (.NET6 and above.)Arg.Isnow accepts arg matchers.Full change list
... (truncated)
6.0.0-rc.1
NSubstitute v6.0.0 Release Candidate 1
Due to the large number of changes in this release, we wanted to start with a release candidate to ensure we've correctly captured breaking changes.
ArgMatchers.Matchingpredicate matcher as an alternative toIs(Expression<Predicate<T>>. (.NET6 and above.)Arg.Isnow accepts arg matchers.Full change list
... (truncated)
Commits viewable in compare view.
Updated xunit.runner.visualstudio from 2.8.2 to 4.0.1.
Release notes
Sourced from xunit.runner.visualstudio's releases.
4.0.1
Release notes: https://xunit.net/releases/visualstudio/4.0.1
4.0.0
Release notes: https://xunit.net/releases/visualstudio/4.0.0
4.0.0-pre.5
Release notes: https://xunit.net/releases/visualstudio/4.0.0-pre.5
4.0.0-pre.4
Release notes: https://xunit.net/releases/visualstudio/4.0.0-pre.4
4.0.0-pre.3
Release notes: https://xunit.net/releases/visualstudio/4.0.0-pre.3
3.1.5
Release notes: https://xunit.net/releases/visualstudio/3.1.5
Commits viewable in compare view.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore <dependency name> major versionwill close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)@dependabot ignore <dependency name> minor versionwill close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)@dependabot ignore <dependency name>will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)@dependabot unignore <dependency name>will remove all of the ignore conditions of the specified dependency@dependabot unignore <dependency name> <ignore condition>will remove the ignore condition of the specified dependency and ignore conditions