Fix plugin config UI: use JSONForms uiSchema format, not RJSF
CI / lint (push) Successful in 10s
CI / test (push) Successful in 10s
CI / build (push) Successful in 23s
CI / publish (push) Successful in 11s
CI / notify (push) Successful in 5s

Navidrome's plugin config editor renders manifest.json's config.uiSchema
directly through @jsonforms/react (JsonForms component), not
react-jsonschema-form. The previous uiSchema ({"field": {"ui:widget":
"password"}}) is RJSF syntax, which JsonForms can't map to any
renderer, producing "No applicable renderer found" and blocking
plugin configuration/enabling entirely.

Replace it with a proper JSONForms UI schema (VerticalLayout of
Control elements referencing each property by JSON pointer), using
options.format: "password" on the two secret fields, matching how
Navidrome's own OutlinedTextRenderer picks the password input type.
Bump to 0.1.1.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018n5ffHCn5QUjpDtuWTk3fh
This commit is contained in:
2026-09-27 23:46:55 +01:00
co-authored by Claude Sonnet 5
parent 0c669122ea
commit 3fb34c5ac7
3 changed files with 20 additions and 5 deletions
+18 -3
View File
@@ -1,7 +1,7 @@
{ {
"name": "Scrobbled", "name": "Scrobbled",
"author": "Matt Daubney", "author": "Matt Daubney",
"version": "0.1.0", "version": "0.1.1",
"description": "Scrobbles Navidrome playback to a self-hosted Scrobbled (Last.fm-compatible) server.", "description": "Scrobbles Navidrome playback to a self-hosted Scrobbled (Last.fm-compatible) server.",
"website": "https://scrobbled.uk", "website": "https://scrobbled.uk",
"permissions": { "permissions": {
@@ -44,8 +44,23 @@
} }
}, },
"uiSchema": { "uiSchema": {
"scrobbled_password": { "ui:widget": "password" }, "type": "VerticalLayout",
"shared_secret": { "ui:widget": "password" } "elements": [
{ "type": "Control", "scope": "#/properties/server_url" },
{ "type": "Control", "scope": "#/properties/api_key" },
{
"type": "Control",
"scope": "#/properties/shared_secret",
"options": { "format": "password" }
},
{ "type": "Control", "scope": "#/properties/scrobbled_username" },
{
"type": "Control",
"scope": "#/properties/scrobbled_password",
"options": { "format": "password" }
},
{ "type": "Control", "scope": "#/properties/navidrome_username" }
]
} }
} }
} }
+1 -1
View File
@@ -1,6 +1,6 @@
[project] [project]
name = "navidromescrobbledplugin" name = "navidromescrobbledplugin"
version = "0.1.0" version = "0.1.1"
requires-python = ">=3.13" requires-python = ">=3.13"
license = "BSD-3-Clause" license = "BSD-3-Clause"
license-files = ["LICENSE"] license-files = ["LICENSE"]
Generated
+1 -1
View File
@@ -4,7 +4,7 @@ requires-python = ">=3.13"
[[package]] [[package]]
name = "navidromescrobbledplugin" name = "navidromescrobbledplugin"
version = "0.1.0" version = "0.1.1"
source = { virtual = "." } source = { virtual = "." }
[package.dev-dependencies] [package.dev-dependencies]