diff --git a/PROGRESS.md b/PROGRESS.md index be203d4..98e19f9 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -21,6 +21,14 @@ ## 已完成关键能力 +### 2026-06-13 / 前端小修:导出按钮简写 + 任务菜单加清空 + 移动端 task 可滚 + admin 自适应 + +- **顶栏「导出对话记录」→「导出对话」**:与「清空对话」对齐(`dev.html` 按钮 + `chat.js` 任务菜单 export 项同步)。 +- **任务菜单加「清空对话」项**:`chat.js::taskMenuItems` 新增一条,复用已有 `clearMessages`;disabled 条件 `!hasMsg` 与 export 项一致;dropdown 新增 `.dd-item.act-clear` 紫色(与顶栏清空按钮 hover 同色)。 +- **修移动端 task 列表无法滚动**:手机断点把 `#pane-left` 设成 `display:block`,但 `#task-scroll` 靠 `flex:1` 撑高才能滚 —— 父级非 flex 时 flex:1 失效,列表被 `overflow:hidden` 截断不能滚。改 `body.mv-left #pane-left { display:flex }`(`flex-direction:column` 由默认规则给),恢复滚动。 +- **admin 移动端自适应增强**:`admin.html` 的 `@media(max-width:640px)` 补 header 紧凑化(缩 padding/字号、gen-at 时间戳截断)+ `.card-head`/`.ctrl` 允许换行(标题长 + 下拉不再撑出横向溢出)。 +- bump 0.12.0 → 0.12.1(patch:bugfix + 样式)。 + ### 2026-06-12 / 双层记忆升级为 agent 自管(写入路径) - **背景**:`.memory/`(core.md + extended/)存储原语已在,但纯手工维护 —— 系统不往里写,用户也不会主动整理 → 记忆形同虚设。**这轮补「写入」与「召回」两条路,不碰存储/DB,不破坏存量 `.memory/` 数据。** diff --git a/core/__init__.py b/core/__init__.py index 34ab5fa..3764135 100644 --- a/core/__init__.py +++ b/core/__init__.py @@ -1,3 +1,3 @@ # zcbot 版本号单一事实源:web/app.py 的 FastAPI version、/healthz 返回、前端展示都引这里。 # 改版本只动这一行。 -__version__ = "0.12.0" +__version__ = "0.12.1" diff --git a/web/static/admin.html b/web/static/admin.html index 790a3ae..8e876cc 100644 --- a/web/static/admin.html +++ b/web/static/admin.html @@ -114,6 +114,15 @@ main { padding: 10px; } .grid { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); } .stat .v { font-size: 18px; } + /* header 紧凑化:缩 padding/gap、字号,gen-at 时间戳截断不撑宽 */ + header { padding: 8px 10px; gap: 8px; } + header .title { font-size: 14px; } + header .meta { font-size: 11px; max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + header a, header button { padding: 4px 8px; } + /* card-head 允许换行,标题长 + 下拉不再撑出横向溢出 */ + .card-head { flex-wrap: wrap; } + .ctrl { flex-wrap: wrap; } + .ctrl select { min-width: 0; } /* 窄屏:目录变顶部横向 chip 条 */ #layout { grid-template-columns: 1fr; gap: 10px; } #toc { diff --git a/web/static/dev.html b/web/static/dev.html index 47b4084..2b7e53e 100644 --- a/web/static/dev.html +++ b/web/static/dev.html @@ -451,6 +451,7 @@ .dd-item.act-complete, .dd-item.act-download { color: var(--c-green); } .dd-item.act-abandon { color: var(--c-orange); } .dd-item.act-export, .dd-item.act-rename { color: var(--c-blue); } + .dd-item.act-clear { color: var(--c-purple); } .dd-item.act-delete { color: var(--accent); } /* ───── task list ───── */ @@ -919,7 +920,7 @@ #pane-left, #pane-mid, #pane-right { grid-area: main; border-right: none; display: none; } - body.mv-left #pane-left { display: block; } + body.mv-left #pane-left { display: flex; } /* flex(非 block):配合默认 flex-direction:column 让 #task-scroll flex:1 撑高可滚 */ body.mv-mid #pane-mid { display: flex; } body.mv-right #pane-right { display: flex; } /* 折叠按钮在手机不可见 */ @@ -1240,7 +1241,7 @@
对话 - + diff --git a/web/static/js/chat.js b/web/static/js/chat.js index c99f6d5..e7a98f2 100644 --- a/web/static/js/chat.js +++ b/web/static/js/chat.js @@ -179,8 +179,10 @@ function taskMenuItems(t) { onclick: () => setTaskStatus(t.task_id, "completed", t.name || "(未命名)") }, { act: "abandon", label: "废弃", cls: "act-abandon", disabled: !isActive, onclick: () => setTaskStatus(t.task_id, "abandoned", t.name || "(未命名)") }, - { act: "export", label: "导出对话记录", cls: "act-export", disabled: !hasMsg, + { act: "export", label: "导出对话", cls: "act-export", disabled: !hasMsg, onclick: () => exportTask(t.task_id) }, + { act: "clear", label: "清空对话", cls: "act-clear", disabled: !hasMsg, + onclick: () => clearMessages(t.task_id, t.name || "(未命名)", t.n_messages || 0) }, { act: "delete", label: "删除", cls: "act-delete", onclick: () => deleteTask(t.task_id, t.name || "(未命名)", t.n_messages || 0) }, ];