fix(jellyfin): anchor the provider-key write on the file’s real root #121
Open
dank
wants to merge 1 commits from
chore/jellyfin-tvdb-key into main
pull from: chore/jellyfin-tvdb-key
merge into: dank:main
dank:main
dank:docs/jellyfin-scan-door
dank:feat/audiobookshelf-bootstrap
dank:chore/untrack-agenttrash
dank:feat/media-io-weight
dank:fix/array-mount-gate
dank:perf/media-apply-batch
dank:fix/episode-marker-guard
dank:feat/media-tvdb-id-map
dank:feat/media-tv-relayout
dank:feat/media-metadata-view
dank:feat/media-tv-mover
dank:fix/media-series-key
dank:feat/media-sweep
dank:feat/media-relayout
dank:fix/quant-pipeline-hardening
dank:chore/fleet-image-refresh
dank:docs/radiance-engine-reference
dank:fix/qwen38-calib-shape
dank:fix/qwen38-flat-round
dank:fix/qwen38-tap-marker
dank:feat/qwen38-w5nl64
dank:feat/frank-archon-pool-step
dank:fix/signal-relay-fw-order
dank:security/quadlet-digest-pins
dank:fix/blackbox-entrypoint-bind
dank:fix/blackbox-web-listen-flag
dank:fix/blackbox-unit-generation
dank:fix/blackbox-service-gates
dank:fix/observability-errors-gone
dank:fix/grafana-copier-glob
dank:fix/dragoon-context-200k
dank:fix/deploy-sh-allowlist-drift
dank:chore/plex-1435
dank:feat/gpu-stats
dank:wt/20261020-213526
dank:feat/containers-observability
dank:feat/archon-dashboard
dank:feat/e2e-audit-coverage
dank:feat/grafana-starter-dashboards
dank:fix/grafana-authentik-sso
dank:feat/alloy-root-journal
dank:fix/observability-vllm-loki
dank:docs/openwebui-tts-voice
dank:chore/narrator-voice-repoint
dank:chore/open-notebook-admin-tenant
dank:chore/authentik-session-ttl
dank:chore/agent-skills-vault-setup
dank:feat/frank-dragoon-npu-lane
dank:feat/open-notebook-portal
dank:docs/radiance-prefill-decode-census
dank:docs/npu-tts-verdict
dank:fix/frank-archon-two-slots
dank:fix/frank-archon-cache-ceiling
dank:feat/frank-archon-radiance-181
dank:docs/vault-dedupe-okf-20261019
dank:chore/frank-zealot-mtp-reslice
dank:wt/20261017-181502
dank:docs/zealot-f16-measured-record
dank:fix/zealot-2x262144-f16-kv
dank:docs/openwebui-browser-kokoro-tts
dank:docs/frank-tts-voice-lore
dank:fix/frank-tts-default-voice
dank:docs/frank-tts-live
dank:docs/retire-cold-voice-ladder
dank:fix/frank-tts-warm-argv
dank:feat/frank-tts-engine
dank:feat/voice-pack-builder
dank:docs/tts-engine-trials
dank:chore/pr-attribution-trailer
dank:feat/open-notebook-podcast
dank:wt/20261015-040156
dank:wt/20261015-030408
dank:wt/20261013-180349
dank:wt/20261013-185330
dank:wt/20261009-204001
dank:wt/20261006-122204
dank:autoresearch/optimize-the-speed-of-frank-primary-make-it-fast-20261002
dank:autoresearch/iteratively-improve-the-decode-and-prefill-speed-20260929
dank:autoresearch/without-changing-the-quantization-or-checkpoint-20260927
dank:frank-large-strix-model
dank:feature/tiel-coder-flash-next
dank:feat/service-scoped-deploy
dank:deploy/searxng-provider-policy
dank:frank-default-large-q8agent-262144
dank:eemin-rocmi4-mtp-large
dank:frank-large-tune-ctx-batch-thinking
dank:tune-frank-small-context-163840
dank:vllm-qwen36
1
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
e9314ea1ee |
fix(jellyfin): anchor the provider-key write on the file's real root
TheTVDB writes its own configuration file and its serializer omits a null-valued setting entirely, so a fresh install has no <ApiKey> element to fill, under a root element called <PluginConfiguration>. xml_secret's fallback insertion was hardcoded to </Configuration>, matched nothing, and install refused with "no place to write <ApiKey>" — measured on Dankserver 2026-11-02, where the TVDB key has been present in the secret file since October and has never been installable. The anchor now comes from the document's own root, so both shapes Jellyfin actually produces work (the core plugins' <Configuration> and a plugin's <PluginConfiguration>), and the refusal is kept for a file with no root at all. Tests: the plugin-written shape is red before this commit and green after; every other setting in the file is asserted preserved. |