# v0.11.1 Release Notes

> v0.11.0 -> v0.11.1

## Summary

Patch release focused on fixing Gemini multipart message handling, improving file write atomicity across the codebase, and adding tool execution error tracking with hash-based lookup.

<details>
<summary>翻譯</summary>
修補版本，主要修正 Gemini 多部分訊息處理問題，提升全域檔案寫入的原子性保障，並新增工具執行錯誤的 hash 追蹤機制。
</details>

## Changes

### FIX
- Fix Gemini provider silently dropping file and image content when message contains `[]ContentPart` — now correctly converts text parts and base64 image data to Gemini `inlineData` format
- Handle agent send errors gracefully instead of propagating to process exit

<details>
<summary>翻譯</summary>

- 修正 Gemini provider 訊息含 `[]ContentPart` 時靜默丟棄檔案與圖片內容，現在正確將文字部分與 base64 圖片轉換為 Gemini `inlineData` 格式
- 修正 agent 發送錯誤直接傳播至 process 退出的問題

</details>

### FEAT
- Add tool execution error tracking: on failure, auto-save error details to session `tool_errors/{date}/{hash}.json` and return `no data: {hash}` to agent; expose `get_tool_error` tool for hash-based lookup
- Notify users of tool errors immediately via `EventExecError` event (CLI stderr, Discord reply footer)

<details>
<summary>翻譯</summary>

- 新增工具執行錯誤追蹤：失敗時自動儲存錯誤詳情至 session `tool_errors/{date}/{hash}.json`，回傳 `no data: {hash}` 給 agent；新增 `get_tool_error` tool 供 hash 查詢
- 透過 `EventExecError` 事件即時通知用戶工具錯誤（CLI stderr、Discord 回覆頁尾）

</details>

### UPDATE
- Replace all `os.WriteFile` calls with atomic `utils.WriteFile` (write-to-tmp then rename) to prevent partial writes; supports configurable file permissions
- Allow files containing `.example` in name to bypass env prefix deny rule (e.g. `.env.example`)

<details>
<summary>翻譯</summary>

- 將所有 `os.WriteFile` 替換為原子性 `utils.WriteFile`（先寫 tmp 再 rename）防止部分寫入，支援可設定檔案權限
- 允許檔名含 `.example` 的檔案繞過環境變數前綴封鎖規則

</details>

### ADD
- Add public API extensions: geocoding (Nominatim), finance (CoinGecko, Yahoo Finance), data sources (Wikipedia, World Bank, USGS Earthquake, TheMealDB, HackerNews, REST Countries)
- Add `utils.ReadFile` and `utils.WriteFile` as shared atomic file utilities
- Add `internal/tools/file/toolError.go` for session-scoped tool error persistence

<details>
<summary>翻譯</summary>

- 新增公開 API 擴充：地理編碼（Nominatim）、金融（CoinGecko、Yahoo Finance）、資料來源（Wikipedia、World Bank、USGS Earthquake、TheMealDB、HackerNews、REST Countries）
- 新增 `utils.ReadFile` 與 `utils.WriteFile` 作為共用原子性檔案工具
- 新增 `internal/tools/file/toolError.go` 支援 session 範圍的工具錯誤持久化

</details>

### REMOVE
- Temporarily remove `gpt-5.4` from Copilot model list pending Responses API format support

<details>
<summary>翻譯</summary>

- 暫時從 Copilot 模型清單移除 `gpt-5.4`，待 Responses API 格式支援完成後恢復

</details>

### DOC
- Add Discord output guidelines to system prompt: prohibit Markdown tables

<details>
<summary>翻譯</summary>

- 在 Discord system prompt 新增輸出規範：禁止 Markdown 表格

</details>

***

## Files Changed

| File | Status | Tag |
|------|--------|-----|
| `internal/agents/provider/gemini/send.go` | Modified | FIX |
| `internal/agents/provider/gemini/type.go` | Modified | FIX |
| `internal/agents/exec/toolCall.go` | Modified | FEAT |
| `internal/agents/types/event.go` | Modified | FEAT |
| `internal/tools/file/toolError.go` | Added | FEAT |
| `internal/tools/file/routes.go` | Modified | FEAT |
| `internal/tools/embed/tools.json` | Modified | FEAT |
| `internal/tools/executor.go` | Modified | FEAT |
| `cmd/cli/runEvents.go` | Modified | FEAT |
| `internal/discord/run.go` | Modified | FEAT |
| `internal/utils/file.go` | Added | UPDATE |
| `internal/agents/exec/execute.go` | Modified | UPDATE |
| `internal/agents/exec/extractSummary.go` | Modified | UPDATE |
| `internal/agents/exec/getSession.go` | Modified | UPDATE |
| `internal/agents/exec/writeHistory.go` | Modified | UPDATE |
| `internal/agents/provider/copilot/login.go` | Modified | UPDATE |
| `internal/keychain/config.go` | Modified | UPDATE |
| `internal/keychain/keychain.go` | Modified | UPDATE |
| `internal/tools/browser/download.go` | Modified | UPDATE |
| `internal/tools/browser/load.go` | Modified | UPDATE |
| `internal/tools/browser/skipped.go` | Modified | UPDATE |
| `internal/tools/apis/searchWeb/SearchWeb.go` | Modified | UPDATE |
| `internal/tools/file/patch.go` | Modified | UPDATE |
| `internal/tools/file/write.go` | Modified | UPDATE |
| `internal/tools/file/read.go` | Modified | UPDATE |
| `internal/tools/file/errorMemory.go` | Modified | UPDATE |
| `internal/agents/provider/embed/copilot.json` | Modified | UPDATE |
| `internal/agents/provider/copilot/send.go` | Modified | UPDATE |
| `extensions/apis/nominatim.json` | Added | ADD |
| `extensions/apis/coingecko.json` | Added | ADD |
| `extensions/apis/wikipedia.json` | Added | ADD |
| `extensions/apis/world-bank.json` | Added | ADD |
| `extensions/apis/usgs-earthquake.json` | Added | ADD |
| `extensions/apis/themealdb.json` | Added | ADD |
| `extensions/apis/hackernews.json` | Added | ADD |
| `extensions/apis/rest-countries.json` | Added | ADD |
| `internal/discord/embed/systemPrompt.md` | Modified | DOC |

***

Generated by [SKILL](https://github.com/pardnchiu/skill-version-generate)
