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 |
|
kuaifan
|
4ca7fc10d1
|
feat(license): 新增在线授权(App Store 账号自助签发 + 自动续期)
- OnlineLicense 模块:登录/试用/续期/释放/状态机,离线↔在线互斥(last-write-wins)
- LicenseController + 动态路由;容器内 supervisor 独立进程定时续期(不依赖 LARAVELS_TIMER)
- license.vue 双 Tab:在线授权 + 离线绑定二次确认,已绑定在线时离线页提示+按需绑定
- 进入授权页静默刷新;同步 ai-kb 在线授权知识库
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-22 08:22:26 +00:00 |
|
kuaifan
|
27c65cc582
|
fix(frontend): TagInput 体质优化与多分隔符支持 + 后端 saveOrIgnore 加固
TagInput:
- cut prop 支持字符串或字符串数组,多分隔符任一匹配即切;
v-model 写回用第一个分隔符 (joinChar) 拼接保持向后兼容
- 修复 max 仅在 cut 分隔符路径生效,回车/blur/paste 路径未查 max 的 bug
- 修复 data() 初始化与 watch(value) 用硬编码 ',' 切分,
统一走 joinChar (单一输出分隔符) 还原 v-model,避免含空格的列名
(如项目模板 'Sprint 1') 被切碎
- 修复 watch(value) 空值/null 时不清空 disSource 的潜在残留数据
- v-for 加 :key='text',配合初始化去重避免拖拽错位
- 重复 tag 由静默忽略改为提示「该标签已存在」
- 编辑 tag 加 dedup 检查,重命名成已有 tag 文本时阻止关闭
- 粘贴改为按 cut 切分逐个 addTag;addTag 返回 boolean,
pasteText 在 max 满时 break 短路
- splitByCuts/parseValue 拆分:回切用 joinChar,paste/输入用 cutPattern
- 拼接翻译 '最多只能添加X个' 改为 $L('最多只能添加(*)个', max);
新增「最多只能添加(*)个」「该标签已存在」到 language/original-web.txt
manage.vue:
- 创建项目任务列表启用 :cut=\"[',', ',', ' ']\",支持半角/全角逗号/空格
IME (compositionstart/end 时序不可靠,统一走 @on-keydown + W3C 标准 229 守卫):
- login/ProjectPanel/TaskAdd/UserTagsModal 的 onXxxKeydown 加
isComposing || key=='Process' || keyCode==229 三重守卫,
与 TagInput.downEnter 风格统一
- file.vue 块模式重命名 onKeydown 用 \$nextTick 包 onEnter,
避免 keydown 早于 input 事件 commit v-model 导致少一个字符
AbstractModel.performInsertOrIgnore:
- \$uniqueBy 不为 null 时抛 InvalidArgumentException;
MySQL INSERT IGNORE 无法按指定列 scope 冲突,与框架 ON CONFLICT 语义不一致
- lastInsertId 仅在 > 0 时回填主键;
避免在无 auto_increment 列的表上把业务设置的 PK 覆盖为 0
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 01:26:55 +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
|
4de6c69972
|
feat(ai-assistant): RAG 反馈闭环 + driver.js 页面操作引导
方向7 反馈闭环:
- 新增 ai_assistant_search_logs / ai_assistant_feedbacks 两表 + 模型
- AssistantController 加 log__search / feedback__save 端点,auth 透传 session_id→context_key
- 前端 AI 回复下方 👍/👎(可改票、随会话持久化回显),extractSourceIds 解析引用
- ai-kb:feedback chunk + README 运营 SQL 口径(低分 top query / 👎 source)
方向4 页面操作引导:
- 渲染层用 driver.js(高亮可点击挖洞 + 稳定定位),编排层自研
(脚本 schema / 四级元素定位 / 跨页 pre_action 导航 / 找不到降级文字)
- leave-semantics:跳转动作在点「下一步」后才执行
- markdown.js 渲染 ```ai-guide 围栏为「带我去」按钮;DialogMarkdown 点击启动
- 近义词归一化(创建/新建/新增/添加互通)提升 target 命中
- ai-kb:guide/start-guide chunk + tool-binding 加 show_guide
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-10 16:07:08 +00:00 |
|