From f7c41966b005de4bf6a9d71362a5fd285f711024 Mon Sep 17 00:00:00 2001 From: Frank Date: Wed, 4 Nov 2026 12:49:42 -0800 Subject: [PATCH] fix(homepage): Jellyfin takes the family login; document the voice models Jellyfin authenticates against Authentik over LDAP, so telling the household that it "will not take the family password" sent people to the wrong door. The tile's provider id (alex -> LdapAuthenticationProviderPlugin) and a live bind + memberOf search against the running outpost are the proof; six places repeated the claim, and all six now say to sign in with the franksdank.cloud username and password. Added the failure mode that actually happens: a password that works on the homepage but is refused here means the name is not in jellyfin_users yet. Plex and the e-book door stay the two genuinely separate accounts. Marreta's tile loses its VPN/headless-browser mechanics and keeps one honest clause: "does not work on all sites". The models page gains the TTS pair the household keeps meeting: frank-tts (Qwen3 talker + 12 Hz codec on the iGPU, five cloned voices, live list at /v1/audio/voices) and Kokoro (82M, stock presets, runs in the user's own browser) - which is why the AI chat's speaker list never matches the server's. Verified in a browser against an isolated copy of the tree: both tiles render the new copy, #models carries both tables, zero broken images, and every retired phrase is absent from the rendered text. ./tests/run.sh: 841 pass. --- shared/homepage/docs.html | 72 ++++++++++++++++++++++++++++++----- shared/homepage/services.json | 4 +- 2 files changed, 64 insertions(+), 12 deletions(-) diff --git a/shared/homepage/docs.html b/shared/homepage/docs.html index 5e72cce..c2592c2 100644 --- a/shared/homepage/docs.html +++ b/shared/homepage/docs.html @@ -33,7 +33,7 @@ There is no signup button on purpose.

2. Pick what you want to do:

- + @@ -77,15 +77,17 @@ There is no signup button on purpose.

  • Authentik is the front desk. It asks who you are, once per device per few days, and after that you drift from app to app without being stopped again.
  • -

    One account opens: the homepage, search, Marreta, the AI chat, Files, Gitea.

    +

    One account opens: the homepage, search, Marreta, the AI chat, Files, Gitea, and Jellyfin +(there it is typed as username + password, not the automatic sign-in).

    The sign-in screen: an identification field, then a password field
    The front desk. Your username first, then your password. Nothing here signs you up for anything; if you don't have an account yet, ask Frank.
    -

    Three doors keep their own accounts and will not take the family -password: Jellyfin, Plex (a Plex account, its own e-mail -login) and the e-book door. Frank creates those by hand.

    +

    Two doors keep their own accounts and will not take the family +password: Plex (a Plex account, its own e-mail +login) and the e-book door. Frank creates those by hand. Jellyfin does take the +family login — your franksdank.cloud username and password.

    Want your own password? It lives at account settings — the same button you get at the bottom of the homepage.

    @@ -128,8 +130,10 @@ account of any company's, and the posters and episode guides are all filled in.<

    Getting in

    @@ -147,7 +151,8 @@ account of any company's, and the posters and episode guides are all filled in.<

    If it misbehaves

    @@ -167,7 +172,8 @@ Plex's own sign-in, and that is correct: Plex is closed-source and insists on a both; the artwork, watch-state and profiles are separate.
  • Choose Plex when your TV already has the Plex app on it, or you want Plex's trailers and music. Otherwise Jellyfin is the one the household uses.
  • -
  • Ask Frank for an invitation; he can also tell you which of the two has the thing you're looking for.
  • +
  • Need a Plex account of your own? Ask Frank to invite it; he can also tell you which of + the two has the thing you're looking for.
  • @@ -359,6 +365,51 @@ Qwen3.8-Flash-Next v2, abliterated (prism-ml/Ternary-Bonsai-2-9B-gguf) with a small adapter fitted that removes its refusal reflex. All three accept pictures. Ask Frank before pointing a script at one of them directly; the address is on the homepage.

    + +

    And the voices

    +

    Two speech models live in this house, and they are different animals. One of them +speaks as a specific person; the other is a pack of stock voices that ships inside +the tools you already use.

    +
    I want to…OpenNeeds its own login?
    watch a film or a showJellyfinyes — ask Frank
    watch a film or a showJellyfinno — your franksdank.cloud login
    watch it on a TV that already has PlexPlexyes — a Plex account, Frank invites it
    listen to an audiobookAudiobookshelfno — the family password
    ask a computer a question, privatelyAI chatno
    + + + + + + + + + + + + + +
    NameRuns onGood atNotes
    frank-ttsthe Strix Halo machine's built-in graphics, sharing the card with frank-dragooncloning: it speaks as one particular voice, chosen by namefive voices today — dr.kern, garrickhagon, + jeffhays, vaati, wilwheaton; ask for one by name and + you get it. No key, but it is a house-hardware door: it answers on the house network only
    Kokoroyour own browser, or Frank's own terminal — no server in the loopinstant plain narration, quick and cheapabout two dozen preset voices with coded names (af_heart, + bm_george…). It cannot clone, and it will never answer to the five names + above
    + +

    The exact weights: frank-tts is a Qwen3 talker +(1.7 billion parameters, 4-bit) plus its 12 Hz audio codec, driven by +qwentts.cpp; Kokoro is a much smaller 82-million-parameter model whose voices are +baked in. A cloned voice is not a setting — it is a directory of reference audio on the +server, which is why adding one is a fifteen-minute job and not a checkbox. Programmers on the +house network: POST http://192.168.0.143:7772/v1/audio/speech with +{"input": "…", "voice": "vaati"} gets you WAV or MP3, and +/v1/audio/voices answers +the live list, so this page can never lie to you for long.

    @@ -401,7 +452,8 @@ one you were given? Ask Frank to widen the key.

    scripts it needs (or an extension is). Allow scripts for that site, or try another browser. Still looping? Ask Frank — the guard can be told you're a person.
  • "Invalid password" on the front desk. Right password, wrong door: the - family login does not open Jellyfin, Plex or the e-book door.
  • + family login does not open Plex or the e-book door. Jellyfin does take it, but only for the + names Frank has given library access.
  • The AI is slow. Each model only holds a couple of conversations at once (two, three or four, depending which). It is a queue, not a crash — or Frank is mid-conversation; the big one is on the same machine as the films.
  • diff --git a/shared/homepage/services.json b/shared/homepage/services.json index 63d3bd5..de8dbcd 100644 --- a/shared/homepage/services.json +++ b/shared/homepage/services.json @@ -110,7 +110,7 @@ "name": "Jellyfin", "category": "user", "section": "Media Library Apps", - "description": "Open source media server for the film and TV library: its own logins (no Authentik here), so ask Frank for an account.", + "description": "Open source media server for the film and TV library. Sign in with your franksdank.cloud username and password — the same login as the rest of the house; ask Frank if yours isn't in yet.", "url": "http://jelly.franksdank.cloud", "docs": "", "probe": "192.168.0.235:8096", @@ -136,7 +136,7 @@ "name": "Marreta", "category": "user", "section": "Web Apps", - "description": "Paywall sledgehammer: hand it an article URL and it drags the page back through the VPN with the paywall chrome, cookie wall and trackers stripped; a headless browser renders the JS-heavy ones. Best effort — hard paywalls and login walls still win.", + "description": "Paywall sledgehammer: hand it an article URL and it will attempt to smash its paywall. Note: does not work on all sites.", "url": "http://marreta.franksdank.cloud", "docs": "", "probe": "127.0.0.1:8082",