Skip to content

feat(kiosk): the music library and the news briefing on a display, the library's own tools through the envelope; funkwhale 1.0.6; kiosk 0.3.7 - #450

Merged
kh0pper merged 15 commits into
mainfrom
feat/kiosk-wm1b-library
Oct 8, 2026
Merged

kh0pper merged 15 commits into
mainfrom
feat/kiosk-wm1b-library

Conversation

@kh0pper

@kh0pper kh0pper commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner

Stacked on #443. The base is #443's branch, so this diff holds only the library and news work (and the evaluation's held-out set). Do not merge it in this form, and do not merge it outside a deploy window. Once #443 is squash-merged, this branch gets rebased onto main and the PR is retargeted.

Versions: kiosk 0.3.7, funkwhale 1.0.6. The core voice-turn changes (optional STT prompt/hotwords, the repetition-loop and tool-syntax guards, which also cover the glasses endpoint; the kiosk's hotwords switch is off by default) and the playback changes (the −50…0 dB volume range with 10 dB per request, pause requests while paused answered with no model, the sentence's own command winning over the model's) come from #443; this PR adds no core change of its own.

What a user can say

Changed since the last push

Earlier changes

  • Spoken library names. A name spelled letter by letter keeps an "n" or an "r b" inside it, while "r n b" after an article is still the genre; a thousands separator joins its digits; larger numbers and leading zeros are read as people say them. The match report's spoken rate is an agreement between the report's own reader and the matcher, not an STT rate.

How audio reaches the display

The display gets only a short-lived ticket path on this gateway. It never receives an upstream URL or a credential. The relay from #443 serves every stream:

  • Library streams use the relay's service policy. The first hop goes to the operator-entered library address, carries the add-on's token and is limited to the listen path. Exactly one redirect is allowed, and it must go to the operator-entered storage address. The token is never sent past the first hop.
  • News is a stored file. The only file served is a regular .mp3 whose real path, with links followed, is inside the data directory's media/audio/. That check runs again on every request. One byte range per request; other methods get 405 and a bad range gets 416.

What the relay refuses

Settings

Funkwhale tool fixes (1.0.6)

  • A track found by search plays by its integer id: one lookup, no list scan.
  • A file is copied only when its extension needs it.
  • An album plays in disc order across pages.
  • The blocklist import, which was never implemented, is no longer listed.

Known gaps

Scope

No schema change, no new port, no new package, no container.

Checks

@kh0pper
kh0pper force-pushed the feat/kiosk-wm1b-library branch from 8a9d65f to 930d39e Compare October 6, 2026 22:46
@kh0pper kh0pper changed the title feat(kiosk): the music library and the news briefing on a display, the library's own tools through the envelope; funkwhale 1.0.6; kiosk 0.3.1 feat(kiosk): the music library and the news briefing on a display, the library's own tools through the envelope; funkwhale 1.0.6; kiosk 0.3.3 Oct 6, 2026
@kh0pper
kh0pper force-pushed the feat/kiosk-wm1b-library branch from 3772a91 to 9d4aaa8 Compare October 7, 2026 00:37
@kh0pper
kh0pper force-pushed the feat/kiosk-wm1b-library branch from 9d4aaa8 to 011c8a1 Compare October 7, 2026 17:51
@kh0pper kh0pper changed the title feat(kiosk): the music library and the news briefing on a display, the library's own tools through the envelope; funkwhale 1.0.6; kiosk 0.3.3 feat(kiosk): the music library and the news briefing on a display, the library's own tools through the envelope; funkwhale 1.0.6; kiosk 0.3.5 Oct 7, 2026
@kh0pper
kh0pper force-pushed the feat/kiosk-wm1b-library branch from f7b4a1a to b23db1c Compare October 7, 2026 22:28
@kh0pper kh0pper changed the title feat(kiosk): the music library and the news briefing on a display, the library's own tools through the envelope; funkwhale 1.0.6; kiosk 0.3.5 feat(kiosk): the music library and the news briefing on a display, the library's own tools through the envelope; funkwhale 1.0.6; kiosk 0.3.7 Oct 7, 2026
kh0pper added 15 commits October 8, 2026 15:02
…t against a library's names (folding, cues, exact and contained tiers, shared album titles as fragments, spoken forms such as numbers, years, ordinals and initialisms meeting the written names, dominant or a question), with the follow-up chooser and a counts-only match report
…— a name index built in the background with a live fallback, queues in disc order across pages, copies only when the file extension needs one, the relay's service policy for library streams (listen path only, one redirect to the storage origin, the token never past the first hop), a storage-origin check and a match report that reads the token inside its own process; the newest briefing mp3 only from inside the media audio directory, re-checked at every request and refused past seven days; the library's own play tools join the display's session through the tool-result hook, rebuilt on the server
…lookup, no list scan), files are copied only when their extension needs it, albums play in disc order across pages, the unimplemented blocklist import is no longer listed; funkwhale 1.0.6
…ibrary settings in the panel (library and storage addresses entered by the operator, never guessed; Check against the real redirect), news from the data directory, stream envelopes on every display turn, a source's refusal spoken as its own line; docs
…dress empty; it says this version plays only from a library with separate file storage
… names are being read, and stops once ready; what is being typed is left alone
…me spelled letter by letter, ordinals past tenth, thousands; the match report compares spoken with written outcomes and counts misses by kind
…eps an n or an r b inside it, a thousands separator joins its digits, larger numbers and leading zeros are read as people say them
… previous set is kept verbatim and refused as spent
…to M', and the match report reads a long title whole instead of its shortened display name
… previous set is kept verbatim and refused as spent
@kh0pper
kh0pper force-pushed the feat/kiosk-wm1b-library branch from d3c9685 to 4f551f2 Compare October 8, 2026 20:02
@kh0pper
kh0pper changed the base branch from feat/kiosk-wm1b1 to main October 8, 2026 20:02
@kh0pper kh0pper closed this Oct 8, 2026
@kh0pper kh0pper reopened this Oct 8, 2026
@kh0pper
kh0pper merged commit 1c72136 into main Oct 8, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant