• v3.0.0 e2459dad7f

    v3.0.0 Stable

    david.gabriel released this 2026-09-19 16:41:10 +00:00 | 4 commits to main since this release

    Changes

    • Account state is now checked in one batch per instance. Instead of
      polling every signup individually, the bot reads each instance's
      pending list in a single pass on a fixed schedule. A pile-up of stuck
      signups costs only a few requests per cycle instead of hundreds, and
      an incomplete read can never produce a false verdict. The previous
      per-account polling remains available as an opt-out fallback.
    • The bot paces its own API traffic and backs off cleanly. All calls
      to one instance share a single budget, so a signup wave can no longer
      push the instance into its rate limit on its own. When the instance
      answers with a rate limit, all traffic to it pauses for a cooldown that
      grows until the limit clears, then resumes automatically — and the log
      shows one summary per episode instead of a line per account. Pacing can
      be tuned globally or per instance.
    • Failed moderation actions are retried until they succeed. An
      approve or reject that fails because of rate limiting, a server error,
      or a network blip is stored on disk and retried automatically — across
      restarts — until it succeeds, the account turns out to be gone, or the
      retry cap is reached, at which point the bot raises a loud alert.
      Nothing is silently dropped; pending retries are visible in the web UI
      and their file location is configurable.
    • The web UI gains a third view: System status. A read-only dashboard
      of stuck and failed work — each instance's rate-limit state, every
      signup still waiting for e-mail confirmation (with the time left until
      its deadline), and the pending action retries. While any such signups
      exist, the pending list shows a one-line hint linking to the view.
    • The webhook replay cache location is now configurable in bot.yaml.
      The file that keeps the anti-replay window across restarts can be moved
      to any absolute path; the command-line flag and environment variable
      overrides still win, and an unusable path warns at startup instead of
      blocking.
    • Internal tidy-up, no behaviour change. Dead code removed; config
      validation now flags settings that can never take effect; minor docs
      and example-config fixes.
    Downloads