KanBox:修好收录路径,再把数据安全和 TestFlight 准备补齐 今天的 KanBox 工作从一条实际收录失败开始,逐步转向 TestFlight 前的准备。来源预览能够打开,不代表正式收录时仍能取得完整媒体;开发安装包能够启动,也不代表可以直接上传或完成云同步。这些差别以前容易被一句“新包已生成”遮住,今天需要逐项核实。版本按工作顺序推进:160 修复来源预览中的正式收录,161 补齐正文里的仓库链接识别,162 完成续签和覆盖安装。随后重新审查发布缺口,并在 163 源码中补上数据安全、图片同步准备、会员底层和发布检查。163 最终只有无签名归档,不能安装或上传 TestFlight。今天没有把“本地能做的”与“已经对外可用的”混在一起。代码和本地验证已完成一批工作,但云端生产结构、双设备同步、真实交易与商店资料仍需要后续配合。正式收录不能只依赖预览中的旧地址小红书来源预览中的正式收录原来只重读登录网页,有时网页已只剩封面,无法取得完整原帖媒体。预览成功过,也不能保证旧视频地址到收录时仍有效,更不能把封面存成视频后提示成功。160 改为先重新读取完整原帖媒体,失败后再回到现有登录会话,不直接保存预览中的旧地址。修复只作用于来源预览的正式收录,没有调整已经正常工作的普通链接解析,也没有放宽完整性检查来只存标题或封面。143 项针对性测试和三个界面流程通过:网页只剩封面时取得完整原帖再收录,保存失败后可以重试且不重复,关闭页面后的迟到结果不会入库。主测试环境的全量检查执行 1870 项,保留 1 项既有跳过,解析金样本一致。安装包检查通过后,160 完成覆盖安装并启动,保留既有收藏与登录状态。这一步完成了代码修复、隔离验收和安装,但同一条真实小红书内容仍需在新版上复测。安装成功不能代替实际收录成功;当时另一系统的微博网页关闭测试异常也仍留在记录里,没有被主环境通过的结果抹掉。明确的“作者/项目名”也应成为链接另一篇公开笔记提到“项目名:DictionLabs/Diction”,正文中却没有生成仓库链接。旧规则要求同时出现 GitHub 字样,因此漏掉了这种已经提供完整仓库身份的写法。161 支持明确的“项目名、仓库名”上下文与完整的作者/项目组合。只有一个项目名称时仍不猜地址,同时检查日期、普通文件路径和其他托管平台的内容,避免把任何带斜杠的文字都误标成 GitHub 仓库。识别与正文实际点击测试通过,整包执行 1882 项测试、未出现失败,随后完成打包和覆盖安装。旧收藏重新打开详情即可使用新识别规则,不必删除、重新收录或改写原正文。之后的 162 保持功能与前一版一致,完成续签、安装与启动核对;续签解决的是安装有效期,不是云同步或正式分发已经完成。云同步要同步图片内容,不只是本机地址TestFlight 前的重新审查确认,162 仍是无 iCloud 能力的开发包,原打包脚本固定走本机安装路径,不能仅靠开发条件变化就自动成为发布包。另一个实质缺口是笔记图片只保存本机文件地址:记录同步了,另一台设备也可能没有对应图片。163 保留原有本机安装流程,另外增加 TestFlight 发布准备与检查,避免拿旧开发包直接当上传产物。同步所需的后台配置、数据安全提示以及笔记图片的保存和恢复逻辑也补进源码。图片同步准备与笔记一起保存,同名图片冲突时保留本机原图并报错,不覆盖它。复审继续补出了旧路径、导出和失败回滚问题,并加入测试。图片恢复后刷新小组件封面;临时空库也不能覆盖最后一份可读的小组件内容。这些改动保护的不只是笔记页,还包括备份与桌面显示之间的关联。云端结构准备工具默认只检查本地模型,与用户收藏库隔离,不自动部署生产环境。开发与生产结构仍要分别验证;部署结构也不意味着开发数据会一起迁移。到今天,笔记图片同步与备份的本地准备已实现,真正跨设备新增、编辑、删除、图片显示与断网恢复仍未验收。离线视频仍属本机文件,不能承诺随收藏完整同步。临时内存中的“保存成功”不能冒充持久化数据安全审查发现一个代码层风险:数据库打不开时,App 可能使用临时内存继续工作,若仍提示保存成功,用户会误以为内容已经持久保存。它是需要修复的失败路径,不是已经发现实际收藏损坏。163 在保存入口增加保护:数据库不可用时,不再把临时内存内容报成已保存,首页持续提示。导出也增加检查,临时显示空库时停止操作,避免把空文件交付为原收藏的备份。这类保护必须同时考虑恢复与删除范围。开启同步后的清空操作需要明确说明可能影响云端和其他设备,备份恢复也需要核对云端状态,不能靠卸载重装解决。今天没有卸载 App 或清理手机数据;已有数据的真实迁移与双设备验收仍是后续任务。会员底层接上了,测试版仍保持免费此前会员页主要是展示,真实购买、恢复购买和免费版数量限制尚未接入。今天补入购买底层,但没有提前开启收费,也没有把已有收藏限制到 20 条。复审又定位并修复了两处状态问题:恢复成功后错误提示可能残留,启动时并发读取购买状态可能让购买按钮一直停用。对应回归加入最终检查。它们处理的是购买状态与界面的关系,不意味着后台商品、真实付款或恢复交易已经通过验收。当前测试版仍免费开放。后台商品配置、交易验证和数量限制启用各自有条件,不能只因底层代码已有就称会员功能完整。三语隐私、支持与条款网页也完成本地草稿,但资料和托管入口尚未补齐,未公开发布。本地归档完成,不等于可以上传 TestFlight发布准备还需要查清此前 WebKit 测试不稳定的问题。这轮复现了旧测试反复运行的失败,修正窗口挂载方式后,在 iOS 27 上定向重复执行 426 次、零失败,没有跳过用例或放宽断言。完整回归随修复逐步增加。最终两个系统各执行 1957 项测试、零失败,各保留 1 项按需联网测试未启用,解析金样本一致;12 项设置、会员页与本地模型界面测试通过。正式版编译与归档检查覆盖三目标资源、隐私清单、图标和调试代码剔除,业务编译警告为零。打包脚本还修正了旧版 Bash 兼容问题,并重新跑完整归档流程。163 的本地收尾因此完成,但产物是无签名归档,不能安装或上传 TestFlight。最新工作开始核对 Xcode 团队,付费团队确认仍在进行;不能把正在核对的状态写成已确认。云端生产结构、双设备验证、公开资料和商店审核准备也没有被本地编译结果替代。后续顺序已明确:先备份和核对发布条件,再验证开发环境、准备生产结构,生成真正可上传的包,最后做双设备测试与对外测试准备。首轮可以继续免费开放,真实购买与数量限制不必为了内部测试仓促开启。收尾先保护数据,再扩大可用范围今天有三点认识。预览与收录应分别验证,旧媒体地址不能直接承担保存结果;记录同步与文件同步是两回事,图片地址不能替代图片内容;数据库失败时,保存提示和备份导出必须一起受到保护,否则两个入口可能同时误导用户。下一步是完成团队与发布条件核对、云端生产结构准备和双设备同步验收,同时补齐公开政策、支持与商店资料。160 的真实同帖收录、更多媒体组合及相关真机体验仍需证据,会员也要等真实交易验证后才启用。今天完成的是一批本地修复与发布准备,不是已经上架或完成全部同步。隐私说明本文只整理当天有活动且能够核实的项目对话,排除自动化、日记与发布聊天。保留公开项目名、版本、技术机制和必要测试数量;删除账户、个人身份、客户业务、私人媒体、内部地址、绝对路径、设备标识与其他可定位个人基础设施的信息,不包含凭据、完整代码或原始日志。
2026-10-08|自然语言编程日记
今天的 KanBox 工作从一条实际收录失败开始,逐步转向 TestFlight 前的准备。来源预览能够打开,不代表正式收录时仍能取得完整媒体;开发安装包能够启动,也不代表可以直接上传或完成云同步。这些差别以前容易被一句“新包已生成”遮住,今天需要逐项核实。
版本按工作顺序推进:160 修复来源预览中的正式收录,161 补齐正文里的仓库链接识别,162 完成续签和覆盖安装。随后重新审查发布缺口,并在 163 源码中补上数据安全、图片同步准备、会员底层和发布检查。163 最终只有无签名归档,不能安装或上传 TestFlight。
今天没有把“本地能做的”与“已经对外可用的”混在一起。代码和本地验证已完成一批工作,但云端生产结构、双设备同步、真实交易与商店资料仍需要后续配合。
正式收录不能只依赖预览中的旧地址
小红书来源预览中的正式收录原来只重读登录网页,有时网页已只剩封面,无法取得完整原帖媒体。预览成功过,也不能保证旧视频地址到收录时仍有效,更不能把封面存成视频后提示成功。
160 改为先重新读取完整原帖媒体,失败后再回到现有登录会话,不直接保存预览中的旧地址。修复只作用于来源预览的正式收录,没有调整已经正常工作的普通链接解析,也没有放宽完整性检查来只存标题或封面。
143 项针对性测试和三个界面流程通过:网页只剩封面时取得完整原帖再收录,保存失败后可以重试且不重复,关闭页面后的迟到结果不会入库。主测试环境的全量检查执行 1870 项,保留 1 项既有跳过,解析金样本一致。安装包检查通过后,160 完成覆盖安装并启动,保留既有收藏与登录状态。
这一步完成了代码修复、隔离验收和安装,但同一条真实小红书内容仍需在新版上复测。安装成功不能代替实际收录成功;当时另一系统的微博网页关闭测试异常也仍留在记录里,没有被主环境通过的结果抹掉。
明确的“作者/项目名”也应成为链接
另一篇公开笔记提到“项目名:DictionLabs/Diction”,正文中却没有生成仓库链接。旧规则要求同时出现 GitHub 字样,因此漏掉了这种已经提供完整仓库身份的写法。
161 支持明确的“项目名、仓库名”上下文与完整的作者/项目组合。只有一个项目名称时仍不猜地址,同时检查日期、普通文件路径和其他托管平台的内容,避免把任何带斜杠的文字都误标成 GitHub 仓库。
识别与正文实际点击测试通过,整包执行 1882 项测试、未出现失败,随后完成打包和覆盖安装。旧收藏重新打开详情即可使用新识别规则,不必删除、重新收录或改写原正文。之后的 162 保持功能与前一版一致,完成续签、安装与启动核对;续签解决的是安装有效期,不是云同步或正式分发已经完成。
云同步要同步图片内容,不只是本机地址
TestFlight 前的重新审查确认,162 仍是无 iCloud 能力的开发包,原打包脚本固定走本机安装路径,不能仅靠开发条件变化就自动成为发布包。另一个实质缺口是笔记图片只保存本机文件地址:记录同步了,另一台设备也可能没有对应图片。
163 保留原有本机安装流程,另外增加 TestFlight 发布准备与检查,避免拿旧开发包直接当上传产物。同步所需的后台配置、数据安全提示以及笔记图片的保存和恢复逻辑也补进源码。图片同步准备与笔记一起保存,同名图片冲突时保留本机原图并报错,不覆盖它。
复审继续补出了旧路径、导出和失败回滚问题,并加入测试。图片恢复后刷新小组件封面;临时空库也不能覆盖最后一份可读的小组件内容。这些改动保护的不只是笔记页,还包括备份与桌面显示之间的关联。
云端结构准备工具默认只检查本地模型,与用户收藏库隔离,不自动部署生产环境。开发与生产结构仍要分别验证;部署结构也不意味着开发数据会一起迁移。到今天,笔记图片同步与备份的本地准备已实现,真正跨设备新增、编辑、删除、图片显示与断网恢复仍未验收。离线视频仍属本机文件,不能承诺随收藏完整同步。
临时内存中的“保存成功”不能冒充持久化
数据安全审查发现一个代码层风险:数据库打不开时,App 可能使用临时内存继续工作,若仍提示保存成功,用户会误以为内容已经持久保存。它是需要修复的失败路径,不是已经发现实际收藏损坏。
163 在保存入口增加保护:数据库不可用时,不再把临时内存内容报成已保存,首页持续提示。导出也增加检查,临时显示空库时停止操作,避免把空文件交付为原收藏的备份。
这类保护必须同时考虑恢复与删除范围。开启同步后的清空操作需要明确说明可能影响云端和其他设备,备份恢复也需要核对云端状态,不能靠卸载重装解决。今天没有卸载 App 或清理手机数据;已有数据的真实迁移与双设备验收仍是后续任务。
会员底层接上了,测试版仍保持免费
此前会员页主要是展示,真实购买、恢复购买和免费版数量限制尚未接入。今天补入购买底层,但没有提前开启收费,也没有把已有收藏限制到 20 条。
复审又定位并修复了两处状态问题:恢复成功后错误提示可能残留,启动时并发读取购买状态可能让购买按钮一直停用。对应回归加入最终检查。它们处理的是购买状态与界面的关系,不意味着后台商品、真实付款或恢复交易已经通过验收。
当前测试版仍免费开放。后台商品配置、交易验证和数量限制启用各自有条件,不能只因底层代码已有就称会员功能完整。三语隐私、支持与条款网页也完成本地草稿,但资料和托管入口尚未补齐,未公开发布。
本地归档完成,不等于可以上传 TestFlight
发布准备还需要查清此前 WebKit 测试不稳定的问题。这轮复现了旧测试反复运行的失败,修正窗口挂载方式后,在 iOS 27 上定向重复执行 426 次、零失败,没有跳过用例或放宽断言。
完整回归随修复逐步增加。最终两个系统各执行 1957 项测试、零失败,各保留 1 项按需联网测试未启用,解析金样本一致;12 项设置、会员页与本地模型界面测试通过。正式版编译与归档检查覆盖三目标资源、隐私清单、图标和调试代码剔除,业务编译警告为零。打包脚本还修正了旧版 Bash 兼容问题,并重新跑完整归档流程。
163 的本地收尾因此完成,但产物是无签名归档,不能安装或上传 TestFlight。最新工作开始核对 Xcode 团队,付费团队确认仍在进行;不能把正在核对的状态写成已确认。云端生产结构、双设备验证、公开资料和商店审核准备也没有被本地编译结果替代。
后续顺序已明确:先备份和核对发布条件,再验证开发环境、准备生产结构,生成真正可上传的包,最后做双设备测试与对外测试准备。首轮可以继续免费开放,真实购买与数量限制不必为了内部测试仓促开启。
收尾先保护数据,再扩大可用范围
今天有三点认识。预览与收录应分别验证,旧媒体地址不能直接承担保存结果;记录同步与文件同步是两回事,图片地址不能替代图片内容;数据库失败时,保存提示和备份导出必须一起受到保护,否则两个入口可能同时误导用户。
下一步是完成团队与发布条件核对、云端生产结构准备和双设备同步验收,同时补齐公开政策、支持与商店资料。160 的真实同帖收录、更多媒体组合及相关真机体验仍需证据,会员也要等真实交易验证后才启用。今天完成的是一批本地修复与发布准备,不是已经上架或完成全部同步。
隐私说明
本文只整理当天有活动且能够核实的项目对话,排除自动化、日记与发布聊天。保留公开项目名、版本、技术机制和必要测试数量;删除账户、个人身份、客户业务、私人媒体、内部地址、绝对路径、设备标识与其他可定位个人基础设施的信息,不包含凭据、完整代码或原始日志。