公明
762f798afb
Update config.example.yaml
v1.7.22
2026-10-08 11:11:09 +08:00
Zeyu Shao (邵泽宇)
aadcdcbcfc
fix(workflows): resume saving after metadata confirmation ( #345 )
2026-10-08 11:08:46 +08:00
Sycun
8e00147d06
增加手机端使用ui的体验和整体优化 ( #344 )
...
* feat: integrate the mobile UI runtime layer from the migration package
迁移包给出的移动端改造是「运行时注入」架构:mobile.css 只写 767.98px 以下的
规则,mobile-ui.js 在末位加载并包装 switchPage、注入抽屉/底部标签栏/更多面板。
模板侧只有 4 处接线(viewport-fit + interactive-widget、样式层链接、ELK/SheetJS
移动端延迟加载、交互层末位脚本),其余保持上游原样,桌面端零影响。
* feat: 移动端注入层接入 i18n,并把触控下限统一到 44px
迁移包的交互层把标签栏、抽屉、更多面板的文案全写死成中文,en-US/ru-RU 下会中英
混杂;现在所有注入节点统一挂 data-i18n,交给 i18n.js 的 applyTranslations 在语言
切换时自动重译,本层只保留中文兜底。语言项改为按桌面端下拉里真实存在的语言循环
(原来只在 zh/en 之间来回,俄语用户点不到),面板里的 API 文档/GitHub 不再抄一份
URL,改为触发桌面端既有控件;iOS 上没有全屏 API 时给出提示而不是静默无反应;
不在四个标签里的页面点亮"更多",否则三分之一的页面底部栏无任何高亮。
同时补齐 PWA manifest、api-docs 页移动端样式层,并把通知铃铛与头像按钮从 38px
提到本层自己的 --m-touch(44px) 口径。配 web/static/js/mobile-ui-i18n.test.cjs:
键集三方一致、引用键必须三语都有译文、helper 区之外不许出现裸写文案的 API。
* style: 移动端外壳改 iOS 观感,并修掉抽屉页脚错位
观感:顶栏/底栏改透出材质+发丝分隔线,图标按钮一律正圆去底框,文字按钮一律胶囊,
卡片 18、面板顶角 22,按压给 scale 反馈并在 prefers-reduced-motion 下关掉;焦点环
从 2px 硬描边换成 3px 柔光环(forced-colors 下把硬描边还回去)。材质一律用
color-mix 从主题自己的 --bg-primary/--border-color 派生,浅色暗色都跟随。
两处不是"不好看"而是真错:
- 抽屉页脚被 insertBefore 插到菜单上面,"返回顶部"出现在列表上方;
- 顶栏材质在暗色下被 style.css 的 html[data-theme="dark"] header 不透明渐变压住,
只写 header 选择器不生效,改成同特异性后暗色才真正透出。
圆角与胶囊走 --m-r-icon/--m-r-btn 令牌(24 节那批 !important 规则读的就是它们),
不再往下补选择器与 !important 对轰。
配 scripts/mobile-shot.mjs:手机视口下抓外壳图,--why 用 CDP 匹配样式表回答
"规则写了没生效是没命中还是被谁压住",--eval 量真实计算值。
* fix: 抽屉页脚与底部固定件被 Safari 工具栏压在后面
iOS 的 100dvh 是「工具栏收起时」的最大视口高度,工具栏展开时可见高度只有
innerHeight。两个全屏抽屉写死 height:100dvh,于是页脚那一截正好落在 Safari
底栏后面;bottom:0 的底栏与贴底面板同理。现在抽屉改用 mobile-ui.js 每次 resize
重写的 --m-app-height,贴底固定件按 max(0px, 100dvh - 可见高度) 抬升;不支持 dvh
或桌面端抬升量恒为 0,实测默认态底栏/抽屉位置零位移。
* fix: 去掉底部标签栏里重复的「更多」入口
顶栏的 ··· 与标签栏的「更多」打开的是同一个面板。按一个入口一份实现收掉底部那枚,
标签栏只留四个页面跳转;随之清掉 more2 图标、mobile.tabMore 键与门禁里的点击断言。
落点在四个标签之外的页面不再高亮任何标签——没有「更多」可点了。
* fix: 清掉另外两处重复入口,并把同类视口缺陷扫干净
顺着「底部更多与顶栏 ··· 重复」这条线扫了一遍,还有两处同类:
- 面板里的「退出登录」与头像菜单里的退出是同一个动作两个入口,头像菜单是桌面端
一贯的位置,去掉面板那枚;连带删掉只有它能触发的 m-danger 样式与 logout 图标。
- 抽屉页脚的「返回顶部」与面板里的返回顶部是同一个动作两个入口,且抽屉是导航容器,
动作按钮不该住在里面;去掉整个页脚(那句"移动端导航"文案也没有信息量)。
同类视口缺陷两处:
- #m-toast 的 bottom 只算到 tabbar-h + safe,底栏按 --m-bar-bottom 抬升时提示条不抬,
工具栏展开时会压在底栏上;实测补前后间距 16px -> 16px。
- api-docs 页容器写 min-height:100dvh,恒定比可见区高出一截,最后一行落在 Safari
底栏后面;改成 100svh(最小视口)。
i18n 契约测试同步:header.logout / mobile.navFooter 不再被引用,mobile 命名空间 18 键。
* style: 手机端对齐 new-api 的卡片密度与 iOS 的填充式表单
仪表盘那排 KPI 在 ≤480px 被桌面样式拍成一列 116px 高的长条,手机上要滚两屏才看完
四个数字。收成两列紧凑网格(奇数张末卡通栏不留空洞),数字 26px/600 + tabular-nums
做主角,标签 12px 弱化,图标块 28px。卡片表面统一成发丝边 + 16 圆角 + 几乎看不见的
投影——桌面的双层阴影在小屏上一屏四张会散。表单改 iOS 填充式(靠底色区分字段),
聚焦只留一圈柔光环(登录框实测叠过两圈),登录卡 20 圆角 + 满宽胶囊主按钮。
KPI 按 nth-child 分的淡彩渐变是产品自己的身份,这一节不跟它抢。
* fix: 补生产侧俄语、修掉白底白字的提示条,并把逐按钮门禁跑到 PASS
用户报的两件事:
- 面板里「切换语言」只在中英之间跳 —— 不是逻辑问题,是 ~/csai-生产版 缺俄语资产
(模板没有 ru-RU 选项、i18n/ 只有两个 json、i18n.js 是不认 ru 的旧版)。补齐后
真手指连点验通 中→英→俄→中,且该行文字自身跟着换。
- 点面板按钮时屏幕中间冒出一块白的 —— 是我自己造成的:25.6 把提示条改成浅色材质,
字色还是基底的 #fff,等于白底白字。回到深色 HUD 胶囊,只留一层投影。
逐按钮门禁(需要登录态,本轮首次跑通全量 34 个界面 = 31 页 + 抽屉/面板/会话抽屉展开态):
- 硬缺陷 covered/offscreen/zero/pointer-events 全 0;11 条外壳真手指点击全过;
- 小于 44px 从 79 降到 3,残留是桌面密集表格里的控件,钉进基线只降不升;
- 修掉的真缺陷:子菜单项 42px(本层自己漏的下限)、.ai-channel-manager 的
overflow:hidden 把 4 个通道选择按钮裁到滚不进来、会话抽屉里搜索框 42/分组按钮 24 宽/
项目行 38/折叠头 30、工具条里 <a onclick> 只有 21px 高(这些链接既没 href 也没
onclick 属性可依赖,判据要放宽到 <a>);复选框口径统一到 24.11 一处并放大到 30px。
- 门禁自己的两个错也修了:scrollIntoView 在「外层 hidden + 内层 auto」的嵌套里根本不滚,
造成 59 个 offscreen 假红,改成逐层滚可滚祖先模拟手指;touch+mouse 双发会让一次点击
变成两次(抽屉开了又关),只发 touch。
- 退出码口径写死:够不到/遮挡/零尺寸/pointer-events 与自家外壳必须 0,桌面遗留小命中区
走基线;基线被压低时注入探针验红(RATCHET FAIL ×2)后撤销复验绿。
* style: 手机端玻璃质感升级,并补上对话上传的安卓适配
观感目标从"iOS 化的平面灰底"升到玻璃质感。平底上做半透明无物可透,玻璃读不出来,
所以先造画布再上材质(mobile.css 第 28 节):
- .container 铺环境光(浅色=近白底+右上 accent/左下紫柔光,暗色=深底+更亮柔光),
.content-area / .chat-messages 交出实心底色,半透明表面从此有色可透;
- 模糊只给小面积/瞬时件:顶栏、底栏、底部面板、抽屉、登录卡、弹窗;常驻卡片
只做半透明+发丝边+顶缘高光,不挂模糊——固定在滚动内容上的大面积模糊是掉帧主因
(25 节实测口径不变);浅深色全用 color-mix 从主题令牌派生,只有顶缘高光按主题
换向;prefers-reduced-transparency 与不支持模糊的环境退回实心。
- index.html 的 mobile.css 版本号递增,防 iPhone Safari 吃旧缓存。
安卓适配:对话上传的 accept="*" 不是合法 MIME 通配(各浏览器/WebView 解析不一致),
改为 "*/*";mobile-tap-audit.mjs 新增 --ua=iphone|android,同一套门禁可换安卓 UA 复跑
(壳层按视口宽度判定、与 UA 无关,换 UA 是给"安卓浏览器下同样合格"留可复现证据)。
验证(都在生产版文件夹跑):iPhone/Android 双 UA 端到端上传(按钮 44px → 触达
选择器 → POST /api/chat-uploads 200 落盘 → 附件条渲染)PASS;双 UA 全量门禁各 34 页
PASS(硬缺陷 0、点击失败 0、44px 基线无回潮)。
2026-10-08 10:44:42 +08:00
Ed1s0nZ
d2084a9481
test: verify workflow activity delivery and record bug audit results
2026-10-06 03:44:22 +08:00
Ed1s0nZ
e081858df3
fix: close expired offline commands and serialize TCP dispatch
2026-10-06 03:41:37 +08:00
Ed1s0nZ
338dcdbc17
fix: authenticate individual HTTP sessions for tasks and files
2026-10-06 03:37:39 +08:00
Ed1s0nZ
d9a111ff50
fix: verify listener ownership before accepting task file uploads
2026-10-06 03:29:20 +08:00
Ed1s0nZ
062fd30cd7
fix: respect limited scan goals and retain asset completion instructions
2026-10-06 03:26:31 +08:00
Ed1s0nZ
1b0d5ea49e
fix: enforce configured workflow tool execution timeouts
2026-10-06 03:24:14 +08:00
Ed1s0nZ
abbf7a19a8
fix: align conversation headings and truncate project badges
2026-10-06 03:19:55 +08:00
Ed1s0nZ
41365d4a4c
fix: keep workflow labels inside node boundaries
2026-10-06 03:18:28 +08:00
Ed1s0nZ
38508e79a8
fix: keep list badges within table columns
2026-10-06 03:16:34 +08:00
Ed1s0nZ
9090e75a67
fix: retain cancellation labels after approval interruptions
2026-10-06 03:11:11 +08:00
Ed1s0nZ
054a77cdab
fix: preserve task cancellation through final events
2026-10-06 03:09:04 +08:00
Ed1s0nZ
07066f9219
fix: show failed outcomes in finished batch queues
2026-10-06 03:05:25 +08:00
Ed1s0nZ
91c53ab451
fix: preserve nmap script arguments when selecting scan options
2026-10-06 03:03:45 +08:00
Ed1s0nZ
5dc9cb1541
fix: retain knowledge indexing errors and explain failure causes
2026-10-06 03:02:14 +08:00
Ed1s0nZ
bb96a084e0
fix: keep related fact views in place and clarify import outcomes
2026-10-06 02:58:56 +08:00
Ed1s0nZ
fa4e5ef4cb
fix: validate callback hosts before generating payloads
2026-10-06 02:57:09 +08:00
Ed1s0nZ
7d6d3e77dc
fix: restore listener edit actions and validate required fields
2026-10-06 02:54:27 +08:00
Ed1s0nZ
ae395f5bf7
fix: localize asset exports and preserve import compatibility
2026-10-06 02:51:15 +08:00
Ed1s0nZ
05d7d9ec65
fix: explain password validation errors and support login preview
2026-10-06 02:49:17 +08:00
Ed1s0nZ
8550325dfe
fix: validate workflows and preserve execution outcomes
2026-10-06 02:32:32 +08:00
Ed1s0nZ
bdefa535b0
fix: validate form edits and enforce task result ownership
2026-10-06 02:20:28 +08:00
Ed1s0nZ
ab17ffda87
fix: preserve shell output and clarify fact relationships
2026-10-06 02:12:28 +08:00
Ed1s0nZ
76da98944c
fix: mask stored credentials and validate agent saves
2026-10-06 02:04:14 +08:00
Ed1s0nZ
4a5b177947
fix: preserve task terminal state and file navigation paths
2026-10-06 01:48:12 +08:00
Ed1s0nZ
079ba0d2b3
fix: validate login and role inputs and protect task access
2026-10-06 01:36:31 +08:00
Ed1s0nZ
17498368f6
docs: record open-source bug sheet repair scope
2026-10-06 01:29:51 +08:00
公明
82b0af10f8
Update config.example.yaml
v1.7.21
2026-10-05 15:11:57 +08:00
Diznev
78973e844e
feat: add Russian UI locale ( #341 )
...
Add a ru-RU language pack and a Русский entry in the language switcher so the console can be used in Russian. Dates follow the selected locale. Strings that are not translated yet fall back to English.
2026-10-05 15:07:54 +08:00
Sycun and Parallels
470eb5ead1
feat: add runtime storage cleanup with per-category retention ( #310 ) ( #313 )
...
Runtime artifacts (agent workspaces, tool-output spill, C2 payloads, chat
uploads, workflow checkpoints, diagnostic logs) previously accumulated
without bound: most were only removed when a conversation or project was
deleted, and tmp/c2 plus workflow checkpoints were never removed at all.
Add a storage cleaner with named per-category tasks (Gitea-style), a
settings page tab, and a background sweep that is off by default so
upgrading never deletes existing data.
Safety properties, since mis-deleting live task data costs far more than
the disk saved:
- dry-run is the default; a real cleanup requires dry_run=false together
with confirm=true at the API layer, not just a frontend dialog
- sessions active within active_grace_hours are always skipped, and a
failed activity lookup skips conservatively (fail closed)
- directories whose conversation/project no longer exists are reclaimed
as orphans after orphan_grace_days
- scanners never follow symlinks and every candidate path is confined to
its category root; deletion renames to a .tmp-for-deletion marker first
so a crash leaves recoverable residue instead of a half-deleted dir
- storage:* permissions are admin-only; without the grantSystemRolePermissions
skip the default branch would have given operators an irreversible
file-deletion right
Also fix two confirmed leaks: DeleteConversation left chat_uploads files
on disk (their rows already vanished via ON DELETE CASCADE), and workflow
checkpoints had no deletion path at all.
Co-authored-by: Parallels <parallels@kali-linux-2025-2.localdomain >
2026-09-25 14:46:23 +08:00
Ed1s0nZ
e9b6e0d86e
docs: update WeCom group QR references
2026-09-23 18:02:00 +08:00
Ed1s0nZ
bbfcb87103
fix: avoid duplicate summarization token limits
2026-09-23 18:02:00 +08:00
公明
a89f21b49e
Update config.example.yaml
v1.7.20
2026-09-22 22:07:38 +08:00
Ed1s0nZ and Cursor
38b96ec67a
feat: add TypeSafe Jev as HITL audit backend
...
Let audit_agent approve or reject with one System One call instead of chat JSON, while keeping the OpenAI-compatible backend as an option.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-22 21:15:53 +08:00
Ed1s0nZ and Cursor
3aa9274675
fix: make Eino exit and transfer work on AgenticMessage state
...
Official ExitTool still writes classic Message react state, which breaks supervisor delivery on the Agentic path.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-22 10:44:34 +08:00
Ed1s0nZ and Cursor
8da3c8c51b
fix: use a closed ring for project preview task stats
...
Replace the small refresh-arrow icon so it no longer renders as a spike at compact sizes.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-18 17:21:01 +08:00
公明
f44adaddf3
Update config.example.yaml
v1.7.19
2026-09-18 11:36:54 +08:00
Ed1s0nZ and Cursor
bf1b23f14b
fix: prefer exit final_result over supervisor intro text
...
When supervisor exits with a short assistant intro, surface exit.final_result in the final response so the audit report is not dropped.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-18 11:32:59 +08:00
Ed1s0nZ
569513f375
fix: restrict vendor ignore rule to repository root
2026-09-16 20:30:17 +08:00
Ed1s0nZ
4d53717cd7
test: make sudo failure regression independent of host privileges
2026-09-16 18:34:11 +08:00
Ed1s0nZ
f7882be546
feat: manage task process lifetimes and preserve turn history
2026-09-16 17:52:58 +08:00
Ed1s0nZ
fd1c13a43d
fix: normalize SSE error responses for Eino models
2026-09-14 16:34:22 +08:00
Ed1s0nZ
3a9e5dc7c3
fix: stream summaries and validate completion metadata
2026-09-14 16:16:56 +08:00
Ed1s0nZ
7f5c092eb2
docs: update WeChat group QR code
2026-09-14 13:50:06 +08:00
Ed1s0nZ
eca26f0e4d
docs: remove sponsorship content and QR image
2026-09-14 13:48:42 +08:00
Ed1s0nZ
ac101d8476
feat: add batch task approval settings and fix modal dropdown scrolling
2026-09-13 18:02:43 +08:00
苏尼克 and sycpro
c563567502
fix: startup banner hardcodes 127.0.0.1 regardless of server.host ( #307 )
...
The Web UI startup banner always printed 127.0.0.1, even when
server.host was bound to 0.0.0.0 or a specific interface. This made
users believe the host setting was ignored (the actual listen binding
was correct). Pass the configured host into the banner and expand
wildcard binds to the machine's real addresses so LAN URLs are shown.
Fixes #301
Co-authored-by: sycpro <sycpro@sycprodeMacBook-Pro.local >
2026-09-13 15:27:38 +08:00
公明
6edc70f3fc
Update config.example.yaml
v1.7.18
2026-09-08 16:10:29 +08:00