• v4.2.2 5d3fa863e6

    v4.2.2
    All checks were successful
    Release / Create Forgejo release (push) Successful in 12s
    CI / Bot/backend version sync (push) Successful in 45s
    CI / Backend lint (ruff) (push) Successful in 54s
    CI / Summarisation accuracy eval harness (stub provider) (push) Successful in 1m28s
    CI / Frontend tests, audit, and build (push) Successful in 1m55s
    CI / Bot tests and audit (push) Successful in 2m9s
    CI / Docker image build (push) Successful in 4m11s
    Release / Build and push versioned images (push) Successful in 4m25s
    CI / Backend migration, tests, and audit (push) Successful in 9m59s
    CI / Synthetic session harness (no GPU, no LLM) (push) Successful in 14m56s
    Stable

    claude-bot released this 2026-09-05 17:26:13 +00:00 | 186 commits to main since this release

    v4.2.1's headline fix did not hold on the bundled stack, so this patch follows within the hour. The hardware preflight now measures a reasoning model's throughput from the tokens it actually produced, whether or not it finished its answer, and reports a profile band on the default self-hosted configuration.

    No migration. The database schema is unchanged since v4.2.0 (e9fa0b1c2d3e remains the head).

    Bot API contract v1, unchanged. BOT_EXPECTED_APP_VERSION is bumped so the bot's startup log matches.

    No new settings. If you deployed v4.2.1 and the preflight panel still said "Not measured" for the LLM, upgrade and re-run the preflight; that is the whole of the change. If you skipped v4.2.1, its notes still apply.

    Fixed

    • [webapp] The hardware preflight now measures a reasoning model whether or
      not it finishes its answer
      (#507). v4.2.1 gave a thinking model a bigger
      output budget on the theory that it would finish inside one. On the bundled
      llama.cpp stack serving qwen3.5 — the default self-hosted configuration — it
      did not: the model thought for the whole budget, 2048 tokens in 61 seconds,
      and the panel reported "Not measured" again. Raising the cap further is the
      wrong lever, because a budget large enough for a workstation GPU to finish
      inside is a timeout on a CPU box. So the probe stopped asking the model to
      finish. 2048 tokens in 61 seconds is 33.6 tokens per second, which is the
      only number the preflight exists to obtain, and it is now read off the
      generation that ran out of room instead of being thrown away with it. A
      deployment running a local reasoning model gets a generation rate, a profile
      band and an expected session time, with the panel saying that the rate came
      from a generation that never reached a visible answer. An endpoint that
      reports no tokens at all is still reported as broken.
    Downloads