v2.6.3
A safety release on top of v2.6.2: uninstalling, disabling, or losing the plugin no longer locks out the accounts that used it. Drop-in from any 2.5.x or 2.6.x, with no config or data migration.
Accounts are handed back to Jellyfin when the plugin goes away
(Fixes #232, seen in #213, by @camarigor.)
Signing in with a passkey, creating an app password, or using the OIDC bridge moves an account onto the plugin's own sign-in provider, and nothing moved it back. So once the plugin was uninstalled, disabled, or failed to load, Jellyfin refused every sign-in for those accounts, administrators included.
The plugin now hands those accounts back to Jellyfin's own authentication provider when it is uninstalled or disabled, and takes them back the next time it starts (so an app password created before the uninstall works again after a reinstall). Concretely:
- Uninstall moves every account on the plugin's provider back to the provider the plugin was delegating password checks to (Jellyfin's default on a stock server), before Jellyfin removes the plugin.
- Disable does the same, through a filter that runs after Jellyfin disables the plugin.
- Reinstall / re-enable then restores those accounts to the plugin on the next start, each only while it is still on the handed-back provider.
The hand-back only ever runs on an administrator's own uninstall or disable, and only moves accounts that are actually on the plugin's provider; while the plugin is running, nothing changes.
Recovery when the plugin cannot load
No code can run for a plugin folder that was deleted or a build that will not load, so the README now documents the ways out: re-enable and restart, save the account's profile page (which moves it to the default provider), or the two-line sqlite3 fix with Jellyfin stopped.
Upgrade notes
In-place upgrade from any 2.5.x or 2.6.x, with no schema or configuration migration. The only new on-disk state is a short-lived handed-back.json that exists between a hand-back and the next start. Both the 10.11 (.NET 9) and 12 (.NET 10) packages are published and your server selects the right one automatically. Sigstore-signed and SLSA build-provenance attested.