-
Notifications
You must be signed in to change notification settings - Fork 3
Issues Summary.zh CN
🌐 Language: English | 中文
本页总结 KinetAios 开发中的反复问题模式(v1.0.0 → v1.6.0,116 个 fix commit)。帮助贡献者避免重蹈覆辙。
| 类别 | 修复次数 | 严重度 |
|---|---|---|
| CSS / 布局 | ~30 | 🔴 最高 |
| 插件系统 | ~18 | 🔴 最高 |
| 截图 / 语音 / 媒体 | ~10 | 🟡 中 |
| 功能交互 / 逻辑 | ~10 | 🟡 中 |
| 模型 / API 配置 | ~8 | 🟡 中 |
| 安全 / 健壮性 | ~6 | 🟠 中高 |
| Visual Inspector | 4 | 🟡 中 |
| i18n | ~4 | 🟢 低 |
| CI / 打包 | ~5 | 🟢 低 |
症状:设置页切换 tab 时面板宽度跳变。
根因:#settings-view 和 #settings 两层都设了 overflow-y: auto。外层滚动条根据内容长度出现/消失,导致宽度变化。scrollbar-gutter: stable 只在内层。
修复:外层 #settings-view → overflow: hidden;只让内层 #settings 滚动 + scrollbar-gutter: stable。
教训:一条滚动链上只用一层 overflow-y: auto。 永远不要嵌套两个 overflow-y: auto。
症状:面板位置不对,chat 区域被压缩。
根因:#town-view 的 display: flex 覆盖了 .view { display: none }。#town-panel 在 #main(flex column)内,虽然有 position: fixed 仍干扰布局。
修复:把 #town-panel 和 #town-backdrop 从 #main 移到 #app 层。#town-view 遵循通用 .view display 规则。
教训:position: fixed 元素仍应放在 flex 容器之外,避免渲染边界问题。
症状:插件面板空白,loading 永久卡住,元素不可见。
根因:轮询字段名不匹配、Excalidraw 元素 schema 不匹配、CDN 加载失败、CSP 阻止脚本。
修复:轮询改事件推送,用 convertToExcalidrawElements,iframe 隔离解决 CSP。
教训:逐个集成点独立测试。不要假设第三方 API 能正常工作。
症状:点击无响应,IPC 延迟,AI 无响应。
根因:renderer 和 main 之间的 IPC 往返对实时交互不可靠。
修复:overlay 移到 renderer 层,直接用 webview.executeJavaScript,绕过主进程 IPC。
教训:实时 UI 交互应留在 renderer 进程。延迟敏感操作避免走 IPC。
症状:频道文字显示为居中而非左对齐。
根因:#conv-list > li:not(.sb-proj) 缺少 flex-direction: row,父规则的 align-items: center 导致水平居中。
修复:显式加 flex-direction: column。
教训:调试对齐问题时检查继承的 flex 属性。flex 属性会级联。
多个 commit 声称"彻底修复",下个 commit 又修同一问题。说明验证不足。
改进:在运行中的 app 里验证后再声称修复完成。不要在 commit message 里写"彻底修复"。
30+ 个修复是 CSS 布局问题:flex 嵌套、overflow 嵌套、position: fixed 与 flex 干扰、scrollbar-gutter。
改进:建立标准"滚动容器"模式——每条滚动链一层 overflow-y: auto + scrollbar-gutter: stable。文档化布局规则。
每次安全审查都发现新问题:SSRF、计时攻击、监听器泄漏、参数注入、正则注入。
改进:设计阶段就考虑安全。不要依赖事后审计。
Visual Inspector、brainstorm 插件、远程任务按钮都需要 IPC 通信重写。
改进:编码前先设计"谁发、谁收、谁兜底"的流程。不要先写再推翻。
见 repo 根目录的 ISSUES_SUMMARY.md 获取完整 116 个 fix 的分类明细。