Deploy the plugin to dionysus and verify on the Pixel #6
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
mobrule/kurageyomi#6
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent
#1 — PRD: Kurageyomi
What to build
Nothing. This is the human-and-Hermes half of #2, split out because it cannot be verified by an
agent working on dex-win: it needs shell on dionysus and someone holding the phone.
#2 produces a built
Kurageyomi.dllthat serves an authenticated page. This issue gets itrunning on the real server and confirms it works from the Pixel.
Hand
docs/deploy-brief-hermes.mdto the agent with shell on dionysus. The brief isdiscovery-first — it finds the container, the plugin path, the ownership, and who actually owns
restarts, rather than assuming any of them. It also names ABI mismatch as the expected first
failure and says to report that back rather than patching around it on the box.
The ABI risk looks smaller than ADR 0001 feared: Jellyfin 10.11.11 targets
net9.0andJellyfin.Controller 10.11.11is published on NuGet with a matchingnet9.0dependency group,so the plugin can be built against the exact running version rather than the template's 10.9.
Acceptance criteria
GET /Pluginslists Kurageyomi as Activedocs/deploy-brief-hermes.mdso laterdeploys are mechanical
Blocked by
mainis ready to deploy — #2 through #5 are merged atc8440ee. 73 tests pass (37 C#, 36TypeScript), Release build clean with warnings as errors.
Building the artifact
Requires .NET SDK 9 and Node. From a clone of
main:That produces, in
src/Jellyfin.Plugin.Kurageyomi/bin/Release/net9.0/:Jellyfin.Plugin.Kurageyomi.dllmeta.json— declarestargetAbi 10.11.11.0Both go into the plugin directory together. The web assets are compiled into the dll as
embedded resources, so there is nothing else to copy.
The
npm run buildstep is not optional: it compiles the phone app into the folder the C#build embeds. Skipping it ships whatever was compiled last.
What to check once it is running
Beyond the acceptance criteria above, these are the first things likely to be wrong, in order:
GET /Pluginsshould list Kurageyomi as Active. If not, the serverlog names the reason — ABI mismatch is the usual one, though we now compile against
Jellyfin.Controller 10.11.11, the exact version this server runs.GET /Kurageyomishould return HTML with no token. If it401s, plugin controllers are not honouring
[AllowAnonymous]in this server's pipeline, andthe app cannot load at all.
/Users/AuthenticateByName. A 400 hereusually means the
Authorizationheader we build is malformed.GET /Kurageyomi/api/Sessionsreturns your sessions while something is playing, and theJSON is PascalCase (
DeviceName,PositionTicks). The phone now expects PascalCase; ifthis server somehow serves camelCase for plugin controllers, every field reads as undefined
and the page renders blank with no error. This is the single most likely silent failure.
GET /Kurageyomi/api/Cues?itemId=…&mediaSourceId=…&streamIndex=…returns cues for aJapanese text track.
Report back what breaks with the exact response, rather than working around it on the box.
Deploy brief updated with the real fetch and verification steps —
docs/deploy-brief-hermes.mdat943c4ab, also served at https://dex-win.tail1ee5d.ts.net/kurageyomi/deploy-brief-hermes.mdNothing needs building on dionysus. Prebuilt artifacts are on the tailnet:
dll is 56,832 bytes with all seven web assets embedded (verified).
meta.jsondeclarestargetAbi 10.11.11.0. Both files go in aKurageyomi_0.1.0.0directory under the plugins path.Caveat: the share is tailnet-only from dex-win, so that machine has to be awake. It currently reports a Tailscale DNS health warning — if the name fails, it is 100.117.235.109, but the cert is for the MagicDNS name.
Deployed and working on dionysus: plugin Active, shell served anonymously, sign-in from the Pixel, sessions followed, transcript rendering from a real Japanese track.
Closed at the owner's call. Remaining and owned by aiko: putting Jellyfin behind https (
tailscale serve --bg 8096on dionysus) so the page runs in a secure context — that restores Screen Wake Lock and makes the app installable to the home screen, neither of which is possible overhttp://dionysus:8096.