feat(homepage): Audiobookshelf's own mark, and the voice endpoint in the model block

Audiobookshelf carried the improvised "AB" hex monogram — the fallback for
apps with no icon. Simple Icons carries its brand mark, so the card now
uses /img/apps/audiobookshelf.svg the way Plex and Jellyfin use theirs; the
monogram went to .AGENTTRASH.

frank-tts (Qwen3-TTS 1.7 B base talker on the gfx1151 iGPU) was an
admin-only status tile, so the household read about five cloned voices in
/docs and saw no sign of the door that speaks them. It is now a Model
Information card on the user page beside the three chat models, carrying
the ask-Frank permission note and a privacy note about cloned voices.

miCard grew the shape that requires: art falls back to the card's own `art`
when a card has no StarCraft `unit`, the accent falls back to `.mi-tool`,
and a `tagline` with no `sfx` renders as text instead of a play button that
plays nothing. No audio asset ships with the card on purpose: every pack on
that endpoint is a replica of a real person's voice, so a sample clip would
put a synthetic person's voice in the repo and on the page.

Seams: the model-card contract splits unit cards (equivalence, supervision,
playable voice line) from tool cards (permission note), and the voice
stack's homepage seam now pins category=user with the reason.
This commit is contained in:
Frank committed 2026-11-04 13:39:37 -08:00
1 parent e6a85176c4
commit 53e4a777b4
8 files changed
+60 -25

No files matched your search

+13 -4
View File
@@ -522,7 +522,7 @@
"method": "http",
"wip": false,
"showLink": true,
"art": "/img/apps/mono-ab.svg"
"art": "/img/apps/audiobookshelf.svg"
},
{
"name": "Postgres",
@@ -552,11 +552,20 @@
},
{
"name": "frank-tts",
"category": "admin",
"category": "user",
"section": "AI",
"description": "The fleet's cloned-voice speech endpoint: POST /v1/audio/speech with voice=<name>, audio back in that voice. Published on 7772; the engine behind it (frank-tts-engine) is unpublished on purpose. It is also the harness speech role.",
"model": {
"role": "The fleet's voice — it speaks, it does not chat",
"hf": "https://huggingface.co/Serveurperso/Qwen3-TTS-GGUF",
"tagline": "Your library, read aloud in a voice you know.",
"spec": "Qwen3-TTS 1.7 B base talker (Q4_K_M) with its 12 Hz tokenizer, run by qwentts.cpp on the gfx1151 iGPU. The frank-tts door answers POST /v1/audio/speech with voice=<name> and hands back audio in that voice.",
"inputs": ["text"],
"use": "Narration: Open Notebook episodes, the operator harness's spoken output, and anything that should sound like a person instead of a text-to-speech robot.",
"permission": "Ask Frank for a voice — each pack is built from that person's own recording.",
"warn": "Cloned voices. Every pack on this endpoint is a replica of a real person's voice. Audio coming out of it is not that person speaking and must never be passed off as them."
},
"url": "",
"docs": "",
"docs": "/docs#models",
"probe": "127.0.0.1:7772",
"method": "http",
"wip": false,