kuaifan
916ae97ca7
feat(ai): add AiTaskSuggestion module with prompt templates
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 15:30:06 +00:00
kuaifan
841405505d
feat(ai): add ProjectTaskAiEvent model
2026-01-21 15:30:06 +00:00
kuaifan
22a653bb0f
feat(ai): add project_task_ai_events migration
2026-01-21 15:30:06 +00:00
kuaifan
3482e4b1a8
fix(file): 修复日期格式文件名被误转换导致创建失败的问题
...
newDateString 函数在处理请求参数时会将所有符合日期格式的字符串
(如 "2026-01-15")转换为完整日期时间格式("2026-01-15 00:00:00"),
导致文件名中出现冒号,触发后端文件名校验错误。
修复方案:
- 直接调用时(key=null),保持原有行为用于显示格式化
- 递归处理对象属性时,仅对白名单字段(times、*_at)进行转换
- 其他字段(如 name)保持原值不转换
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 22:33:45 +00:00
kuaifan
9097369b0c
fix(ai-assistant): 修复图片预览调用不存在方法的错误
...
将 $A.previewFile 替换为 this.$store.dispatch("previewImage"),
解决 TypeError: $A.previewFile is not a function 错误。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 14:58:37 +00:00
kuaifan
95c6b53f10
fix(ai-assistant): 优化图片压缩逻辑避免重复质量压缩
...
- 新增 forceCompress 参数控制是否强制质量压缩
- compressImageForAI: 始终进行质量压缩(发送给 AI)
- saveImageToCache: 仅在需要缩小尺寸时才压缩(避免已压缩图片被重复压缩)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 14:52:57 +00:00
kuaifan
f7d5040b02
feat(ai-assistant): 支持拖放和粘贴上传图片
...
- 新增拖放上传:可将图片拖放到对话窗口任意位置
- 新增粘贴上传:在输入框中可直接粘贴剪贴板图片
- 提取 handleImageFiles 通用方法供多种上传方式复用
- 添加拖放时的视觉反馈(虚线边框 + 提示遮罩)
- 使用计数器方式正确处理嵌套元素和拖出窗口的情况
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 14:45:38 +00:00
kuaifan
26b7f83d35
no message
2026-01-20 14:45:02 +00:00
kuaifan
07b99c6e75
fix(ai-assistant): 修复 SSE 连接失败时状态未正确更新的问题
...
当 SSE 连接一开始就失败时,响应状态保持 'waiting' 而非 'streaming',
导致 onFailed 回调不会更新状态,UI 一直显示 loading。
现在同时处理 'streaming' 和 'waiting' 状态,并标记为错误状态显示失败提示。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 14:20:50 +00:00
kuaifan
cb5e7e2cc7
refactor(ai): 优化 AI 提示词构建逻辑
...
- withLanguagePreferencePrompt: 修复无语言标签时占位符未添加的问题
- handleBeforeSend: 简化操作会话提示词,移除冗余的工具名称说明
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 13:47:25 +00:00
kuaifan
2180998e81
feat(ai-assistant): 添加图片发送功能支持多模态对话
...
- 支持上传图片并压缩(当前消息 1024px,历史 512px)
- 图片独立缓存存储,使用占位符 [IMG:xxx] 替代 base64
- 新增 prompt-image.vue 组件展示历史图片缩略图
- 后端 AI.php 支持多模态消息格式处理
- 添加图片缓存清理机制(删除会话时同步清理)
- 优化 parsePromptContent 避免重复调用
- 会话标题自动过滤图片占位符
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 09:31:34 +00:00
kuaifan
478876ddc1
feat(workflow): 在工作流配置中添加规则摘要展示
...
在工作流展开后的配置表格上方添加规则摘要区块,根据实际配置动态展示:
- 状态负责人规则:区分添加模式、流转模式、剔除模式的不同描述
- 限制负责人规则:显示仅限任务负责人和项目管理员修改状态
- 关联列表规则:显示流转时自动移动至指定列表
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 01:55:00 +00:00
kuaifan
ae021fd148
fix(push): 修复友盟延迟推送已读检查失效的问题
...
消息ID取值路径错误,导致延迟推送时无法正确判断消息已读状态,
用户在PC端阅读消息后APP仍会收到重复推送。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 00:44:45 +00:00
kuaifan
f36317b081
fix(operation-client): 修正 WebSocket 路径格式并优化连接 URL 生成
v1.6.51
2026-01-19 10:52:22 +08:00
kuaifan
066a5a619c
build
2026-01-19 09:43:37 +08:00
kuaifan
654793156d
feat(micro-app): 添加额外的事件发射器方法以支持动态事件处理
2026-01-19 09:19:27 +08:00
kuaifan
ba65378c6b
fix(package): 更新 view-design-hi 依赖版本至 4.7.0-80
2026-01-19 01:14:05 +00:00
kuaifan
cb6c50b071
fix(ai-assistant): 修复弹窗和下拉菜单被其他弹窗遮挡的问题
...
- 使用 window.modalTransferIndex + 1000 作为动态 z-index
- 添加定时刷新机制:弹窗可见时 5 秒刷新,不可见时 20 秒刷新
- modal.vue 通过 zIndex prop 接收并应用 z-index
- float-button.vue 通过 $parent.topZIndex 获取 z-index
- Dropdown 和 Select 使用 ViewUI 新增的 z-index prop
2026-01-19 01:13:18 +00:00
kuaifan
2cb67fafe7
feat(ai-assistant): 支持任务弹窗和对话弹窗的场景检测
...
- 在 page-context.js 的 getPageContext 和 getSceneKey 函数中优先检测弹窗状态
- 当 taskId > 0 时使用 single-task 上下文
- 当 dialogModalShow && dialogId > 0 时使用 single-dialog 上下文
- 在 welcome-prompts.js 中添加弹窗场景检测逻辑
- 提取 formatPrompts 辅助函数减少代码重复
- 在 index.vue 的 welcomePromptsKey 中监听 taskId 和 dialogModalShow 变化
2026-01-18 23:52:26 +00:00
kuaifan
8eaba6f364
fix(ai-assistant): 优化流式响应期间的 loading 状态显示
...
- 修改 loading 显示条件,streaming 状态时继续显示 loading icon
- SSEClient 添加可选的 onFailed 回调,处理连接失败情况
- 修复 done 事件处理,确保状态正确转为 completed
- 解决工具调用期间 loading 动画过早消失的问题
2026-01-18 14:44:03 +00:00
kuaifan
c4f0fb5a3d
feat(ai-assistant): 合并连续工具使用的显示
...
在 Markdown 渲染前预处理文本,将连续的 tool-use 标签合并为一行显示:
- 连续相同工具显示计数(如 get_page_context x 2)
- 不同工具用逗号分隔
- 工具间的空行不会打断合并
2026-01-18 13:36:53 +00:00
kuaifan
59ad79fa58
feat(ai-assistant): 支持上下键切换历史输入
...
- 按 ↑ 键切换到上一条历史输入(光标在第一行时生效)
- 按 ↓ 键切换到下一条历史输入(光标在最后一行时生效)
- 历史记录使用 IndexedDB 持久化存储,最多保存 50 条
- 重复输入会移动到末尾而非重复添加
- 弹窗关闭时自动重置导航状态
2026-01-18 13:20:13 +00:00
kuaifan
c65f0276bd
feat(ai-assistant): 支持编辑历史问题并重新发送
...
- 鼠标悬停历史问题时显示编辑图标
- 点击编辑后在原位置显示内联编辑器
- 支持 Enter 发送、Shift+Enter 换行、Esc 取消
- 发送后删除该问题及之后的对话历史,重新发送编辑后的问题
- 正确处理中文输入法组合状态,避免误触发提交
2026-01-18 12:56:16 +00:00
kuaifan
f8b335a003
feat(ai-assistant): 增加元素向量匹配与关键词搜索能力
...
- 新增后端 match_elements API,使用向量相似度匹配页面元素
- 页面上下文采集支持关键词过滤,按 name/aria-label/placeholder/title 匹配
- 关键词匹配失败时自动降级为向量搜索
- 改进 findElementByRef 函数,使用 selector + name 双重匹配提高准确性
2026-01-18 11:50:27 +00:00
kuaifan
0ac4b546ba
feat(ai-assistant): 实现 AI 前端操作能力
...
新增三个 MCP 工具的前端支持:
- get_page_context: 基于 ARIA 角色收集页面元素,支持分页和区域筛选
- execute_action: 执行导航操作(打开任务/对话、切换项目/页面)
- execute_element_action: 元素级操作(click/type/select/focus/scroll/hover)
新增文件:
- operation-client.js: WebSocket 客户端,处理与 MCP Server 的通信
- page-context-collector.js: 页面上下文收集器,ref 系统和 cursor:pointer 扫描
- action-executor.js: 操作执行器,支持智能解析如 open_task_123
- operation-module.js: 模块编排,整合上述模块
修改文件:
- float-button.vue: 集成 operation-module,AI 助手打开时启用
- index.vue: 发射关闭事件供 float-button 监听
2026-01-18 01:35:13 +00:00
kuaifan
07a41ca0ac
feat(ai-assistant): 扩充提示词库并优化随机选择策略
...
- 为提示词增加 type(query/action/sync/review)和 pin 属性
- 新增 selectPrompts 函数:优先展示 pin 提示,按类型多样化抽样
- 各场景提示词数量扩充 2-3 倍,覆盖更多常见操作
- 部分场景使用动态数据(如 taskName、userName、groupName)个性化提示
2026-01-17 02:24:42 +00:00
kuaifan
347465fc4d
feat(ai-assistant): 按场景隔离会话存储
...
- 将 sessionStore 从对象改为数组,每个场景独立存储
- sessionCacheKey 改为 sessionCacheKeyPrefix,拼接场景 key 动态生成
- initSession 改为异步方法,切换场景时按需加载对应数据
- 使用防抖更新 displayWelcomePrompts,避免场景切换时闪屏
- 修复输入框文字颜色样式
2026-01-17 02:24:31 +00:00
kuaifan
acb9cd317c
feat(ai-assistant): 增加 SVG 图标和随机选择提示功能
2026-01-16 14:42:04 +00:00
kuaifan
b7213f8c47
feat(ai-assistant): 添加全屏切换功能
...
- 添加全屏按钮,支持点击或双击标题栏切换全屏
- 全屏时禁用拖动和调整大小
- 全屏状态下占满视口(保留 12px 边距)
- 关闭窗口时自动退出全屏状态
2026-01-16 10:26:57 +00:00
kuaifan
a3caf5ebdf
feat(ai-assistant): 支持拖动边缘调整聊天窗口大小
...
- 添加 8 个方向的调整大小控制点(四边 + 四角)
- 支持从任意边缘或角落拖动调整窗口尺寸
- 尺寸自动保存到 IndexedDB,下次打开时恢复
- 窗口大小限制:最小 380×400,最大 800×900
- 视口尺寸变化时自动调整窗口大小和位置
2026-01-16 10:24:41 +00:00
kuaifan
87dd07ef23
feat(ai-assistant): 基于场景标识管理会话恢复
...
- 新增 getSceneKey 函数,根据路由和实体生成唯一场景标识
- 会话初始化改为按 sceneKey 匹配历史记录,相同场景恢复会话
- 统一全局 AI 助手打开方式,manage.vue 通过事件触发 float-button
- resumeSession 超时时间统一为 86400 秒(1天)
2026-01-16 08:49:25 +00:00
kuaifan
0cefb7eaff
feat(task): 兼容 start_at/end_at 参数,统一转换为 times
...
- 新增 ProjectTask::normalizeTimes() 方法统一处理时间参数
- 支持只传 end_at 时自动补充 start_at
- 支持只传 start_at 时保留已有 end_at
2026-01-16 08:37:32 +00:00
kuaifan
ff87de9f44
feat(manage): 优化快捷键事件处理
2026-01-16 08:28:39 +00:00
kuaifan
22de7de87c
feat(manage): 优化新建菜单并添加 AI 助手快捷键
...
- 主按钮从「新建项目」改为「新建任务」
- 下拉菜单首位添加「AI 助手」选项(需安装 AI 插件)
- 添加 Ctrl/Cmd+I 快捷键打开 AI 助手
- 键盘设置页面同步显示 AI 助手快捷键
2026-01-16 07:46:50 +00:00
kuaifan
53dd9dca0f
feat(ai-assistant): 浮动按钮支持拖拽到边缘自动收起
...
- 拖拽按钮到屏幕边缘(≤12px)松开后自动收起为窄条
- 鼠标悬停窄条时自动展开,离开 1 秒后收起
- 点击收起状态的窄条直接打开 AI 助手
- 收起/展开过渡动画平滑,按钮中心位置保持不变
- 仅在 AI 插件安装后显示浮动按钮
2026-01-16 07:46:41 +00:00
kuaifan
12d6bbea19
feat(mcp): 增强文件工具支持文本内容读取
...
- get_file_detail: 添加 with_content 参数提取文本
- 新增 fetch_file_content 工具通过路径获取内容
2026-01-16 01:41:36 +00:00
kuaifan
23b06327d6
feat(file): 添加文件内容提取 API 支持分页读取
...
- FileController: 新增 fetch API 通过路径获取文本内容
- FileController: one API 支持 with_text 参数提取文本
- ManticoreFile: 实现分页提取 extractFileContentPaginated
- TextExtractor: 添加 truncate 参数支持内容截取
2026-01-16 01:41:28 +00:00
kuaifan
6c22e373f7
build
v1.6.27
2026-01-16 03:11:32 +08:00
kuaifan
4ebbb387ee
no message
2026-01-16 03:08:25 +08:00
kuaifan
9234fe3ed1
feat(ai-assistant): 添加欢迎界面快捷提示功能和交互优化
...
主要变更:
- 新增场景化快捷提示,根据页面类型显示相关操作建议
- 重新设计欢迎界面 UI,支持图标和可点击的提示卡片
- 修复浮动按钮点击判断逻辑(移动距离<5px 且 按下时间<200ms)
- 优化加载状态显示,移除冗余文案
- 支持 base64 编码格式的文件链接
2026-01-16 02:31:13 +08:00
kuaifan
70be6619e9
refactor(chat-input): 简化任务搜索逻辑
...
移除项目 ID 筛选条件,统一使用 scope: 'all_project' 搜索所有项目的任务。
2026-01-16 01:23:59 +08:00
kuaifan
c8c27e808f
fix(chat-input): 修复 @ 提及下拉框层级问题
...
设置 mention 下拉容器的 zIndex 为 modalTransferIndex + 1000,
确保在弹窗等高层级元素中正常显示。
2026-01-16 01:14:19 +08:00
kuaifan
9cb8c92492
fix(electron): 修复客户端 loadHash 域名判断逻辑
...
修复当 mainDomain 为 "public" 时无法正确判断域名的问题,
改为从缓存的 cacheServerUrl 获取实际域名进行比较。
同时修正跳转时错误使用 url 变量的问题,改为正确的 loadHash。
2026-01-16 01:08:03 +08:00
kuaifan
f4f9ee1d3d
fix(ai-assistant): 修复深色模式反转样式和交互优化
...
- 将 no-dark-content 类从容器移动到 SVG 元素,修复深色模式样式问题
- 添加深色模式反转时的悬浮按钮和聊天窗口样式适配
- 支持 Escape 键关闭聊天模式窗口
- 移除多余空白行
2026-01-16 01:07:54 +08:00
kuaifan
138336711f
no message
2026-01-16 00:20:52 +08:00
kuaifan
2163bb0bff
fix(electron): 修复客户端下载功能无法启动的问题
...
- 将 onRenderer 参数从 mainWindow 改为 getMainWindow 函数,解决模块加载时 mainWindow 为 null 导致下载无法触发的问题
- 处理 InterruptedError 错误,避免下载中断时抛出未处理异常
2026-01-16 00:20:52 +08:00
kuaifan
bc460f0da8
fix(ai-assistant): 修复 SSE 流式响应 done 事件错误处理
...
- 解析 done 事件的 payload 检查是否携带错误信息
- 移除错误提示中对 response.error 的直接展示
2026-01-15 16:18:53 +00:00
kuaifan
ad66811f49
refactor(ai-assistant): 重构页面上下文配置,支持更多页面类型
...
- 简化上下文提示词,移除能力范围描述
- 新增多个独立页面上下文支持:单任务、单对话、单文件、工作汇报等
- 传递路由参数给上下文函数,以获取实体 ID
- 移除不必要的 title 属性
2026-01-15 16:18:42 +00:00
kuaifan
70ad8c394a
feat(ai-assistant): 添加聊天窗口模式和页面上下文感知
...
- 新增 chat 显示模式,支持可拖拽的悬浮聊天窗口
- 新增 page-context.js,根据当前路由提供针对性系统提示词
- 优化浮动按钮:添加淡入淡出动画、修复右键菜单拖动问题、更新配色
- 重构 Modal 为独立组件,支持 modal/chat 双模式切换
- 恢复会话时自动滚动到底部
2026-01-15 15:06:38 +00:00
kuaifan
32ffecb905
feat(ai-assistant): 为各场景添加自定义标题并优化浮动按钮显示
...
- 为项目创建、任务创建、消息编写、汇报编辑、汇报分析场景的 AI 助手添加专属标题
- 在模态框显示时自动隐藏浮动按钮,避免 UI 重叠
2026-01-15 10:48:56 +00:00