Immutable
release. Only release title and notes can be modified.
Token-budgeted reviews for large PRs, per-model AI settings, a published docs site, and a few operator-facing controls (command ack reactions, an opt-in auto-review interval, missing-pricing visibility on the dashboard).
Added
- Hosted documentation site at https://devops-thiago.github.io/ThrillhouseBot/ — getting started, commands, configuration, providers, architecture, and contributing, built with Astro Starlight from
website/and linked from the README. Repo markdown stays the source of truth via build-time includes.install.htmlon the site builds the GitHub App manifest from a typed-in hostname (Smee-aware), so first-time App registration no longer needs a local static server. Docs CI fails on broken internal links. The live site tracks GitHub Releases (not every push tomain): versioned archives viastarlight-versions,currentlabels the release being cut, and Pages deploys onrelease: published. Freeze a release withcd website && npm run docs:archive -- <slug>before starting the next version's docs - 👀 ack reaction on commands: the bot reacts 👀 to the comment that triggered any slash or
@mentioncommand as soon as the webhook is received, before pause/authorization gates and before the work finishes. The reaction is best-effort and bounded byACK_REACTION_TIMEOUT(default 3s) so a slow GitHub API cannot delay the webhook200. Conversational@thrillhousebotmentions (no command word) get a reply, not a reaction - Per-PR automatic review rate limit (opt-in):
AUTO_REVIEW_MIN_INTERVAL/thrillhousebot.review.auto-review-min-intervalspaces automatic reviews of the same PR by that duration — a push inside the window is skipped, even on a new head SHA. Off by default (0); use/pauseto silence one PR without a global interval. In-memory per replica; manual/reviewbypasses and does not shift the window. Marking a draft ready (ready_for_review) clears the window so the PR is reviewed immediately - Whole-PR review for large diffs (token-aware, multi-call): big PRs are split into priority-ordered, token-budgeted batches (jtokkit estimates), each reviewed in its own call, then rolled up with one summary call. Every file is covered by some batch or listed by name as omitted — nothing is dropped silently. Normal-size PRs stay on one streaming call. Multi-call runs fan out batches on virtual threads and emit
review.batchprogress on the dashboard instead of a token stream. Settings:REVIEW_MAX_INPUT_TOKENS,REVIEW_OUTPUT_BUFFER_TOKENS,REVIEW_MAX_AI_CALLS,REVIEW_TOKEN_SAFETY_MARGIN;REVIEW_MAX_DIFF_LINESstill caps single-call renders (on-demand commands, maintainer replies, base comparison, budgeting-disabled reviews) but not token-budgeted review calls (0disables the line cap) - Per-model AI configuration under
thrillhousebot.ai.models.<model>.*, keyed like the pricing map.max-input-tokensis the model input hard cap; the review budget becomesmin(REVIEW_MAX_INPUT_TOKENS, cap)with a 128 000 default for models without an entry.output-buffer-tokens,token-safety-margin,temperature,top-p, andmax-output-tokenscan be overridden per model and are sent on every chat call when set. Entries are range-validated at boot. README and.env.exampledocument the review knobs andTHRILLHOUSEBOT_AI_MODELS__*env-var mapping for hyphenated keys - Missing model pricing is warned and flagged: when
AI_MODELhas nothrillhousebot.ai.pricing.<model>.*entry, the bot logs a warning (once per model per process) and setspricingMissingon the session; the dashboard shows "no pricing" instead of$0.000000. Token counts are unchanged. Startup backfill clears the flag once pricing exists and cost is recomputed - Reasoning-effort control:
AI_REASONING_ENABLED(defaultfalse) andAI_REASONING_EFFORT(none/low/medium/high, defaultlow) send OpenAI-compatiblereasoning_efforton every AI call when enabled; when disabled, no parameter is sent and the provider default applies - Docker test image workflow (
docker-test-image.yml): manually build and push disposable JVM or native images for a branch or PR to GHCR (test-sha-*,test-pr-*,test-branch-*tags) without touchinglatestor release tags
Dependencies
- Bumped the Quarkus platform (
quarkus-bomandquarkus-maven-plugin) from 3.37.0 to 3.37.2,quarkus-langchain4jfrom 1.11.2 to 1.12.0, andjackson-bomto 2.22.1 - Pinned OpenTelemetry to 1.62.0 (overrides the platform-managed line for CVE GHSA-rcgg-9c38-7xpx)
- Bumped GitHub Actions
actions/cacheto 6.1.0 and alignedactions/setup-javapins across workflows