• v3.11.2 f668a6523d

    v3.11.2
    All checks were successful
    CI / Backend lint (ruff) (push) Successful in 30s
    CI / Bot/backend version sync (push) Successful in 23s
    CI / Docker image build (push) Successful in 10s
    CI / Bot tests and audit (push) Successful in 1m20s
    Release / Create Forgejo release (push) Successful in 12s
    Release / Build and push versioned images (push) Successful in 52s
    CI / Frontend tests, audit, and build (push) Successful in 2m48s
    CI / Backend migration, tests, and audit (push) Successful in 7m52s
    Stable

    claude-bot released this 2026-08-06 01:00:07 +00:00 | 525 commits to main since this release

    The rest of the LLM trigger audit, and a test suite that stops waiting on a
    broker that was never there.

    Follow-ups to the audit that produced v3.11.1: five features that were wired to
    the wrong event, or to no event at all. No migrations, and
    BOT_CONTRACT_VERSION stays 1 — nothing touches /api/bot/*, so images can be
    upgraded independently.

    Fixed

    • [webapp] The session prep sheet only saw the opening of the last session.
      Every recent summary was truncated to a flat 800 characters, against real
      summaries of 1700-2900 — so prep was drafted from roughly the first third and
      never saw where the party ended up. Truncation also kept the beginning,
      discarding the ending, which for prep is the most useful part of a summary.
      The most recent session now gets a near-full budget and, if it ever exceeds
      it, keeps both its opening and its closing. (#271)
    • [webapp] Lore generation could hang forever. If a phase of the multi-pass
      lore pipeline ran out of retries, nothing cleared the session's extracting or
      matching status — the UI showed "generating…" indefinitely, with no error.
      A brief network blip to the LLM host was enough to trigger it. A missing LLM
      endpoint now also fails immediately instead of burning several minutes of
      backoff on a condition that cannot resolve itself. (#287)
    • [webapp] Wiki entries never got their one-line summary. The generator had a
      single caller — the manual "regenerate summary" button — so every entry created
      by approving a bot proposal, promoting a shelf card, or picking a canonical
      name had an empty summary permanently. Summaries are now generated whenever an
      entry becomes canon. (#285)
    • [webapp] Relationship suggestions never saw the session that just happened.
      They were generated the moment the lore pipeline finished, but only consider
      approved entries — and everything just produced was still an unapproved
      proposal. They now run when you approve entries, debounced so working through a
      batch produces one pass rather than one per click. (#286)
    • [webapp] Some GM Workbench generations were missing from history. Three
      paths ran tools without recording them, so those generations never appeared in
      Workbench history and their token usage went uncounted. All inline tool runs are
      now recorded, including failed ones. Caches are unchanged. (#288)
    • [webapp] A queued background job could stall a request. With an
      unreachable Redis, a single enqueue took about two minutes to fail, which
      presented as a hung request rather than a degraded background job. Now bounded
      to under 15 seconds.

    Changed

    • [dev] The backend test suite runs in 36 seconds instead of 16 minutes for
      the same 880 tests. Most of that time was never work — with no broker in the
      test environment, every queued job waited for a connection that could not
      happen. Applies to CI too, which runs Postgres but no Redis.
    Downloads