kuaifan
df6c1fc04d
refactor(i18n): 完成前端国际化改造
2026-07-20 02:35:07 +00:00
kuaifan
71ca6ba249
feat(dashboard): 完善负责人视角界面与范围切换
2026-07-18 23:43:10 +00:00
kuaifan
4b92ecb422
feat(dashboard): 完善个人视角空状态
2026-07-18 04:47:12 +00:00
kuaifan
f7bc724e13
feat(dialog): 撤回文本消息后本地显示"重新编辑"占位
...
- 撤回自己的文本/MD 消息后,原位置显示仅本人可见的"你撤回了一条消息 重新编辑"占位(仿微信)
- 占位纯本地存储(IndexedDB 持久化,Electron 多窗口 syncDispatch 同步),5 分钟过期自动清除
- 点"重新编辑"回填原内容到输入框(富文本还原 @提及/表情,先退出引用/编辑模式),占位随即移除
- 占位沿用原消息 id 排序定位,仅在已加载消息范围内合并显示,不干扰翻页与已读上报
- 同步更新 ai-kb recall 文档与前端语言文件
2026-07-16 11:20:37 +00:00
kuaifan
13ba1d3bd7
feat(file): 我的文件纳入已共享文件,修复板块切换缓存丢失
...
- 「我的文件」改为展示我拥有的全部(含已共享出去的),与「共享文件」在“我共享的”上刻意重叠
- 缓存改为 stale-while-revalidate:按板块懒加载,切回该板块/目录先读缓存再拉接口静态刷新
- getFiles 清理过期行按 scope 限定范围,避免刷新一个板块误删另一板块(同为 pid=0)的缓存
- 微调 file-tabs 来源筛选字号与面包屑上边距
- 同步 ai-kb 文件入口说明(last_verified v1.8.69)
2026-07-14 12:16:22 +00:00
kuaifan
7b25f243ab
feat(file): 文件页拆分「我的/共享」两个板块并合并工具栏为单行
...
- 顶部 Tab 切换:我的文件(私有 share=0)/ 共享文件(双向,含我共享出去的 + 别人共享给我的),共享板块支持「全部/我共享的/共享给我的」二次筛选
- 后端 File::getFileList 增加 scope 参数,按板块拆分根目录查询;FileController::lists 透传并校验
- 前端用 board/sharedSrc 取代原「仅显示我的」复选框,board 持久化到 IDB
- Tab、子筛选、视图切换合并到同一行(flex 自动换行,视图切换靠最右)
- 根目录不再重复显示板块标题,仅进入子文件夹时显示面包屑(板块名为可点击回根入口)
- 同步更新 ai-kb 文件入口说明
2026-07-14 03:49:59 +00:00
kuaifan
184fb27680
feat(upload): 分片上传统一链路,5 场景突破单文件 1G 限制
...
- 新增 api/upload/{init,chunk,merge} 入口与 ChunkUpload 模块(5MB 分片、3 并发、Redis 状态机)
- 5 场景接入:文件柜 / 聊天 / 任务附件 / 头像&系统图片 / 编辑器粘贴
- 秒传:同用户同 hash 复用 FileContent 物理文件,零传输
- 续传:Redis + localStorage 双索引,24h TTL
- 与老接口对齐:pid 锁、≤300 上限、webkit_relative_path 目录递归、overwrite 替换语义
- init 阶段读 file_upload_limit 拦截超限,避免传完分片才报错
- DeleteTmpTask 加 tmp_chunks case 兜底清理 24h 未合并目录
- files 表新增 hash 列(migration)
- 前端 chunkedUpload wrapper:主线程 spark-md5 流式 + 指数退避重试
- ai-kb 同步:upload / file-upload-limit / upload-size-limit 三个 chunk
2026-06-30 04:30:09 +00:00
kuaifan
09439b555c
fix(apps): 插件菜单角标补初始同步接口 badge/list
...
插件应用菜单来自 appstore installed(不含 count/dot),原先只有自定义微
应用经 microapp_menu 注入角标,导致插件角标只能靠实时 WS、刷新即丢。
- 新增 GET api/apps/badge/list(用户 token 鉴权)返回 userBadges 快照
(插件 + 自定义统一覆盖),前端 updateMicroAppsStatus 拉取后 hydrateMap
- appBadges store hydrate -> hydrateMap(按角标 map 初始化,不再依赖 menu_items)
- 删除已冗余的 Badge::attachMenuBadges(调用 + 方法定义)
2026-06-29 11:57:18 +00:00
kuaifan
420d46d5cc
feat(apps): 新增应用菜单角标(数字/红点,per-user 实时推送)
...
插件/微应用可在自己的菜单入口显示数字或红点角标,插件未打开也生效。
- 后端:新增 app_badges 表 + AppBadge 模型 + Module/Badge 业务编排 +
AppsController(badge__set 应用密钥鉴权 / badge__clear 用户鉴权)
- 每应用独立密钥 APP_SECRET:按 appid 持久化于 appstore config.yml,鉴权校验
- 推送:复用 PushTask 下发 appBadge WS 消息;microapp_menu 附带初始角标
- 前端:appBadges Vuex module + WS 处理 + 三处菜单渲染(应用卡片/主菜单入口/
父『应用』入口聚合)+ 移动端 Tabbar + 打开即清(badge_clear_on_open)
- 用户离职级联清理;同步 ai-kb 角标知识
2026-06-29 02:32:19 +00:00
kuaifan
f0e48d98e4
feat(messenger): 移动端发送按钮默认改为显示发送按钮
...
移动端 send_button_app 默认值由 enter 改为 button,
默认显示独立发送按钮(桌面端保持 enter 回车发送)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 14:01:50 +08:00
kuaifan
97bd58312e
refactor(approve): 移除主仓库内置审批功能,收敛到插件/微应用
...
删除 ApproveController、ApproveProcInstHistory/ApproveProcMsg 模型、approve
前端页面与导出组件,移除 approve 路由与 flow_url 配置;审批消息模板改为对接
插件侧能力。版本号 1.7.90 → 1.7.91。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 11:35:49 +00:00
kuaifan
da095a1a80
feat(ai-assistant): 页面操作搬到主程序 /ws + doo task notify + 删 OCR
...
页面操作传输层从 MCP 独立 WebSocket 迁到主程序常驻 /ws:
- 后端 AssistantController 加 operation__dispatch/result(fd 归属校验 +
PushTask 精推 + Cache 轮询取结果),WebSocketService onMessage 加
operationResult 回包分支
- 前端 actions.js 加 case "operation" 经 emitter 桥接到浮窗执行后回包;
float-button.vue 接 aiOperationRequest;operation-module.js 解耦、
executor 惰性化;删除 operation-client.js(不再单连 MCP WS)
ai-kb 同步:tool-binding.yaml 去掉 4 个工具(3 页面 + OCR),相关 chunk
reconcile(措辞去 MCP 化、OCR 改多模态识图),工具数 33→29
i18n:后端新增文案登记 original-api.txt
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 01:31:21 +00:00
kuaifan
ef7293704b
refactor(manage): 收口部门负责人ID规范化逻辑并简化后端对话可见性校验
...
- 后端:任务群/项目群统一按项目级共享判断,不再区分任务可见性
- 前端:新增 department/owner/ids/save mutation 及 normalizeIntArray 工具函数
- 前端:departmentOwnerReadonlyUrls 从 action 局部变量提升至 state
- 前端:修复 TaskDetail 提示文本多余空格
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 06:06:39 +00:00
kuaifan
0863e5529a
feat(manage): 实现部门负责人视角,支持只读查看部门成员项目与任务
...
部门负责人/部门管理员可通过系统配置开启,选择管理部门后只读查看
本部门及下级部门成员的全部项目和任务。前端自动根据 department_readonly
标记禁用编辑操作,后端统一注入负责人视角上下文控制数据访问边界。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 00:14:36 +00:00
kuaifan
7e5b31cfb2
feat(template): 添加共享模板功能,支持项目间模板使用控制
2026-05-11 03:26:59 +00:00
kuaifan
7dc641e69e
feat(template): 添加跨项目任务模板支持,增加使用统计和搜索功能
2026-05-11 01:13:54 +00:00
kuaifan
8def4addc4
fix(chat): 修复 AI 助手(userid=-1)在多处显示异常的问题
...
在 UserAvatar 组件中统一处理 AI 助手虚拟用户,避免各组件重复判断;
同时修复 @提及、回复引用、转发消息等场景下的 undefined 和空白显示问题,
并过滤批量用户请求中的无效 userid。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 12:34:27 +00:00
kuaifan
04708cedb6
feat(task): 增加解除任务关联功能
...
支持用户在任务详情中解除误关联的任务,权限与修改任务一致(项目负责人、任务负责人、任务协助人)。
- 新增 ProjectTaskRelation::deleteRelation() 删除双向关联并推送 WebSocket
- 新增 API POST /api/project/task/related/delete 接口
- 前端关联任务列表 hover 显示删除按钮,点击确认后解除关联
Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-09 06:38:13 +00:00
kuaifan
6a00b87f72
fix(ai): 修正 API 路由地址格式
...
将 ai-apply/ai-dismiss 改为 ai_apply/ai_dismiss,
匹配 Laravel 路由方法命名转换规则(task__ai_apply -> ai_apply)
Generated with [Claude Code](https://claude.ai/code )
via [Happy](https://happy.engineering )
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
2026-01-21 15:30:07 +00:00
kuaifan
75073d4320
fix(ai): address security and robustness issues from code review
...
Security fixes:
- Add escapeUserInput() to prevent Prompt injection via user input
- Validate msgId belongs to dialogId in updateMessageStatus()
- Add type parameter whitelist validation in ai-apply/ai-dismiss
- Add event record validation in task__ai_dismiss
Robustness fixes:
- Use atomic update for markProcessing to prevent concurrent processing
- Add subtask count limit check before creation (max 50)
- Disable similar task feature until vector search is implemented
- Fix Promise anti-pattern in frontend actions
Generated with [Claude Code](https://claude.ai/code )
via [Happy](https://happy.engineering )
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
2026-01-21 15:30:06 +00:00
kuaifan
165ad03024
feat(ai): add ai-apply/ai-dismiss protocol handlers
2026-01-21 15:30:06 +00:00
kuaifan
b794ba7a6b
refactor(ui): 优化客户端下载入口位置
...
- 将仪表盘页面的客户端下载链接移至右上角用户菜单
- 登录页保留右下角客户端下载链接
- 新增 clientDownloadUrl 全局状态,统一管理下载地址
- AI 浮动按钮在登录页不显示
2026-01-15 09:09:58 +00:00
kuaifan
a34b0c88d5
refactor: 优化 webTab 管理和状态同步
...
- 封装 safeCloseWebTab 方法,复用标签关闭时的未保存数据检查逻辑
- 添加 recreatePreloadPool,支持主题切换后重建预加载池
- broadcastCommand 扩展到 webTab views,确保子窗口收到同步消息
- 修复 synchTheme 和 saveDialogDraft 的跨窗口参数传递
- IDBDel 返回 Promise 并正确 await
2026-01-14 10:11:41 +08:00
kuaifan
cd58b418af
refactor: 新增 updateWindow 接口并移除废弃的预加载窗口调用
...
- 新增 updateWindow IPC handler,支持窗口/标签页内部导航时更新 URL 和名称
- 将前端 updateChildWindow 调用替换为 updateWindow
- 移除 reloadPreloadWindow 调用(预加载窗口已删除)
2026-01-12 01:44:34 +00: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
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
42a2eb56c7
feat: 升级语音识别模型并优化转写逻辑
...
- 语音识别模型从 whisper-1 升级到 gpt-4o-mini-transcribe
- 根据用户语言设置自动添加简繁体中文提示词
- 录音转文字新增 dialog_id 参数,支持获取对话上下文提高识别准确率
- 移除前端语言手动选择功能,简化用户操作
- 添加参数空值保护
- 优化 reasoning_effort 参数逻辑,区分 gpt-5 和 gpt-5.1+ 版本
2026-01-05 02:26:36 +00:00
kuaifan
0d8e10b60e
feat: 优化 IDBClear 方法,支持保留指定键的缓存项
2026-01-04 01:40:13 +00:00
kuaifan
92d23014a7
fix: avoid opening blank dialog window when dialogId is 0
2025-12-29 16:22:06 +00:00
kuaifan
353a05f344
feat: 优化 openMicroApp 方法,增强参数校验和微应用 ID 解析逻辑
2025-12-18 20:59:44 +00:00
kuaifan
d94ebfe04c
feat: 添加解析类型的方法,优化微应用配置逻辑
2025-12-18 08:26:42 +00:00
kuaifan
d77406951d
feat: 更新微应用菜单配置,统一使用类型字段替代URL类型字段
2025-12-18 02:44:37 +00:00
kuaifan
c668340661
feat: 优化消息推送逻辑
2025-12-05 02:10:37 +00:00
kuaifan
4ef78d2c81
feat: 添加点击消息打开微应用功能
2025-12-02 06:29:45 +00:00
kuaifan
fe0b8aed20
no message
2025-11-28 22:09:55 +00:00
kuaifan
4983fe8feb
feat: 添加自定义微应用菜单功能,支持管理员配置和保存菜单项
2025-11-19 07:54:47 +00:00
kuaifan
69c66053b7
feat: 完善AI助手功能,新增消息提示词整理接口,优化流式消息处理逻辑,移除冗余数据表和相关代码
2025-11-07 22:25:45 +00:00
kuaifan
ad560a8555
feat: 增强流消息处理,支持回应和会话ID
2025-11-07 08:13:41 +00:00
kuaifan
4bfe33a37f
feat: 优化打开会话事件接口,优化机器人webhook逻辑
...
- 新增 `open__event` 方法用于处理打开会话事件
- 移除旧的 `open__webhook` 方法
- 更新前端调用逻辑,使用新的事件接口
- 优化 webhook 事件推送逻辑,简化参数传递
2025-11-06 13:59:10 +00:00
王昱
4933930afd
feat: 调整机器人webhook事件
...
- 可取消接收消息事件
- 打开机器人会话窗口时推送webhook消息,相同机器人消息缓存1分钟
2025-11-06 04:08:39 +00:00
kuaifan
ab4640382d
feat: 添加会员扩展信息接口,优化用户详情和个人设置页面
2025-11-06 02:01:15 +00:00
kuaifan
5370bee369
Merge branch 'dev' into pro
...
# Conflicts:
# CHANGELOG.md
# cmd
# package.json
# public/js/build/404.5645cb91.js
# public/js/build/404.9598cd97.js
# public/js/build/404.a5736629.js
# public/js/build/AceEditor.8747edb1.js
# public/js/build/AceEditor.af35593f.js
# public/js/build/AceEditor.e7f5b602.js
# public/js/build/DialogWrapper.0c7cd033.js
# public/js/build/DialogWrapper.64072671.js
# public/js/build/DialogWrapper.7fcb5b27.js
# public/js/build/Drawio.2ca59c31.js
# public/js/build/Drawio.6691a6ef.js
# public/js/build/Drawio.e3576e4e.js
# public/js/build/FileContent.3a899bcc.js
# public/js/build/FileContent.c311c89c.js
# public/js/build/FileContent.d8e600e1.js
# public/js/build/FilePreview.87ca99d9.js
# public/js/build/FilePreview.f8134ee5.js
# public/js/build/FilePreview.f9f90ff4.js
# public/js/build/IFrame.02598edc.js
# public/js/build/IFrame.2a7489ee.js
# public/js/build/IFrame.be9780e1.js
# public/js/build/ImgUpload.29e2d88d.js
# public/js/build/ImgUpload.a4eff264.js
# public/js/build/ImgUpload.e96999cf.js
# public/js/build/Minder.2bce6c16.js
# public/js/build/Minder.b1d1145f.js
# public/js/build/Minder.f5bc5aca.js
# public/js/build/OnlyOffice.31e7af4f.js
# public/js/build/OnlyOffice.574ad560.js
# public/js/build/OnlyOffice.9ce921ed.js
# public/js/build/ReportEdit.5eb3a319.js
# public/js/build/ReportEdit.9141bb93.js
# public/js/build/ReportEdit.e3369e09.js
# public/js/build/SearchButton.906cea81.js
# public/js/build/SearchButton.cf201525.js
# public/js/build/SearchButton.d41addb6.js
# public/js/build/TEditor.7b9a9d91.js
# public/js/build/TEditor.971af80f.js
# public/js/build/TEditor.cc94d929.js
# public/js/build/TaskDetail.38815236.js
# public/js/build/TaskDetail.d1a9952e.js
# public/js/build/TaskDetail.dfd78b4a.js
# public/js/build/add.0cfbdd9e.js
# public/js/build/add.3673f91c.js
# public/js/build/add.423bc480.js
# public/js/build/application.005cc174.js
# public/js/build/application.5587ac3b.js
# public/js/build/application.5b8f123b.js
# public/js/build/apps.4e0bf65b.js
# public/js/build/apps.b0a3d4f5.js
# public/js/build/apps.f77a8c4e.js
# public/js/build/calendar.31470aa0.js
# public/js/build/calendar.ad5d85d5.js
# public/js/build/calendar.e08e7575.js
# public/js/build/checkin.5d4c364e.js
# public/js/build/checkin.ab08f01e.js
# public/js/build/checkin.c05284a9.js
# public/js/build/dashboard.7cced7be.js
# public/js/build/dashboard.c82415db.js
# public/js/build/dashboard.f6ed8299.js
# public/js/build/dayjs.495f600d.js
# public/js/build/dayjs.71653272.js
# public/js/build/dayjs.cf033d87.js
# public/js/build/delete.4072c68f.js
# public/js/build/delete.5f06c51d.js
# public/js/build/delete.b26aa3fd.js
# public/js/build/device.4cff22ad.js
# public/js/build/device.66a7e05a.js
# public/js/build/device.a13f3ef0.js
# public/js/build/dialog.97b951ce.js
# public/js/build/dialog.e9f6d55f.js
# public/js/build/dialog.eb7b795a.js
# public/js/build/editor.18a511b5.js
# public/js/build/editor.2cca497c.js
# public/js/build/editor.e034df4e.js
# public/js/build/email.0643f86b.js
# public/js/build/email.1d00cb0c.js
# public/js/build/email.d95a35c0.js
# public/js/build/file.4fe82c29.js
# public/js/build/file.684a63df.js
# public/js/build/file.9dceb82f.js
# public/js/build/fileMsg.0a0029c2.js
# public/js/build/fileMsg.1f4ecb0f.js
# public/js/build/fileMsg.f99b6f61.js
# public/js/build/fileTask.72914205.js
# public/js/build/fileTask.bf35fb6b.js
# public/js/build/fileTask.f4356f14.js
# public/js/build/index.236af26f.js
# public/js/build/index.299c9f99.js
# public/js/build/index.2ffa8f9e.js
# public/js/build/index.7d6e1bbe.js
# public/js/build/index.94a5d2da.css
# public/js/build/index.af34aeb9.js
# public/js/build/index.b0ae9460.js
# public/js/build/index.b69b5f25.js
# public/js/build/index.b71c2859.js
# public/js/build/index.c3968cad.js
# public/js/build/index.d1ae44be.js
# public/js/build/index.e07db7f9.css
# public/js/build/index.edee4b6e.css
# public/js/build/index.ef9e1e57.js
# public/js/build/index.fe32159a.js
# public/js/build/jquery.0909250e.js
# public/js/build/jquery.16b446fd.js
# public/js/build/jquery.27f590f5.js
# public/js/build/keyboard.3f5b3ac6.js
# public/js/build/keyboard.5de3dd2c.js
# public/js/build/keyboard.c3ef7d49.js
# public/js/build/language.1fadd54c.js
# public/js/build/language.8bb72294.js
# public/js/build/language.f3d03ece.js
# public/js/build/license.21482fde.js
# public/js/build/license.60871496.js
# public/js/build/license.add318a7.js
# public/js/build/localforage.65ac7a2a.js
# public/js/build/localforage.be4775a0.js
# public/js/build/localforage.dd58f5ac.js
# public/js/build/login.7560afa5.js
# public/js/build/login.75b3978c.js
# public/js/build/login.aa163163.js
# public/js/build/meeting.a60d7e8d.js
# public/js/build/meeting.aa5510c7.js
# public/js/build/meeting.fdb9793b.js
# public/js/build/password.267357fd.js
# public/js/build/password.749ce44d.js
# public/js/build/password.e6d81eb1.js
# public/js/build/personal.69279937.js
# public/js/build/personal.a27cef8e.js
# public/js/build/personal.c613af3c.js
# public/js/build/preload.5827bd38.js
# public/js/build/preload.8ec61a5b.js
# public/js/build/preload.c6189d87.js
# public/js/build/preview.29e49902.js
# public/js/build/preview.7329f0f4.js
# public/js/build/preview.b452b0ee.js
# public/js/build/preview.c64402ed.js
# public/js/build/preview.ec796a92.js
# public/js/build/preview.ec85a43c.js
# public/js/build/pro.2128a514.js
# public/js/build/pro.213d8da6.js
# public/js/build/pro.9fb60d27.js
# public/js/build/projectInvite.0b3bf524.js
# public/js/build/projectInvite.393920f8.js
# public/js/build/projectInvite.e9cee390.js
# public/js/build/reportDetail.2db50632.js
# public/js/build/reportDetail.90aaf973.js
# public/js/build/reportDetail.d93cc650.js
# public/js/build/reportEdit.84a81076.js
# public/js/build/reportEdit.8baf23d4.js
# public/js/build/reportEdit.d008dd34.js
# public/js/build/swipe.0c72cce1.js
# public/js/build/swipe.4567bb5d.js
# public/js/build/swipe.92aebd0c.js
# public/js/build/system.67c1b700.js
# public/js/build/system.c45c70de.js
# public/js/build/system.f3384133.js
# public/js/build/task.1b9e0e77.js
# public/js/build/task.a445c89e.js
# public/js/build/task.d43091db.js
# public/js/build/taskContent.20b80714.js
# public/js/build/taskContent.3ebbd2f9.js
# public/js/build/taskContent.9dc7a121.js
# public/js/build/theme.72d103d1.js
# public/js/build/theme.7f1b2ffd.js
# public/js/build/theme.df79fe8f.js
# public/js/build/token.0ecffef5.js
# public/js/build/token.a7f5ccf5.js
# public/js/build/token.ece75257.js
# public/js/build/validEmail.1462dd30.js
# public/js/build/validEmail.17a3e0d2.js
# public/js/build/validEmail.ee19c1f3.js
# public/js/build/version.137935c7.js
# public/js/build/version.1441c1fd.js
# public/js/build/version.b0154505.js
# public/js/build/video.03b62c93.js
# public/js/build/video.2dc7f3c6.js
# public/js/build/video.531c68e2.js
# public/js/build/view.18713f1b.js
# public/js/build/view.7770155e.js
# public/js/build/view.8c6a0cc1.js
# public/manifest.json
2025-11-05 16:55:17 +08:00
kuaifan
d48287f93a
feat: 添加判断是否为iPad的功能,并在预加载时处理安全区域
2025-11-04 13:08:23 +08:00
kuaifan
b445af932c
feat: 更新消息推送逻辑
2025-11-03 00:45:34 +08:00
kuaifan
95ca496691
feat: 优化获取任务子任务数据相关逻辑
2025-10-26 09:30:24 +08:00
kuaifan
8958f2f234
feat: 添加MCP服务器状态切换功能
2025-10-25 16:39:50 +08:00
kuaifan
e2296a6f64
feat: 添加子任务升级为主任务功能
2025-10-24 05:38:54 +00:00
nightcp
98e4668969
feat: 优化用户机器人 webhook 逻辑
2025-10-21 13:53:16 +08:00