Skip to content

Releases: RightNow-AI/openfang

v0.3.0

02 Mar 18:05

Choose a tag to compare

Fix #214: Static assets (logo, favicon, agent.json) no longer return 401 when API key is set
Fix #218: Schedule POST now validates agent_id and rejects empty values instead of silently falling back
Fix #210: Discord intents default changed from 33280 to 37376 to include DIRECT_MESSAGES
Fix #213: ClawHub install now returns 429 TOO_MANY_REQUESTS instead of masking rate limits as 500
Fix #211: GPT-5 and o-series models now use max_completion_tokens with automatic retry detection
Fix #212: provider_urls from config.toml now flow through to all LLM driver creation paths
Fix #186: Cron create CLI sends proper nested schedule/action JSON structure with required name field
Fix #206: Added hand check-deps, install-deps, pause, and resume CLI commands

v0.2.9

02 Mar 15:40

Choose a tag to compare

Fix schedule runner single-turn: tools never called in cron/schedule agent turns (#187)
Fix schedule runner ignores per-agent model override (#181)
Add web_fetch POST/PUT/PATCH/DELETE support with headers and body (#184)
Add ClawHub response caching to prevent 429 rate limiting (#191)
Fix Telegram 409 conflict on restart by calling deleteWebhook first (#156)
Fix config set writes invalid top-level keys that break deserialization (#183)
Make default_model hot-reloadable without restart, add catalog dropdowns (#203)
Fix Visual Builder SVG drag-drop rendering with manual createElementNS (#201)

v0.2.8

02 Mar 12:15

Choose a tag to compare

Fix context_budget panic on out-of-bounds message/block indices with char boundary validation.
Fix SSE streaming parsing to handle both "data: " and "data:" prefixes across all 3 LLM drivers.
Fix FallbackDriver to switch model names when falling back across providers.
Fix TOML spawn overrides so explicit model/provider in manifest is not replaced by config.toml defaults.
Inject current date into agent system prompt so LLMs know today's date.
Remove phantom gemini-3-flash model and point flash/gemini-flash aliases to gemini-2.5-flash.
Add serde aliases for exec_policy mode: "allow"/"all"/"unrestricted" for Full, "restricted" for Allowlist, "none"/"disabled" for Deny.
Change Discord allowed_guilds from Vec to Vec to handle large guild IDs without overflow.

v0.2.7

02 Mar 02:09

Choose a tag to compare

Fixes

  • #174 Fix Unicode byte offset panic in HTML→Markdown conversion — replaced to_lowercase() pattern with ASCII case-insensitive find to prevent panics on multi-byte Unicode (İ, ẞ)
  • #173 Fix dashboard hands status badge — all 4 status variants (Active/Paused/Error/Inactive) now show correct badge colors with action hints
  • #172 Add X-API-Key header support — auth middleware now accepts X-API-Key as fallback alongside Authorization: Bearer
  • #171 Fix hand deactivation orphan agent cleanup — orphaned agents (from failed activations) are now found by hand: tag and killed on deactivate
  • #155 Improve shell_exec error messages — blocked commands now show the current exec_policy mode and how to fix it; shell_exec removed from tool list when mode=Deny
  • #128, #64 Duplicate ClawHub parse errors — already fixed in v0.2.6

v0.2.6

02 Mar 00:37

Choose a tag to compare

Fix #153: Model switch now clears canonical session to prevent memory poisoning across providers
Fix #154: SOUL.md code blocks stripped before system prompt injection to prevent LLM copying raw code
Fix #157: Workspace paths use agent name only instead of name-UUID format
Fix #112 #146: ClawHub TUI parser handles {"items": [...]} API response wrapper
Fix #72: Per-agent tool allowlist and blocklist with GET/PUT /api/agents/{id}/tools endpoints
Fix #108: Model prefix normalization strips provider from model ID (openrouter/deepseek/chat becomes provider=openrouter model=deepseek/chat)
Fix #159: DELETE /api/agents/{id}/history endpoint clears all conversation history
Fix #150: PUT /api/budget/agents/{id} endpoint for runtime budget updates
Fix #151: default_model from config.toml now applied to agents on restart
Fix #160: Rate-limited LLM drivers fall through to next fallback instead of failing immediately
Fix #86: CLI agent set subcommand for changing model via command line

WebUI: Model switch button, Clear History button, and Tool Filters panel added to agent detail modal

v0.2.5

01 Mar 19:29

Choose a tag to compare

Fixes

  • Rate limit fallback — rate-limited/overloaded providers now fall through to next model in the fallback chain instead of retrying the same provider 3 times (#160)
  • Clear agent historyDELETE /api/agents/{id}/history clears all sessions + canonical memory (#159)
  • Model prefix normalizationopenrouter/deepseek/deepseek-chat stored as model=deepseek/deepseek-chat, provider=openrouter (#108)
  • Budget config override — global [budget] in config.toml now overrides default per-agent limits on spawn/restore (#150)
  • Per-agent budget APIPUT /api/budget/agents/{id} for runtime budget limit updates
  • default_model on restart — changing [default_model] in config.toml now applies to existing agents on daemon restart (#151)
  • CLI agent setopenfang agent set <id> model <value> command (#86)

Features

  • Agent Comms UI — topology tree, live event feed (SSE), send message + post task modals in dashboard and TUI
  • Peer awareness — agents see sibling agents in system prompt and can use agent_send/agent_list
  • Uninstall commandopenfang uninstall with --keep-config, Windows PATH cleanup, deferred self-delete

Stats

  • 1,828 tests passing
  • 0 clippy warnings
  • 12 files changed, 807 insertions

v0.2.4

01 Mar 17:40

Choose a tag to compare

Fix Gemini tool_name empty causing 400 errors (#136)
Fix UTF-8 panics on multi-byte string truncation (#104)
Fix PATCH /api/agents/:id not updating model (#106)
Fix dashboard base_url input not loading (#117)
Add hand settings API endpoints (#113)
Add openfang hand CLI subcommands (#120)

v0.2.3

01 Mar 01:27

Choose a tag to compare

Fixes #55: Cron scheduler no longer fires every minute. compute_next_run now offsets by +1 second so jobs respect their actual schedule.
Fixes #100: OpenRouter model prefix stripped before API call. Models like openrouter/google/gemini-2.5-flash now send the correct ID to the provider.
Fixes #83: Added OPENFANG_LISTEN env var override for Docker containers where 0.0.0.0 binding is needed.
Fixes #51: Dashboard auth prompt now detects 401 correctly by checking a protected endpoint. Added /api/workflows and /api/logs/stream to the public allowlist.
Fixes #65: Added 6 new OpenRouter models including free tier Llama 3.3 70B, Mistral 7B, Gemma 2 9B, Qwen 2.5 72B, and DeepSeek V3.
Fixes #68: Approval policy require_approval field now accepts boolean shorthand. false clears the list, true defaults to shell_exec.
Fixes #63 #47 #49: Custom model support via POST /api/models/custom. Persisted to disk, loaded on boot, with dashboard UI for adding models.

v0.2.2

28 Feb 21:42

Choose a tag to compare

Fixes:
- Fix cross-provider model switching (MiniMax, Gemini, all providers)
- resolve_driver() no longer passes wrong API key when switching providers
- Add provider inference from model name prefix for uncataloged models
- Add MiniMax-M2.5 to model catalog (Frontier tier)

Features:
- GitHub Copilot OAuth device flow login
- OpenAI Codex provider with credential sync
- Claude Code CLI backend driver

v0.2.1

28 Feb 18:21

Choose a tag to compare

Fixes

  • Cron scheduler re-firing every ~1min (#55): upcoming()after() to skip current second, removed double-compute in record_success, fixed UTF-8 panic in record_failure
  • [approval_policy] config silently ignored (#68): Added serde alias so both [approval] and [approval_policy] work in config.toml
  • Dashboard approve/reject buttons returning 401 (#51, #46): Added /api/approvals/ prefix to public auth allowlist