release: finalize 0.15.0 validation and companion materials
GoodBuddy Agents / Validate Agent source (push) Canceled after 0s
GoodBuddy Agents / Build darwin arm64 Agent (push) Canceled after 0s
GoodBuddy Agents / Build linux arm64 Agent (push) Canceled after 0s
GoodBuddy Agents / Build linux x64 Agent (push) Canceled after 0s
Cross-platform packages / Validate source (push) Canceled after 0s
Cross-platform packages / Authorize desktop packaging (push) Canceled after 0s
Cross-platform packages / linux arm64 (push) Canceled after 0s
Cross-platform packages / macos arm64 (push) Canceled after 0s
Cross-platform packages / windows arm64 (push) Canceled after 0s
Cross-platform packages / linux x64 (push) Canceled after 0s
Cross-platform packages / macos x64 (push) Canceled after 0s
Cross-platform packages / windows x64 (push) Canceled after 0s
Cross-platform packages / Publish GitHub and OSS release (push) Canceled after 0s
GoodBuddy Agents / Validate Agent source (push) Canceled after 0s
GoodBuddy Agents / Build darwin arm64 Agent (push) Canceled after 0s
GoodBuddy Agents / Build linux arm64 Agent (push) Canceled after 0s
GoodBuddy Agents / Build linux x64 Agent (push) Canceled after 0s
Cross-platform packages / Validate source (push) Canceled after 0s
Cross-platform packages / Authorize desktop packaging (push) Canceled after 0s
Cross-platform packages / linux arm64 (push) Canceled after 0s
Cross-platform packages / macos arm64 (push) Canceled after 0s
Cross-platform packages / windows arm64 (push) Canceled after 0s
Cross-platform packages / linux x64 (push) Canceled after 0s
Cross-platform packages / macos x64 (push) Canceled after 0s
Cross-platform packages / windows x64 (push) Canceled after 0s
Cross-platform packages / Publish GitHub and OSS release (push) Canceled after 0s
Run conversation capture acceptance in a visible focused Electron window and report concrete focus state on failure. Trigger Continue pre-spawn cancellation at its existing environment callback instead of racing a timer. Product implementation and approved bilingual note text remain unchanged. Include the user's companion article updates and three reviewed draft images as authorized. Keep their draft status and unverified build provenance clear. Set the release date to September 28 and record the final real Linux result: 5345 passed, 51 skipped; Windows focused, typecheck, lint, and notes passed.
This commit is contained in:
@@ -15,6 +15,10 @@
|
||||
- `FEATURES.md` 与 `FEATURES.zh-CN.md` 已核对本轮能力、限制和候选版本。
|
||||
- 用户要求两张未跟踪宣传截图保留原位、不提交,打标签前另行处理;
|
||||
不移动、删除、暂存或更改忽略规则。
|
||||
- 2026-09-28 用户更新授权:当前工作区的宣传文档与素材可以一起提交、推送,
|
||||
后续候选由代理自行审核确认,不再逐次等待用户批准,继续完成双产品正式发布。
|
||||
三张新增候选图已读取检查,保留原始草稿属性,不冒充正式发布截图或对外媒体发文。
|
||||
发布说明正文保持不变,`releasedAt` 更新为实际准备发布日期 2026-09-28。
|
||||
|
||||
## 本地验证
|
||||
|
||||
@@ -113,6 +117,30 @@ Escape 返回列表仍失败,活动历史迁移这次超过默认 5 秒时限
|
||||
- 本阶段不新增真实模型请求,不改变产品代码或双语说明。
|
||||
新候选仍须重新批准 SHA 并通过自己的主分支 CI/生产构建,两个标签仍未创建。
|
||||
|
||||
## 后续 CI 焦点前提与确定性取消验证
|
||||
|
||||
`b8b6007` 的 [CI 36335076841](https://github.com/mesalogo/goodbuddy/actions/runs/36335076841)
|
||||
两次执行均为 5,344 通过、51 跳过、1 失败,失败点改为 `new title focus`,
|
||||
生产构建没有运行。该次失败未在 Host 的 10 次带诊断复验中重现,其中 5 次限制单 CPU;
|
||||
移除临时诊断后再测也通过。这些独立结果不替代 CI。
|
||||
|
||||
测试原先直到键盘阶段才显示窗口,前面的自动聚焦检查仍在隐藏窗口执行。
|
||||
现让测试窗口从开始即显示并确认焦点,保留标题自动聚焦原断言;
|
||||
超时增加实际焦点、标题禁用/可见/隔离状态和保存状态,避免只报告阶段名称。
|
||||
可见窗口版本在 Host 连续五次聚焦复验通过。
|
||||
|
||||
随后 Host 全量出现一个独立的 Continue 取消测试竞争:
|
||||
`setTimeout(0)` 没有保证取消发生在子进程启动前,空 mock 已被调用。
|
||||
用例改在既有启动环境回调处精确取消,仍验证回调执行、子进程未启动和临时配置删除,
|
||||
不更改 Continue 产品实现或取消机制。
|
||||
|
||||
- 最终 Host 完整测试:**5,345 通过、51 跳过、0 失败**,449 个文件通过、
|
||||
15 个跳过,耗时 743.34 秒。
|
||||
- Windows 可见窗口 Electron 回归及确定性取消回归通过。
|
||||
- 完整类型检查、lint 通过;双语说明正文不变,日期调整后另行验证发布资源。
|
||||
- 上述均为测试或验证文档调整,不新增真实模型调用,不改变 Agent 发布输入。
|
||||
正式发布仍要求当前候选自己的 CI/生产构建通过。
|
||||
|
||||
## 数据、兼容与验收边界
|
||||
|
||||
Desktop schema 48 新增魔法笔记会话来源元数据。升级前应备份完整用户数据,
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# GoodBuddy 更新:工作回顾、可追溯图谱与远程对话恢复
|
||||
# GoodBuddy 更新:故事图谱、Obsidian接入、Runtime原生终端
|
||||
|
||||
> **编辑标注说明(对外发布前删除):** 本稿汇总桌面版 0.13.8 至 0.13.16 的变化,另在末尾标出 0.13.16 之后已提交、尚未归入发布版本的修复。“待补图”表示尚未取得素材,“待替换”表示发布信息未核验,“待核对”表示发布前需要确认的行为。本文是宣传草稿,尚未对外发布。
|
||||
> **编辑标注说明(对外发布前删除):** 本稿汇总桌面版 0.13.8 至 0.13.16,以及此后截至 `0f8bf40` 的已提交变化,更新于 2026-09-27。所述功能与修复均已开发完成并提交;0.13.16 之后的内容,其发布版本待确认。“待补图”表示缺少可发布素材,“待替换”表示发布信息未核验,“待核对”表示发布前需要确认的行为。本文是宣传草稿,尚未对外发布。
|
||||
|
||||
GoodBuddy 新增了监督者工作回顾:选择一个项目或一段时间,整理讨论过的事情、进展和未解决事项,再沿着图谱查看原始依据。这轮更新还加入模型连接复制、Mermaid 图表导出,并改善了待办浏览、长对话运行记录和远程会话恢复。
|
||||
GoodBuddy 这一轮更新围绕工作记录的整理与使用展开:监督者按项目回顾进展,并通过图谱保留结论依据;新加入的笔记连接支持保存聊天正文、返回原会话,以及在聊天中读写本机 Obsidian 笔记。本地项目还可以从输入区打开 Continue、OpenCode 原生终端或 DS Web 客户端,沿用当前项目与模型配置。
|
||||
|
||||
本文接续上一份画布笔记与文档处理更新稿,覆盖 0.13.8 起的实际增量。远程项目建议先升级桌面,再将 Host 环境更新至 Agent 0.13.4,以获得本文涉及的远程完成状态和旧进程清理修复。
|
||||
|
||||
> **【待替换 R01|版本与体验入口】** 对外发布前核验目标桌面安装包、发布日期、下载地址和完整更新日志链接,并在此补入。当前正式 tag 核查截至 `v0.13.16`;末尾开发中补充依据提交 `5116613`,目标版本未定。不能仅因 tag 存在就写“所有平台已可下载”;也不要推测下一版本号。桌面 0.13.14 的发布失败后由 0.13.15 承接,不将其列为成功发布的独立版本。
|
||||
> **【待替换 R01|版本与体验入口】** 对外发布前核验目标桌面安装包、发布日期、下载地址和完整更新日志链接,并在此补入。已核查正式版本截至 `v0.13.16`;后续已提交内容固定至 `0f8bf40`,本轮增量为 `5116613..0f8bf40`。工作区中的 0.15.0 发布准备尚未提交,不作为发布依据。桌面 0.13.14 的发布失败后由 0.13.15 承接。
|
||||
|
||||
**从较早版本升级前,请先关闭应用并备份完整用户数据。** 数据库和相邻的 `notes/` 目录需要成套保留;旧客户端不能直接打开升级后的数据库。0.13.15 升至 0.13.16 本身不再提高数据库格式版本,但从前面的版本跨版本升级仍可能需要转换数据。
|
||||
**升级前,请先关闭应用并备份完整用户数据。** 数据库和相邻的 `notes/` 目录需要成套保留。本稿中的聊天采集功能将数据库格式升至 48,用于保存笔记来源;升级后旧客户端不能直接打开该数据库,回退需要升级前的备份。
|
||||
|
||||
## 新增功能
|
||||
|
||||
@@ -38,6 +38,44 @@ GoodBuddy 新增了监督者工作回顾:选择一个项目或一段时间,
|
||||
|
||||
这两种后续操作目前适合短摘要:继续讨论的最终内容最多 12,000 字符,知识实体描述最多 2,000 字符。固定任务没有关联会话时,不能直接发送继续讨论。后续对话沿用目标会话的模型和工作模式。
|
||||
|
||||
### 聊天正文存入魔法笔记,并保留来源
|
||||
|
||||
遇到值得保留的回答,可以点击助手消息旁的“加入笔记”,预览并编辑文字,再追加到已有笔记,或新建笔记保存。需要保留整段讨论时,会话菜单中的“保存当前对话到笔记”会读取完整历史,收录用户与助手的正文,不局限于屏幕上已经显示的消息。
|
||||
|
||||
保存后的记录带有“来自会话”入口。单条回答可以返回对应消息;原会话或消息被删除后,已保存的笔记内容仍保留。每次采集新增一条记录,后续对话修改不会自动同步到笔记。
|
||||
|
||||
“快速笔记”入口和工作栏“+ → 笔记”可以打开紧凑面板,在聊天旁搜索笔记标题与正文、浏览摘要、追加文字。切换项目或会话时草稿保留,关闭有未保存内容的面板前会提示;草稿仅在本次应用运行期间保留。画布、待办和完整编辑继续在魔法笔记工作区中使用。
|
||||
|
||||
采集保存文本与 Markdown,不复制推理过程、工具日志或附件图片。生成中的回答暂不可采集,单条记录上限为 500 KiB,超限会提示缩减。采集本身无需调用模型;保存后自动评论仍按已有设置执行。笔记继续属于全局,来源项目只用于帮助回看。
|
||||
|
||||
> **【待补图 06|必补|聊天采集与来源返回】** 用公开演示对话预览并保存一条回答,展示笔记记录中的来源入口,再验证能返回原消息。计划文件:`assets/06-chat-note-source.png`。
|
||||
>
|
||||
> 建议图注:把有用的回答存入笔记,需要上下文时返回原会话。
|
||||
|
||||
### 在聊天中查找和整理 Obsidian 笔记
|
||||
|
||||
已有 Obsidian 笔记可以直接接入 GoodBuddy。在“设置 → 能力与工具 → MCP”的 Obsidian 卡片中,选择本机已注册的仓库,或限定一个文件夹,测试连接并保存,然后启用并分配给所用 Runtime。无需启动 Obsidian,也无需额外安装 Obsidian 插件或配置 REST 服务。
|
||||
|
||||
接入后,可以请助手查找笔记、读取内容,或将讨论结果写回仓库;也支持追加、局部修改、目录浏览,以及标签和属性操作。笔记仍保存在原仓库,不会自动复制成 GoodBuddy 知识库。
|
||||
|
||||
目前支持直连模型及 GoodBuddy 管理的本机 OpenCode、Continue 聊天,默认关闭;DeepSeek Harness 和远程执行暂不支持。Ask 只读,Execute 可写入;多仓库调用需要明确目标仓库。接入本机文件不等于离线推理,读出的内容会随当前会话交给所选模型处理。
|
||||
|
||||
> **【待补图 07|建议|Obsidian 接入与读写】** 已有候选 `obsidian.png` 展示仓库范围和 Runtime 分配,尚需确认构建来源;正文主图优先补公开笔记的搜索、写入与回读结果。计划文件:`assets/07-obsidian-notes.png`。
|
||||
>
|
||||
> 建议图注:按仓库范围接入本机 Obsidian,在聊天中查找笔记并保存整理结果。
|
||||
|
||||
### 从输入区打开本地原生客户端
|
||||
|
||||
本地项目选择 Continue 或 OpenCode 后,输入框下方可以打开工作栏内的原生交互终端;选择 DS 后,可以在系统默认浏览器中打开官方 DeepSeek Harness Web 客户端。启动时沿用当前项目目录与所选模型,适合希望使用 Runtime 自身交互界面的用户。
|
||||
|
||||
原生客户端使用独立会话,不会自动接续或同步 GoodBuddy 中的聊天历史。DS 网页关闭后,本地服务继续运行,可以回到 GoodBuddy 重新打开或停止;退出应用会清理所属服务。
|
||||
|
||||
当前入口支持本地项目,远程原生客户端尚未接通。Continue 与 DS Web 需要可用的标准 Node 环境,首次准备环境可能需要下载。Ask 与 Execute 仍有工具权限区别,Continue、OpenCode 原生客户端在 Ask 下暂不接入 MCP 工具。
|
||||
|
||||
> **【待补图 08|建议|原生终端与 DS Web】** 已有 `continue.png`、`opencode.png`、`deepseekweb.png` 候选;发布前确认构建来源,并处理本机路径、浏览器书签及与演示无关的会话。Continue 图含模型能力警告,建议换用合适模型重拍;不能据启动画面宣称完整对话验收通过。计划文件:`assets/08-native-clients.png`。
|
||||
>
|
||||
> 建议图注:在工作栏打开原生终端,或在系统浏览器中使用 DS Web 的独立会话。
|
||||
|
||||
### 复制模型连接,保留已有配置
|
||||
|
||||
在“设置 → 模型连接”中打开一条 LLM 连接,点击“复制”,即可在副本中修改模型名称、地址或其他选项,再保存为新连接。协议、请求定制和认证配置随副本带入,已保存的 API Key 无需重新输入。
|
||||
@@ -56,6 +94,18 @@ GoodBuddy 新增了监督者工作回顾:选择一个项目或一段时间,
|
||||
|
||||
## 功能改进
|
||||
|
||||
### 知识库文档与来源集中浏览
|
||||
|
||||
知识库将内容来源与文档索引合并为统一列表。单文档来源合成一行,目录继续按组展示,导入失败、尚未生成文档的来源也保留恢复入口。搜索可以同时查找来源与文档,网址来源保留原网址,便于辨认同名资料。
|
||||
|
||||
列表突出查看入口,打开原文、分块管理、重新解析等操作收进更多菜单。解析结果页也整理了返回导航和图片操作,减少长名称、多个按钮挤在一行的情况。
|
||||
|
||||
任务历史改为按批次展示,可以展开处理步骤,查看进行中、失败与历史记录。筛选与计数跟随当前文档或来源,便于检查一次导入的处理情况。
|
||||
|
||||
### 图谱按事件、实体和关系切换
|
||||
|
||||
故事线图谱侧栏将原来上下堆叠的列表改为“事件、实体、关系”页签,各自显示数量并独立滚动。切换页签保留已有选中对象,在画布选中对象时,侧栏会切到对应类别,查看关联信息时少一些来回滚动。
|
||||
|
||||
### 自动监督与手动回顾分开管理
|
||||
|
||||
原有的每日、每周计划现在集中到“自动监督”。新建或编辑计划时,可以选择全局或多个项目,设置时间、时区、回顾窗口和历史保留期限;暂停的计划在编辑保存后仍保持暂停。
|
||||
@@ -78,7 +128,7 @@ GoodBuddy 新增了监督者工作回顾:选择一个项目或一段时间,
|
||||
>
|
||||
> 建议图注:从活动记录查看处理阶段与已保存批次,展开核对来源。
|
||||
|
||||
> **【待核对 C01|暂停与取消的版本差异】** `v0.13.16` 支持主动暂停和失败续跑,但活动页“继续”后的同卡片暂停控件仍有可用性缺口。`5116613` 修复该问题并增加取消入口,见末尾开发中补充。截图与最终文案必须对应同一版本,不能把后续控件标成 0.13.16 已有。
|
||||
> **【待核对 C01|暂停与取消的版本差异】** `v0.13.16` 支持主动暂停和失败续跑,但活动页“继续”后的同卡片暂停控件仍有可用性缺口。`5116613` 修复该问题并增加取消入口,见末尾“回顾运行期间的控制”。截图与最终文案必须对应同一版本,不能把后续控件标成 0.13.16 已有。
|
||||
|
||||
分页和批次记录便于核查处理范围,模型给出的总结、实体和关系仍需人工判断;来源处理完成不代表每个事实都被模型准确理解。
|
||||
|
||||
@@ -135,9 +185,19 @@ Host 更新还会清理已确认停用的旧 Agent 程序和归属明确的孤
|
||||
- 纯文本排队消息不再显示无效的“查看附件”按钮;浏览器页签关闭失败后重试成功,会清除残留错误。
|
||||
- 监督反馈显示会话或任务名称,固定与刷新按钮在窄侧栏中排列更紧凑。工作回顾和活动页使用可用宽度,运行阶段与已保存批次更醒目。
|
||||
|
||||
### 开发中补充:回顾运行期间的控制
|
||||
### 运行配置与界面修复
|
||||
|
||||
> **【待替换 R02|尚未发布的修复】** 以下仅对应 `5116613`,不属于 `v0.13.16`。正式发布前核验其归属版本和安装包,届时合并到上文对应段落并删除本提示;若只发布截至 0.13.16 的文章,则移除本小节。
|
||||
- 修复 Continue 禁用自动更新后仍显示“Checking for updates”的问题,避免空闲终端显示误导性的更新状态。
|
||||
- 补齐 DS Web、远程 Runtime 和模型桥辅助进程启动时的遥测关闭配置;模型、MCP 和用户主动发起的联网请求保持可用。远程改动需对应 Agent 更新,不能视为现有 Agent 0.13.4 已包含。
|
||||
- 修复知识库不同来源的操作相互阻塞,以及多文档来源中任务范围、筛选计数不一致的问题。
|
||||
- 修复深浅主题中危险操作按钮、禁用状态、控件边框和键盘焦点显示不一致的问题,包括放弃笔记草稿的确认框。
|
||||
- MCP 编辑器和图片预览可以在父弹窗上正常操作;项目弹窗的 Escape 只处理当前弹窗,帮助层覆盖浏览器时不再被原生页面遮挡。
|
||||
- HTML 全屏预览恢复键盘进入与 Escape 返回,继续保持原有沙箱限制。
|
||||
- 窄工作栏的添加按钮不再被滚动箭头遮挡,模型连接协议文字保持可读;DS 入口移除常驻说明,重新打开和停止服务操作继续保留。
|
||||
|
||||
### 回顾运行期间的控制
|
||||
|
||||
> **【待替换 R02|发布版本归属】** 正式发布前统一核验 0.13.16 之后已完成的功能与修复是否进入目标版本和安装包。回顾控制依据 `5116613`,本轮新增依据 `5116613..0f8bf40`;两者均不能标成 `v0.13.16` 已有。
|
||||
|
||||
回顾运行期间,范围、时间选择和刷新入口继续可用;修改选择不会改变已经启动的回顾。重复点击发起按钮会提示已有运行,避免同时创建重叠回顾。
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 149 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 182 KiB |
@@ -1,5 +1,84 @@
|
||||
# 0.13.8 起综合宣传稿核查记录
|
||||
|
||||
## 2026-09-28 发布候选归档
|
||||
|
||||
- 用户授权将当前工作区宣传文档与素材一并提交、推送,并由代理自行审核后继续
|
||||
Desktop/Agent 0.15.0 发布,不再逐次等待提交确认。
|
||||
- 下方 2026-09-27 记录及正文中的 `0f8bf40` 截止点保留为当时的内容核查截面,
|
||||
其中“发布准备未提交”“Agent 实机未完成”等是历史状态,不代表当前发布进度。
|
||||
当前候选、实机与 CI 结果以 [0.15.0 发布准备记录](../../development/release-preparation-0.15.0.md)
|
||||
和两个独立发布渠道为准,正式版本未完成公开核验前不宣称已经发布。
|
||||
- 新增候选 `deepseekweb.png`、`obsidian.png`、`storygraph.png` 已逐张检查,
|
||||
未发现可见 API Key、密码或令牌。原图按用户授权归档,不裁切或改写;
|
||||
DS 图仍有本机用户名、路径和浏览器书签,图谱包含既有会话摘要,
|
||||
不能直接当作隔离公开演示素材。正式宣传配图仍遵循下方素材核验及重拍要求。
|
||||
- 本次提交原始候选素材不等于确认其构建 SHA,也不授权发布文章到外部媒体。
|
||||
不因候选截图归档宣称跨平台安装包或完整对话验收通过。
|
||||
|
||||
## 2026-09-27 增量更新
|
||||
|
||||
本节为最新核查结论;下方首次核查记录保留历史语境,其中截止点、schema 和截图缺口以本节更新为准。
|
||||
|
||||
- 用户要求检查“上一次到目前最新提交中间的功能更新”,并更新已有草稿;沿用已确认的综合稿结构,直接补充。
|
||||
- 上次截止 `51166136157a646530e1ad9f6a0242c1c6390e95`;本轮固定至 `0f8bf405db7ca21a85cc70009ad083eb837e1e03`,共 17 个提交。全文总范围为 `v0.13.7..0f8bf40`。
|
||||
- 目标提交没有 tag;已核查正式版仍截至 `v0.13.16`。用户确认所述功能均已开发完成,正文已去除开发状态标签;后续已提交功能只保留发布版本待确认的说明。工作区的 `package.json`、锁文件、Agent Runtime 锁、功能矩阵和未跟踪 `release-preparation-0.15.0.md` 不作为已发布依据,也未修改。
|
||||
- 选题:保留工作回顾主线,新增聊天采集、Obsidian 与原生客户端三个独立使用场景;知识库统一列表和图谱页签归入改进;运行配置和交互问题归入修复。按用户要求,打包类修复只保留内部核查依据,不进入宣传正文。标题随覆盖范围更新。
|
||||
- `1094433` 将数据库格式升至 48。正文已替换仅适用于 0.13.15→0.13.16 的升级说明,明确完整备份和旧客户端回退限制。
|
||||
|
||||
### 本轮完整盘点
|
||||
|
||||
下表“实现”只指进入固定提交。逐项依据提交 diff、生产实现和已提交的功能记录;本轮未执行产品测试、打包、真实模型调用或远程 Host 验收。
|
||||
|
||||
| 内容 | 分类与入口 | 功能与边界 | 提交及证据 |
|
||||
| --- | --- | --- | --- |
|
||||
| 本机 Obsidian 接入 | 新增/设置→能力与工具→MCP | 注册仓库发现、指定文件夹、独立测试与保存、开关和 Runtime 分配;搜索、读取、写入、追加、局部修改等。默认关闭;直连模型及受管理本机 OpenCode/Continue 支持,DSH 与远程不支持;Ask 只读、Execute 可写;不是知识库复制或同步 | `55efca3`;`src/main/obsidian/obsidian-service.ts`、`src/shared/obsidian-tools.ts`、[Obsidian 进度](../../features/obsidian/progress.md) |
|
||||
| 聊天采集到魔法笔记 | 新增/助手消息、会话菜单 | 单条助手正文或完整会话用户/助手正文,预览编辑、追加或原子创建笔记;保留来源回跳,源删除后内容保留;不复制工具日志/附件,单记录 500 KiB,生成中不可采集 | `1094433`;`App.tsx`、`ChatTimeline.tsx`、`magic-notes-contracts.ts`、[笔记进度](../../features/magic-notes/progress.md) |
|
||||
| 快速笔记与草稿 | 新增/快速笔记、工作栏“+” | 标题/正文搜索、摘要、文字追加;切项目/会话保留草稿,关闭/替换/禁用有确认,重启不恢复;仍是全局笔记,完整画布/待办编辑在工作区;采集本身不调模型,自动评论沿用设置 | `1094433`;`MagicNotesPanel.tsx`、`MagicNoteSource.tsx`、`use-magic-note-draft.tsx` |
|
||||
| 来源存储升级 | 兼容性/启动 | schema 48 保存来源元数据,不改写文件化正文;旧客户端不能直接打开升级数据库 | `1094433`;`assistant-database.ts`、笔记技术设计 |
|
||||
| 本地原生客户端 | 新增/聊天输入区 | Continue/OpenCode 工作栏终端、DS 系统浏览器 Web;沿用项目与模型,独立历史;DS 可复用、重开、停止,关闭网页不停止服务。远程协调入口未接通;Continue/DS 需标准 Node,托管准备可能联网;Continue/OpenCode 原生 Ask 暂无 MCP | `f81f342`;`native-client-coordinator.ts`、`native-terminal-client.ts`、`native-dsh-web-client.ts`、[客户端方案](../../features/assistant-workbar/runtime-native-client-proposal.md) |
|
||||
| DSH 依赖升级 | 新功能配套/内部版本 | DSH 0.1.7-rc.2、Cordis 4.0.4;不把依赖版本当模型名或稳定版承诺,正文并入原生客户端 | `f81f342`;提交中的 package/锁文件 |
|
||||
| 知识库统一列表 | 改进/知识库文档页 | 单文档来源合行、目录分组、失败来源保留、来源与文档统一搜索、紧凑拖放区域;归属语义不改变 | `5177b47`;`knowledge-workspace/DocumentsView.tsx`、[知识库界面](../../features/knowledge-base/ui-design.md) |
|
||||
| 文档操作及任务批次 | 改进兼修复/列表、解析预览、任务页 | 保留 URL,突出查看与更多菜单,解析结果导航和图片操作归位;按批次展开历史,计数/筛选跟随对象;多文档来源范围修正,不同来源操作不互相阻塞 | `ceb275b`、`67dedc2`;`DocumentsView.tsx`、`KnowledgeTasksView.tsx`、`DocumentResultPreview.tsx` |
|
||||
| 图谱侧栏页签 | 改进/故事线图谱 | 事件、实体、关系计数与独立滚动,切页签保留选择,画布选中联动类别;没有新增图谱导出或回放 | `40c108d`;`SupervisorWorkspace.tsx` |
|
||||
| 遥测配置传播 | 修复/启动 | 补到 DS Web、远程 Runtime、模型桥 helper;不影响主动联网,不是新设置页或无联网保证;对应 Agent 发布归属待定,不能归给 Agent 0.13.4 | `eb53c82`;`runtime-privacy-environment.ts`、Agent profile/helper |
|
||||
| Continue 更新状态 | 修复/原生终端 | 禁用更新时更新服务不再发出检查状态;不称终端卡死已修复,不涉及关闭桌面更新 | `0f0b6ac`;`continue-host-adapter.ts` |
|
||||
| DS Web portable 依赖 | 内部维护/不进入宣传正文 | 修正 CLI、嵌套依赖和 Web 资源复制,新增 CLI 入口存在性检查;仅保留核查依据,未据此宣称最终包完整验证 | `5ecc19d`;`build/native-dsh-resources.cjs`、`build/build-portable.cjs`、package 复制规则与测试 |
|
||||
| 控件、弹层与窄布局 | 修复/多页面 | 危险按钮、深浅主题、禁用与焦点、Continue 字段;MCP/图片嵌套弹层可交互、项目 Escape 范围、帮助与原生浏览器遮挡;HTML 键盘与 Escape;工作栏添加按钮和模型协议文字 | `8b15399`、`11facf0`、`2713a81`;`styles.css`、`dialog-focus.ts`、`StaticHtmlPreview.tsx`、`WorkbarShell.tsx`、[弹层复核](../../quality/overlay-review-2026-09-27.md) |
|
||||
| DS 输入区精简 | 改进/输入区 | 删除常驻独立会话/服务说明,保留重开与停止;正文合入界面调整,实际生命周期照实说明 | `0f8bf40`;`RuntimeNativeClientActions.tsx` |
|
||||
| IPC 与聊天组件抽取 | 维护/不单独宣传 | 模型设置 IPC、聊天历史组件及文档归属说明;不当作新增用户功能 | `4edf06b`、`44cd944`;`model-settings-ipc.ts`、`ChatHistoryPane.tsx` |
|
||||
| 导航测试修正及文章素材 | 维护/不单独宣传 | 嵌套页签断言修正;上一稿提交及 Continue/OpenCode 图片入库 | `4a2986c`、`11facf0`、`5ecc19d` |
|
||||
|
||||
### 验证证据与限制
|
||||
|
||||
- Obsidian 已提交记录包含 Windows Electron 设置操作、本机 OpenCode/Continue 读写及解包应用连接验证;未扩大为所有平台安装包或物理断网通过。
|
||||
- 聊天采集记录包含真实 App/Preload/IPC/SQLite、502 条历史、来源回跳、214px 面板输入和源删除保留;502 是样例,非产品上限。schema 和正文容量另查契约。
|
||||
- 原生客户端有本地真实模型历史证据,但部分组件/IPC 使用测试模拟;Continue 后续记录有完整 Windows 生产 App 操作。DS 正常 UI、最终 portable 和跨平台整体验收不能据此视为全通过。部分历史模型验证有 TLS override,不作为严格 TLS 验证证据。
|
||||
- 遥测修复有 16 项定向测试记录,修改后的 Agent 实机与后台联网监测尚未完成;DS 打包有 3 项复制规则回归,非最终包真实对话。
|
||||
- `2713a81` 全量记录为 5309 通过、3 失败、83 跳过;项目焦点修正后定向 331 通过,其余两个 HeartbeatCenter 断言由 `4a2986c` 修正,后续 96 项通过及 typecheck/lint 通过。最终固定提交未重跑全量,不能合写为全量全绿。
|
||||
- 知识库有定向及 Electron 布局回归,真实导入/解析链路未在对应改动轮重跑。历史证据详见[知识库进度](../../features/knowledge-base/progress.md)、[工作栏进度](../../features/assistant-workbar/progress.md)、[控件与响应式复核](../../quality/responsive-controls-review-2026-09-27.md)。
|
||||
|
||||
### 配图更新
|
||||
|
||||
已逐张读取四张现有图片,未改动或裁切原文件;`continue.png`、`opencode.png` 已由 `5ecc19d` 跟踪,`obsidian.png`、`deepseekweb.png` 是用户工作区未跟踪素材。图片只作候选,尚未绑定可核验构建 SHA,因此未直接作为最终配图插入正文。本轮没有新拍截图,也没有将上一轮构建检查结论冒称为本轮重新验证。
|
||||
|
||||
| 编号 | 内容与路径 | 最新状态 |
|
||||
| --- | --- | --- |
|
||||
| 01–05 | 原工作回顾、来源、图表、批次、待办图 | 仍待补,原计划保留;最终截图需反映最新图谱页签 |
|
||||
| 06 | 聊天采集与来源返回;`assets/06-chat-note-source.png` | 必补;现有四张图均不能证明该流程 |
|
||||
| 07 | Obsidian;候选 `obsidian.png`,计划 `assets/07-obsidian-notes.png` | 建议;现图设置可读、浅色中文,能展示范围和分配,不能证明读写结果;需核验构建来源或补拍公开示例 |
|
||||
| 08 | 原生客户端;候选 `continue.png`、`opencode.png`、`deepseekweb.png`,计划 `assets/08-native-clients.png` | 建议;前两张展示工作栏终端并含本机路径及聊天;Continue 有模型能力警告;DS 图含书签、头像和本机用户路径。发布前重拍或生成明确标注的脱敏副本,并确认构建来源 |
|
||||
| R01/R02/C01 | 最终版本、后续提交的发布归属、回顾控件 | 仍待最终安装包核验;R02 覆盖 0.13.16 之后已完成的功能与修复 |
|
||||
|
||||
### 本轮交付检查
|
||||
|
||||
仅更新正文、核查记录和索引;产品测试、构建、新截图及真实模型调用为 0。
|
||||
|
||||
- Python 3.13.13 执行 deai-writing 扫描:阻断项 0、复核项 16、读取错误 0。按命中行逐条核对:15 项为发布状态、功能范围、升级或取消语义等必要限定,1 项是“模型准确理解”的能力边界表述,保留。
|
||||
- 独立只读复核未发现重大事实过度宣称、版本混淆或前后矛盾;新增 8 个相对 Markdown 链接目标均存在,图 06–08 的编号、场景、文件名与优先级对应,R01/R02/C01 和索引一致。
|
||||
- 四张候选素材均已打开审阅;没有插入不存在的计划图片链接,没有把启动界面当作完整流程验收。
|
||||
- `git diff --check -- docs/pr-articles` 通过,仅提示既有 LF→CRLF 行尾策略。完成时再次确认 HEAD 仍为 `0f8bf405db7ca21a85cc70009ad083eb837e1e03`。
|
||||
- 未提交 Git、打 tag 或对外发布;既有版本准备与图片文件保持原状。
|
||||
|
||||
## 状态与范围
|
||||
|
||||
- 状态:草稿,未对外发布,截图待补。首次建档与检查日期:2026-09-26。
|
||||
@@ -117,7 +196,7 @@
|
||||
| 04 | 必补 | 同一回顾的阶段与保存批次;`assets/04-review-progress.png` | blocked:同上,区分 0.13.16 与后续取消控件 |
|
||||
| 05 | 建议 | 虚构笔记待办调宽与折叠;`assets/05-note-todos.png` | blocked:同上 |
|
||||
| R01 | 必填 | 最终版本、下载、日期、完整更新说明 | 尚未在线核验,不编造 |
|
||||
| R02 | 必处理 | 5116613 的最终归属 | 已提交但未归入目标 tag;发布前合并或移除开发中小节 |
|
||||
| R02 | 必处理 | 5116613 的最终归属 | 已提交但未归入目标 tag;发布前核验对应版本并处理小节中的编辑提示 |
|
||||
| C01 | 必核对 | 续跑期间暂停与取消控件版本 | 保留具体差异,待匹配最终安装包 |
|
||||
|
||||
取得可核验产物后的步骤:在本轮独立临时目录建立 Node supervisor 与 Electron bootstrap,ready 前隔离 userData/sessionData,通过生产 Main/Preload/Renderer 启动;正常 UI 创建虚构项目、消息、任务和笔记。回顾演示仅发送所需最小模型请求并从实际请求边界计数。检查保存与重新打开、对象来源、暂停续跑后,逐张 capturePage 并打开审阅,确认无私人资料、裁切、错误状态;只归档实际采用图片,停止本次进程并清理演示 profile。
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 394 KiB |
@@ -386,4 +386,4 @@ Agent 专题使用对应的 `agent-v…` tag。
|
||||
| 日期 | 目标 tag | 标题 | 状态 | 正文 | 发布链接 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| 2026-09-19 | 未确定(unreleased) | GoodBuddy 更新预览:画布笔记、文档处理与应用管理 | 草稿,截图待补 | [综合更新稿](./2026-09-19-unreleased/article.md) | 未发布 |
|
||||
| 2026-09-26 | 未确定;汇总 v0.13.8–v0.13.16,另列 5116613 未发布补充 | GoodBuddy 更新:工作回顾、可追溯图谱与远程对话恢复 | 草稿,截图待补 | [综合更新稿](./2026-09-26-unreleased/article.md) | 未发布 |
|
||||
| 2026-09-26(09-27 更新) | 未确定;汇总 v0.13.8–v0.13.16 及此后至 0f8bf40 的已完成、已提交内容 | GoodBuddy 更新:故事图谱、Obsidian接入、Runtime原生终端 | 草稿,已有候选素材,配图与发布信息待核验 | [综合更新稿](./2026-09-26-unreleased/article.md) | 未发布 |
|
||||
|
||||
@@ -49,6 +49,10 @@ AI 列 280。测试同步原生输入与实际状态后独立复跑通过,保
|
||||
随后 Linux CI 与共享 Host 的实测表明窗口焦点并不足够:缩窄窗口会收起工作栏,
|
||||
隐藏面板仍有非零宽度,Escape 实际发给工作栏开关。测试须等待响应式状态完成,
|
||||
按真实入口重新打开工作栏,并确认目标输入框取得焦点,再测试键盘返回和导航。
|
||||
验证输入框自动聚焦时,Electron 测试窗口也应从开始即显示并取得焦点,不要到后续
|
||||
键盘阶段才显示;失败信息应包含实际焦点、输入框禁用/可见状态及保存状态。
|
||||
取消边界测试不使用 `setTimeout(0)` 猜测异步 I/O 的完成次序。Continue 启动前取消
|
||||
用例改在既有启动环境回调处触发中止,仍断言未启动子进程及临时配置清理。
|
||||
|
||||
## 整窗遮罩与原生拖动区域
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"releases": [
|
||||
{
|
||||
"version": "0.15.0",
|
||||
"releasedAt": "2026-09-27",
|
||||
"releasedAt": "2026-09-28",
|
||||
"notes": {
|
||||
"zh-CN": {
|
||||
"highlights": [],
|
||||
|
||||
@@ -319,6 +319,11 @@ describe('ContinueHostAdapter', () => {
|
||||
it('removes capability config when cancellation reaches the pre-spawn check', async () => {
|
||||
const distribution = await createDistribution()
|
||||
const launchHost = vi.fn<ContinueHostLauncher>()
|
||||
const controller = new AbortController()
|
||||
const launchEnvironmentProvider = vi.fn(() => {
|
||||
controller.abort(new Error('cancelled'))
|
||||
return {}
|
||||
})
|
||||
const adapter = new ContinueHostAdapter({
|
||||
binaryPath: distribution.entryPath,
|
||||
configPath: '',
|
||||
@@ -326,6 +331,7 @@ describe('ContinueHostAdapter', () => {
|
||||
cacheRoot: distribution.cacheRoot,
|
||||
trustedBundleHashes: [distribution.sourceHash],
|
||||
launchHost,
|
||||
launchEnvironmentProvider,
|
||||
modelProfile: {
|
||||
id: '00000000-0000-4000-8000-000000000098',
|
||||
name: 'Local model',
|
||||
@@ -335,7 +341,6 @@ describe('ContinueHostAdapter', () => {
|
||||
authentication: 'none'
|
||||
}
|
||||
})
|
||||
const controller = new AbortController()
|
||||
const pending = adapter.run(
|
||||
'search',
|
||||
controller.signal,
|
||||
@@ -348,9 +353,8 @@ describe('ContinueHostAdapter', () => {
|
||||
}
|
||||
}
|
||||
)
|
||||
setTimeout(() => controller.abort(new Error('cancelled')), 0)
|
||||
|
||||
await expect(pending).rejects.toThrow('cancelled')
|
||||
expect(launchEnvironmentProvider).toHaveBeenCalledOnce()
|
||||
expect(launchHost).not.toHaveBeenCalled()
|
||||
await expect(readdir(distribution.cacheRoot)).resolves.not.toEqual(
|
||||
expect.arrayContaining([
|
||||
|
||||
@@ -13,7 +13,7 @@ const directory = process.env.GB_CAPTURE_DIRECTORY!
|
||||
app.setPath('userData', join(directory, 'profile'))
|
||||
|
||||
app.whenReady().then(async () => {
|
||||
const win = new BrowserWindow({ show: false, width: 1280, height: 900, webPreferences: {
|
||||
const win = new BrowserWindow({ show: true, width: 1280, height: 900, webPreferences: {
|
||||
sandbox: true, contextIsolation: true, nodeIntegration: false, backgroundThrottling: false,
|
||||
preload: join(directory, 'preload.cjs')
|
||||
} })
|
||||
@@ -46,7 +46,16 @@ app.whenReady().then(async () => {
|
||||
if (await run(script)) return
|
||||
await new Promise(resolve => setTimeout(resolve, 50))
|
||||
}
|
||||
throw new Error(`Timed out: ${label}`)
|
||||
const focus = await run(`(() => {
|
||||
const title = document.querySelector('#compact-note-title');
|
||||
const active = document.activeElement;
|
||||
return { documentFocused: document.hasFocus(), activeId: active?.id,
|
||||
activeTag: active?.tagName, activeLabel: active?.getAttribute('aria-label'),
|
||||
titlePresent: Boolean(title), titleDisabled: title?.disabled,
|
||||
titleVisible: title?.checkVisibility(), titleInert: Boolean(title?.closest('[inert]')),
|
||||
saving: document.querySelector('.magic-note-panel')?.getAttribute('aria-busy') };
|
||||
})()`)
|
||||
throw new Error(`Timed out: ${label}; focus=${JSON.stringify(focus)}`)
|
||||
}
|
||||
function button(name: string, root = 'document'): string {
|
||||
return `[...${root}.querySelectorAll('button,[role="menuitem"]')].find(e => (e.getAttribute('aria-label') || e.textContent.trim()) === ${JSON.stringify(name)} && e.getClientRects().length)`
|
||||
@@ -71,6 +80,9 @@ app.whenReady().then(async () => {
|
||||
let closed = false
|
||||
try {
|
||||
await win.loadURL(process.env.GB_CAPTURE_URL!)
|
||||
win.focus()
|
||||
win.webContents.focus()
|
||||
await wait('document.hasFocus()', 'visible capture window focus')
|
||||
await wait('document.body.innerText.includes("CAPTURE_HISTORY_501_END")', 'App persisted history')
|
||||
assert.equal(await run('document.body.innerText.includes("CAPTURE_HISTORY_0_END")'), false, 'old history must initially be folded')
|
||||
// The last assistant reply is rendered by the real ChatTimeline.
|
||||
|
||||
Reference in New Issue
Block a user