# v0.19.4 Release Notes

> v0.19.3 -> v0.19.4

## Summary

Token-efficient tool prompts (description and parameter-schema hygiene across 8 built-in tools), explicit tool registration across the registry, and `download_page` split into separate `fetch_page` / `save_page_to_file` handlers.
<details>
<summary>翻譯</summary>
壓縮 8 個內建 tool 的 description 與 parameter schema（省 token），tool registry 改全面顯式註冊，並將原 `download_page` 拆為 `fetch_page` 與 `save_page_to_file` 兩支獨立 handler。
</details>

## Changes

### UPDATE
- Trim tool descriptions and parameter schemas across `search_web`, `fetch_google_rss`, `fetch_yahoo_finance`, `analyze_youtube`, `send_http_request`, `list_files`, `glob_files`, and `run_command` — strip filler phrases (`Use to ...`, `Supports ... for user home`, `(Optional) ...`), drop enum/default values already carried in JSON schema, and rely on JSON return-field names (`title`, `url`, `description`) to self-describe output. Reduces token footprint in prompt-cached tool context across multi-provider routing.
- Add explicit `cd`-prefix prohibition to `run_command` description and command-param hint so the agent stops prepending `cd <workdir> &&` (previously rejected by sandbox allowlist with ambiguous "cd is not allowed" message).
- Split `fetch_page` (returns markdown content) and `save_page_to_file` (writes rendered content to disk) as distinct tools; previously a single `download_page` handler served both paths.
- Relax `invoke_subagent` argument defaults so minimal-arg invocations no longer trip `[RETRY_REQUIRED]` validator bounces.

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

- 壓縮 `search_web`、`fetch_google_rss`、`fetch_yahoo_finance`、`analyze_youtube`、`send_http_request`、`list_files`、`glob_files`、`run_command` 的 description 與 parameter schema —— 砍 `Use to ...`、`Supports ... for user home`、`(Optional) ...` 等填充句型，enum／default 交回 JSON schema，並以 JSON 欄位名稱（`title`、`url`、`description`）自述輸出結構。多 provider 路由下可觀降低 prompt cache 內 tool context 的 token 消耗。
- `run_command` description／command 參數明寫禁止 `cd` 前綴，避免 agent 持續預綴 `cd <workdir> &&` 被 sandbox allowlist 擋下並誤判錯誤訊息。
- 拆分 `fetch_page`（回傳 markdown 內容）與 `save_page_to_file`（寫檔）為兩支獨立 tool；原本由單一 `download_page` 兼任。
- 放寬 `invoke_subagent` 參數預設，避免最小引數呼叫被 validator `[RETRY_REQUIRED]` 彈回。

</details>

### REFACTOR
- Replace implicit scanner-based tool discovery with explicit `Register()` calls across calculator, external agents, fetch-page, and file tools in `internal/tools/register.go` and `cmd/app/main.go`; tool inventory is now statically traceable from the registry entry points.
- Rename registry entry `download_page` → `save_page_to_file`; redistribute implementation across new `fetchPage/fetchPage.go`, `fetchPage/savePageToFile.go`, `fetchPage/check.go` and remove superseded `download.go` / `load.go`.
- Relocate `subagent` registration from `internal/agents/subagent/` to `internal/tools/subagent/` and adjust blank-import site.

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

- `internal/tools/register.go` 與 `cmd/app/main.go` 全面改以顯式 `Register()` 取代 scanner 自動探測，calculator／external agent／fetch-page／file tool 註冊路徑靜態可追。
- 註冊名 `download_page` 改為 `save_page_to_file`；實作重分佈於新檔 `fetchPage/fetchPage.go`、`fetchPage/savePageToFile.go`、`fetchPage/check.go`，移除舊 `download.go`、`load.go`。
- `subagent` 註冊從 `internal/agents/subagent/` 搬至 `internal/tools/subagent/`，調整 blank-import 位置。

</details>

***

## Files Changed

| File | Status | Tag |
|------|--------|-----|
| `cmd/app/main.go` | Modified | REFACTOR |
| `internal/tools/register.go` | Modified | REFACTOR |
| `internal/tools/calculator/register.go` | Modified | REFACTOR |
| `internal/tools/externalAgent/register.go` | Modified | REFACTOR |
| `internal/tools/file/register.go` | Modified | REFACTOR |
| `internal/tools/runCommand.go` | Modified | UPDATE |
| `internal/tools/external/toolAdapter.go` | Modified | UPDATE |
| `internal/tools/external/googleRSS/register.go` | Modified | UPDATE |
| `internal/tools/external/googleRSS/fetch.go` | Modified | REFACTOR |
| `internal/tools/external/searchWeb/register.go` | Modified | UPDATE |
| `internal/tools/external/searchWeb/fetch.go` | Modified | REFACTOR |
| `internal/tools/external/yahooFinance/register.go` | Modified | UPDATE |
| `internal/tools/external/yahooFinance/fetch.go` | Modified | REFACTOR |
| `internal/tools/external/youtube/register.go` | Modified | UPDATE |
| `internal/tools/external/youtube/fetch.go` | Modified | REFACTOR |
| `internal/tools/file/listFiles.go` | Modified | UPDATE |
| `internal/tools/file/globFiles.go` | Modified | UPDATE |
| `internal/tools/fetchPage/fetchPage.go` | Added | REFACTOR |
| `internal/tools/fetchPage/savePageToFile.go` | Added | REFACTOR |
| `internal/tools/fetchPage/check.go` | Added | REFACTOR |
| `internal/tools/fetchPage/download.go` | Deleted | REFACTOR |
| `internal/tools/fetchPage/load.go` | Deleted | REFACTOR |
| `internal/tools/fetchPage/register.go` | Modified | REFACTOR |
| `internal/tools/fetchPage/skipped.go` | Modified | REFACTOR |
| `internal/tools/fetchPage/embed/skipped.md` | Modified | UPDATE |
| `internal/tools/subagent/subagent.go` | Renamed | REFACTOR |
| `configs/prompts/system_prompt.md` | Modified | DOC |
| `configs/prompts/skill_execution.md` | Modified | DOC |
| `doc/architecture.md` | Modified | DOC |
| `doc/architecture.zh.md` | Modified | DOC |
| `doc/doc.md` | Modified | DOC |
| `doc/doc.zh.md` | Modified | DOC |

***

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