# v0.17.4 Release Notes

> v0.17.3 -> v0.17.4

## Summary

This release hardens summary generation, improves tool fallback behavior, adds OpenAI Codex support, restores Yahoo Finance tooling, and expands file/scheduler capabilities across CLI, server, and Discord flows.
<details>
<summary>翻譯</summary>
此版本強化了摘要生成流程、補強工具 fallback 行為、新增 OpenAI Codex 支援、恢復 Yahoo Finance 工具，並擴充 CLI、server、Discord 端的檔案與排程能力。
</details>

## Changes

### FEAT
- Add OpenAI Codex OAuth provider support and wire it into agent registry and CLI provider setup
- Add local image reading support and inject image content into tool and session flows
- Add Yahoo Finance Go tool implementation and register native finance endpoints

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

- 新增 OpenAI Codex OAuth provider，並串接到 agent registry 與 CLI provider 設定流程
- 新增本地圖片讀取能力，並將圖片內容注入工具與 session 流程
- 新增 Yahoo Finance Go 工具實作，並註冊原生財經查詢端點

</details>

### FIX
- Fix summary generation reliability in CLI by completing summary work before final completion signaling
- Fix summary parsing and prompt contract so models return valid `<summary>` JSON blocks consistently
- Fix event logging crashes when tool execution errors do not include `Err`
- Fix tool fallback handling for `search_history` and `fetch_google_rss` when models send `query` instead of `keyword`
- Fix stale `discussion_log` retention by filtering entries older than the oldest active context
- Fix scheduler task and cron flows with nil-safe operations and more complete CRUD coverage

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

- 修正 CLI 摘要生成可靠性，改為在最終完成訊號前先完成摘要處理
- 修正摘要 prompt 與 parser 契約，讓模型穩定回傳合法的 `<summary>` JSON 區塊
- 修正工具執行錯誤事件未帶 `Err` 時造成的 event logging crash
- 修正 `search_history` 與 `fetch_google_rss` 在模型誤傳 `query` 而非 `keyword` 時的 fallback 行為
- 修正 `discussion_log` 過舊項目殘留問題，會依目前上下文最早訊息過濾
- 修正 scheduler task 與 cron 流程中的 nil-safe 問題，並補齊 CRUD 能力

</details>

### UPDATE
- Update system prompt rules for news retrieval with mandatory fallback windows `1h -> 24h -> 7d -> search_web`
- Update CLI runtime output to normalize line rendering and expose summary-generation progress
- Update Discord and HTTP summary generation to clone histories before async processing
- Update HTTP request handling to support extra system prompt injection and temp session management

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

- 更新 system prompt 的新聞查詢規則，強制採用 `1h -> 24h -> 7d -> search_web` fallback
- 更新 CLI 執行輸出，統一換行處理並顯示摘要整理進度
- 更新 Discord 與 HTTP 的摘要生成流程，改為先複製 histories 再進行非同步摘要
- 更新 HTTP request handling，支援額外 system prompt 注入與臨時 session 管理

</details>

### REFACTOR
- Refactor summary extraction by moving generation into a dedicated workflow and simplifying legacy extraction logic
- Refactor provider initialization by trimming unused token fields and simplifying provider startup paths
- Refactor Yahoo Finance integration from split JSON API definitions back to native concurrent fetch logic
- Refactor scheduler tool registration and internal execution paths for clearer behavior boundaries

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

- 重構摘要擷取流程，將摘要生成抽成獨立流程並簡化舊有 extraction 邏輯
- 重構 provider 初始化，移除未使用 token 欄位並簡化 provider 啟動路徑
- 重構 Yahoo Finance 整合，從拆分 JSON API 定義改回原生並行抓取邏輯
- 重構 scheduler tool 註冊與內部執行流程，讓行為邊界更清楚

</details>

### ADD
- Add Codex provider metadata and embedded provider configuration entries
- Add session summary persistence helpers and summary path management
- Add task listing support and extend scheduler delete/get/update handlers

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

- 新增 Codex provider metadata 與內嵌 provider 設定
- 新增 session summary 持久化 helper 與 summary 路徑管理
- 新增 task list 支援，並擴充 scheduler 的 delete/get/update handlers

</details>

### DOC
- Update agent selector, summary prompt, system prompt, and schedule-task skill documentation to match new routing and summary behavior

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

- 更新 agent selector、summary prompt、system prompt 與 schedule-task skill 文件，使其符合新的 routing 與摘要行為

</details>

### CHORE
- Remove deprecated Yahoo Finance extension API JSON files and obsolete CLI printTool helper
- Adjust embedded provider definitions and config assets for the new provider mix

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

- 移除已棄用的 Yahoo Finance extension API JSON 檔與舊版 CLI printTool helper
- 調整內嵌 provider 定義與設定資產，以配合新的 provider 組合

</details>

***

## Files Changed

| File | Status | Tag |
|------|--------|-----|
| `cmd/app/main.go` | Modified | FEAT |
| `cmd/cli/addProvider.go` | Modified | FEAT |
| `cmd/cli/embed/providers.json` | Modified | ADD |
| `cmd/cli/getAgentRegistry.go` | Modified | FEAT |
| `cmd/cli/main.go` | Modified | FEAT |
| `cmd/cli/printTool.go` | Deleted | REMOVE |
| `cmd/cli/runEvents.go` | Modified | UPDATE |
| `cmd/server/main.go` | Modified | FEAT |
| `configs/configs.go` | Modified | ADD |
| `configs/jsons/providors/claude.json` | Modified | CHORE |
| `configs/jsons/providors/codex.json` | Added | ADD |
| `configs/jsons/providors/copilot.json` | Modified | CHORE |
| `configs/jsons/providors/gemini.json` | Modified | CHORE |
| `configs/jsons/providors/nvidia.json` | Modified | CHORE |
| `configs/jsons/providors/openai.json` | Modified | CHORE |
| `configs/prompts/agent_selector.md` | Modified | DOC |
| `configs/prompts/summary_prompt.md` | Modified | DOC |
| `configs/prompts/system_prompt.md` | Modified | DOC |
| `extensions/apis/yahoo-finance-1.json` | Deleted | REMOVE |
| `extensions/apis/yahoo-finance-2.json` | Deleted | REMOVE |
| `extensions/skills/schedule-task/SKILL.md` | Modified | DOC |
| `internal/agents/exec/execute.go` | Modified | FIX |
| `internal/agents/exec/extractSummary.go` | Modified | REFACTOR |
| `internal/agents/exec/generateSummary.go` | Added | FIX |
| `internal/agents/exec/getSession.go` | Modified | FIX |
| `internal/agents/exec/run.go` | Modified | FIX |
| `internal/agents/exec/toolCall.go` | Modified | REFACTOR |
| `internal/agents/provider/claude/new.go` | Modified | CHORE |
| `internal/agents/provider/claude/send.go` | Modified | UPDATE |
| `internal/agents/provider/compat/new.go` | Modified | CHORE |
| `internal/agents/provider/copilot/new.go` | Modified | CHORE |
| `internal/agents/provider/gemini/new.go` | Modified | CHORE |
| `internal/agents/provider/gemini/send.go` | Modified | UPDATE |
| `internal/agents/provider/nvidia/new.go` | Modified | CHORE |
| `internal/agents/provider/openai/new.go` | Modified | CHORE |
| `internal/agents/provider/openaiCodex/login.go` | Added | FEAT |
| `internal/agents/provider/openaiCodex/new.go` | Added | FEAT |
| `internal/agents/provider/openaiCodex/refresh.go` | Added | FEAT |
| `internal/agents/provider/openaiCodex/send.go` | Added | FEAT |
| `internal/agents/provider/openaiCodex/type.go` | Added | FEAT |
| `internal/agents/provider/provider.go` | Modified | REFACTOR |
| `internal/agents/types/agent.go` | Modified | REFACTOR |
| `internal/discord/messageCreate.go` | Modified | UPDATE |
| `internal/discord/run.go` | Modified | FIX |
| `internal/discord/session.go` | Modified | UPDATE |
| `internal/routes/handler/send.go` | Modified | UPDATE |
| `internal/scheduler/crons/delete.go` | Modified | FIX |
| `internal/scheduler/crons/get.go` | Modified | ADD |
| `internal/scheduler/crons/list.go` | Modified | UPDATE |
| `internal/scheduler/crons/update.go` | Modified | FIX |
| `internal/scheduler/tasks/delete.go` | Modified | FIX |
| `internal/scheduler/tasks/list.go` | Added | ADD |
| `internal/scheduler/tasks/tasks.go` | Modified | UPDATE |
| `internal/scheduler/tasks/update.go` | Modified | FIX |
| `internal/session/session.go` | Modified | ADD |
| `internal/session/summary.go` | Modified | FIX |
| `internal/tools/executor.go` | Modified | UPDATE |
| `internal/tools/external/googleRSS/register.go` | Modified | FIX |
| `internal/tools/external/yahooFinance/fetch.go` | Added | FEAT |
| `internal/tools/external/yahooFinance/register.go` | Added | FEAT |
| `internal/tools/file/readFile.go` | Modified | UPDATE |
| `internal/tools/file/readImage.go` | Added | FEAT |
| `internal/tools/file/register.go` | Modified | ADD |
| `internal/tools/file/searchHistory.go` | Modified | FIX |
| `internal/tools/file/writeFile.go` | Modified | UPDATE |
| `internal/tools/register.go` | Modified | ADD |
| `internal/tools/schedulerTools/register.go` | Modified | REFACTOR |
| `internal/utils/utils.go` | Modified | FIX |

***

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