# v1.3.0 Release Notes

> v1.2.3 -> v1.3.0

## Summary

Long-running work can now leave the turn: commands and research legs run in the background, watch live output or streams against a plain-language condition, and resume the task with their results while the conversation continues. The terminal client gains direct shell input and work-directory control, and the agent recovers from context overflows and rejected reasoning levels instead of stopping.

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

長時間的工作可以離開當輪：指令與研究 leg 改在背景執行，可依自然語言條件監看輸出或即時串流，完成後帶著結果接回任務，期間對話仍可繼續。終端介面新增直接執行 shell 與切換工作目錄，agent 遇到 context 超限或 reasoning level 被拒時會自動調整重試，不再中斷。

</details>

## Changes

### FEAT

- Add background mode to run_command and subagents (TUI only): the turn continues at once, each finished task resumes the original task with its report, follow-up messages join that task, and resumes claim the task before running so they never overlap a follow-up or a manual resume (@pardnchiu) [7460960a, d0d76874, 18d27e0a, 64e82943, ae4583e0]
- Add interval checks for background commands and the run_websocket tool: buffered output or stream messages are judged against a prompt of literal thresholds each interval (at least 15 seconds), and a confident match that is not a repeat of the last report resumes the task, followed by a 60-second cooldown, while the source keeps running; a websocket with no message or pong for two intervals (at least 60 seconds) reconnects and keeps alive with pings (@pardnchiu) [641da525, ae4583e0, 6b712bc3, a89a1b75]
- Add a sandbox option to run_command that runs outside the sandbox only after the user's system password is verified (@pardnchiu) [f6e0ac17]
- Learn each model's real context limit from overflow errors and trim then retry, and retry rejected reasoning levels with the adjacent level (@pardnchiu) [34289151]
- Add `!` prefix shell execution in the TUI with styled input and reported results (@pardnchiu) [72414dca]
- Let users set the work directory from the TUI (@pardnchiu) [03208b41]
- Show the pending task count in the TUI status bar (@pardnchiu) [cfe47810]
- Fold per-turn replies in the web chat, hide settled background turns, and recycle stale pinned subagent panels (@pardnchiu) [8718f707, 1f90a4fe]

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

- run_command 與 subagents 新增背景模式（僅 TUI）：當輪立即繼續，每個背景任務完成後帶著報告接回原任務，期間的後續輸入併入該任務；resume 執行前先取得任務執行權，不會與後續輸入或手動恢復同時執行
- 背景指令新增 interval 檢查，並新增 run_websocket 工具：每個 interval（至少 15 秒）依寫明絕對門檻的 prompt 判斷累積的輸出或串流訊息，信心足夠且非重複上次回報的符合才接回任務，之後冷卻 60 秒，來源持續執行；websocket 超過兩個 interval（至少 60 秒）沒有任何訊息或 pong 即重連，並以 ping 保活
- run_command 新增 sandbox 參數，驗證系統密碼後才於沙箱外執行
- 從超限錯誤學習模型實際 context 上限並裁剪重試；reasoning level 被拒時改用相鄰等級重試
- TUI 新增 `!` 前綴直接執行 shell，含輸入樣式與結果回報
- TUI 可設定工作目錄
- TUI 狀態列顯示待處理任務數
- Web 對話依輪次摺疊回覆、隱藏已結束的背景輪次，並回收過舊的釘選 subagent 面板

</details>

### FIX

- Fix subagent session collisions and PWA resize flicker (@pardnchiu) [e2a9d314]
- Clear stale todo lists on pause, cancel and finish, and keep todos when a task stays pending (@pardnchiu) [b194db20]

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

- 修正 subagent session 衝突與 PWA 調整尺寸時的閃爍
- 暫停、取消與完成時清除過期的 todo 清單，任務保留 pending 時保存 todo

</details>

### UPDATE

- Normalize allow-rule arguments to absolute paths, let `**/` match zero directories, and reject empty edit_file, run_command and http_request arguments (@pardnchiu) [fe7e3361]
- Show the model on footer hover in the web chat and drop it from the TUI footer, show system-use and list-mode tool calls, and label reasoning_guide, find_tools and write_result calls (@pardnchiu) [8fcd87df]
- Hide injected shell command results from chat history and live user input (@pardnchiu) [fa448508]
- Move TUI status notices to debug logs and run sandboxed commands through the shared sandbox runner (@pardnchiu) [64e82943]
- Re-render on resize only when the width crosses the layout breakpoint (@pardnchiu) [d1ebfd0b]
- Reword background and subagent fan-out guidance around independently searched source classes (@pardnchiu) [44e7fca0]
- Hardcode the context window for DeepSeek flash models (@pardnchiu) [e2a9d314]

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

- allow 規則參數正規化為絕對路徑、`**/` 可匹配零層目錄，並拒絕空的 edit_file、run_command、http_request 參數
- Web 對話改為 hover footer 時顯示模型，TUI footer 不再顯示模型；顯示 system-use 與 list 模式的工具呼叫，並為 reasoning_guide、find_tools、write_result 加上標籤
- 注入的 shell 指令結果不再出現在對話紀錄與即時使用者輸入
- TUI 狀態提示改記到 debug log，沙箱指令改走共用的 sandbox runner
- 只有寬度跨過版面斷點時才重新渲染
- 背景與 subagent 分派指引改以獨立搜尋的來源類別為依據
- 寫死 DeepSeek flash 模型的 context window

</details>

### REFACTOR

- Start a new task instead of reusing the last one when the task hash differs, so new messages are not inserted into the old task (@pardnchiu) [8e88653a]

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

- task hash 不同時建立新任務而非沿用上一個，避免新訊息插入舊任務

</details>

### REMOVE

- Remove the agent cd tool; the work directory is set from the TUI instead (@pardnchiu) [03208b41]

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

- 移除 agent 的 cd 工具，改由 TUI 設定工作目錄

</details>

### STYLE

- Move TUI block spacing from top to bottom blank lines (@pardnchiu) [f1b17e21]

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

- TUI 區塊間距由上方空行改為下方空行

</details>

### CHORE

- Bump go-llm-router to v0.9.6 and go-pkg to v0.13.17 (@pardnchiu) [03208b41, 18d27e0a, 64e82943]

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

- 升級 go-llm-router 至 v0.9.6、go-pkg 至 v0.13.17

</details>

## Scope

- `internal/tools/` — FEAT, UPDATE, REMOVE (`runCommand.go`, `runCommandBackground.go`, `runWebsocket.go`, `watchOutput.go`, `tools.go`)
- `internal/tools/interactive/` — FEAT (`background.go`, `backgroundCancel.go`, `backgroundStart.go`, `askUser.go`, `online.go`)
- `internal/tools/subagent/` — FEAT, UPDATE (multiple files)
- `internal/app/` — FEAT (`deliverBackground.go`)
- `internal/agents/exec/` — FEAT, UPDATE, REFACTOR, FIX (multiple files)
- `internal/utils/` — UPDATE (`event.go`, `utils.go`)
- `internal/runtime/tui/` — FEAT, UPDATE, STYLE (multiple files)
- `internal/runtime/ipc/`, `internal/runtime/routes/` — FEAT, UPDATE (multiple files)
- `page/src/js/`, `page/src/sass/` — FEAT, FIX, UPDATE (multiple files)
- `configs/` — FEAT, UPDATE (multiple files)
- `doc/` — DOC (`optimization.md`, `optimization.zh.md`)
- `go.mod`, `go.sum` — CHORE

---

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