-
v4.2.1
StableAll checks were successfulCI / Bot/backend version sync (push) Successful in 43sCI / Backend lint (ruff) (push) Successful in 54sRelease / Create Forgejo release (push) Successful in 12sCI / Summarisation accuracy eval harness (stub provider) (push) Successful in 1m25sCI / Frontend tests, audit, and build (push) Successful in 1m51sCI / Bot tests and audit (push) Successful in 2m9sCI / Docker image build (push) Successful in 4m30sRelease / Build and push versioned images (push) Successful in 4m41sCI / Backend migration, tests, and audit (push) Successful in 9m24sCI / Synthetic session harness (no GPU, no LLM) (push) Successful in 15m14sreleased this
2026-09-05 16:26:30 +00:00 | 193 commits to main since this releaseSuperseded by v4.2.2. The preflight fix below did not hold on the bundled llama.cpp stack: a reasoning model thinks for as many tokens as it is given, so the larger budget still produced no visible answer and the panel still read "Not measured" (#507). v4.2.2 measures throughput from the tokens the model did produce instead. The other two fixes in this release are good; upgrade straight to v4.2.2.
A patch on v4.2.0 from the first live validation of the release: the hardware preflight now measures reasoning models instead of reporting "Not measured", usage rows name the ASR model that actually served the run, and the synthetic-session harness scores its in-character assembly against the right denominator.
No migration. The database schema is unchanged from v4.2.0 (
e9fa0b1c2d3eremains the head).Bot API contract v1, unchanged. A v4.2.0 bot works with a v4.2.1 backend and vice versa;
BOT_EXPECTED_APP_VERSIONis bumped so the bot's startup log matches.No new settings. Nothing to add to
.env. If your preflight panel showed "Not measured" for the LLM on a self-hosted reasoning model, re-run the preflight after upgrading; nothing else is required.Fixed
-
[webapp] The hardware preflight now measures deployments running a
reasoning model, instead of reporting "Not measured" (#507). Admin → AI →
"Run preflight" asked for at most 128 tokens of prose, which is not a short
answer for a thinking model — it is no answer at all, because the hidden
reasoning spends the whole budget before the first visible word. On the
bundled llama.cpp stack serving qwen3.5, which is the default self-hosted
configuration, the probe failed every time: no generation rate, no expected
session time, and a "Not measured" label beside an endpoint that summarises
whole sessions perfectly well. A provider that declares reasoning is now
probed with a budget it can answer in, and one that turns out to need it
anyway — an OpenAI o-series model, or Ollama serving qwen3 — is retried once
with the larger budget, with the panel saying why that measurement took
longer. The reported rate still counts the reasoning tokens, because a real
summarisation run pays for them too. -
[webapp] Admin → AI Usage now says which model transcribed a session
(#508). If you run the bundled transcription server, the model column was
empty on every run: the server picks its model at startup and takes no model
parameter, so there was nothing configured to record — while the
summarisation half happily named its model. That left the one question worth
asking of a self-hosted box unanswerable, because the model does change
under you when somebody redeploys it with a smaller one, and nothing in the
history said when. Quest Board already asks the server what it is running
(that is how it knows whether your server can do word timings); it now
records the answer alongside the run and shows it beside the transcription
time. A model you have set by hand still wins, an endpoint that never
answered is recorded as unknown rather than blank, and a run on your own
hardware is still costed in compute seconds rather than dollars. Older rows
keep their empty column — the model a session used last month is not
recoverable now. -
[webapp] "No vocabulary hints" is now reported as a medium-impact gap, not
a low one (#506). The capability panel ranked it below "the provider was
guessed from the URL", which told operators the wrong thing to fix first: the
measurement in v4.2.0 put the campaign vocabulary at roughly ten to
twenty-five points of proper-noun recall on identical audio, at no cost to
the rest of the words — the largest single effect anything in that release
measured. The wording now says what you actually lose, which is your own
characters' and places' names coming back mis-heard and spelled differently
every time. Nothing about the pipeline changed; if you run the bundled
transcription server, the fix is still to update it.
Internal (no operator-visible change)
- The synthetic-session harness scored marker detection for its
ic_only
assembly over the whole script's 54 marker occurrences, four of which are
only ever spoken in out-of-character lines that assembly does not render —
so that leg understated itself by counting markers no transcriber could have
returned (#506). Each assembly is now scored against its own script, and the
excluded occurrences are reported next to the count.fullis unchanged.
Committed calibration figures are annotated rather than restated: re-deriving
them needs a rerun on the GPU box. - The same harness seeded its Discord links unverified, and attendance
resolution deliberately ignores unclaimed links, so a live run reported all
five known players as unmatched strangers and never reached the
uncaptured-member check the fixture exists to exercise (#506). The links are
seeded verified now,seed_db --verifychecks that they are, and the
expected attendance outcome of a live run is written down.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-