Skip to content

v0.3.0 — Discord provider + failover orchestration

Latest

Choose a tag to compare

@antx-code antx-code released this 16 Apr 23:48

First release with Discord support and multi-channel failover. v0.2.x integrations remain fully compatible — all new behavior is opt-in.

Highlights

  • Discord provider — native Approve / Reject buttons via Gateway (WSS) + Components, with REST fallback and HTTP CONNECT proxy support for GFW-restricted networks.
  • Sequential failover — configure failover_provider, and if the primary is silent past escalate_after_secs the CLI removes its buttons, posts an "escalated" notice, and re-sends the request on the secondary with the remaining budget. Only one channel ever has live buttons, so rejection reasons are never split.
  • New CLI flag --provider <telegram|discord> — force a single provider for one call, bypassing default_provider and disabling failover.
  • New output fields — every JSON response now includes provider; when failover fires, escalated_from names the primary that timed out.
  • Agent-readable README — new "Agent integration contract" section at the top with full JSON schema, exit-code table, Bash + Python wrappers, failover decision matrix, and a structured upgrade guide.
  • i18n — escalation notice added in en / zh-CN / zh-TW.

Configuration

Add the [discord] section to your existing config (Telegram config is unchanged):

[discord]
bot_token = "..."
application_id = "..."
channel_id = "..."              # string (snowflake, avoids JSON precision loss)
trusted_user_ids = ["..."]       # strings

Optional failover:

failover_provider = "discord"
escalate_after_secs = 1800       # < default_timeout (validated at load time)

Full walkthrough: Discord setup · Failover · Upgrading from v0.2.x

Install / Upgrade

cargo install --git https://github.com/antx-code/openfeedback.git --force

Breaking changes

None. v0.2.x parsers for decision / user / feedback / exit codes continue to work unchanged.

Verified tests

Full human-in-the-loop matrix (Telegram-primary × Discord-primary × approve / reject / timeout / failover): T1–T11 all green.