# v0.10.0 Release Notes

> v0.9.0 -> v0.10.0

## Summary

Adds Discord server with full slash command support, file attachment sending, and multi-layer sensitive path security restrictions. Also introduces a browser `download_page` tool with readability extraction and skip tracking.

<details>
<summary>翻譯</summary>
新增 Discord server 模式（含完整 slash command 支援）、檔案附件傳送功能，以及多層敏感路徑安全限制。另新增 browser `download_page` 工具，支援可讀性萃取與跳過追蹤。
</details>

## Changes

### FEAT

- Add `cmd/server/main.go` as standalone Discord server entry point
- Add full Discord bot implementation: message handling, slash commands, session management, and reply system
- Add file attachment sending via `[SEND_FILE:/path]` marker in agent replies
- Add `download_page` browser tool with readability extraction and visited URL skip tracking
- Add `browser/transToMarkdown` for HTML-to-Markdown conversion

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

- 新增 `cmd/server/main.go` 作為獨立 Discord server 入口
- 新增完整 Discord bot 實作：訊息處理、slash command、session 管理與回覆系統
- 新增透過 `[SEND_FILE:/path]` marker 傳送檔案附件功能
- 新增 `download_page` browser 工具，支援可讀性萃取與已造訪 URL 跳過追蹤
- 新增 `browser/transToMarkdown` HTML 轉 Markdown 轉換器

</details>

### SECURITY

- Add multi-layer sensitive path access control covering SSH keys, shell history, shell configs, cloud credentials (`.aws`, `.gcloud`, `.docker`), private key files (`.pem`, `.key`, `.p12`, etc.), and `.env` files
- Enforce restrictions in both file tools (`read`, `list`, `write`, `patch`) and `runCommand` via shared `DeniedConfig` loaded from `denied.json`
- Add security policy section to Discord agent system prompt

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

- 新增多層敏感路徑存取控制，涵蓋 SSH 金鑰、shell history、shell 設定檔、雲端憑證（`.aws`、`.gcloud`、`.docker`）、私鑰檔案（`.pem`、`.key`、`.p12` 等）與 `.env` 檔案
- 透過共用 `DeniedConfig`（載入自 `denied.json`）在檔案工具與 `runCommand` 雙層強制執行
- 在 Discord agent system prompt 新增安全政策區段

</details>

### REFACTOR

- Simplify provider string parsing using `strings.Cut` instead of `strings.Index`
- Restructure browser package: separate `extract`, `load`, `download`, `skipped`, and `transToMarkdown`

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

- 使用 `strings.Cut` 取代 `strings.Index` 簡化 provider 字串解析
- 重構 browser 套件：分離 `extract`、`load`、`download`、`skipped` 與 `transToMarkdown`

</details>

***

## Files Changed

| File | Status | Tag |
|------|--------|-----|
| `cmd/server/main.go` | Added | FEAT |
| `cmd/cli/getAgentRegistry.go` | Modified | REFACTOR |
| `internal/discord/command/command.go` | Added | FEAT |
| `internal/discord/command/create.go` | Added | FEAT |
| `internal/discord/command/handler.go` | Added | FEAT |
| `internal/discord/interactionCreate.go` | Added | FEAT |
| `internal/discord/messageCreate.go` | Added | FEAT |
| `internal/discord/new.go` | Added | FEAT |
| `internal/discord/reply.go` | Added | FEAT |
| `internal/discord/run.go` | Added | FEAT |
| `internal/discord/session.go` | Added | FEAT |
| `internal/discord/types/types.go` | Added | FEAT |
| `internal/discord/embed/systemPrompt.md` | Added | FEAT |
| `internal/discord/embed/summaryPrompt.md` | Added | FEAT |
| `internal/tools/file/embed/denied.json` | Added | SECURITY |
| `internal/tools/file/read.go` | Modified | SECURITY |
| `internal/tools/file/routes.go` | Modified | SECURITY |
| `internal/tools/tools.go` | Modified | SECURITY |
| `internal/tools/browser/download.go` | Added | FEAT |
| `internal/tools/browser/extract.go` | Modified | REFACTOR |
| `internal/tools/browser/load.go` | Modified | REFACTOR |
| `internal/tools/browser/skipped.go` | Added | FEAT |
| `internal/tools/browser/transToMarkdown.go` | Added | FEAT |
| `internal/tools/browser/embed/skipped.md` | Added | FEAT |
| `internal/tools/embed/tools.json` | Modified | FEAT |
| `internal/tools/executor.go` | Modified | FEAT |
| `internal/agents/exec/prompt/systemPrompt.md` | Modified | FEAT |
| `.env.example` | Modified | CHORE |
| `go.mod` | Modified | CHORE |
| `go.sum` | Modified | CHORE |

***

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