Plugin catalog allows adding an invalid repo without error #7077

Open
opened 2025-12-22 05:12:37 +01:00 by backuprepo · 3 comments
Owner

Originally created by @joshuaboniface on GitHub (Jun 10, 2025).

Description of the bug

When adding a new repository catalog, an invalid URL (404) can be entered. The frontend provides no indication of an error, however the backend logs a failure.

The frontend should wait to catch potential errors and display them to the user.

Reproduction steps

  1. Navigate to the admin dashboard, Catalog, "+".
  2. Enter a new repository with a known-invalid path (e.g. https://repo.jellyfin.org/files/plugin/manifest-unstable.json)
  3. Click "Save".
  4. The repository will be "added" despite being invalid and throwing the error below in the logs.

What is the current bug behavior?

The UI does not display an error.

What is the expected correct behavior?

The UI should display an error (e.g. "The entered plugin URL is not valid.") and return to the editor.

Jellyfin Server version

Unstable

Specify commit id

No response

Specify unstable release number

No response

Specify version number

No response

Specify the build version

10.11.0-rc1

Environment

It's irrelevant.

Jellyfin logs

Jun 09 23:05:42 jf1.p.bonilan.net jellyfin[1890109]: [ERR] An error occurred while accessing the plugin manifest: https://repo.jellyfin.org/files/plugin/manifest-unstable.json
Jun 09 23:05:42 jf1.p.bonilan.net jellyfin[1890109]: System.Net.Http.HttpRequestException: Response status code does not indicate success: 404 (Not found).
Jun 09 23:05:42 jf1.p.bonilan.net jellyfin[1890109]:    at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode()
Jun 09 23:05:42 jf1.p.bonilan.net jellyfin[1890109]:    at System.Net.Http.Json.HttpClientJsonExtensions.<FromJsonAsyncCore>g__Core|12_0[TValue,TJsonOptions](HttpClient client, Task`1 responseTask, Boolean usingResponseHeadersRead, CancellationTokenSource linkedCTS, Func`4 deserializeMethod, TJsonOptions jsonOptions, CancellationToken cancellationToken)
Jun 09 23:05:42 jf1.p.bonilan.net jellyfin[1890109]:    at Emby.Server.Implementations.Updates.InstallationManager.GetPackages(String manifestName, String manifest, Boolean filterIncompatible, CancellationToken cancellationToken)

FFmpeg logs


Client / Browser logs

No response

Relevant screenshots or videos

No response

Additional information

No response

Originally created by @joshuaboniface on GitHub (Jun 10, 2025). ### Description of the bug When adding a new repository catalog, an invalid URL (404) can be entered. The frontend provides no indication of an error, however the backend logs a failure. The frontend should wait to catch potential errors and display them to the user. ### Reproduction steps 1. Navigate to the admin dashboard, Catalog, "+". 2. Enter a new repository with a known-invalid path (e.g. https://repo.jellyfin.org/files/plugin/manifest-unstable.json) 3. Click "Save". 4. The repository will be "added" despite being invalid and throwing the error below in the logs. ### What is the current _bug_ behavior? The UI does not display an error. ### What is the expected _correct_ behavior? The UI should display an error (e.g. "The entered plugin URL is not valid.") and return to the editor. ### Jellyfin Server version Unstable ### Specify commit id _No response_ ### Specify unstable release number _No response_ ### Specify version number _No response_ ### Specify the build version 10.11.0-rc1 ### Environment ```markdown It's irrelevant. ``` ### Jellyfin logs ```shell Jun 09 23:05:42 jf1.p.bonilan.net jellyfin[1890109]: [ERR] An error occurred while accessing the plugin manifest: https://repo.jellyfin.org/files/plugin/manifest-unstable.json Jun 09 23:05:42 jf1.p.bonilan.net jellyfin[1890109]: System.Net.Http.HttpRequestException: Response status code does not indicate success: 404 (Not found). Jun 09 23:05:42 jf1.p.bonilan.net jellyfin[1890109]: at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode() Jun 09 23:05:42 jf1.p.bonilan.net jellyfin[1890109]: at System.Net.Http.Json.HttpClientJsonExtensions.<FromJsonAsyncCore>g__Core|12_0[TValue,TJsonOptions](HttpClient client, Task`1 responseTask, Boolean usingResponseHeadersRead, CancellationTokenSource linkedCTS, Func`4 deserializeMethod, TJsonOptions jsonOptions, CancellationToken cancellationToken) Jun 09 23:05:42 jf1.p.bonilan.net jellyfin[1890109]: at Emby.Server.Implementations.Updates.InstallationManager.GetPackages(String manifestName, String manifest, Boolean filterIncompatible, CancellationToken cancellationToken) ``` ### FFmpeg logs ```shell ``` ### Client / Browser logs _No response_ ### Relevant screenshots or videos _No response_ ### Additional information _No response_
backuprepo added the
requires-web
confirmed
bug
labels 2025-12-22 05:12:37 +01:00
Author
Owner

@nielsvanvelzen commented on GitHub (Jun 10, 2025):

Is this new in 10.11 or also reproducible in 10.10?

@nielsvanvelzen commented on GitHub (Jun 10, 2025): Is this new in 10.11 or also reproducible in 10.10?
Author
Owner

@joshuaboniface commented on GitHub (Jun 10, 2025):

Seems to be present on 10.10.7 as well. So it's not new, but I haven't noticed or seen it reported before.

Also I realized that, it doesn't do the check until you go back to the catalog page. So perhaps we should just call that check function when saving the repo, to at least validate the manifest exists and is valid. And then either succeed (perhaps with some helpful info like "Loaded X plugins from manifest" or something) or fail if it can't be found/isn't valid.

@joshuaboniface commented on GitHub (Jun 10, 2025): Seems to be present on 10.10.7 as well. So it's not new, but I haven't noticed or seen it reported before. Also I realized that, it doesn't do the check until you go back to the catalog page. So perhaps we should just call that check function when saving the repo, to at least validate the manifest exists and is valid. And then either succeed (perhaps with some helpful info like "Loaded X plugins from manifest" or something) or fail if it can't be found/isn't valid.
Author
Owner

@crobibero commented on GitHub (Jun 11, 2025):

Fixing this is a breaking change, currently the client sets the list of repos without validation

@crobibero commented on GitHub (Jun 11, 2025): Fixing this is a breaking change, currently the client sets the list of repos without validation
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: starred/jellyfin#7077
No description provided.