Nightly Build (4.2.0 @ c0829f5)
Pre-release
Pre-release
修复草稿保存、引用面板与同步的复查问题 自查 v4.2.0 发布提交,修掉草稿生命周期、引用面板交互与云端索引的遗留问题。 - 草稿落盘改为合并语义:ComposerDraftRepository.save() 只覆盖本次提到的槽位、只删除显式 removed 的槽位,未提到的槽位原样写回(保留原始行,不重新序列化、不刷新 updatedAt)。此前内存缓存处于部分状态时(启动 loadConversations 因 generation 变化提前返回,或草稿读取失败保留旧缓存),一次按键会把其他对话的草稿整表删掉并经云/LAN 同步扩散。Provider 侧新增待删除槽位集合,清空槽位与 deleteConversation 显式登记删除,写回内容时撤销登记。 - 附件内容比较改为按 Resource 身份:读回时 path 已解析成 Resource 私有路径,与存储行里的暂存路径不同,按路径比较会让每次启动后的第一次保存都刷新 updatedAt。 - 远端删除对话时一并删除它的草稿行与同槽位未上传的变更,避免孤儿草稿继续参与同步与备份。 - 回收站写入失败时回滚内存里的草稿删除;restoreConversation 在对话已存在时也写回草稿(此前提前返回会静默丢掉)。 - 备份导出的草稿附件不再写入本机绝对路径(与消息附件一致退化成空路径),并补回 resourceId,恢复后仍可按 Resource 解析。 - /压缩 覆盖面改由 coveredMessageIdsForCompaction 按与 buildApiMessages 相同的过滤规则映射回原始消息 ID,不再用 API 消息条数推算而把当前提问一起覆盖。 - @ 面板补齐文件夹下钻:新增 ComposerFolderRow 与 _composerTrail,文件夹行进入下一层、层级首行取该层自带范围引用、返回按钮逐级回退;笔记页面源先列笔记再列分页;异步加载不再把选中项重置到第一行。 - Esc 记忆改比整个触发词(kind/start/end/query),删改 token 后面板会重新打开;/压缩、/总结 期间显示进度并禁止发送。 - read_conversation / list_conversation_references 纳入派发前参数校验;系统提示词只在 read_conversation 可用时才提它。 - 收录引用时刷新对话 updatedAt;清理 onSourceRowsChanged 死回调并修正 _commandRegistryOf 的过时注释。 - 文档:doc/providers.md 记录草稿落盘的合并语义与 Resource 身份比较;doc/protocol-v1.md 补齐 composer_drafts 的强制约束、云端索引归类与部署顺序。 验证: - flutter analyze --no-pub - flutter test --no-pub(1458 通过)