v1.3.11

v0.21.2 Release Notes

Released


v0.21.1 -> v0.21.2

Summary


Adds a persistent per-project allow list that lets users bypass the confirm prompt for trusted tool calls. Simplifies the provider model registry by dropping the implicit default-model fallback as a breaking config schema change. Polishes the TUI with smoother text streaming, a new-session option in the session switcher, and clearer feedback when shift+tab is blocked.
翻譯新增 per-project 的 tool 放行清單,讓使用者預先授權信任的 tool call 跳過確認 prompt。簡化 provider 模型註冊表,移除 default-model 隱式 fallback —— 屬破壞性 config schema 變更。打磨 TUI:文字串流更順、session switcher 多了 new-session 選項、shift+tab 被擋時給出明確回饋。

⚠️ Breaking Changes


Provider model JSON schema flattened


Before (configs/jsons/providors/openai.json):
  1. {
  2. "default": "gpt-5",
  3. "models": {
  4. "gpt-5": { "description": "..." },
  5. "gpt-4o": { "description": "..." }
  6. }
  7. }

After:
  1. {
  2. "gpt-5": { "description": "..." },
  3. "gpt-4o": { "description": "..." }
  4. }

API removed:
  • provider.Default(name string) string — no longer exported.
  • provider.Get(name, "") no longer falls back to the default model; the empty-string lookup returns a zero ModelItem.

Migration:
  1. Flatten every configs/jsons/providors/*.json: drop the default and models wrappers and promote the inner map to the file root.
  2. Replace any provider.Default(name) caller with an explicit model coming from session config, CLI flag, or the first key of provider.Models(name).
  3. Audit provider.Get(name, model) callers — model must be non-empty; an empty value now silently returns no model and the call fails downstream instead of falling back.

翻譯
Provider model 註冊表的 JSON schema 從 {default, models: {...}} 攤平為直接的 model map。provider.Default(name) 已移除;provider.Get(name, "") 不再走預設 model fallback。遷移:(1) 把每個 configs/jsons/providors/*.json 的 default/models 包裝拿掉,把 models map 直接提到檔案根;(2) 原本仰賴 Default(name) 的呼叫處要明確傳入 model 名(從 session config/CLI flag 取得,或退而取 Models(name) 第一個 key);(3) 確保每個 Get(name, model) 的 model 都非空。

Changes


FEAT

  • Add persistent tool allow list and shared tool formatting (@pardnchiu) [b634b95]
  • Add text stream completion events and sync UI output handling (@pardnchiu) [1a3a60d]
  • Add new-session option to TUI session switcher (@pardnchiu) [c9eeed9]

翻譯
  • 新增 per-project .agenvoy/allow_list,confirm popup 的「Yes, don't ask again」會把當前 tool call 寫入清單,下次自動放行;同時把 tool args 顯示器抽到 internal/utils.FormatTool,TUI/CLI/action.log 三端共用同一份 canonical 格式
  • 新增 EventTextDone 事件,CLI/TUI/Discord 渲染端可在 assistant 文字串流結束時統一收尾,subagent 與外部 agent 的輸出也接上同一條路徑
  • TUI session switcher 多了 New session 選項,不需離開 picker 即可建立新 session


UPDATE

  • Refresh provider model catalogs and request handling — via model-check (@pardnchiu) [5035eab]
  • Block Shift+Tab mode toggle while agent is running (@pardnchiu) [7f2af6c]

翻譯
  • 同步 Claude/Codex/Copilot/Gemini/OpenAI provider 的 model 清單與 request 參數至最新版(透過 model-check skill 產生)
  • agent 運行中按 Shift+Tab 切換模式會被擋下並印出 ⎯ is running · shift+tab disabled 提示,避免靜默 ignore


REFACTOR

  • Refine agent selection rules and session status display (@pardnchiu) [ff0fe6a]
  • Return skill content as reference material instead of binding state (@pardnchiu) [100b48a]
  • Buffer assistant text events before logging actions (@pardnchiu) [5a69c88]

翻譯
  • 收斂 agent selector prompt 規則並重整 TUI session status 顯示
  • activate_skill 改回 skill 內容當作參考材料給 LLM 自由運用,不再硬綁 binding state
  • action.log 寫入 assistant text 前先 buffer 同 source 的多筆 event,避免逐字 flush 產生破碎行


Scope


  • internal/agents/exec/ — FEAT, REFACTOR (allowList.go, execute.go, toolCall.go, execWithSubagent.go, external.go, selectAgent.go)
  • internal/agents/provider/ — BREAKING, UPDATE (schema flatten + send/new refresh)
  • configs/jsons/providors/ — BREAKING, UPDATE (claude, codex, copilot, gemini, nvidia, openai)
  • internal/tui/ — FEAT, UPDATE (handlerPopup.go, handlerExec.go, commandSwitch.go, update.go, view.go)
  • internal/interactive/cli/ — FEAT (pending.go, run.go)
  • internal/pending/ — FEAT (Reply.Remember, Reply.Reason)
  • internal/utils/ — FEAT (formatTool.go)
  • internal/session/ — REFACTOR (actionLog.go)
  • internal/tools/searcher/ — REFACTOR (activateSkill.go)
  • internal/filesystem/, cmd/app/, configs/prompts/ — supporting changes
  • .gitignore — UPDATE (.agenvoy)



Generated by SKILL