Skip to content

v0.0.8

Latest

Choose a tag to compare

@github-actions github-actions released this 07 Sep 23:06
· 24 commits to main since this release
43c11dc

fx is smaller, simpler, and faster. libfx initialization in Node / browser is over 40× faster; fx binary is 7.49% smaller. fx uses a smaller three-action shell, context compaction is optimized per model, and Enter steers active turns instead of queuing follow-ups.

Breaking Changes

  • fx now uses a smaller shell tool with 75% fewer actions (3 vs 12), replacing the old terminal tool.
  • Enter now steers active turns instead of queuing follow-ups, and ctrl+enter does the same.
  • The subagent interface now has 67% fewer commands (2 vs 6), with direct delegation replacing the ctrl+x manager.
  • The memory tool has been removed without deleting existing saved memories.
  • createFxAgent() now exposes prompt, checkpoint, and close instead of the old session, model, and config APIs.
  • createFxAgent() now takes apiKey and an optional model directly; Agent configuration through env is no longer accepted.
  • capability_search replaces the retired skill_search and mcp_search_tools.
  • The public --record startup flag has been removed.

New Features

  • Compaction now keeps recent tool exchanges intact, preserves the full transcript, and continues the same turn in a fresh context window.

  • fx can run one-off tasks or continue named agents directly from the conversation.

  • The shell now supports up to 64 live executions.

  • /mcp now opens a terminal browser for servers, tools, resources, prompts, authentication, and project trust.

  • MCP tool images now reach supported models and remain available after resume.

  • JavaScript hosts can now add their own tools, MCP clients, and skills across Node, Bun, and browsers.

  • The libfx package has no runtime dependencies; host-supplied tools and MCP clients may have their own.

  • ACP image prompts now support up to 3.75 MiB per image.

  • /provider, /setup, and /login now open the same column picker for providers, sign-in methods, API keys, and Vercel teams.

  • libfx now provides listModels() for explicit model discovery without creating an Agent.

  • Embedding hosts can use FX_AUTH_MODE=host-managed without reading or writing local provider credentials.

  • --full-access and /permissions full-access replace YOLO in the UI and commands; the old aliases still work.

  • fx ask --json now reports input and output tokens.

  • libfx now supports both ESM imports and CommonJS require() in Node.

  • Native libfx Agents now run in Next.js 15 and 16 server routes without extra bundler configuration.

  • getBackendInfo() now reports available libfx backends and loading errors without creating an Agent.

  • fx session recover <id> can recover damaged conversations into a new session while leaving the original intact.

Improvements

  • Native Agent initialization is tens of times faster, dropping from hundreds of milliseconds to single digits.

  • Native streaming no longer waits on the polling bridge.

  • Synthetic native host-tool round trips measured 3.10 ms in Node and 1.56 ms in Bun at p95.

  • In the current benchmark, all 22 measured TUI interactions complete within 15 ms at p95 across 50 samples each.

  • CLI startup now takes about 0.5 ms before terminal initialization.

  • ctrl+o now shows timestamps, complete tool details, errors, and per-turn token usage in one view.

  • Skill and MCP searches now reject weak matches while preserving exact names and technical terms.

  • AI Gateway now uses Exa by default for web searches, with Parallel as the fallback.

  • AI Gateway caching is now enabled automatically for agent conversations.

  • New sessions use shorter 12-character IDs while existing IDs remain resumable.

  • File and model pickers remain available while fx is working, and model changes apply to the next turn.

  • Steering messages now appear in chat immediately and wait only while a tool is running.

  • Codex and Grok model lists refresh in open terminal and ACP sessions without requiring their CLIs.

  • Stable Wasm sources compile once per JavaScript realm while each Agent keeps separate state and memory.

  • MCP servers now connect independently, and optional servers start only when needed.

  • Subagent tasks and replies now appear in chat, with failures and partial results preserved.

  • The /resume picker now reuses cached session summaries instead of rescanning every time.

  • Terminal tabs now show the fx version and workspace folder.

  • libfx now pauses large streams when hosts fall behind instead of losing output.

  • ctrl+c now clears the composer first and cancels active work only when the composer is empty.

  • Long saved conversations now resume faster, including repeated fx -c continuation.

  • Scoped project instructions now refresh before continued turns, including rules changed since the last tool call.

Bug Fixes

  • Models with native image support no longer receive the redundant vision tool.

  • Terminal fx ask now loads approved MCP servers before the first model request.

  • The footer now shows Fast mode only when it matches the active model.

  • fx now keeps replies in the language of the latest user request.

  • AI Gateway requests can run for up to 30 minutes, and timed-out streams pause instead of retrying automatically.

  • Partial command output and known process status are preserved when output reading fails.

  • Forced shell termination now stops waiting after 6 seconds and reports when termination cannot be confirmed.

  • Tools that fail before execution now show why they did not run.

  • Cancelling an ACP prompt now stops the work instead of leaving it running.

  • Gateway, Codex, and Grok no longer fall back to another credential source when the selected one is unavailable.

  • New sessions remain saved when another fx process is updating session history.

  • Older sessions now upgrade without losing conversation history or tool output.

  • Explicitly requested skills now load completely and show their status before the reply begins.

  • Cancellation feedback now appears immediately after esc, while completed tool results remain intact.

  • Invalid shell requests now explain the argument problem and suggest a correction only when the repair is unambiguous.

  • Recovered responses no longer join text from separate attempts or repeat completed tool calls.

  • Provider selection remains responsive while credentials and models load, and sign-in can resume after logout, cancellation, or credential failures.

  • Large session reads no longer block concurrent saves.

  • Cancelled libfx prompts stop waiting on host tools and cannot affect later turns.

  • Native streaming preserves Unicode split across output chunks and continues after delayed cleanup.

  • Closed libfx Agents now release native threads, notification descriptors, and Wasm instances.

  • Pending MCP authentication no longer blocks a newer reload.

  • ctrl+o history now survives ctrl+l, terminal resizing, reopening, compaction, and resume without missing or duplicate entries.

  • Provider streams and parallel tool calls no longer lose or duplicate text, reasoning, and tool results.

  • Prompt images now survive tool calls and resume without falsely exhausting context.

  • Image recovery now uses saved attachments after restart, even if the original files move or change.

  • Missing or corrupt saved images now report an error without discarding the pending request.

  • Manual compaction now refreshes the selected login and keeps the conversation unchanged if sign-in fails.

  • Cancelled tools no longer prevent manual or automatic compaction, including after resume.

  • Long reasoning sessions no longer hit false context limits or leave too little room for compaction.

  • fx -c now skips incomplete sessions and reports errors for the selected session instead of opening an older conversation.

  • Missing or incompatible usage data no longer blocks valid conversations from resuming; unavailable historical totals are marked explicitly.

  • Session recovery now handles corrupt usage data and reports unreadable saved state instead of claiming no repair is needed.

  • Suspending fx with Ctrl+Z now keeps the session locked, preventing another process from changing it before foregrounding.

  • Failed session writes preserve existing history and pause work when saving cannot be confirmed.

  • Completed turns remain saved after rendering failures, and save failures on exit now return an error.

  • Multiline steering around tool completion no longer crashes fx or loses the submitted message.

  • Web searches no longer fail when the model restarts its streamed reply after a tool call.

  • Failed or interrupted subagents no longer appear as successful empty replies.

  • libfx checkpoints now preserve reasoning and provider tool results, including responses without visible text.

  • Promised Wasm assets now load correctly in Node, and CommonJS deployments retain their native addon.

  • Embedded terminals now clean up after startup failures and cancel pending requests when output fails.

  • Credential recovery guidance now names the selected source and explains how to repair it.

Security

  • Auto mode now reviews the exact pending action and no longer warns on benign work because command text appeared in tool output.

  • Symbolic credential references remain reviewable, while literal values stay masked and blocked.

  • ACP requests must target the active session, and managed child sessions stay private to their parent.

  • MCP resources and prompts enter the composer only after an explicit Insert action.

  • OAuth discovery accepts a single trailing-slash difference while keeping authorization responses exact.

  • Importing libfx does not connect MCP, scan skills, spawn processes, or read files.

  • Command output is escaped before reaching the model or terminal.

  • Host-owned instructions are the complete libfx system context; libfx adds no hidden coding prompt.

  • Browser sign-in reports success only after the credential is saved, and unusable refresh credentials are retired.

  • libfx sends Agent network requests only through the host-provided fetch function.

  • Inherited fx tracing settings no longer create unexpected libfx output or trace files.

  • Resuming legacy sessions no longer restores old credential references or sends unfinished requests under unverified credentials.

  • Internal subagent sessions stay out of latest-session selection.

  • Conflicting provider tool records are rejected before execution.

Ecosystem highlights