• v1.2.0 316c3b881d

    v1.2.0
    Some checks failed
    CI / build-and-test (push) Failing after 14s
    CI / docker-build (push) Failing after 2s
    Stable

    joeyr released this 2026-07-12 11:55:23 -05:00 | 44 commits to main since this release

    Open-sourcing, a Riot rate-limit fix, and a secrets/config split, plus a sweep of documentation and compose drift. No change to the bot's command surface.

    Changed

    • Relicensed from proprietary to MIT. LICENSE is now the MIT text, package.json license is MIT (was UNLICENSED), and the README — which already claimed MIT — is now consistent with both. The "Contributing" (fork + PR) section is valid again.
    • Secrets are now split from non-secret config. Credentials and deployment identity live in .env (git-ignored); non-secret tuning (models, intervals, feature flags, pool sizes) lives in .env.config, which is committed. Both load together — docker-compose via env_file: [.env.config, .env], local runs via dotenv.config({ path: ['.env', '.env.config'] }) — with disjoint keys so order is immaterial (and .env wins on any overlap).
    • Corrected drifted docker-compose.yml (dev) defaults. Model ids that matched the retired-family guard and an aggressive LoL poll interval (30000) / rate-limit threshold (10) are gone, replaced by the committed .env.config values (claude-sonnet-5, 300000, 50). Dead env vars LOL_EMBED_LAYOUT and DEPLOYMENT_ENVIRONMENT were removed. The dev healthcheck now hits the real /health endpoint (parity with production), and user-mappings.json is mounted so its absence no longer warns on every boot.

    Added

    • Client-side Riot API pacing (RiotRateLimiter). A single limiter shared across every Riot client spreads calls to stay under a personal key's budget (~20 req/s, ~100 req/2 min) so bursty game-detection enrichment avoids 429s rather than merely backing off after hitting them. Combined with the saner 5-minute poll interval, this ends the recurring spectator-v5 rate-limit warnings. Unit-tested (spacing, rolling windows, concurrent serialization) and wired as an optional collaborator so existing client tests are unaffected.

    Fixed

    • Documentation drift: the README "Project Structure" now matches the actual tree and CLAUDE.md, and the stale Dockerfile "health endpoint requires implementation" comment (it is implemented) is gone.
    • Minor code smells: removed the dead stripHtml() in ToolExecutor, switched its numeric HTML-entity decode to String.fromCodePoint (astral-safe), and replaced the deprecated String.prototype.substr in AufhockerBot with slice. npm ci --only=productionnpm ci --omit=dev in the Dockerfile.
    • Tooling: an ESLint no-console override for the migration CLI keeps the warning meaningful elsewhere, and Prettier now sets endOfLine: auto so format:check stops false-flagging a Windows (CRLF) checkout.
    Downloads