Skip to content

Config page does not persist settings in Jellyfin dashboard (v0.1.6-v0.1.11) #1

Description

@loganbuilt

Summary

The Retreivr Jellyfin plugin dashboard page renders, but plugin settings do not persist after reload.

Current behavior:

  • config page loads inside Jellyfin
  • entering values appears to update the inputs locally
  • clicking Save Settings does not show a useful error
  • after page reload, values revert to defaults
  • in several builds, Open Retreivr UI / Refresh Status also appeared non-functional
  • server-side config GET/POST logs were not observed during testing

This has been tested repeatedly across multiple plugin releases and different implementation approaches.

Environment

  • Jellyfin server: 10.9.x / 10.11.x family during testing
  • Plugin repo: sudoStacks/retreivr-jellyfin-plugin
  • Tested plugin versions:
    • v0.1.6
    • v0.1.7
    • v0.1.8
    • v0.1.9
    • v0.1.10
    • v0.1.11

Symptoms Seen

Persistence

  • Saving config does not survive reload
  • Values remain visible in inputs until page reload
  • Reload returns to defaults

UI behavior

  • Earlier builds showed:
    • save causing refresh / clear behavior
    • action buttons not responding
  • Later builds showed:
    • no visible refresh
    • values remain in the DOM temporarily
    • still no persistence after reload

Logging

  • Temporary controller logs were added for:
    • GET /Plugins/Retreivr/config
    • POST /Plugins/Retreivr/config
  • In testing, those logs did not appear, suggesting the embedded page may not actually be hitting the plugin controller from the Jellyfin dashboard page surface.

Implementation Approaches Already Tried

1. Jellyfin native plugin config flow

Tried:

  • ApiClient.getPluginConfiguration(...)
  • ApiClient.updatePluginConfiguration(...)

Result:

  • did not solve persistence

2. Plugin-owned JSON persistence

Implemented plugin-owned config storage under plugin data folder and used:

  • GET /Plugins/Retreivr/config
  • POST /Plugins/Retreivr/config

Result:

  • still did not persist from dashboard page

3. Raw fetch-based page requests

Tried fetch("/Plugins/Retreivr/...")

Result:

  • suspected missing Jellyfin auth/session handling
  • did not solve persistence

4. Jellyfin-native request path

Switched page requests to:

  • ApiClient.getUrl(...)
  • ApiClient.ajax(...)
  • pageshow lifecycle

Result:

  • still no working persistence observed in live Jellyfin testing

5. Event binding / page lifecycle hardening

Tried:

  • DOMContentLoaded
  • load
  • pageshow
  • delayed retries
  • direct onclick fallbacks on buttons
  • explicit global page object methods

Result:

  • page actions still did not reliably produce saved config state

6. Authorized controller and logging

Controller was updated with:

  • [Authorize(Policy = "RequiresElevation")]
  • explicit GET/POST logging

Result:

  • logs still not observed during testing

7. Embedded page cache busting

Renamed the embedded config page resource to force Jellyfin to load a new page instead of cached HTML/JS.

Result:

  • still no observed behavior change in live testing

Likely Remaining Root Cause

At this point the issue appears to be one of:

  1. Jellyfin dashboard/plugin embedded page execution is not working the way expected on this page surface
  2. The plugin menu/dashboard page surface is not the right integration point for persistent config and richer UI
  3. The page script is not actually running as expected even when the HTML/CSS render
  4. The request path to the plugin controller is not being executed from the embedded page despite multiple request strategies

Suggested Next Step

Instead of continuing to iterate on the full Retreivr page, the next debugging step should be:

  1. Create a minimal official-template-style Jellyfin plugin config page
  2. Prove the smallest possible save/load round-trip works
  3. Only then reintroduce the richer Retreivr UI

A minimal reproduction would help determine whether the problem is:

  • this specific page implementation
  • or the broader Jellyfin plugin page integration model

Repo / Branch Context

Latest attempted release in this series:

  • v0.1.11

The project is being paused for now until a smaller, proven Jellyfin config-page baseline can be established.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions