f23d8076bf61b4bb9da4b4b17b773a45716c2c0f
A new Jellyfin user can see nothing: EnableAllFolders is false by default, so a provisioned account
signs in to an empty home screen and looks like a bug in Officer rather than an unset flag.
POST /Users/{id}/Policy replaces rather than merges, so the policy Jellyfin returned from /Users/New
goes straight back with one field flipped. A hand-built body would quietly reset the other 43
properties. EnabledFolders is left as-is — ignored while the blanket flag is on, and still there if
the owner ever turns it off.
Not fatal if it fails: the account exists and works, and failing the create here would leave an
orphan upstream with no mapping row, which is worse than a user who cannot see films yet.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Video (Jellyfin)
Films and shows from your own Jellyfin server, inside Officer — with a player that handles direct play, HLS and progressive, and an access token that never leaves the server.
What you get
- Home — resume, next up, recently added
- Libraries — browse films, shows, seasons and episodes
- Search across the library
- A real player — direct play where the file allows it, HLS where it doesn't, progressive as the fallback, with playback reported back to Jellyfin so resume works everywhere
- Multiple servers — add several and switch between them
Requirements
A running Jellyfin server Officer can reach, and an access token.
Setup
Install the plugin, open /jellyfin, and add a server: a label, the URL, and the token. The token is encrypted at rest and never sent to the browser.
Unlike Transmission and Soulseek, this plugin keeps its own registry — jellyfin_servers — because
having more than one Jellyfin is a real thing (a home server and a friend's). One is marked active.
The plugin does not install or supervise Jellyfin. Point it at one you already run.
Permissions
One permission, jellyfin, grantable per role like any other app permission.
Notes
web/vendor/hls.mjsis a checked-in third-party build (~1.3 MB), deliberately excluded from formatting so the diff against upstream stays readable.- Transcoding is the Jellyfin server's job. This plugin asks for a stream and plays what it gets.
Languages
TypeScript
100%