# v0.13.0 Release Notes

> v0.12.0 -> v0.13.0

## Summary

Migrate scheduler storage to JSON with full ID-based CRUD, replace switch-based tool routing with a self-registering Registry pattern, and harden filesystem access by restricting absolute paths to the current user's home directory.
<details>
<summary>翻譯</summary>
將排程儲存遷移至 JSON 並提供完整的 ID-based CRUD 操作，以自註冊 Registry 模式取代 switch-based tool routing，並限制絕對路徑僅允許當前使用者 home 目錄以加固檔案系統存取。
</details>

## Changes

### FEAT
- Add JSON-based persistent storage for scheduler with ID-based CRUD operations for both tasks and crons
- Add `deleteCron`, `deleteTask`, `updateCron`, `updateTask` endpoints to scheduler tools

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

- 新增以 JSON 為基礎的排程持久化儲存，支援 tasks 與 crons 的 ID-based CRUD 操作
- 新增 `deleteCron`、`deleteTask`、`updateCron`、`updateTask` 端點至排程工具

</details>

### FIX
- Prepend ellipsis marker to trimmed conversation history for clearer context boundaries
- Add large file guard to prevent excessive memory usage during file reads

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

- 在裁切後的對話歷史前加入省略號標記，使 context 邊界更清晰
- 新增大檔案防護機制，防止檔案讀取時佔用過多記憶體

</details>

### REFACTOR
- Replace switch-based tool routing with self-registering Registry pattern across all tool packages
- Migrate tool definitions from embedded JSON (`tools.json`) to self-registering Go code with `register.go` files
- Extract denied path config to separate `denied.go` file and unify `ReadFile` signature
- Migrate keychain package under `filesystem/` and unify `WriteFile` with path validation
- Reorganize `apiAdapter` under `apis/adapter` and restructure API tool registration

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

- 以自註冊 Registry 模式取代所有 tool packages 中的 switch-based routing
- 將 tool 定義從嵌入式 JSON（`tools.json`）遷移至自註冊 Go 程式碼（`register.go`）
- 將 denied path 設定拆分至獨立 `denied.go` 檔案，統一 `ReadFile` 簽章
- 將 keychain 套件遷移至 `filesystem/` 下，統一 `WriteFile` 含路徑驗證
- 重新組織 `apiAdapter` 至 `apis/adapter` 下，重構 API tool 註冊流程

</details>

### SECURITY
- Restrict absolute path resolution to current user's home directory only, preventing traversal outside user scope

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

- 限制絕對路徑解析僅允許當前使用者 home 目錄，防止超出使用者範圍的路徑穿越

</details>

### DOC
- Expand README feature descriptions with detailed architecture sections
- Add version history list to README and documentation pages
- Remove inline version number from documentation header

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

- 擴充 README 功能描述，新增詳細架構區段
- 在 README 與文件頁面新增版本歷史列表
- 移除文件標題中的內嵌版本號

</details>

***

## Files Changed

| File | Status | Tag |
|------|--------|-----|
| `internal/scheduler/addCron.go` | Modified | FEAT |
| `internal/scheduler/addTask.go` | Modified | FEAT |
| `internal/scheduler/deleteCron.go` | Added | FEAT |
| `internal/scheduler/deleteTask.go` | Added | FEAT |
| `internal/scheduler/updateCron.go` | Added | FEAT |
| `internal/scheduler/updateTask.go` | Added | FEAT |
| `internal/scheduler/crons.go` | Modified | FEAT |
| `internal/scheduler/tasks.go` | Modified | FEAT |
| `internal/scheduler/scheduler.go` | Modified | FEAT |
| `internal/filesystem/scheduler.go` | Added | FEAT |
| `internal/tools/schedulerTools/register.go` | Added | FEAT |
| `internal/tools/schedulerTools/cronRoutes.go` | Deleted | REFACTOR |
| `internal/tools/schedulerTools/taskRoutes.go` | Deleted | REFACTOR |
| `internal/agents/exec/getSession.go` | Modified | FIX |
| `internal/tools/file/readFile.go` | Added | REFACTOR |
| `internal/tools/file/writeFile.go` | Added | REFACTOR |
| `internal/tools/file/writeScript.go` | Added | REFACTOR |
| `internal/tools/file/write.go` | Deleted | REFACTOR |
| `internal/tools/file/register.go` | Added | REFACTOR |
| `internal/tools/file/routes.go` | Modified | REFACTOR |
| `internal/tools/file/file_test.go` | Deleted | REFACTOR |
| `internal/tools/register.go` | Added | REFACTOR |
| `internal/tools/register/register.go` | Added | REFACTOR |
| `internal/tools/executor.go` | Modified | REFACTOR |
| `internal/tools/embed/tools.json` | Deleted | REFACTOR |
| `internal/tools/browser/register.go` | Added | REFACTOR |
| `internal/tools/calculator/register.go` | Added | REFACTOR |
| `internal/tools/apis/register.go` | Added | REFACTOR |
| `internal/tools/apis/routes.go` | Deleted | REFACTOR |
| `internal/tools/apis/googleRSS/register.go` | Added | REFACTOR |
| `internal/tools/apis/searchWeb/register.go` | Added | REFACTOR |
| `internal/tools/apis/weatherReport/fetch.go` | Deleted | REMOVE |
| `internal/tools/{apiAdapter => apis/adapter}/execute.go` | Renamed | REFACTOR |
| `internal/tools/{apiAdapter => apis/adapter}/request.go` | Renamed | REFACTOR |
| `internal/tools/{apiAdapter => apis/adapter}/send.go` | Renamed | REFACTOR |
| `internal/tools/{apiAdapter => apis/adapter}/translate.go` | Renamed | REFACTOR |
| `internal/tools/{apiAdapter => apis/adapter}/translator.go` | Renamed | REFACTOR |
| `internal/tools/{apiAdapter => apis/adapter}/example.json` | Renamed | REFACTOR |
| `internal/filesystem/denied.go` | Added | REFACTOR |
| `internal/filesystem/filesystem.go` | Modified | REFACTOR |
| `internal/{keychain => filesystem/keychain}/keychain.go` | Renamed | REFACTOR |
| `internal/filesystem/sessionManager/config.go` | Modified | REFACTOR |
| `internal/filesystem/sessionManager/session.go` | Modified | REFACTOR |
| `internal/filesystem/sessionManager/summary.go` | Modified | REFACTOR |
| `internal/tools/file/list.go` | Modified | SECURITY |
| `internal/tools/file/patch.go` | Modified | SECURITY |
| `internal/tools/file/search.go` | Modified | SECURITY |
| `internal/tools/file/errorMemory.go` | Modified | SECURITY |
| `internal/tools/file/toolError.go` | Modified | SECURITY |
| `internal/tools/browser/download.go` | Modified | SECURITY |
| `internal/tools/browser/load.go` | Modified | SECURITY |
| `internal/tools/browser/skipped.go` | Modified | SECURITY |
| `internal/tools/apis/searchWeb/SearchWeb.go` | Modified | REFACTOR |
| `internal/tools/apis/searchWeb/fetchDDG.go` | Modified | REFACTOR |
| `internal/tools/types/executor.go` | Modified | REFACTOR |
| `internal/agents/provider/claude/new.go` | Modified | REFACTOR |
| `internal/agents/provider/compat/new.go` | Modified | REFACTOR |
| `internal/agents/provider/copilot/login.go` | Modified | REFACTOR |
| `internal/agents/provider/gemini/new.go` | Modified | REFACTOR |
| `internal/agents/provider/nvidia/new.go` | Modified | REFACTOR |
| `internal/agents/provider/openai/new.go` | Modified | REFACTOR |
| `internal/agents/exec/selectAgent.go` | Modified | REFACTOR |
| `internal/discord/new.go` | Modified | REFACTOR |
| `internal/discord/session.go` | Modified | REFACTOR |
| `internal/skill/sync.go` | Modified | REFACTOR |
| `cmd/cli/addProvider.go` | Modified | REFACTOR |
| `cmd/cli/main.go` | Modified | REFACTOR |
| `cmd/cli/removeProvider.go` | Modified | REFACTOR |
| `cmd/server/main.go` | Modified | REFACTOR |
| `configs/prompts/system_prompt.md` | Modified | REFACTOR |
| `README.md` | Modified | DOC |
| `doc/README.zh.md` | Modified | DOC |
| `doc/doc.md` | Modified | DOC |
| `doc/doc.zh.md` | Modified | DOC |
| `extensions/skills/project-agenvoy/SKILL.md` | Modified | DOC |
| `extensions/skills/schedule-task/SKILL.md` | Modified | DOC |

***

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