ymq
|
69925d48ba
|
fix(workspace_files): right = VBox(100%x100%) + fixed-height droppable + filler VScrollPanel file list
|
2026-08-15 12:11:49 +08:00 |
|
ymq
|
327d3f39a4
|
fix(workspace_files): file list top-align and scrollable (drop filler/height)
|
2026-08-15 11:53:28 +08:00 |
|
ymq
|
319b72c735
|
feat: 微信通道配置界面(公众号配置表单+用户openid绑定)+cockpit入口按钮
|
2026-08-15 10:11:51 +08:00 |
|
ymq
|
4a9eb227df
|
feat: 微信通道(机构级公众号配置+用户openid绑定+回调框架)+修复mysql.ddl.sql的xls2ui双重引号bug
|
2026-08-15 10:09:57 +08:00 |
|
ymq
|
c29f676cb3
|
refactor: cockpit AgentIO适配gateway统一入口
|
2026-08-15 10:02:54 +08:00 |
|
ymq
|
d36d5ed4f6
|
feat: cockpit前端处理ask_user类型,把agent提问展示给用户
|
2026-08-15 08:19:03 +08:00 |
|
ymq
|
b601dc94c3
|
fix: workspace_tree 叶子判定排除 __pycache__(与扫描一致)
tests/detector 仅含 __pycache__ 子目录,之前 is_leaf 判定把它算作子目录导致误标非叶子。
修正:叶子判定排除隐藏目录和 __pycache__,与下方目录扫描规则一致。
|
2026-08-15 01:45:12 +08:00 |
|
ymq
|
d5fc14ae1c
|
fix: workspace_tree 叶子判定——无子目录的目录标 is_leaf=true
原把所有目录硬编码 is_leaf:false,导致无子目录的目录(叶子)也被当成可展开的非叶子。
改为扫描子目录判断 has_subdir,is_leaf = not has_subdir。
|
2026-08-15 01:40:08 +08:00 |
|
ymq
|
d5ce25e553
|
fix: cockpit v1 diagnose 心跳超时判定 10→20 分钟(对齐 LLM 重试最坏时长)
|
2026-08-15 00:46:31 +08:00 |
|
ymq
|
13b0aa5de5
|
feat: cockpit v1 diagnose_project 运行中任务返回 claimed_by+心跳陈旧度
|
2026-08-15 00:27:13 +08:00 |
|
ymq
|
f519f48dd5
|
fix: cockpit v1 answer_question 回答后恢复任务 waiting→submitted(清 claimed_by)
|
2026-08-15 00:11:48 +08:00 |
|
ymq
|
5e84ddbb07
|
fix: workspace_browse 补 import json + 去 pid 残留;workspace_popup 复用 get_workspace_dir
|
2026-08-14 18:09:51 +08:00 |
|
ymq
|
b9a458af53
|
refactor: 8 个 workspace dspy 内联重复逻辑收敛到 get_workspace_dir/get_workspace_base
|
2026-08-14 18:07:38 +08:00 |
|
p
|
f68755edf8
|
feat: cockpit 会话传 pipeline_id,支持产线缺省模型
|
2026-08-14 18:03:06 +08:00 |
|
ymq
|
ebcb89da56
|
refactor: workspace_base 从 appbase params 表读(去硬编码,params 表不存在时用默认值兜底)
|
2026-08-14 15:59:55 +08:00 |
|
ymq
|
af178f98ad
|
fix: 机构远程空间配置表单取值/赋值 bug + get 支持 owner_type
根因:bricks.Form.getValue() 返回 FormData 对象(非普通对象),v.remote_host=undefined 传空值报格式非法;setValue 是 InlineForm 方法,Form 无此方法导致加载失败
- 取值 getValue→_getValue(返回 {name:value} 普通对象)
- 加载遍历 name_inputs 逐个 setValue
- work_env.dspy get 加 owner_type 参数,org 页面加载 org 级(原 user 级优先导致看不到 org 配置)
|
2026-08-14 15:15:24 +08:00 |
|
ymq
|
1fd895213c
|
feat: 远程目录 UI 提示改为相对路径(从远程用户 home 目录开始)
|
2026-08-14 14:20:53 +08:00 |
|
ymq
|
ece913f186
|
fix: sandbox_run 审计 result 用 rc==0 判断(run 返回无 ok 键)
|
2026-08-14 13:39:26 +08:00 |
|
ymq
|
e33bd24227
|
fix: 补全审计接入点
- deploy_account: account_create/account_remove/sandbox_run 审计
- work_env: org_key_gen/remote_bwrap 审计
|
2026-08-14 13:37:53 +08:00 |
|
p
|
66e7181b39
|
fix: 远程空间配置页按钮改用 show_message/show_error
|
2026-08-14 13:37:28 +08:00 |
|
p
|
8f9ae04028
|
feat: 机构远程空间配置页(sd_org_remote)+ 权限注册
|
2026-08-14 13:33:07 +08:00 |
|
ymq
|
534591e5d5
|
refactor: 审计 API 迁移到 app_audit 模块
- 删除 wwwroot/api/audit.dspy(迁移到 app_audit)
- work_env.dspy 改 import app_audit.audit_service
- load_path.py 移除 audit.dspy 的 owner.audit 注册
|
2026-08-14 12:21:01 +08:00 |
|
ymq
|
4742a67d80
|
feat: load_path 注册 audit API(owner.audit) + work_env/deploy_account(logined)
|
2026-08-14 12:12:33 +08:00 |
|
ymq
|
359c57b156
|
feat: 审计 API(仅 owner.audit)+ work_env 写审计日志
|
2026-08-14 12:11:01 +08:00 |
|
ymq
|
9ab0db53ad
|
feat: work_env 加 get_org_pubkey(admin 获取机构公钥配置远程免密)
|
2026-08-14 11:58:52 +08:00 |
|
ymq
|
a97512a760
|
security: org 级工作环境仅超管可设 + user 级强制设自己
|
2026-08-14 11:26:39 +08:00 |
|
ymq
|
7350e04cf6
|
feat: 工作环境 API (get/set/ensure_remote_bwrap) + deploy_account run 支持远程模式
|
2026-08-14 11:12:59 +08:00 |
|
ymq
|
f3e81a69db
|
security: Wterm(workspace_edit) bwrap沙箱化,防 rm -rf/sudo提权/越界/网络攻击
- vi 编辑包进 bwrap 沙箱:只暴露 workspace(挂/home) + 只读系统目录
- --unshare-user/pid/ipc/uts/net 隔离,no_new_privileges 阻断 sudo setuid
- bwrap 缺失时拒绝终端(安全优先,不给完整 shell)
|
2026-08-13 18:33:31 +08:00 |
|
ymq
|
803afa5cfe
|
fix: cockpit_chat_v2 输出 content 流式格式(AgentIO→AgentOut 期望 content/reasoning_content/error,非 widget JSON)
|
2026-08-13 18:19:33 +08:00 |
|
ymq
|
f6e919aa84
|
feat: 部署账号 API (ensure/list/remove/run/file读写)
|
2026-08-13 17:57:13 +08:00 |
|
p
|
9bc5e81574
|
fix: load_path find_app_root walk up to pipeline-app root
|
2026-08-13 17:49:23 +08:00 |
|
p
|
addfdabc76
|
workspace: Wterm cursorBlink + PopupWindow resizable
|
2026-08-13 17:19:08 +08:00 |
|
p
|
9f4307b5d9
|
workspace: fix xterm cmdargs (asyncssh create_process single command)
|
2026-08-13 17:00:42 +08:00 |
|
p
|
67f318888d
|
workspace: open use entire_url for xterm trigger
|
2026-08-13 16:56:56 +08:00 |
|
p
|
e19f5c5a2e
|
workspace: open dispatch (vi/office-pdf/media) + file serving + edit xterm
|
2026-08-13 16:40:13 +08:00 |
|
p
|
c7d5e63491
|
workspace: use URLSearchParams for upload/delete
|
2026-08-13 15:57:55 +08:00 |
|
p
|
5f7ddc197a
|
workspace: add upload/open/delete tools + drag-drop
|
2026-08-13 15:56:21 +08:00 |
|
p
|
e0d095cb04
|
tree: fix __root__ expansion returns subdirs
|
2026-08-13 14:26:56 +08:00 |
|
p
|
751c953ad3
|
workspace: use ResourceBrowser widget
|
2026-08-13 12:02:00 +08:00 |
|
p
|
0805eb219b
|
workspace: use remove+widgetBuild per row, monkey-patch dispatch
|
2026-08-12 18:50:43 +08:00 |
|
p
|
c934111748
|
popup: VBox for files panel
|
2026-08-12 18:49:19 +08:00 |
|
p
|
6f6e31fcf0
|
workspace: monkey-patch Tree.dispatch for selected
|
2026-08-12 18:48:11 +08:00 |
|
p
|
ef39d586bb
|
tree: root only initially, click to expand
|
2026-08-12 18:44:40 +08:00 |
|
p
|
0a0260708a
|
workspace: cache-busting fetch URLs
|
2026-08-12 18:42:16 +08:00 |
|
p
|
3349bb1b33
|
tree: nested children for initial load
|
2026-08-12 18:39:46 +08:00 |
|
p
|
af7d7fc716
|
tree: lazy-load children only
|
2026-08-12 18:37:51 +08:00 |
|
p
|
1dfaa7a573
|
fix: getWidgetById with bricks.app scope, initial root load
|
2026-08-12 18:35:33 +08:00 |
|
p
|
7f29e5c157
|
fix: getWidgetById with popup scope, no PopupWindow binds
|
2026-08-12 18:21:07 +08:00 |
|
p
|
8a095c712c
|
workspace: full tree dspy + urlwidget button + PopupWindow binds
|
2026-08-12 18:09:49 +08:00 |
|
p
|
9ec29726b2
|
workspace: use closure vars for tree+fp, no getWidgetById
|
2026-08-12 18:01:44 +08:00 |
|