416 Commits

Author SHA1 Message Date
kuaifan
531129f48d feat(push): 移除友盟推送,APP 推送改为系统配置 / 自定义 / 关闭三档
- 删除友盟别名接口、模型、日志清理及 hedeqiang/umeng 依赖,迁移删除 umeng_alias / umeng_logs 表
- 系统配置(默认):通过官方 DooPush 共享通道自助注册租户,按 App 上报的推送 Token 绑定设备
- 自定义:沿用自有 DooPush 应用凭证;关闭:不推送也不记录设备
- 老站点升级后统一为系统配置,原自定义凭证保留
- PushUmengMsg 更名为 PushAppMsg;同步语言包、API 对照表与 ai-kb
2026-10-19 15:46:16 +00:00
kuaifan
96bc70415f feat(app): 检查更新与桌面端一致,新版本不高于服务器版本才提示
- 提示逻辑移到 App.vue checkAppUpdate,$A.eeuiAppCheckUpdate 只做桥接
- 手动检查遇到服务器版本较低时提示等待服务器升级
- 更新语言包、事件对照表、ai-kb 与 Expo 壳子模块
2026-10-19 13:41:53 +00:00
kuaifan
bf1c9b7751 feat(app): 新版 App 检查更新提示与设置页手动检查
- $A.eeuiAppCheckUpdate 在 Expo 壳中弹出「发现新版本」,iOS 跳 App Store、Android 浏览器下载 apk
- 设置「版本」右侧新增「检查更新」
- 更新 Expo 壳子模块、语言包(含 DooPush 遗漏的两条后端文案)与 ai-kb
2026-10-19 13:15:20 +00:00
kuaifan
a49ee608a5 feat(push): 新增 DooPush 推送通道,与友盟并存
- 新增 app_push_devices 表与 api/push/device 接口(新版 App 上报/删除 DooPush 设备)
- app/Module/AppPush 统一分发友盟与 DooPush,业务字段经 payload.data 下发
- 系统设置「App 推送」新增 DooPush 配置;点击通知打开对应会话
- 更新 Expo 壳子模块(接入 DooPush)、语言包与 ai-kb
2026-10-19 10:33:19 +00:00
kuaifan
6f111cd97d release: v1.9.66 2026-10-10 09:50:29 +00:00
kuaifan
ca1a1b5415 feat(contacts): 通讯录支持按部门显示,成员按需加载
- 新增 contacts/departments 接口,返回部门树及成员数
- 通讯录搜索框右侧新增字母/部门视图切换,部门视图可折叠,展开时才加载成员
- users/search 的 keys.departments 改为参数绑定(修复 SQL 注入),0 表示未加入任何部门
- 同步翻译与 ai-kb
2026-10-10 04:47:34 +00:00
kuaifan
5ce39a8dc4 feat(task): 建立与解除任务关联时记录双方任务动态 2026-10-10 02:41:15 +00:00
kuaifan
621017c0c6 feat(setting): 移除「AI 助手设置」,悬浮按钮开关迁至 AI 助手插件
悬浮按钮显示偏好改在「应用 → AI 助手」的「个人偏好」中设置,主程序删除
setting/assistant.vue、对应路由与菜单项,并清理不再使用的翻译与保存方法;
同步更新 ai-kb 与事件对照表。
2026-10-01 07:59:04 +00:00
kuaifan
dd84a0d18e chore(i18n): 优化仪表盘「四象限」「部门总览」切换按钮译文
- 「四象限」改为 Matrix(矩阵)等更简短的译法,避免直译过长
- 「部门总览」改为 Team(团队)等,与「团队范围」「团队成员」叙述一致,且更适合分段按钮宽度
- 同步重新生成 public/language/web 下的前端语言包
2026-10-01 04:29:46 +00:00
kuaifan
1412f5cfef chore(i18n): 补齐系统更新及客户端更新相关文案翻译 2026-10-01 04:21:54 +00:00
kuaifan
be0f05af4d feat(system): 管理员支持在线更新服务端(系统更新)
- 新增 api/system/update/check|start|status,发起更新需二次输入登录密码,经 appstore 拉起独立 updater 容器执行 ./cmd update
- cmd update 新增 --check(输出 JSON 检查结果)与 --non-interactive(在线更新模式:强制备份数据库、存在本地修改时中止、写入 docker/logs/update/state.json 进度)
- 设置菜单与头像下拉(仅管理员)新增「系统更新」入口,进度页展示步骤、实时日志与结果
- 在线更新默认开启,运维可通过 .env ONLINE_UPDATE=false 关闭;appstore 注入 HOST_DOCKER_SOCK
- 修复 Ihttp 状态行解析在多词原因短语(如 404 Not Found)时失败的问题
- 同步 ai-kb:系统更新操作指引、不支持在线更新 FAQ、菜单入口
2026-10-01 04:12:55 +00:00
kuaifan
b42b430e4b feat(client): 客户端更新入口文案统一带「客户端」主语
- 桌面端更新弹窗标题改为「发现客户端新版本」,按钮「立即升级」改为「立即更新」
- 移动端原生更新弹窗标题改为「APP 新版本」
- 头像下拉「更新版本」改为「更新客户端」
- 设置菜单有新版本时「更新日志」显示为「更新客户端」,页面标题保持「更新日志」
- 同步 ai-kb 客户端更新流程与设置入口说明
2026-10-01 02:39:08 +00:00
kuaifan
d4c7cdba6f feat(project): 项目页筛选下拉支持多选组合
- 顶部筛选由 Cascader 单选改为分组复选下拉:状态(含未计划)/ 标签 / 负责人,同组为「或」、跨组为「且」
- 勾选时下拉不关闭;顶部显示已选数量与「清空」,每组可单独清除,按钮上的 × 一键清空
- 按钮显示:未筛选「全部 (n)」、单选显示该项(状态带颜色)、多选按组汇总如「状态·2 / 负责人·1 (n)」
- 弹层宽度随内容自适应(180–320px),内容区内部滚动;负责人超过 10 人时显示搜索框
- 抽出 utils/projectFlowFilter 统一看板、列表、甘特图的过滤逻辑,修复甘特图未按标签和未计划过滤
- 勾选「已完成」类状态仍自动开启显示已完成,切换项目重置筛选
- 同步 ai-kb 视图筛选相关说明
2026-10-01 01:21:30 +00:00
kuaifan
c06d61a11f feat(dashboard): 合并仪表盘视图切换为「列表|四象限|部门总览」
- 右上角两组切换合并为一个,部门视角选中后该项显示部门范围与成员数,再次点击选择团队范围
- 全选多个部门时显示「部门总览」,切换范围加载中成员数以 loading 占位
- 切换器宽度随内容平滑过渡,尊重减少动态效果设置;部门项与成员数补充悬停提示
- 移动端收起为图标按钮:部门负责人点击弹出列表/四象限/部门总览下拉,底部可选择团队范围并显示成员人数;普通用户点击在列表与四象限间切换
- 移动端部门视角图标带成员数角标(超过 99 显示 99+),头部右侧只占图标宽度
- 清理不再使用的文案与样式,同步 ai-kb 仪表盘相关说明
2026-10-01 00:46:31 +00:00
kuaifan
5a10f59df8 fix(task): 修复周期任务到点后无限复制重复任务
Carbon 3 的 addDays() 不接受字符串,自定义天数周期(loop="90")在
refreshLoop() 中抛 TypeError。LoopTask 先提交副本再刷新周期,异常后
副本与原任务的 loop_at 都留在 10 分钟窗口内,每分钟翻倍并在同一轮内
被 chunkById 继续扫到。

- refreshLoop:自定义天数转 int 且必须大于 0,拒绝 0 天周期
- LoopTask:复制、刷新周期、关闭旧周期放入同一事务,失败整体回滚;
  锁定并复核原任务防并发重入;refreshLoop 失败即抛出;只处理本轮
  开始前已存在的任务
- ai-kb:更正周期任务按 loop_at 到点生成(而非完成时生成)、不依赖
  end_at、会复制附件,并补充自定义天数须为正整数
2026-09-30 14:48:43 +00:00
kuaifan
4249584a08 feat(dashboard): 应用新版仪表盘设计并适配深色主题 2026-09-10 08:55:02 +00:00
kuaifan
519e8dbd54 feat(task): 支持任务流转与部门指派 2026-09-09 02:36:52 +00:00
kuaifan
ffbb45708d feat(project): 支持表格分组配置与悬停筛选菜单
新增到期、排期、逾期与未排期分组,按项目缓存显示选择并至少保留一项。

统一分组复选下拉菜单,接入 Cascader 桌面悬停展开,增加勾选后的滚动定位校正。

升级 view-design-hi 至 4.7.0-81,同步多语言、知识库和回归测试。
2026-09-07 12:08:52 +00:00
kuaifan
f43977f07e feat(system): 支持自定义登录页品牌 2026-09-04 08:18:03 +00:00
kuaifan
6b146c28d5 fix(i18n): 补齐关闭注册提示翻译 2026-08-20 05:38:07 +00:00
kuaifan
2a7d635729 feat(messenger): add local file shortcut to chat cards 2026-08-20 04:30:24 +00:00
kuaifan
7af3c5a032 fix: 优化注册提示和登录切换动画 2026-08-19 23:41:38 +00:00
kuaifan
f49d6d604f fix: improve system setting editors 2026-08-13 11:08:06 +00:00
kuaifan
139a7a168b feat: reorganize system settings tabs 2026-08-13 09:16:58 +00:00
kuaifan
8133eca488 feat(file): manage inactive WebDAV credentials 2026-08-13 03:36:40 +00:00
kuaifan
9028061638 feat(file): add WebDAV support 2026-08-13 02:38:01 +00:00
kuaifan
fd37fcf6f6 feat(file): switch collaboration files to attachment index 2026-08-09 15:08:24 +00:00
kuaifan
6deec313f7 feat(file): add collaboration file browser 2026-08-04 21:27:43 +00:00
kuaifan
5e87eb459e feat(ai-assistant): 支持设置悬浮按钮显示 2026-07-31 03:33:04 +00:00
kuaifan
93c604a554 release: v1.8.89 2026-07-20 14:21:51 +00:00
kuaifan
95b20325be fix(i18n): normalize common action translations 2026-07-20 09:06:37 +00:00
kuaifan
df4658cddf feat(i18n): support contextual translation keys 2026-07-20 07:25:10 +00:00
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
7ad27e3326 feat(dashboard): 增加负责人视角真实数据接口 2026-07-18 23:42:58 +00:00
kuaifan
4b92ecb422 feat(dashboard): 完善个人视角空状态 2026-07-18 04:47:12 +00:00
kuaifan
6666605f7d feat: 完善管理后台团队仪表盘 2026-07-18 01:13:43 +00:00
kuaifan
f7bc724e13 feat(dialog): 撤回文本消息后本地显示"重新编辑"占位
- 撤回自己的文本/MD 消息后,原位置显示仅本人可见的"你撤回了一条消息 重新编辑"占位(仿微信)
- 占位纯本地存储(IndexedDB 持久化,Electron 多窗口 syncDispatch 同步),5 分钟过期自动清除
- 点"重新编辑"回填原内容到输入框(富文本还原 @提及/表情,先退出引用/编辑模式),占位随即移除
- 占位沿用原消息 id 排序定位,仅在已加载消息范围内合并显示,不干扰翻页与已读上报
- 同步更新 ai-kb recall 文档与前端语言文件
2026-07-16 11:20:37 +00:00
kuaifan
966c7b4ef0 feat(microapp): iframe 同源 HTTP 5xx 检测与内联错误层,错误态强制显示胶囊
- iframe.vue 读 responseStatus 检测同源 5xx(宁可漏判不误判),与原生 error 统一走 load-error
- index.vue 新增可读的内联错误层(重试/关闭),覆盖深色下被反色成一条线的错误页
- 检测到错误时强制显示胶囊,保证关闭/更多入口
2026-07-16 06:26:39 +00:00
kuaifan
f1ea0ed3dc release: v1.8.69 2026-07-14 09:47:03 +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
e72758f313 fix(task): 已删除/已归档项目不再生成周期任务,残留任务详情可打开可删除
- LoopTask 周期生成仅处理未删除、未归档项目的任务,从源头杜绝残留繁殖
- userTask 兜底改用 withTrashed,任务相关成员可打开已删项目下的任务详情
- task/one 返回 project_deleted/project_archived 标记,详情顶部横幅提示并提供删除按钮
- task/remove 对已删除/已归档项目放行删除(限项目负责人、任务负责人/协助人/创建人)
- 顺手修复 addTask 优先级匹配 reset() 传临时值的 notice 隐患,改用 collect()->first()
- 同步 ai-kb(recurring/delete-restore)与国际化文案
2026-07-13 23:04:36 +00:00
kuaifan
18163e1e82 release: v1.8.64 2026-07-02 14:01:34 +00:00
kuaifan
9a3d9d3b9c feat(license): 多授权选择登录 + 离线 license SN/MAC 绑定校验加固
- 在线授权登录时账号名下有多条可用授权则弹窗选择,选定后复用验证码确认签发(login/confirm)
- 新增 Doo::licenseDecode / licenseBindingError;保存离线 license 与创建用户前校验付费档 SN/MAC 与本机匹配
- 诊断展示与校验门槛纳入不限人数(people==0)档
2026-07-02 13:29:51 +00:00
kuaifan
c9f5296b73 feat(license): 在线异常浮告警卡+离线SN/MAC标签化,统一两Tab排版
- 在线:正常态只显示核心信息,提醒/过期/设备不匹配时浮出告警卡,SN/MAC 收进折叠诊断;frozen 状态文案统一为「已过期」
- 离线:SN/MAC 改行尾标签+失配整行标红,IP/域名/创建时间折叠进「更多」
- 统一在线/离线信息行的字号/行高/间距/label
- 清理死样式 .information 与死变量 onlineIng
- 同步 ai-kb online.md 状态措辞并登记新增文案
2026-07-02 07:45:16 +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
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
0c75d52be0 release: v1.8.45
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 13:46:56 +00:00
kuaifan
889aca311a feat(license): 在线授权数据缓存秒开 + 请求 loading
- 进页面读 localStorage 缓存即时渲染在线授权数据(key 按站点 host 隔离),
  后台并发 license/refresh + system/license 刷新,右上角显示「刷新中」转圈,
  数据回来静默替换并更新缓存;非在线状态自动清除缓存
- 首次无缓存显示骨架占位 + 加载中
- 发送验证码改回 setting/email 内联样式(iView search + enter-button +
  spinner 全局 loading),去除独立按钮
2026-06-23 07:10:25 +00:00
kuaifan
7c6b8ce6f4 feat(license): 在线授权登录与试用改为邮箱+验证码
配合 appstore 账号体系统一,在线授权去除 App Store 账号+密码:
- OnlineLicense 新增 emailSend,login/trial 改 (email, code),call payload
  去 account/password、加 email/code(fingerprint 续传)
- LicenseController 新增 email__send,login/trial 读 email/code
- license.vue 在线 Tab 改邮箱+发码+验证码(与试用复用状态防串台),
  离线 Tab 与互斥链路不动
- 同步 i18n 文案与 ai-kb license/online、api-map
2026-06-23 01:21:11 +00:00