-
v3.11.1
StableAll checks were successfulCI / Frontend tests, audit, and build (push) Successful in 1m54sCI / Bot/backend version sync (push) Successful in 24sCI / Docker image build (push) Successful in 13sCI / Backend lint (ruff) (push) Successful in 42sRelease / Create Forgejo release (push) Successful in 26sCI / Bot tests and audit (push) Successful in 1m52sRelease / Build and push versioned images (push) Successful in 55sCI / Backend migration, tests, and audit (push) Successful in 9m1sreleased this
2026-08-05 18:32:14 +00:00 | 534 commits to main since this releaseApproval was unreachable, and the quote board was failing silently.
Three bug fixes found while investigating why a recurring session was offered
no title suggestions. One new migration (e0f1a2b3c4d5), additive and with
a best-effort backfill.BOT_CONTRACT_VERSIONstays 1 — no/api/bot/*change,
so images can be upgraded one at a time.Fixed
- [webapp] GM approval was unreachable on a default install.
sessions. audio_processing_statusconflated where the audio file is with whether the
GM had signed off on the content. Under the default retention mode
(delete_after_processing) the status jumps straight toapproved— which
means "audio deleted", not "GM approved" — so the approve endpoint, which
requiredready, could never be called. Everything gated behind it was dead:
publishing session highlights to players, reposting the GM-corrected summary
to Discord, journal entries, and next-session title suggestions. Content
approval now has its own state and its own endpoint,
POST /sessions/{id}/approve, gated on having a summary rather than on audio
state.POST /sessions/{id}/audio/approveremains as a deprecated shim.
Transcript editing and the feedback tally were gated the same way and are
likewise fixed. (#278) - [webapp] Post-summary tasks fired from three places that didn't know about
each other, so a hand-edited summary rebuilt the campaign storyline and
nothing else. Replaced with a single fan-out that distinguishes the initial
transcription from a later edit — the recap email and lore extraction no
longer re-fire because a GM fixed a typo. (#278) - [webapp] Title suggestions generated from nothing, and destroyed
themselves on failure. The task read context fromcompletedsessions but
runs while the session is stillconfirmed, and on any LLM error it
overwrote a good suggestion set with an empty one plus a fresh timestamp.
(#278) - [webapp] The quote board was silently empty. Endpoints that accept
response_format: json_objectwithout enforcing it can return structurally
invalid JSON, which the strict parser rejected — logging the result as
"0 highlights", indistinguishable from the model finding nothing memorable.
JSON parsing is now tolerant of a truncated or over-closed response, shared
across every structured-output caller, and both repair and total failure are
logged at WARNING. A related bug cleared existing highlights before checking
whether the new extraction returned anything, so each retry of a failing
session destroyed the previous good set. (#279) - [webapp] Admin retention warning for "delete after processing" understated
the consequences; it now tells you to correct the transcript before approving.
(#278)
Added
- [webapp] Title suggestions on the session edit form — sessions created
from a recurring series are materialized by a background task and never pass
through the new-session form, so this is the only place they can be titled
from a suggestion. (#278)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- [webapp] GM approval was unreachable on a default install.