diff --git a/PROGRESS.md b/PROGRESS.md
index 4ee8618..997e3c0 100644
--- a/PROGRESS.md
+++ b/PROGRESS.md
@@ -21,6 +21,12 @@
## 已完成关键能力
+### 2026-06-13 / 左栏筛选区可折叠(默认展开)
+
+- 左栏顶部原 4 行固定头把任务列表压矮。把搜索/状态/目录/排序四个筛选控件归到两行 `.task-filter-row`,标题行加「筛选 ▾」toggle:**默认展开**,点击折叠只藏 UI(已选条件仍生效),偏好存 `localStorage`(`zcbot.task-filters-collapsed`),与 pane 折叠同套范式。折叠后左栏顶部从 4 行降到 2 行(标题 + 新建),列表可视区更高。
+- 顺手把状态下拉从标题行并入筛选区(原 `width:auto` → flex),搜索框给 `flex:2` 更宽;目录/排序合一行,去掉独立"排序"文字标签改 `title` 提示。
+- 改动文件:`dev.html`(markup + CSS)、`chat.js`(toggle 接线 + 复用 LS 范式)、`state.js`(新增 LS key)。bump 0.12.2 → 0.12.3。
+
### 2026-06-13 / 前端 UI 优化:中栏操作收菜单 + 阅读限宽 + 色彩收敛
- **中栏顶栏 5 按钮 → 「完成」+「⋯」菜单**:原导出/清空/完成/废弃/删除 平铺,与任务行的 `⋯` 浮层菜单两套范式打架,且破坏性操作(废弃/删除)平铺易误点、移动端挤。改为只留高频「完成」+ 一个 `⋯`,菜单复用 `taskMenuItems`(过滤掉 complete);单一事实源,两处共用。顺带把「清空」在菜单里按 `run_status` 也禁用(taskMeta 带该字段,修了之前菜单清空运行中会 409-after-confirm 的小坑)。
diff --git a/core/__init__.py b/core/__init__.py
index 9d9acea..3e01093 100644
--- a/core/__init__.py
+++ b/core/__init__.py
@@ -1,3 +1,3 @@
# zcbot 版本号单一事实源:web/app.py 的 FastAPI version、/healthz 返回、前端展示都引这里。
# 改版本只动这一行。
-__version__ = "0.12.2"
+__version__ = "0.12.3"
diff --git a/web/static/dev.html b/web/static/dev.html
index 8cba74b..c3afbce 100644
--- a/web/static/dev.html
+++ b/web/static/dev.html
@@ -413,6 +413,10 @@
background: #fff;
border-bottom: 1px solid var(--border-soft);
}
+ /* 筛选区折叠(默认展开):body.task-filters-collapsed 时藏起搜索/状态/目录/排序两行 */
+ body.task-filters-collapsed .task-filter-row { display: none; }
+ #filter-toggle { white-space: nowrap; flex-shrink: 0; }
+ body.task-filters-collapsed #filter-toggle { color: var(--accent); border-color: var(--accent-soft); background: var(--accent-soft); }
/* 对话顶栏只剩「完成」(绿)+「⋯」菜单;其余操作收进浮层菜单按语义色(见 .dd-item.act-*)。
file-picker 的 sp-copy/sp-move 仍复用蓝/橙。 */
#btn-done:hover:not(:disabled) { color: var(--c-green); border-color: var(--c-green-bd); background: var(--c-green-bg); }
@@ -1188,27 +1192,27 @@
任务
-
+
-
-
-