|
|
6a2cb820bc
|
fix(versioning): 修复浅备份文件修改归属错误及列表/详情不一致
|
2026-07-09 18:45:40 +08:00 |
|
|
|
765196ea3c
|
feat(skills): host 模式 skill 归档目录迁移到运行态 agentskills
|
2026-07-09 18:42:42 +08:00 |
|
|
|
3db4e0beb4
|
feat(sandbox): macOS host sandbox deny-list for sensitive paths
- Add default deny_read_paths/deny_read_regexes to host_sandbox_policy.json
- Generate deny rules for ~/.ssh, ~/.aws, ~/.kube, keychains, .env, etc.
- Readonly sandbox: global read + deny sensitive + write only /dev/null
- Workspace-write sandbox: global read + deny sensitive + writable paths
- Keep workspace files readable by re-allowing workspace subpath after deny
- Backend API validates path authorization against deny list
- Path auth dialog hint explains readable paths behavior
|
2026-07-09 16:25:04 +08:00 |
|
|
|
15106e7d00
|
feat(branding): 将产品名统一为 Astrion
- 前端页面标题、登录/注册页、左侧栏、聊天头部、教程欢迎语全部改为 Astrion
- CLI 欢迎面板与状态栏改为 Astrion CLI
- 后端启动日志与 setup 向导改为 Astrion
- package.json 与 README 标题同步更新
- 主 system prompt 增加 Astrion 自我介绍,视觉模型 prompt 文件名从 qwenvl 改为 vl
- 项目记忆与 AGENTS.md/CLAUDE.md 新增产品名说明
|
2026-07-07 18:17:48 +08:00 |
|
|
|
2264a86851
|
feat(chat): 极简模式摘要行改为单行渐变+工具统计总结
|
2026-07-07 16:45:59 +08:00 |
|
|
|
478d24c4dd
|
feat(versioning): 重构版本控制为对话级浅备份 + 可选完全备份
本次变更是对版本控制功能的大范围重构,核心目标:
- 默认使用浅备份(只追踪 write_file/edit_file 实际修改的文件),避免大工作区首次初始化耗时十几秒;
- 保留可选的完全备份(git write-tree),不污染 git log;
- 回溯时统一选择范围(仅对话 / 对话+工作区)和模式(覆盖 / 复制);
- 修复复制对话、侧边栏同步、新建对话延迟、diff 统计与渲染等连锁问题。
后端改动:
- modules/shallow_versioning.py(新增)
- 实现 ShallowVersioningManager:track_edit、make_snapshot、rewind、list_snapshots。
- 基于 difflib.SequenceMatcher 计算真实 insertions/deletions,replace 场景正确显示 +N/-M。
- diff 详情使用结构化 add/remove/context 行,不再解析 unified_diff 文本。
- modules/versioning_manager.py
- 完全备份从 git commit 改为 git write-tree,字段 commit/parent_commit 改为 tree_hash/parent_tree_hash。
- 恢复改用 read-tree + checkout-index;create_checkpoint 支持 diff_summary 参数。
- get_checkpoint_detail 保留 API 字段名 last_commit/restored_commit 以兼容前端。
- core/main_terminal_parts/tools_execution.py
- write_file/edit_file 在执行前调用浅备份 track_edit,保留编辑前状态。
- server/chat_flow_task_main.py
- 消息轮次结束时根据 backup_mode 选择完全备份 create_checkpoint 或浅备份 make_snapshot。
- 浅备份模式下同时写入 ConversationVersioningManager 检查点行,让前端能统一展示。
- server/conversation.py
- restore/detail/list API 支持 shallow 模式;list/detail 对浅备份实时重新计算统计。
- 创建对话时读取 personalization 的 versioning_backup_mode,shallow 模式固定 tracking_mode 为 conversation_only。
- core/web_terminal.py
- _ensure_conversation_versioning_enabled 读取默认备份模式并写入 versioning meta。
- modules/file_manager/crud_mixin.py / replace_mixin.py
- write_file / edit_file 返回 original_file / new_file / replacement_details(真实旧行/新行)。
- modules/personalization_manager.py
- 新增 versioning_enabled_by_default、versioning_backup_mode(shallow/full)。
- utils/perf_log.py(新增)
- 创建新对话全链路性能日志,用于定位延迟瓶颈。
- utils/conversation_manager/{index,list_search,crud}_mixin.py
- 加性能日志;index_mixin 主动检查新增对话文件,修复侧边栏不同步。
前端改动:
- static/src/components/overlay/VersioningDialog.vue
- 去掉顶部管理范围下拉;底部新增回溯范围与回溯模式选择。
- diff 详情改为 div.diff-line 网格布局(marker + content),支持横向滚动,状态显示缩写 A/M/D。
- 修复 pre 标签空白黑行、容器被挤窄导致折行等问题。
- static/src/app/methods/versioning.ts
- 移除 mismatch 弹窗逻辑;支持 copy 模式;selectVersioningCheckpoint 增强错误捕获。
- static/src/components/personalization/PersonalizationDrawer.vue
- 「工作区与权限」新增版本控制默认开关与备份方式选择。
- static/src/stores/personalization.ts
- 新增 versioning_enabled_by_default、versioning_backup_mode 字段。
- static/src/components/chat/actions/ToolAction.vue / toolRenderers.ts
- edit_file / write_file 工具展示基于 result.details / result.new_file 的真实替换结果。
- static/src/app/state.ts / watchers.ts / App.vue
- 新增 versioningInitializingBackupToastId,完全备份初始化时显示 toast。
- static/src/app/methods/conversation/action.ts / message/send.ts
- host + 完全备份 + 默认开启时,创建新对话/从 /new 发送首条消息显示「正在初始化备份」toast。
验证:
- /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/bin/python3.9 -m unittest test.test_server_refactor_smoke 通过。
- npm run build 通过。
- 宿主机与 docker 模式新建对话、编辑文件、回溯、复制对话均验证通过。
|
2026-07-07 12:07:44 +08:00 |
|
|
|
7863e497d8
|
feat(ui): restore reply-header generating hint and refine composer avatar text
|
2026-07-06 04:47:40 +08:00 |
|
|
|
01dfec4c72
|
fix(tasks): return completion notification notices
|
2026-07-05 01:44:50 +08:00 |
|
|
|
4a54d6fbb7
|
feat(ui): add status avatar interactions
|
2026-07-05 00:57:06 +08:00 |
|
|
|
359caca672
|
feat(input): support file mentions
|
2026-07-04 22:58:58 +08:00 |
|
|
|
ae5676cd30
|
feat(ui): add assistant status avatar
|
2026-07-04 22:33:00 +08:00 |
|
|
|
dd5e94b294
|
fix(frontend): smooth initial conversation rendering
|
2026-06-28 10:57:54 +08:00 |
|
|
|
2b2ff44fcd
|
Fix: user message timestamp from backend, bubble action layout
|
2026-06-28 01:48:18 +08:00 |
|
|
|
0a4c75ce45
|
Add fold/expand and hover actions to user message bubbles
|
2026-06-28 00:15:07 +08:00 |
|
|
|
5ac17cd279
|
Unify font-family for form controls in global styles
|
2026-06-27 23:43:48 +08:00 |
|
|
|
6f47221ed8
|
Enhance docker toolbox with Office, OCR, media and Node.js tooling
|
2026-06-27 23:43:39 +08:00 |
|
|
|
737c4d61a2
|
fix(chat): 修复流式代码块闪烁、复制错位及数学公式实时多行渲染
- 将聊天消息中的代码块提取为独立 Vue 组件,稳定 key 避免流式输出时重建
- 代码块复制按钮直接复制当前组件内容,全局复制逻辑改为按容器查找
- 预处理 LaTeX 公式占位符并在组件 onUpdated 中实时渲染,支持多行 49888...49888
- 公式块过长时提供横向滚动,渲染后主动追底避免滚动锁定失效
|
2026-06-27 23:11:09 +08:00 |
|
|
|
f7a4708a84
|
chore(git): 取消追踪已迁移到 .agents/skills/ 的 skills/ 目录
|
2026-06-25 13:17:39 +08:00 |
|
|
|
ed9bbeecb7
|
feat(frontend): 子智能体结果添加统计信息并规范 meta/content 分区
- create_sub_agent 增强显示增加工作时间、调用次数、工具次数
- 将统计信息与最终回复放入 tool-result-content(结果区)
- 工具参数保留在 tool-result-meta(参数区)
- 在 AGENTS.md 新增 §5.6 工具结果显示规范
|
2026-06-25 12:38:58 +08:00 |
|
|
|
38ff51416f
|
fix(mcp_client_manager): restore missing imports and dataclass decorators after split
|
2026-06-25 11:56:19 +08:00 |
|
|
|
72a49a7c8d
|
fix: 修复对话计时器持久化、子智能体工具美化与状态查询,统一后台通知池
- 新增 server/work_timer.py,在对话真正空闲(无前台任务、无后台子智能体/后台命令/压缩)时持久化 work_timer,并同步内存副本,解决刷新后计时器回退问题。
- server/chat_flow_task_main.py / chat_flow.py / tasks/models.py 在任务结束/取消时按空闲判定决定是否持久化。
- 前端 lifecycle.ts 在仍有后台任务时不提前停止计时器。
- 子智能体工具(create/terminate/get_status)渲染美化,task 参数放在顶部元信息区。
- 子智能体状态查询支持返回「已完成」「已终止」「不存在」;修复 wait_for_completion 在 final_result 就绪前返回导致的「ID 被占用」误报。
- 统一后台完成通知池 poll_completion_notifications,合并子智能体与后台 run_command 两路轮询,避免逐条触发工作循环与单工作区互斥冲突。
- 删除本次新增的各类 debug_log / notify_pool_log 调用及辅助脚本。
|
2026-06-25 04:16:44 +08:00 |
|
|
|
f3e166e258
|
feat: 上传文件/图片路径提示 + 文件树去 emoji + CSV 预览优化
|
2026-06-24 20:44:26 +08:00 |
|
|
|
d1a9a51bb8
|
fix(terminal_ops): ssh 远程命令中避免重写 /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/bin/python3.9/pip 路径
|
2026-06-24 17:33:12 +08:00 |
|
|
|
fd29b3b89c
|
chore(android): 升级版本号到 1.0.41 (versionCode 43)
|
2026-06-24 17:06:57 +08:00 |
|
|
|
86eef988dc
|
fix(android): 修正下载URL解析和CookieManager线程
- 解析相对下载地址时使用 HOME_URL 域名根路径,避免把当前对话路径拼进URL
- CookieManager.getCookie 在主线程调用后再传入IO线程
|
2026-06-24 17:02:14 +08:00 |
|
|
|
6a5ba2d95e
|
fix(android): 下载改为应用内下载+系统分享sheet
- 移除 DownloadManager,改用 HttpURLConnection 下载到应用私有目录
- 通过 FileProvider 生成 content URI,调用 ACTION_SEND 弹出系统分享面板
- 下载请求携带 WebView Cookie,保证鉴权
- 版本号 1.0.40 (versionCode 42)
|
2026-06-24 16:51:20 +08:00 |
|
|
|
626b7eaa52
|
fix(android): 修复媒体权限重请求与下载失败
- 在唤起图片/视频文件选择器前主动请求 READ_MEDIA_IMAGES/VIDEO 权限,
拒绝后支持再次请求并引导到系统设置页。
- Android 下载桥接补全相对 URL 为绝对地址,并携带 WebView 登录 Cookie。
- Android 10+ 指定公共下载目录失败时回退到 DownloadManager 默认位置。
- 前端 markdown 下载链接与资源下载统一优先走 AndroidDownloadBridge。
|
2026-06-24 16:13:24 +08:00 |
|
|
|
09a67f20dd
|
fix(android): 禁止 Android App 文件卡片内图片点击预览
|
2026-06-24 15:43:44 +08:00 |
|
|
|
bb2b98fc82
|
feat(chat): 自研 pdfjs-dist canvas 渲染器替换 vue-pdf-embed,实现 PDF 卡片内联滚动预览
|
2026-06-24 13:18:31 +08:00 |
|
|
|
bd9af317e4
|
feat(chat): 使用 vue-pdf-embed 实现 PDF 卡片内联滚动预览
- 新增 PdfPreview 组件,基于 vue-pdf-embed essential/legacy 构建
- PDF 文件卡片与其他文件卡片统一在卡片下半部分预览
- 移除 iframe 浏览器原生预览和 AndroidPdfBridge 原生预览分支
- 同步更新 Android App 版本号与更新说明
|
2026-06-24 12:41:56 +08:00 |
|
|
|
4fcc6a1b25
|
chore(android): 版本号递增到1.0.37(39)
|
2026-06-24 01:55:50 +08:00 |
|
|
|
15dea9c2e5
|
fix(android): 修复PDF/下载/文件选择器,常规设置增加上传日志
|
2026-06-24 01:50:03 +08:00 |
|
|
|
426825d475
|
fix(server): 修正/api/app/version的project_root路径计算
|
2026-06-24 01:33:04 +08:00 |
|
|
|
cc22541560
|
chore(android): 更新WEB_ASSET_VERSION以打破缓存
|
2026-06-24 01:11:13 +08:00 |
|
|
|
f7b79418f9
|
fix(android): 修复App文件下载、PDF卡片展示与本地媒体发送
|
2026-06-24 00:59:48 +08:00 |
|
|
|
e4a663594d
|
feat: Android App 原生 PDF 预览与前端 show_file 卡片
- 集成 AndroidPdfViewer (mhiew fork) 实现不依赖浏览器的 PDF 预览
- 新增 PdfPreviewActivity 与 JS Bridge (AndroidPdfBridge)
- ShowFileCard 在 Android App 内对 PDF 显示「预览」按钮,不内嵌 iframe
- 新增 /api/file/content 后端接口用于文件内容 inline 预览
- 前端支持 <show_file> 标签与 download:// 链接渲染
- 更新 Android 版本号至 1.0.35
|
2026-06-24 00:06:10 +08:00 |
|
|
|
53b3669f1d
|
fix(stop): 强停止按钮两段式逻辑与 work_timer 持久化
|
2026-06-23 19:27:50 +08:00 |
|
|
|
e90610ed05
|
fix(frontend): 修复刷新后AI等待提示与终端侧边栏重复问题
- 修复模型调用工具后刷新页面,AI回复头部等待提示文字再次出现的bug
- restoreTaskState 根据 hasAssistantContentEvent 精确设置 awaitingFirstContent
- handleAiMessageStart 从头重建时保留 restoreTaskState 的设置
- handleToolStart 兜底清除 awaitingFirstContent
- 修复刷新页面后终端侧边栏已有内容重复显示绿色箭头与输入内容的bug
- 后端 get_snapshot/get_terminal_output 返回 last_event_time
- 前端 TerminalPanel 基于 last_event_time 对 terminal_output 事件去重
|
2026-06-22 20:35:00 +08:00 |
|
|
|
2eed4d5b86
|
fix(search): switch Tavily key to AGENT_TAVILY_API_KEY
|
2026-06-22 14:33:12 +08:00 |
|
|
|
f03446a3bb
|
fix: task 结束时清理残留 pending runtime mode,避免下次工作插入错误通知
场景:模型最后一次输出(无工具调用)后、task 仍 running 时切换权限/执行环境,
进入 queue_*_change 只设置 pending,task 随即结束未进入工具循环,
pending 残留到下次工作首次工具调用时才被应用并插入变更通知。
修复:在 handle_task_with_sender 末尾调用 apply_pending_runtime_mode_changes
立即应用并清空 pending,丢弃生成的 notices(等同空闲期切换语义)。
|
2026-06-22 14:17:55 +08:00 |
|
|
|
f44c09a7ce
|
fix(search): 移除 web_search 的 Tavily AI 摘要
|
2026-06-22 00:18:29 +08:00 |
|
|
|
b4080f3880
|
docs: update runtime data paths and project status to 2026-06
|
2026-06-21 22:46:25 +08:00 |
|
|
|
b76708de13
|
fix(sub_agent): add missing datetime import in toolkit.py
|
2026-06-21 01:50:55 +08:00 |
|
|
|
2bfbddb0dd
|
fix(server/tasks): 修复 skill 创建任务失败并补充调试日志
- 补全从 api.py 拆到 skills.py 时遗漏的 _build_skill_context_messages 导入
- 捕获 skill 文件读取时的 UnicodeDecodeError/OSError,转为 400 错误
- 在 skill 路径解析与读取流程中增加详细 debug_log
|
2026-06-21 01:45:45 +08:00 |
|
|
|
8e1a339102
|
refactor: split api_client, tool_result_formatter, tools_definition into sub-packages
- utils/api_client.py -> utils/api_client/ (mixin-based)
- utils/tool_result_formatter.py -> utils/tool_result_formatter/ (by tool category)
- core/main_terminal_parts/tools_definition.py -> core/main_terminal_parts/tools_definition/ (by tool group)
- Update AGENTS.md, CLAUDE.md, and split memory index
- Keep original files as compatibility re-exports
- Includes TerminalPanel display adjustment and ToolAction.vue diff line fix
|
2026-06-20 21:51:45 +08:00 |
|
|
|
6c368d2aa0
|
fix(frontend): preserve edit file trailing context
|
2026-06-20 19:19:58 +08:00 |
|
|
|
f661dc6456
|
refactor(server,modules,utils,frontend): split oversized modules into packages and fix regressions
- Split server/chat.py, server/status.py, server/tasks.py into sub-packages
- Split utils/context_manager.py, utils/conversation_manager.py into mixin packages
- Split modules/file_manager.py, persistent_terminal.py, terminal_ops.py, mcp_client_manager.py into packages
- Split core/main_terminal_parts/context.py into base + mixins
- Split static/src/app/methods/{ui,message,upload,taskPolling,conversation} into sub-modules
- Fix flattened method exports, dynamic import paths, missing cross-module imports
- Add missing permission/network/execution mode constants and _PERMISSION_MODE_LABEL
- Update AGENTS.md, CLAUDE.md and project memories to reflect new structure
|
2026-06-20 15:54:48 +08:00 |
|
|
|
8235c4ce70
|
fix(goal): 停止对话后清理工作区目标状态,避免继承到新对话
- /api/tasks/<task_id>/cancel 现在会同步停止该工作区的目标模式
- POST /api/tasks 创建非目标模式任务时清理残留活动目标
- 保留 /api/client_debug_log 前端日志上报端点供后续复用
|
2026-06-20 13:06:37 +08:00 |
|
|
|
7b683ab390
|
fix(sub_agent): export TERMINAL_STATUSES in package __init__
fix(api_client): classify httpx.RemoteProtocolError as connection_error
|
2026-06-20 12:15:18 +08:00 |
|
|
|
9ed956518c
|
refactor(sub_agent): 子智能体从 Node.js 子进程改为主进程内 Python 协程
- 重写子智能体执行核心,不再启动 easyagent Node.js 子进程
- 新增 modules/sub_agent/ 包集中管理子智能体逻辑
- 工具调用复用主进程 WebTerminal.handle_tool_call,自然经过沙箱/容器链路
- 子智能体模型独立读取 ~/.agents/<mode>/config/sub_agent_models.json
- 支持 8 个工具:read_file/write_file/edit_file(replacements+replace_all)/run_command/web_search/extract_webpage/search_workspace/read_mediafile
- 修复子智能体进度弹窗:标题颜色、write_file 显示、过滤非 progress 条目、统一滚动条样式
- 更新 AGENTS.md / CLAUDE.md 子智能体描述
- 新增 test/test_sub_agent_regression.py 回归测试
|
2026-06-20 00:26:45 +08:00 |
|