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
737c4d61a2
fix(chat): 修复流式代码块闪烁、复制错位及数学公式实时多行渲染
...
- 将聊天消息中的代码块提取为独立 Vue 组件,稳定 key 避免流式输出时重建
- 代码块复制按钮直接复制当前组件内容,全局复制逻辑改为按容器查找
- 预处理 LaTeX 公式占位符并在组件 onUpdated 中实时渲染,支持多行 49888...49888
- 公式块过长时提供横向滚动,渲染后主动追底避免滚动锁定失效
2026-06-27 23:11:09 +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
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
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
15dea9c2e5
fix(android): 修复PDF/下载/文件选择器,常规设置增加上传日志
2026-06-24 01:50:03 +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
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
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
a212a0076c
feat: support setting default workspace/project from frontend
...
- Add set_default_host_workspace() and /api/host/workspaces/set-default
- Add default_workspace_id persistence in UserManager and /api/projects/set-default
- Add 'Set as default' button in HostWorkspaceManageDialog
- Sync default badge in LeftPanel workspace list
- Update all workspace/project APIs to return real default_workspace_id
2026-06-19 21:48:24 +08:00
2c6d208be7
fix(input): /菜单上下键滚动抖动与高亮条偶发闪烁
...
- 修复 rAF 第一帧 now 早于 startTime 导致 scrollTop 反向抖动
- 过滤动画结束后的延迟 scroll 事件,避免误进入 manualScrolled 模式导致高亮条闪一下消失
2026-06-19 21:24:47 +08:00
2766a8ab57
fix(sub-agent): 修复网络受限时无法创建子智能体,并修复详情页只显示最近一次工具调用的问题
2026-06-19 20:23:44 +08:00
09af37055a
fix: 右侧面板拖拽与终端滚动
...
- 修复仅打开终端面板时右侧无法左右拖动的问题
- 修复切换终端会话后未自动滚动到最新输出的问题
2026-06-19 17:45:09 +08:00
a6775598dc
fix(terminal): 新建终端后侧边栏实时输出不更新
...
修复 TerminalPanel 中因空历史导致 _historyReady 始终为 false,
进而跳过所有 terminal_output 事件的问题。现在无论历史是否为空
都会标记加载完成;同时在历史加载期间暂存实时输出,避免首屏丢失。
2026-06-19 13:16:50 +08:00
c2d460a706
feat: 宿主机模式网络沙箱
...
- macOS sandbox-exec profile 支持 network_permission 参数 (restricted/full/none)
- backend: 透传网络权限至 run_command / terminal_session / sub_agent / background_command
- 后台 run_command 接入沙箱执行
- 自动审核模式兼容网络权限报错 markers
- 运行时切换网络权限通过 pending 机制 + user 消息通知
- 提示词注入网络状态 (仅沙箱模式)
- 前端权限菜单新增网络权限组 (受限/完全开放)
- direct 模式下网络权限组变灰禁用
- settings.json 默认 HOST_SANDBOX_NETWORK_PERMISSION=restricted
2026-06-19 00:22:30 +08:00
f75e2f07a3
refactor(deep_compression): 改造深度压缩消息结构、提示词加载与前端展示
...
- 删除 compact 文件和 inject guide 中的最近工具记录
- 新结构:用户所有输入(按压缩轮次分段)+ 历次压缩总结 + 最近一次输入
- 用户输入分段标记改为 <第N次压缩> 和 <当前触发的第X次压缩>
- 压缩总结提示词迁移到 prompts/deep_compression_summary.txt
- deep_compression_records 增加 user_inputs_before 和 summary 字段
- 压缩后清空全部 frozen prompt 缓存
- 修复 wait 模式 in-place 压缩前端不刷新问题
- 更新手动压缩确认弹窗文案
- 修复 _apply_workspace_personalization_preferences 测试 mock 签名
- 清理 context.py 中误导性的主提示词构建参数
2026-06-18 14:50:16 +08:00
c5dde27faa
fix(frontend): terminal_input 显示参数从 timeout 改为 output_wait,标签改为等待时间
2026-06-17 22:02:06 +08:00
f43b5ea73b
fix(chat): 运行期间恢复旧滚动逻辑,堆叠块更多按钮也接入锚定
2026-06-17 16:25:02 +08:00
edb557bdd3
feat(chat): 优化块展开/折叠滚动锚定,避免 stick-to-bottom 弹簧追底顿挫
2026-06-17 15:24:15 +08:00
1da269e2aa
fix(前端): 目标模式刷新/切换对话稳定性修复
...
- 切换/停止任务后立即 stopPolling,防止旧任务目标事件污染新对话
- 目标进度/完成/停止回调增加 conversation_id 归属校验
- 刷新恢复改为复用现有 assistant 容器+增量追加事件,去掉无条件强制重建,避免视觉闪回与同步重放卡死
- 压缩消息不再另起 work segment,继续前一段
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 19:46:19 +08:00
50e49d60ec
fix: /菜单手动滚动后高亮条切换为鼠标hover模式
2026-06-12 01:17:51 +08:00
095e0631c1
feat(sidebar): 统一Git和终端侧边栏空状态样式
...
- Git空状态改为图标+大字,与终端风格一致
- 终端空状态去掉小字,文字改为当前没有开启的终端
- 统一头部栏高度为38px
- 统一空状态图标颜色为var(--text-tertiary) + 整体opacity
- 统一空tab文字为13px/600字重/左对齐
- 新增folder-git-2.svg图标
2026-06-12 01:04:40 +08:00
55097cb3fc
fix: 消息队列自动发送消息metadata错误标记为guidance
2026-06-12 00:34:31 +08:00
7d716b8b90
fix(ui): 终端侧边栏自动开关改为仅数量变化时触发一次
...
- 旧逻辑每次轮询都执行开关,导致面板关不掉/瞬间关闭
- 新增 previousTerminalCount 追踪,仅 0→>0 时开、>0→0 时关
2026-06-12 00:26:15 +08:00
2e54f2c343
feat(terminal): 实时终端改造为侧边栏面板,支持拖拽分割与自动开关
...
- 将实时终端从独立页面改造为 Vue3 侧边栏面板,与 Git 面板上下排列
- 使用 xterm.js + Grid 布局,支持三主题配色适配
- 上下拖拽分割条,动态调整终端/Git 面板比例
- 输入栏上方新增终端数量按钮,点击快捷打开
- 个人空间新增「自动打开终端面板」开关(外观与显示分类)
- REST API /api/terminals 获取终端列表,多时机自动刷新
- 有终端自动打开面板,无终端自动关闭
2026-06-12 00:18:27 +08:00
788753f6fd
feat(slash-menu): 扩展 / 菜单至19项,可见行数5→7,等比缩放样式,优化间距
2026-06-11 11:47:41 +08:00
af4ec5c1a8
feat(composer): / 菜单选中切换添加流畅动画
...
- 提取 skill-slash-menu-wrapper 外壳层,高亮条脱离滚动容器独立定位
- 一个 rAF 循环同时驱动 scrollTop 和高亮条 top,帧帧精确同步
- 中间区域:高亮条视觉上钉在正中,列表平滑滚动
- 两端边界:高亮条平滑跟随,无偏差
2026-06-11 01:29:03 +08:00
f9d194f100
fix(ui): 块模式展开箭头改用SVG mask,修复偏位和非中心旋转
2026-06-11 00:24:56 +08:00
04128fac14
fix(frontend): 修复 read_file 搜索结果显示"行??"的问题
...
后端 search_text 返回 line_start/line_end,前端错误地读取了不存在的 line_number 字段。
改为正确读取 line_start 和 line_end,且当上下文窗口合并时显示完整行范围。
2026-06-10 19:49:06 +08:00
76e4c5144e
feat(personalization): 去掉保存按钮,所有选项改为实时自动保存
...
- personalization store 新增 scheduleAutoSave/autoSave 防抖方法(500ms)
- updateField 及所有 mutation 方法修改后自动触发保存
- PersonalizationDrawer 删除保存按钮和 settings-save-bar
- handleStackedHideBordersChange 移除显式 save 调用
2026-06-10 19:44:33 +08:00
0ed262c87b
fix(ui): 深色模式块底部运行指示线太亮,改用 accent 灰色系
2026-06-10 19:27:28 +08:00
dcb25dfe89
fix: 堆叠块深色hover不可见 & 底部块高度偏差 & 新增隐藏边线开关
...
- 深色模式 hover 修复:用 !important 覆盖 _overlays 中的 surface-panel 规则,使用 --hover-bg(6%白) 对齐对话列表 hover
- 底部块高度修正:shellHeight = targetShell + 2 补偿 border-box 下内容区裁剪
- 深色模式运行横条改为白色(var(--text-primary))
- 新增隐藏边线开关:后端 PersonalForm 持久化 stacked_hide_borders,前端条件渲染开关(仅堆叠模式可见)
2026-06-10 19:18:29 +08:00
3abbf30422
feat(admin): 管理员密码管理功能,支持搜索用户名/邮箱重置密码
2026-06-10 17:41:21 +08:00
820ec69354
feat(memory): 新增项目记忆系统,整合总体+项目记忆注入
...
- 新建 .agents/memory/ 项目记忆目录,支持 YAML frontmatter + Markdown
- 新增 update_project_memory / recall_project_memory 工具(复用 write_file/read_file)
- 新建 memory_system.txt prompt,总体长期记忆 + 项目记忆统一注入
- 记忆从 workspace_system.txt 中移出,独立为 memory_prompt 注入
- 重排 system prompt 注入顺序:主→权限→环境→对话→个性化→工作区→AGENTS.md→skills→记忆→禁用
- 压缩后选择性 invalidate 4 个 frozen keys(skills/workspace/personalization/memory)
- 前端:notebook/notebook-pen 图标、动画、状态文案、展开内容渲染
- 优化三个记忆工具的 description 和 memory_system prompt,引导模型主动调用
2026-06-10 15:14:01 +08:00