diff --git a/docs/images/composer/new-conversation.png b/docs/images/composer/new-conversation.png
new file mode 100644
index 00000000..95c731e9
Binary files /dev/null and b/docs/images/composer/new-conversation.png differ
diff --git a/docs/images/composer/queued-messages.png b/docs/images/composer/queued-messages.png
new file mode 100644
index 00000000..0feda448
Binary files /dev/null and b/docs/images/composer/queued-messages.png differ
diff --git a/docs/usage.md b/docs/usage.md
index c182691c..869d85d7 100644
--- a/docs/usage.md
+++ b/docs/usage.md
@@ -68,6 +68,24 @@ false until that matrix is signed.
## Threads, Runs, and advanced diagnostics / Thread、Run 与高级诊断
+### 补充消息与排队 / Follow-up messages and queue
+
+任务运行中,发送的补充消息会排到输入框上方,当前执行结束后依次处理。文字消息可点击
+条目右侧的「引导」加入当前任务;「撤回」取消待处理消息,更多菜单提供编辑和全文、附件预览。
+图片和文件附件保留在下一轮消息中。输入框增高时,排队卡片随它向上移动;多条消息在卡片内滚动。
+底栏按输入框的可用宽度收起次要标签,模型名称过长时省略显示,完整名称仍可在模型菜单查看。
+
+
+
+
+
+以上为 Windows / Edge 生产构建截图,任务与回复使用本地离线演示数据。
+
+Follow-up messages sent during execution appear above the composer and run in order afterward.
+Use **Steer** on a text-only queued message to add it to the current task, **Withdraw** to cancel it,
+or the more menu to edit and preview its full content and attachments. Images and files stay queued
+for the next turn. The queue moves with the composer as it grows and scrolls internally when needed.
+
### 用量统计 / Usage
在「设置 → 用量统计」查看 Universal-Code 自身的模型调用。今日、近 30 天和全部
diff --git a/web/src/v2/app.tsx b/web/src/v2/app.tsx
index 85173d3c..10dd21ad 100644
--- a/web/src/v2/app.tsx
+++ b/web/src/v2/app.tsx
@@ -1,6 +1,6 @@
import { lazy, useEffect, useMemo, useRef, useState, type RefObject } from "react";
import { QueryClient, QueryClientProvider, useInfiniteQuery, useMutation, useQueryClient } from "@tanstack/react-query";
-import { Folder } from "lucide-react";
+import { Folder, SlidersHorizontal } from "lucide-react";
import type { APIClient } from "../api/client";
import type { ProviderDefinitionView, TaskBudgetSettings, ThreadDetailView, ThreadView, WorkspaceView } from "../api/types";
import { normalizedTaskBudget } from "../api/task-configuration";
@@ -221,8 +221,9 @@ function NewConversation({ client, workspaces, workspaceID, onWorkspaceChange, o
onManageModels={onManageModels} onPendingModelRouteChange={(route) =>
onOptionsChange({ ...options, modelRoute: route })}
pendingModelRoute={modelRoute}
- newThreadControls={<>
+ newThreadControls={<>
{open &&