# v1.3.8 Release Notes

> v1.3.7 -> v1.3.8

## Summary

Background work becomes independent jobs that carry their own goal and next step, so the starting task finishes normally and the job either feeds its reports back or continues on its own. Tool calls, confirmations and questions now come from one backend formatter shared by the terminal, web and chat channels.

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

背景工作改為帶有自身目標與下一步的獨立 job，發起的任務照常結束，job 視情況把報告交回或自行接續。工具呼叫、確認與提問改由單一後端格式化，終端、網頁與聊天頻道共用。

</details>

## Changes

### FEAT

- Run background legs as independent jobs: `background_subagents` and `background_command` take `objective` and `next`, legs started in the same turn form one group stored under `sessions/<sid>/background/`, and the parent task ends normally instead of staying pending; while the parent is open each report is injected into its loop, while it is paused or waiting on `ask_user` reports wait for its resume, and once it has ended the group runs `objective` + `next` + all reports as its own task when every leg finishes, pointing to the parent through `chat_history` (@pardnchiu) [87b931c2]
- Show `N background task(s) running` above the TUI input, refreshed every second, and open a cancel menu on ESC when the input is empty and nothing runs in the foreground: pick one leg or `All`, confirm, and the daemon cancels it over the new `background_cancel` IPC frame, dropping its late result (@pardnchiu) [87b931c2]

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

- 背景 leg 改為獨立 job：`background_subagents` 與 `background_command` 新增 `objective`、`next`，同一回合開的 leg 自成一組，存於 `sessions/<sid>/background/`，母任務照常結束而不再維持 pending；母任務執行中時報告插入其迴圈，暫停或等待 `ask_user` 時報告等它恢復，已結束時待整組完成，以 `objective`＋`next`＋所有報告另開一輪，並經 `chat_history` 指向母任務
- TUI 輸入框上方顯示 `N background task(s) running`（每秒更新）；輸入框為空且無前景任務時按 ESC 開啟取消選單，可選單一 leg 或 `All`，確認後由 daemon 經新的 `background_cancel` IPC frame 取消，並丟棄晚到的結果

</details>

### FIX

- Answer `reasoning_guide(subagent_dispatch)` inside a session that cannot dispatch with a short "run every lookup yourself" note instead of the full dispatch rules, so research legs stop searching for `subagents` they cannot call (@pardnchiu) [87b931c2]

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

- 在無法分派的 session 呼叫 `reasoning_guide(subagent_dispatch)` 時，只回「所有查詢自行執行」的短說明而非完整分派規則，研究 leg 不再反覆尋找無法呼叫的 `subagents`

</details>

### UPDATE

- Format tool-call and thinking lines in the backend: `/v1/log` events carry `trace` and `tool_display`, the web UI renders them as given, and the TUI, web UI, API stream and chat channels share one tool-call format such as `API(Weather)` or `Run(rm /etc/hosts)` (@pardnchiu) [9c73742a]
- Clip each argument value of a displayed tool call to 256 characters instead of cutting the whole line, and drop the remaining line truncation in the web UI, API stream and chat channels (@pardnchiu) [9c73742a]
- Build permission prompts from one formatter for the TUI, web UI, Telegram and Discord: `Run X?` / `Run X outside the allow list?`, restricted paths as `⚠ path`, and the note `system password required`; Telegram and Discord messages are sized to each platform limit counted in UTF-16 units (@pardnchiu) [9c73742a]
- Format `ask_user` questions from one source: chat channels send the question, detail and `question n/m` on separate lines with progress shown only for multiple questions, the web UI card shows progress, and the tool-call line reads `Ask(<first line of the first question's detail, or its question>)` capped at 128 characters (@pardnchiu) [9c73742a]
- Call `public_api_list(category)` directly when the request clearly fits a category, return the category list in the not-found error, and show the category in tool-call events as `API(<category>)` (@pardnchiu) [705756e9]

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

- 工具呼叫與思考行改由後端格式化：`/v1/log` 事件附 `trace` 與 `tool_display`，網頁直接顯示；TUI、網頁、API 串流與聊天頻道共用同一種工具呼叫格式，例如 `API(Weather)`、`Run(rm /etc/hosts)`
- 顯示的工具呼叫改為逐一截斷每個參數值至 256 字元，不再截整行；網頁、API 串流與聊天頻道其餘的整行截斷一併移除
- 權限確認由單一格式化產生，供 TUI、網頁、Telegram 與 Discord 共用：`Run X?`／`Run X outside the allow list?`、受限路徑以 `⚠ path` 列出、說明為 `system password required`；Telegram 與 Discord 依各平台上限以 UTF-16 計算長度
- `ask_user` 提問格式統一：聊天頻道把問題、說明與 `question n/m` 分行送出，只有多題時顯示進度；網頁卡片顯示進度；工具呼叫行為 `Ask(<第一題 detail 的第一行，沒有 detail 則用 question>)`，最多 128 字元
- 需求明確對應分類時直接呼叫 `public_api_list(category)`，找不到分類時錯誤附上分類清單，工具呼叫事件顯示為 `API(<category>)`

</details>

### REMOVE

- Remove the "waiting for background tasks" mode: the TUI status line and ESC cancel of the whole parent, the web UI waiting state driven by `EventPending(subagents)` and pending entries with `background > 0`, the `[Active]` lock in TUI `/pending`, the `background` field of the pending list API, and follow-up input into a background-pending task over IPC `run` frames (@pardnchiu) [87b931c2]

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

- 移除「等待背景任務」模式：TUI 狀態列與 ESC 取消整個母任務、網頁依 `EventPending(subagents)` 與 `background > 0` 進入的等待狀態、TUI `/pending` 的 `[Active]` 鎖、pending 清單 API 的 `background` 欄位，以及經 IPC `run` frame 接續背景 pending 任務的後續輸入

</details>

## Scope

- `internal/tools/interactive/` — FEAT, REMOVE (`background.go`, `backgroundStart.go`, `backgroundCancel.go`, `askUser.go`)
- `internal/app/` — FEAT (`deliverBackground.go`)
- `internal/agents/exec/` — FEAT, REMOVE (`execute.go`, `steerWait.go`, `toolCall.go`)
- `internal/tools/` — FEAT, FIX, UPDATE (`runCommand.go`, `runCommandBackground.go`, `guide.go`, `subagent/`, `types/`, `external/publicAPIList.go`)
- `internal/runtime/tui/` — FEAT, UPDATE, REMOVE (multiple files)
- `internal/runtime/ipc/` — FEAT, REMOVE (`frame.go`, `client.go`, `server.go`)
- `internal/utils/` — UPDATE (`toolFormat.go`, `permissionFormat.go`, `askUserFormat.go`, `event.go`, `utils.go`)
- `internal/runtime/` — UPDATE (`listener.go`, `chatbot/discord/`, `chatbot/telegram/`, `routes/handler/`)
- `page/src/js/` — UPDATE, REMOVE (multiple files)
- `configs/prompts/guide/` — UPDATE (`subagent_dispatch.md`, `tool_generate.md`)
- `README.md`, `doc/` — DOC

---

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