matevip
d950d54b00
fix(ui): resolve state confusion and cross-user data leak when switching menus/workspaces
2026-07-06 10:17:21 +08:00
mateaix
6252dfb81a
release: v1.7.0
2026-07-04 20:28:15 +08:00
MIST
9fb3550e91
fix(ui): 修复菜单/工作区切换时的状态错乱与跨用户数据泄漏 ( #483 )
...
### 背景
切换菜单(对话 ↔ 知识库)或工作区时,存在多个状态错乱问题:
1. 员工名称闪烁为数据库数字 ID(如 1000000001 )
2. 对话生成中切菜单再切回,出现白屏重渲染
3. Wiki 工作区切换后仍显示上一工作区内容
4. 登出后 keepAlive 缓存与模块级变量未清空,存在跨用户数据泄漏风险
### 改动内容
| 文件 | 改动 |
|------|------|
| `ChatConsole.vue` | 新增模块级 `cachedAgents` 缓存,组件重建首帧即有员工数据;启用 keepAlive,新增 `onActivated`/`onDeactivated` 生命周期管理,释放定时器/图表/监听器并自动重连流式对话 |
| `AgentPickerDialog.vue` | `isUnknown` 计算属性增加 `agents.length > 0` 守卫,列表未加载时走 placeholder 而非显示原始 ID |
| `router/index.ts` | `/chat` 路由添加 `keepAlive: true` |
| `MainLayout.vue` | 登出改为 `window.location.href` 整页刷新,确保清空 keepAlive 缓存与模块级变量 |
| `useWikiStore.ts` | `fetchKnowledgeBases` 检测 currentKB 不在新列表时调用 `backToLibrary` 清理旧工作区上下文 |
| `zh-CN.ts` / `en-US.ts` | 新增 `unknownAgent` 国际化键 |
### 测试
- 新增 `agentPickerLogic.test.ts`:覆盖 isUnknown 判定的 4 类边界场景(空值/正常匹配/列表为空/员工被删除)
- 新增 `wikiStoreWorkspaceSwitch.test.ts`:覆盖工作区切换清理逻辑(跨工作区清理/同工作区保留/首次进入/接口异常/组合路径)
- 前端全量测试:**58/58 通过**(原 40 + 新增 18)
- TypeScript 类型检查:通过
- 后端 Maven 测试:3473/3555 通过,9 失败均为预存 Windows 路径兼容问题,与本次改动无关
### 安全性
- 不同对话:`currentConversationId` 单一来源 + API 校验
- 不同账号:登出整页刷新,零残留
- 不同工作区:`router-view` key 重建 + wiki store 主动清理
---
2026-07-03 19:27:18 +08:00
matevip
a9cf3cbd55
fix(llm): show all enabled chat models in multimodal sidecar selector
...
The vision/video sidecar dropdown filtered candidates through the built-in
capability heuristics, so provider-compatible models whose custom names match
no known prefix (and carry no declared modalities) were hidden and could not be
selected as a sidecar — even when they natively support the modality.
- listByType now returns every enabled chat model, annotating each row with a
transient modalityCapable flag and sorting known-capable rows first, instead
of hard-filtering recognized models only.
- MultimodalRouter honours an explicitly configured sidecar model instead of
dropping it when the heuristics don't recognize it; a wrong pick degrades
gracefully through the caption path rather than silently disabling routing.
- ModelPicker gains an optional capability badge; the sidecar UI tags
recognized vision models while keeping every enabled model selectable.
2026-06-09 10:30:37 +08:00
matevip
daeef4e3c2
feat(scheduler): unify cron jobs and triggers into a tabbed Scheduler page
2026-05-19 21:23:18 +08:00
matevip
99718d276e
feat(ui): frosted-glass tooltip and collapsed-rail alignment
2026-05-19 09:56:15 +08:00
matevip
85f1e326ed
feat(chat): color agent icons in the agent picker dialog
2026-05-17 12:00:47 +08:00
matevip
001cb1a2ed
refactor(chat): extract conversation sidebar and shared UI primitives
2026-05-17 11:49:44 +08:00
matevip
09eb28fb63
refactor(ui): unify employee selector into shared AgentPickerDialog
2026-05-16 22:17:58 +08:00
matevip
e10dd9d0a0
refactor(ui): swap ElMessage for project-native mcToast, finish mcConfirm migration
2026-05-15 10:19:24 +08:00
matevip
15ee205ab9
refactor(ui): share drawer chrome via MateDrawer, migrate Doctor and skill drawers
2026-05-15 10:19:16 +08:00
matevip
eb6badeb61
feat(ui): surface pending approvals + stuck agents as sidebar badges
2026-05-15 10:17:30 +08:00
matevip
932f3de402
feat(chat,settings): multimodal sidecar configuration + routing visibility ( #87 )
2026-05-09 16:41:36 +08:00
matevip
b15835ec4f
fix(skill-icon): center inner svg so size-override callers stay aligned
2026-05-04 18:30:22 +08:00
matevip
be1fc86836
feat(agents): pixelart icons, per-role colors, runtime identity merge, locale templates
2026-05-04 15:26:02 +08:00
matevip
efb91796fb
feat(skill): pixelarticons icon library + picker component
2026-05-01 09:52:12 +08:00
matevip
9c6b728704
feat(ui): MateClaw skill detail drawer + shared McPagination / McConfirm components
2026-05-01 09:52:04 +08:00