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.
This commit is contained in:
1 parent
9961ed62c0
commit
f7c41966b0
2 files changed
+64
-12
No files matched your search
+62
-10
@@ -33,7 +33,7 @@ There is no signup button on purpose.</p>
|
||||
<p><strong>2. Pick what you want to do:</strong></p>
|
||||
<table>
|
||||
<tr><th>I want to…</th><th>Open</th><th>Needs its own login?</th></tr>
|
||||
<tr><td>watch a film or a show</td><td><a href="https://jelly.franksdank.cloud">Jellyfin</a></td><td>yes — ask Frank</td></tr>
|
||||
<tr><td>watch a film or a show</td><td><a href="https://jelly.franksdank.cloud">Jellyfin</a></td><td>no — your franksdank.cloud login</td></tr>
|
||||
<tr><td>watch it on a TV that already has Plex</td><td><a href="https://plex.franksdank.cloud/web">Plex</a></td><td>yes — a Plex account, Frank invites it</td></tr>
|
||||
<tr><td>listen to an audiobook</td><td><a href="https://audiobooks.franksdank.cloud/audiobookshelf">Audiobookshelf</a></td><td>no — the family password</td></tr>
|
||||
<tr><td>ask a computer a question, privately</td><td><a href="https://ai.franksdank.cloud">AI chat</a></td><td>no</td></tr>
|
||||
@@ -77,15 +77,17 @@ There is no signup button on purpose.</p>
|
||||
<li><strong>Authentik</strong> 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.</li>
|
||||
</ul>
|
||||
<p>One account opens: the homepage, search, Marreta, the AI chat, Files, Gitea.</p>
|
||||
<p>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).</p>
|
||||
<figure>
|
||||
<img src="/img/onboarding/door-authentik.webp" alt="The sign-in screen: an identification field, then a password field">
|
||||
<figcaption>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.</figcaption>
|
||||
</figure>
|
||||
<p class="key-warn">Three doors keep their own accounts and will not take the family
|
||||
password: <strong>Jellyfin</strong>, <strong>Plex</strong> (a Plex account, its own e-mail
|
||||
login) and the e-book door. Frank creates those by hand.</p>
|
||||
<p class="key-warn">Two doors keep their own accounts and will not take the family
|
||||
password: <strong>Plex</strong> (a Plex account, its own e-mail
|
||||
login) and the e-book door. Frank creates those by hand. <strong>Jellyfin does take the
|
||||
family login</strong> — your franksdank.cloud username and password.</p>
|
||||
<p class="foot-note">Want your own password? It lives at
|
||||
<a href="https://auth.franksdank.cloud/if/flow/default-user-settings-flow/">account settings</a>
|
||||
— the same button you get at the bottom of the homepage.</p>
|
||||
@@ -128,8 +130,10 @@ account of any company's, and the posters and episode guides are all filled in.<
|
||||
<h3>Getting in</h3>
|
||||
<ul>
|
||||
<li>Pick your name. There is no list of names on the login screen — type yours.</li>
|
||||
<li>Type the password Frank set for you. <strong>It is not the family password</strong>;
|
||||
this is the most common wrong door.</li>
|
||||
<li>Type your <strong>franksdank.cloud password</strong> — the same one that opens the
|
||||
homepage, search and the AI chat. There is no separate Jellyfin password.</li>
|
||||
<li>Refused, but the same password opens the homepage? Your name hasn't been given library
|
||||
access yet — ask Frank, it's a one-line change on his side.</li>
|
||||
<li>No name yet? Ask Frank to make one. There is no self-service signup, on purpose.</li>
|
||||
</ul>
|
||||
<figure>
|
||||
@@ -147,7 +151,8 @@ account of any company's, and the posters and episode guides are all filled in.<
|
||||
</ul>
|
||||
<h3>If it misbehaves</h3>
|
||||
<ul>
|
||||
<li>Wrong password and no error you understand? That's the family password again.</li>
|
||||
<li>It rejects a password that works everywhere else? Your name isn't on the library-access
|
||||
list yet — ask Frank.</li>
|
||||
<li>A film with a blank poster is missing artwork, not missing files — Frank can refresh it.</li>
|
||||
<li>Buffering away from home usually means the pipe out of the house, not the server.</li>
|
||||
</ul>
|
||||
@@ -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.</li>
|
||||
<li>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.</li>
|
||||
<li>Ask Frank for an invitation; he can also tell you which of the two has the thing you're looking for.</li>
|
||||
<li>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.</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
@@ -359,6 +365,51 @@ Qwen3.8-Flash-Next v2, abliterated
|
||||
(<a href="https://huggingface.co/prism-ml/Ternary-Bonsai-2-9B-gguf">prism-ml/Ternary-Bonsai-2-9B-gguf</a>)
|
||||
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.</p>
|
||||
|
||||
<h3>And the voices</h3>
|
||||
<p>Two speech models live in this house, and they are different animals. One of them
|
||||
speaks as a <em>specific person</em>; the other is a pack of stock voices that ships inside
|
||||
the tools you already use.</p>
|
||||
<table>
|
||||
<tr><th>Name</th><th>Runs on</th><th>Good at</th><th>Notes</th></tr>
|
||||
<tr>
|
||||
<td><code>frank-tts</code></td>
|
||||
<td>the Strix Halo machine's built-in graphics, sharing the card with <code>frank-dragoon</code></td>
|
||||
<td>cloning: it speaks as one particular voice, chosen by name</td>
|
||||
<td>five voices today — <code>dr.kern</code>, <code>garrickhagon</code>,
|
||||
<code>jeffhays</code>, <code>vaati</code>, <code>wilwheaton</code>; 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</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Kokoro</strong></td>
|
||||
<td>your own browser, or Frank's own terminal — no server in the loop</td>
|
||||
<td>instant plain narration, quick and cheap</td>
|
||||
<td>about two dozen preset voices with coded names (<code>af_heart</code>,
|
||||
<code>bm_george</code>…). It cannot clone, and it will never answer to the five names
|
||||
above</td>
|
||||
</tr>
|
||||
</table>
|
||||
<ul>
|
||||
<li><strong>The AI chat's speaker button is Kokoro.</strong> That is why it offers a
|
||||
different list of names, and why it starts talking a moment before anything on the server
|
||||
could. It speaks in your browser, on your machine.</li>
|
||||
<li><strong>The podcast maker uses the clones.</strong> An episode's two hosts are
|
||||
<code>wilwheaton</code> and <code>vaati</code>, rendered by <code>frank-tts</code>. That door
|
||||
is Frank's for now.</li>
|
||||
<li><strong>Frank's coding agent narrates through the clones too</strong> — the default
|
||||
voice is <code>wilwheaton</code>.</li>
|
||||
<li><strong>Want your own voice in the list?</strong> Ask Frank. It needs about twenty
|
||||
seconds of you talking plainly, once; the voice then carries your name.</li>
|
||||
</ul>
|
||||
<p class="foot-note">The exact weights: <code>frank-tts</code> is a Qwen3 talker
|
||||
(1.7 billion parameters, 4-bit) plus its 12 Hz audio codec, driven by
|
||||
<code>qwentts.cpp</code>; 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: <code>POST http://192.168.0.143:7772/v1/audio/speech</code> with
|
||||
<code>{"input": "…", "voice": "vaati"}</code> gets you WAV or MP3, and
|
||||
<a href="http://192.168.0.143:7772/v1/audio/voices"><code>/v1/audio/voices</code></a> answers
|
||||
the live list, so this page can never lie to you for long.</p>
|
||||
</section>
|
||||
|
||||
<section id="api-access">
|
||||
@@ -401,7 +452,8 @@ one you were given? Ask Frank to widen the key.</p>
|
||||
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.</li>
|
||||
<li><strong>"Invalid password" on the front desk.</strong> Right password, wrong door: the
|
||||
family login does not open Jellyfin, Plex or the e-book door.</li>
|
||||
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.</li>
|
||||
<li><strong>The AI is slow.</strong> 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.</li>
|
||||
|
||||
Reference in new issue
Block a user