Skip to content

v0.4.0

Latest

Choose a tag to compare

@github-actions github-actions released this 12 Jul 23:16
Immutable release. Only release title and notes can be modified.
7346005

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.html on 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 to main): versioned archives via starlight-versions, current labels the release being cut, and Pages deploys on release: published. Freeze a release with cd 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 @mention command as soon as the webhook is received, before pause/authorization gates and before the work finishes. The reaction is best-effort and bounded by ACK_REACTION_TIMEOUT (default 3s) so a slow GitHub API cannot delay the webhook 200. Conversational @thrillhousebot mentions (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-interval spaces 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 /pause to silence one PR without a global interval. In-memory per replica; manual /review bypasses 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.batch progress 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_LINES still caps single-call renders (on-demand commands, maintainer replies, base comparison, budgeting-disabled reviews) but not token-budgeted review calls (0 disables the line cap)
  • Per-model AI configuration under thrillhousebot.ai.models.<model>.*, keyed like the pricing map. max-input-tokens is the model input hard cap; the review budget becomes min(REVIEW_MAX_INPUT_TOKENS, cap) with a 128 000 default for models without an entry. output-buffer-tokens, token-safety-margin, temperature, top-p, and max-output-tokens can be overridden per model and are sent on every chat call when set. Entries are range-validated at boot. README and .env.example document the review knobs and THRILLHOUSEBOT_AI_MODELS__* env-var mapping for hyphenated keys
  • Missing model pricing is warned and flagged: when AI_MODEL has no thrillhousebot.ai.pricing.<model>.* entry, the bot logs a warning (once per model per process) and sets pricingMissing on 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 (default false) and AI_REASONING_EFFORT (none/low/medium/high, default low) send OpenAI-compatible reasoning_effort on 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 touching latest or release tags

Dependencies

  • Bumped the Quarkus platform (quarkus-bom and quarkus-maven-plugin) from 3.37.0 to 3.37.2, quarkus-langchain4j from 1.11.2 to 1.12.0, and jackson-bom to 2.22.1
  • Pinned OpenTelemetry to 1.62.0 (overrides the platform-managed line for CVE GHSA-rcgg-9c38-7xpx)
  • Bumped GitHub Actions actions/cache to 6.1.0 and aligned actions/setup-java pins across workflows