kuaifan
|
055cf53738
|
build
v1.6.10
|
2026-01-14 22:31:27 +08:00 |
|
kuaifan
|
cb414b48f6
|
refactor: 优化窗口关闭拦截机制,采用声明式注册
- 将 onBeforeUnload 从 utils.js 移至 web-tab-manager.js
- 新增声明式拦截注册机制,前端通过 registerCloseInterceptor 声明需要拦截
- 仅对已声明拦截的页面执行 JS 检查,未声明的直接关闭
- 添加 5 秒超时保护,防止网页卡死导致无法关闭窗口
- 修复 command+w 快捷键关闭整个窗口而非当前 tab 的问题
|
2026-01-14 22:29:36 +08:00 |
|
kuaifan
|
1c27719ac4
|
no message
|
2026-01-14 20:15:48 +08:00 |
|
kuaifan
|
ec33327408
|
fix: 修复文件夹上传时数据库死锁问题
使用 Redis 分布式锁对同一用户往相同父目录的上传请求进行排队,
避免并发上传导致的 MySQL 死锁错误 (SQLSTATE[40001])
|
2026-01-14 11:44:47 +00:00 |
|
kuaifan
|
c2c27a684b
|
feat: 复制/周期任务时复制子任务并重置状态
- 复制任务时同时复制子任务,子任务状态重置为未完成
- 周期任务生成时,子任务状态重置为未完成并映射到 start 工作流
- 新增 getProjectFlowItems 方法获取项目工作流状态
- 新增 formatFlowItemName 方法格式化工作流状态名称
- 新增 copySubTasks 方法复制子任务到新父任务
- 新增 moveSubTasks 方法移动子任务,重构 moveTask 复用代码
|
2026-01-14 11:31:28 +00:00 |
|
kuaifan
|
224703a6d0
|
feat: 支持输入法组合状态,优化输入框键盘事件处理
|
2026-01-14 10:11:28 +00:00 |
|
kuaifan
|
dd20711c04
|
refactor: 移除冗余日志记录,优化代码可读性
|
2026-01-14 09:41:06 +00:00 |
|
kuaifan
|
3a2b7b1400
|
feat: 新增 AI 提示词占位符与用户上下文注入
- 新增 PromptPlaceholder 模块,负责构建用户上下文和条件性提示块
- 用户上下文包含:基础信息、部门、同事印象、场景角色、任务列表
- 前端使用 {{SYSTEM_OPTIONAL_PROMPTS}} 占位符,后端统一替换为实际内容
- 重构 BotReceiveMsgTask 和 ai.js,复用 PromptPlaceholder 逻辑
- 任务列表支持智能排序:逾期优先 → 最近活跃 → 负责人优先
|
2026-01-14 09:33:20 +00:00 |
|
kuaifan
|
792989a504
|
refactor: 统一 webTab 事件分发逻辑
新增 dispatchToTabBar() 函数,封装 window 模式检查逻辑:
- window 模式无标签栏,跳过 executeJavaScript 调用
- 避免 did-stop-loading 监听器累积导致 MaxListenersExceededWarning
- 统一 14 处调用点,提升代码一致性和可维护性
|
2026-01-14 13:41:28 +08:00 |
|
kuaifan
|
c0183e62fb
|
style: 统一 webTab 主题配色风格
- 深色模式:背景 #202124,活跃Tab #323639,文字 #D6D6D7
- 浅色模式:背景 #F1F3F4,活跃Tab #FFFFFF,文字 #5F6368
- 同步更新 WebView 默认背景色和加载页背景色
- 更新 earth 图标选中态颜色适配新主题
- 删除未使用的 link 图标资源
- 语言切换时重建预加载池
|
2026-01-14 11:50:15 +08:00 |
|
kuaifan
|
ce5bb5f187
|
refactor: 统一 webTab 背景色设置逻辑
- 移除 createWebTabView 中冗余的深色/浅色主题背景色判断分支
- 统一使用 utils.getDefaultBackgroundColor() 获取默认背景色
- 移除 did-stop-loading 事件中不必要的背景色重置逻辑
|
2026-01-14 10:14:31 +08:00 |
|
kuaifan
|
a34b0c88d5
|
refactor: 优化 webTab 管理和状态同步
- 封装 safeCloseWebTab 方法,复用标签关闭时的未保存数据检查逻辑
- 添加 recreatePreloadPool,支持主题切换后重建预加载池
- broadcastCommand 扩展到 webTab views,确保子窗口收到同步消息
- 修复 synchTheme 和 saveDialogDraft 的跨窗口参数传递
- IDBDel 返回 Promise 并正确 await
|
2026-01-14 10:11:41 +08:00 |
|
kuaifan
|
9c7ec58bb6
|
no message
|
2026-01-14 09:14:35 +08:00 |
|
kuaifan
|
067a736b57
|
fix: 恢复窗口/标签关闭时的未保存数据检查
恢复 onBeforeUnload 功能,防止关闭窗口或标签时丢失未保存的数据:
- 快捷键关闭:检查当前激活标签的 onBeforeUnload
- 点击窗口关闭按钮:依次检查所有标签,遇到拦截时激活对应标签
- 点击 tab 关闭按钮:检查对应标签的 onBeforeUnload
- 重构 close 事件处理,使用 early return 简化代码结构
|
2026-01-13 14:49:59 +00:00 |
|
kuaifan
|
f8f08c9d0d
|
no message
|
2026-01-13 14:48:05 +00:00 |
|
kuaifan
|
4f2d382fd6
|
fix: 移除 Markdown 消息中的工具使用标签
|
2026-01-13 12:57:54 +00:00 |
|
kuaifan
|
42e4ddbd17
|
fix: 修复权限级联同步缺口
修复 Manticore 搜索索引在特定场景下 allowed_users 权限未能正确同步的问题:
Observer.updated 补充:
- ProjectUserObserver: 处理项目成员移交时的权限级联
- ProjectTaskUserObserver: 处理任务成员移交时的权限更新
批量操作绕过 Observer 修复(delete → remove):
- FileUser: deleteFileAll/deleteFileUser 方法
- ProjectTask: 可见性设置时的批量删除
- ProjectController: 子任务升级和任务复制时的批量删除
文件批量更新封装:
- File 新增 updateChildFilesUserid() 方法,统一处理子文件 userid
更新及 Manticore 同步
|
2026-01-13 11:55:45 +00:00 |
|
kuaifan
|
3026cd698f
|
feat: 添加文本换行样式以改善审批详情的可读性
|
2026-01-13 10:54:13 +00:00 |
|
kuaifan
|
47c53a18fa
|
fix: 修复跨项目移动任务时子任务工作流状态未更新的问题
跨项目移动任务时,子任务的 flow_item_id 和 flow_item_name 没有被正确更新,
导致子任务在新项目中显示的工作流状态与新项目的工作流不匹配。
|
2026-01-13 10:50:42 +00:00 |
|
kuaifan
|
22926e19cd
|
refactor: 统一 dootask:// 链接处理与资源格式指南
- 将 dootask:// 协议链接处理逻辑从 AIAssistant 迁移到 DialogMarkdown 组件
- 新增 beforeNavigate prop 支持导航前回调(如关闭弹窗)
- 后端 BotReceiveMsgTask 添加条件性资源格式指南提示词
- 前端 ai.js 新增 SEARCH_AI_SYSTEM_PROMPT 和 DOOTASK_RESOURCE_FORMAT_GUIDE
- SearchBox 改用统一的 SEARCH_AI_SYSTEM_PROMPT 常量
- 重构 ai.js 代码组织,添加注释说明各常量用途
|
2026-01-13 10:31:31 +00:00 |
|
kuaifan
|
495b25e2b1
|
feat: 增强 MCP 配置助手,支持多种 AI 工具
- 新增 Tabs 组件展示多种 AI 工具的配置方式
- 支持 Claude Code、Cursor、VS Code、Windsurf、Claude Desktop、
Codex、Kiro、Trae、Antigravity、Opencode 等工具
- 丰富使用示例,按任务管理、项目查询、工作汇报、团队协作、
文件查找等分类展示
- 优化国际化支持,使用 t() 函数替代 $L() 实现中英双语
|
2026-01-13 08:56:20 +00:00 |
|
kuaifan
|
01908b7c48
|
no message
|
2026-01-13 03:56:56 +00:00 |
|
kuaifan
|
b138dc580d
|
refactor: 重构 MCP 工具并新增搜索功能
主要变更:
- 新增 search_dialogs 工具,支持按名称搜索群聊或联系人
- 新增 intelligent_search 统一搜索工具,支持任务/项目/文件/联系人/消息
- 重构 send_message 工具,支持 dialog_id 或 userid 两种方式
- 重构 get_message_list 工具,支持 dialog_id 或 userid
- 优化 get_project 并行获取项目详情和列信息
- 统一返回字段命名 (id -> task_id/project_id/file_id/report_id)
- 修正 HTTP 方法 (POST 用于 add/remove 操作)
- 精简工具描述文案
|
2026-01-13 02:23:14 +00:00 |
|
kuaifan
|
78b14f4aad
|
feat: 添加 dialog_only 参数支持仅搜索对话
在 dialog/search 接口中增加 dialog_only 可选参数,
启用后仅搜索会话和联系人,跳过消息内容搜索。
|
2026-01-12 15:03:04 +00:00 |
|
kuaifan
|
60387aa521
|
refactor: 优化注释
|
2026-01-12 09:09:24 +00:00 |
|
kuaifan
|
633826cb89
|
refactor: 迁移到 navigationHistory API
将已废弃的 webContents 导航方法迁移到新的 navigationHistory API:
- canGoBack() → navigationHistory.canGoBack()
- canGoForward() → navigationHistory.canGoForward()
- goBack() → navigationHistory.goBack()
- goForward() → navigationHistory.goForward()
|
2026-01-12 07:27:18 +00:00 |
|
kuaifan
|
cf6d180fc5
|
feat: 添加 webTab 预加载池机制
引入预加载池以优化 webTab 首屏加载性能:
- 应用启动后延迟创建预加载 view,避免影响主窗口
- 新建 tab 时优先复用已预加载的 view
- 取走后自动延迟补充,保持池容量
- 应用退出前清理预加载资源
|
2026-01-12 06:55:57 +00:00 |
|
kuaifan
|
0d85174250
|
feat: 添加 favicon 双层缓存机制
实现仿 Chrome 的 favicon 缓存系统:
- 第一层:域名缓存 - 导航开始时立即查询,快速显示 favicon
- 第二层:URL 缓存 - favicon URL 精确匹配
- 支持内存缓存 + 文件持久化,应用启动时自动清理 30 天过期缓存
|
2026-01-12 05:40:57 +00:00 |
|
kuaifan
|
925449c66a
|
refactor: 抽离 webTab 窗口管理为独立模块
将 electron.js 中 1000+ 行的 webTab 窗口管理逻辑抽离到
electron/lib/web-tab-manager.js,提升代码可维护性
|
2026-01-12 05:15:32 +00:00 |
|
kuaifan
|
cd58b418af
|
refactor: 新增 updateWindow 接口并移除废弃的预加载窗口调用
- 新增 updateWindow IPC handler,支持窗口/标签页内部导航时更新 URL 和名称
- 将前端 updateChildWindow 调用替换为 updateWindow
- 移除 reloadPreloadWindow 调用(预加载窗口已删除)
|
2026-01-12 01:44:34 +00:00 |
|
kuaifan
|
4cfc5e6024
|
refactor: 移除 userAgent 相关代码以简化窗口管理逻辑
|
2026-01-12 09:07:10 +08:00 |
|
kuaifan
|
7321ab06f0
|
refactor: 优化窗口尺寸和位置管理逻辑
|
2026-01-12 09:02:58 +08:00 |
|
kuaifan
|
790f5d4838
|
refactor: 统一 Electron 子窗口与标签页窗口管理
将原有独立子窗口 (childWindow) 和标签页窗口 (webTabWindow) 合并为统一的
窗口管理系统,通过 mode 参数区分窗口类型:
- mode='tab': 标签页模式(有导航栏,默认)
- mode='window': 独立窗口模式(无导航栏)
主要变更:
- 移除 createChildWindow、preCreateChildWindow 等独立窗口相关代码
- 扩展 createWebTabWindow 支持 mode 参数
- 简化前端 openWindow 调用,将 config 对象扁平化为顶层参数
- 更新所有调用点使用新的统一接口
|
2026-01-11 21:13:55 +00:00 |
|
kuaifan
|
731dbc5507
|
feat: 标签页新增更多菜单功能
- 新增更多菜单按钮替代原浏览器打开按钮
- 实现重新加载、复制链接地址、默认浏览器打开功能
- 实现将标签页移至新窗口功能
- 实现打印功能
- 菜单支持根据当前 URL 类型动态启用/禁用选项
- 添加相关国际化文案
|
2026-01-10 16:35:19 +00:00 |
|
kuaifan
|
3b1dce6d67
|
feat: 标签页新增更多菜单按钮
- 将原浏览器打开按钮替换为更多菜单按钮
- 添加 more.svg 图标并调整样式
- 实现 webTabShowMenu 通信接口及菜单框架
|
2026-01-10 15:47:43 +00:00 |
|
kuaifan
|
4929d44ce7
|
refactor: 优化标签页加载状态管理与 URL 加载逻辑
- 新增 loadContentUrl 方法统一处理完整 URL 和相对路径的加载
- 优化标签页加载状态,忽略 SPA 路由切换(isSameDocument),避免频繁闪烁
- 添加定时检查器确保加载状态正确停止
- windowClose/windowDestroy 支持识别 tab 页面发送者,仅关闭对应标签
- 子窗口重启过程中不再意外销毁窗口
- 微应用打开标签页时传递标题信息
- isLocalHost 对空 URL 和相对路径返回 true
|
2026-01-10 15:44:58 +00:00 |
|
kuaifan
|
ce42c2a660
|
refactor(frontend): 统一域名获取与比较逻辑
- 新增 mainDomain() 函数,简化 mainUrl 域名获取
- 新增 removeMainUrlPrefix() 函数,用于移除 URL 的服务器域名前缀
- getDomain() 返回值统一转为小写,确保域名比较不受大小写影响
- 将多处 getDomain(mainUrl()) 调用替换为 mainDomain(),提升代码可读性
|
2026-01-10 05:48:25 +00:00 |
|
kuaifan
|
16d5ffd4f9
|
refactor: 统一客户端窗口打开接口并支持标签页名称复用
- 合并 openChildWindow 和 openWebTabWindow 为统一的 openWindow 接口
- 新增 webTabNameMap 映射,支持按名称查找和复用已存在的标签页
- 标签页增加 name、titleFixed 元数据支持
- 窗口间转移标签时同步更新名称映射
- 重构前端 actions,统一使用 openWindow 方法,通过 mode 参数区分窗口/标签模式
- 更新所有调用点使用新的统一接口
|
2026-01-10 02:08:36 +00:00 |
|
kuaifan
|
fc74e0d952
|
feat: 标签页拖拽合并时支持插入到鼠标所在位置
- getAllWebTabWindowsInfo 增加返回 tabCount 用于计算标签位置
- attachToWindow 根据鼠标 screenX 和目标窗口标签信息计算插入位置
- 拖拽标签合并到其他窗口时插入到鼠标位置而非总在末尾
|
2026-01-09 15:17:21 +00:00 |
|
kuaifan
|
089f219280
|
feat: 标签页拖拽创建新窗口时窗口定位优化及 favicon 验证
- 优化拖拽标签创建新窗口时的位置计算,使用 setPosition 确保窗口出现在鼠标位置
- 重构 createWebTabWindowInstance 函数,仅在明确指定 x/y 时设置窗口坐标
- 新增 fetchFaviconAsBase64 工具函数,在主进程验证 favicon 并转为 base64
- favicon 验证后再保存和传递给前端,确保拖拽后 icon 状态与原窗口一致
- 简化前端 favicon 处理逻辑,移除重复的图片验证代码
|
2026-01-09 13:58:22 +00:00 |
|
kuaifan
|
9d62ec1ec1
|
feat: 添加标签页拖拽排序功能
- 引入 Sortable.js 库以支持标签页的拖拽排序
- 实现标签页的动态插入和顺序重排
- 更新样式以适应拖拽效果
- 增加 IPC 通信以同步标签页顺序变化
- 优化标签页创建和关闭逻辑,提升用户体验
|
2026-01-09 15:46:02 +08:00 |
|
kuaifan
|
5a4e51d1e0
|
no message
|
2026-01-08 14:18:45 +00:00 |
|
kuaifan
|
f0982d7d9a
|
efactor: 拆分 electron 主进程代码为独立模块
将 electron.js 中的 PDF 导出、渲染器辅助函数和工具函数拆分为独立模块:
- electron/lib/pdf-export.js: PDF 导出相关功能
- electron/lib/renderer.js: 渲染器辅助函数
- electron/lib/other.js: 平台检测和 URL 验证常量
此重构提高了代码可维护性,减少了主文件的复杂度。
|
2026-01-08 13:54:55 +00:00 |
|
kuaifan
|
1ac3a4cc96
|
feat: 添加 user_update hook 事件并重构用户生命周期 hook
- 新增 user_update 事件,当用户基本信息变更时触发
- 扩展 dispatchUserHook payload 包含完整用户信息(tel、profession、birthday、address、introduction、departments)
- 将 user_onboard/user_offboard/user_update hook 触发逻辑集中到 UserObserver
- 区分 profile_update(用户自己修改)和 admin_update(管理员修改)事件类型
- 修复 User::reg() 中 Manticore 索引同步遗漏问题
- 排除机器人账号的 hook 触发
|
2026-01-08 11:31:16 +00:00 |
|
kuaifan
|
7f9c42d3d8
|
no message
|
2026-01-07 04:11:42 +00:00 |
|
kuaifan
|
4e99e398d6
|
feat: 添加动态时间提示和自动校正功能
- 在"最早可提前"下方动态显示最早可签到时间
- 在"最晚可延后"下方动态显示最晚可签到时间(跨天显示"次日"前缀)
- 输入值变化时自动校正到临界值,防止时间重叠
- 调整表单布局支持换行显示提示信息
|
2026-01-07 04:11:32 +00:00 |
|
kuaifan
|
395fc155ce
|
feat: 使用用户头像作为封面背景
在用户详情弹窗的顶部封面区域,使用用户头像作为模糊背景,
提升视觉效果和个性化体验。
- 将用户头像通过 CSS 变量传递给封面区域
- 添加背景模糊滤镜和缩放效果
- 修复容器溢出问题
|
2026-01-07 03:11:34 +00:00 |
|
kuaifan
|
6bdefc4f03
|
feat: 支持跨天打卡和时间重叠验证
- 允许签到"最晚可延后"时间超过 23:59:59,支持员工凌晨下班打卡
- 凌晨打卡记录自动归属前一天
- 前后端新增提前/延后时间重叠验证,防止产生歧义时间窗口
- 优化导出逻辑以正确处理跨天打卡记录
- 打卡消息提示归属日期信息
|
2026-01-06 12:31:41 +00:00 |
|
kuaifan
|
d4547cbe97
|
refactor: 移除语言偏好部分,简化文档内容
|
2026-01-06 08:57:38 +00:00 |
|
kuaifan
|
c9a0b7481a
|
feat: 统一用户编辑入口为独立弹窗组件
- 新增 UserEditModal 组件,整合昵称、电话、职位、邮箱、密码、部门、个人简介、个性标签编辑
- 签到模式下支持编辑人脸图片和 MAC 地址,并高亮显示相关字段
- TeamManagement 移除分散的编辑入口(快捷修改、修改邮箱/密码/部门/人脸/MAC 等菜单)
- 简化 operationUser 方法,移除冗余的 data/watch/methods
|
2026-01-06 08:55:04 +00:00 |
|