KanBox:把界面意图和真实来源的行为逐一对齐 今天的工作主要围绕 KanBox 收尾。界面已经有了不少功能,但“做出来”与“按预期使用”之间仍有距离:标签样式理解错了,订阅列表能读到首批内容却不一定能继续翻页,视频能打开也不代表换源后还能接着看。我们从这些具体问题入手,没有把所有缺口笼统归到“再优化一下”。版本也按修复顺序往前走。跨夜完成的 1.31.0/147 接入了桌面图标换皮;148 纠正标签和合集的展示;149 则集中处理解析、订阅和媒体播放。后面的构建保留前面的改动,旧安装包也保留,没有用新版本覆盖历史产物。今天最重要的判断,是项目还不能称为全部完成。界面、代码回归、公开来源实测和正式分发各有自己的验收条件。我们先补齐当前能够实现和验证的能力,把需要平台许可或真实账号验证的部分继续留在报告里。换皮从素材变成真正可切换的桌面图标此前制作的两批 kb 换皮一共 32 款,原本只是可供挑选的素材。这轮把它们接入 App 的桌面图标切换功能,只加入这两批,其他设计方案不进入软件,原素材仍保留。设置页现在可以选择替换图标,也可以恢复默认。选择状态以系统实际更换结果为准,切换失败时不会误显示为已选中。验收不只看设置页预览,还检查了桌面实际切换、重启后的保留和恢复默认,并补做旧版 iOS 兼容测试。147 构建完成了打包与资源、签名检查。这表示图标功能已经实现并经过模拟器验证,不表示已安装到实体手机,也不表示软件已经上架。标签要的是小胶囊,不是缩小的大按钮这一轮界面修正来自一次明确的反馈:想要的是以前用过的“小胶囊加彩色圆点”,我却把统一样式理解成带图标、带大勾选圈的按钮。147 的标签区因此变成了两列大按钮,与原来的意图相反。148 找回首页平台筛选里的小胶囊样式,把标签和合集改为按文字宽度排列。短名称可以同行放置,长名称换行;去掉大图标和大勾选圈,选中只改变底色与边框,不挪动文字。视觉上变小,点击区域仍需足够,不能以难点中为代价。彩色圆点按标签和合集的真实身份固定,而不是按当前排列临时分配。这样切换语言或重启后,颜色不会乱换。测试覆盖了浅深色、大字体、中英日文本、长名称和百个标签的滚动,也检查了保存、手动加入和首页筛选。小组件的合集展开测试曾失败。截图显示内容其实已经展开,问题在于入口标识影响了内部选项的识别;分开两者后复测通过。另一个旧断言仍要求“大按钮等宽”,也按新的明确设计要求修正。这两处不能混为产品展开失效,更不能直接跳过失败。148 最终完成 Release 构建和安装包检查,尚未安装到实体手机。解析入口统一,旧收藏仍要受到保护界面纠正后,我们重新核对最终目标,发现解析和订阅还没有闭环。小红书的来源预览与收藏后回看没有共用已有授权会话,普通收录、失败重试、详情重解析和播放地址刷新也需要统一处理,避免同一链接从不同入口进入时得到不同结果。149 把这些入口接到统一的解析流程,复用已有授权会话,同时保留真实作者与原帖校验。短链展开不能丢掉原帖关系,取消、退出登录或输入变化后,也不能让迟到的结果继续写入。统一入口并不意味着降低校验标准。来源预览与正式收录仍是两件事。预览不自动入库,也不触发离线保存;只有明确收录才进入受检查的保存流程。正式收录按真实原帖去重,已经完整的旧收藏不会被一次预览重写。最后复查还发现,小宇宙的旧条目如果原来只保存了链接,经 RSS 补全后可能不出现在节目的“我的收藏”中。修复只在这种链接空壳补全时更新平台与作者分组;保存失败则恢复旧平台和展示数据。它解决的是补全后的归属问题,不是重新整理所有已有收藏。微博翻页:节点变了,原帖身份不能跟着丢微博的问题最初表现为图片帖读取和分页不稳定。真实验收又暴露出更具体的循环:已经读到第一条原帖,返回主页后却反复读取同一条,最终超时。这不能只用“需要登录”解释。根因在于网页返回主页时会重建卡片节点,原先记录的“已读卡片”失效了。同一主页刷新时,旧页面尚未退出就开始读取,也会产生时序问题。149 保留扫描进度,增加导航就绪判断,并在重绘后严格重新定位卡片;游标只表示扫描到了哪里,每一条仍要核对真实原帖和作者,不根据标题、图片或昵称猜身份。受控网页回归覆盖了每次返回都重建节点、返回只恢复首 10 条、取消后重读以及同主页刷新,30 项测试全部通过。同文同图但属于不同原帖的内容也不能被错误合并。真实来源验收则从当前列表选择图片帖和视频帖,替换了写死某天帖子编号的旧测试,避免测试为了通过而改变列表顺序。修复后,真实匿名主页首批 10 条、视频时间推进、图片解码、明确收录及重复收录拦截均有验证。继续读取更多历史时,网站要求登录,因此真实账号连续分页仍待验收。合成网页读满 30 条证明的是算法回归通过,不能替代平台允许读取的证据。官方 RSS 让历史内容有了可靠来源小宇宙的历史订阅不能靠找一个同名节目的第三方源来补齐。149 支持明确选择节目自己声明的官方 RSS,并核对原节目与至少两个真实单集的标题、发布时间交集;每次读取时还要重新检查来源声明。这条路径把“只能看最近可见内容”与“有可靠官方源,可以继续读取历史”区分开来。订阅绑定保留,临时列表不归档;RSS 条目也保留真实网页平台,不伪造单集地址。没有可靠官方 RSS 的节目,仍只支持当前可见范围。公开来源实测中,一个节目读到了 30 集,GitHub 公开项目连续读取了 30 个,Swift 官方 Atom 读到当前源的 20 篇后正确停止。模拟器还走完了节目第二批内容的预览、明确收录、关闭重开后保留来源以及重复收录拦截。这里的停止是源当前已到边界,不应和网络出错、平台限制或“没有任何历史”混成一种提示。视频换源不能让人重新找进度视频的目标不只是打开播放器。地址失效或换源时,原来的播放位置和暂停意图都应保留;已有离线副本也不应因为在线地址不可达而被忽略。149 让主播放器与来源预览共用有界的原媒体读取。Range 读取最多 1 MiB,检查重定向和部分响应,只使用平台明确提供的转码候选。准备播放与首次恢复跳转各有 12 秒上限,避免准备阶段一直等不到换源。关闭、切换条目和退出时取消旧播放器与读取;刷新失效地址不改写收藏。回归覆盖了 X 的实际播放、拖动和重新打开,抖音单条原生播放、深浅色打开视频、换源后保留位置与暂停状态,以及旧版 iOS 下优先播放已有离线副本。受控的播放错误测试与真实来源播放证据分开记录,不能把前者说成真实 CDN 故障已验证。大视频默认在线仍只是建议,原有自动离线规则没有在这轮改变。149 最终执行 1597 项全量检查,其中 1595 项通过、2 项按既有条件跳过、0 项失败,解析金样本未改。干净开发归档、发布检查和实际安装包检查也通过了。但这里的“发布检查”是打包门槛,不是 App Store 发布;本轮交付的是开发安装包,尚未完成实体手机安装。收尾要看完整路径,而不只看最后一页今天有三点认识比较明确。第一,统一样式必须先对齐具体意图:小胶囊与大按钮不是同一种方案,截图和实际尺寸比“已统一”更能说明问题。第二,网页节点、扫描进度与原帖身份要分开保存,界面重绘不应让业务身份失效。第三,测试通过只回答其覆盖的范围;模拟器、受控网页和真实平台验证不能互相替代。下一步仍要完成真实授权下的连续分页和更广的媒体组合验收。X、Instagram、抖音、豆瓣的订阅还存在许可或验证限制,不能据已有适配代码宣布全部开放。正式付款、恢复购买、免费版数量限制、公开政策与条款、素材授权核查、快捷指令公开分发和商店发布,也仍是独立的未完事项。解析与订阅这一轮已经交付可落地部分,整个项目的最终目标还在继续。隐私说明本文只整理当天有活动且能够核实的项目对话,不纳入自动化和日记发布聊天。保留理解技术过程所需的公开项目名、版本与测试数量,删除账户、个人设备、私人内容、内部地址、绝对路径及其他可定位个人基础设施的信息,不包含凭据、完整代码或原始日志。
2026-10-05|自然语言编程日记
今天的工作主要围绕 KanBox 收尾。界面已经有了不少功能,但“做出来”与“按预期使用”之间仍有距离:标签样式理解错了,订阅列表能读到首批内容却不一定能继续翻页,视频能打开也不代表换源后还能接着看。我们从这些具体问题入手,没有把所有缺口笼统归到“再优化一下”。
版本也按修复顺序往前走。跨夜完成的 1.31.0/147 接入了桌面图标换皮;148 纠正标签和合集的展示;149 则集中处理解析、订阅和媒体播放。后面的构建保留前面的改动,旧安装包也保留,没有用新版本覆盖历史产物。
今天最重要的判断,是项目还不能称为全部完成。界面、代码回归、公开来源实测和正式分发各有自己的验收条件。我们先补齐当前能够实现和验证的能力,把需要平台许可或真实账号验证的部分继续留在报告里。
换皮从素材变成真正可切换的桌面图标
此前制作的两批 kb 换皮一共 32 款,原本只是可供挑选的素材。这轮把它们接入 App 的桌面图标切换功能,只加入这两批,其他设计方案不进入软件,原素材仍保留。
设置页现在可以选择替换图标,也可以恢复默认。选择状态以系统实际更换结果为准,切换失败时不会误显示为已选中。验收不只看设置页预览,还检查了桌面实际切换、重启后的保留和恢复默认,并补做旧版 iOS 兼容测试。
147 构建完成了打包与资源、签名检查。这表示图标功能已经实现并经过模拟器验证,不表示已安装到实体手机,也不表示软件已经上架。
标签要的是小胶囊,不是缩小的大按钮
这一轮界面修正来自一次明确的反馈:想要的是以前用过的“小胶囊加彩色圆点”,我却把统一样式理解成带图标、带大勾选圈的按钮。147 的标签区因此变成了两列大按钮,与原来的意图相反。
148 找回首页平台筛选里的小胶囊样式,把标签和合集改为按文字宽度排列。短名称可以同行放置,长名称换行;去掉大图标和大勾选圈,选中只改变底色与边框,不挪动文字。视觉上变小,点击区域仍需足够,不能以难点中为代价。
彩色圆点按标签和合集的真实身份固定,而不是按当前排列临时分配。这样切换语言或重启后,颜色不会乱换。测试覆盖了浅深色、大字体、中英日文本、长名称和百个标签的滚动,也检查了保存、手动加入和首页筛选。
小组件的合集展开测试曾失败。截图显示内容其实已经展开,问题在于入口标识影响了内部选项的识别;分开两者后复测通过。另一个旧断言仍要求“大按钮等宽”,也按新的明确设计要求修正。这两处不能混为产品展开失效,更不能直接跳过失败。148 最终完成 Release 构建和安装包检查,尚未安装到实体手机。
解析入口统一,旧收藏仍要受到保护
界面纠正后,我们重新核对最终目标,发现解析和订阅还没有闭环。小红书的来源预览与收藏后回看没有共用已有授权会话,普通收录、失败重试、详情重解析和播放地址刷新也需要统一处理,避免同一链接从不同入口进入时得到不同结果。
149 把这些入口接到统一的解析流程,复用已有授权会话,同时保留真实作者与原帖校验。短链展开不能丢掉原帖关系,取消、退出登录或输入变化后,也不能让迟到的结果继续写入。统一入口并不意味着降低校验标准。
来源预览与正式收录仍是两件事。预览不自动入库,也不触发离线保存;只有明确收录才进入受检查的保存流程。正式收录按真实原帖去重,已经完整的旧收藏不会被一次预览重写。
最后复查还发现,小宇宙的旧条目如果原来只保存了链接,经 RSS 补全后可能不出现在节目的“我的收藏”中。修复只在这种链接空壳补全时更新平台与作者分组;保存失败则恢复旧平台和展示数据。它解决的是补全后的归属问题,不是重新整理所有已有收藏。
微博翻页:节点变了,原帖身份不能跟着丢
微博的问题最初表现为图片帖读取和分页不稳定。真实验收又暴露出更具体的循环:已经读到第一条原帖,返回主页后却反复读取同一条,最终超时。这不能只用“需要登录”解释。
根因在于网页返回主页时会重建卡片节点,原先记录的“已读卡片”失效了。同一主页刷新时,旧页面尚未退出就开始读取,也会产生时序问题。149 保留扫描进度,增加导航就绪判断,并在重绘后严格重新定位卡片;游标只表示扫描到了哪里,每一条仍要核对真实原帖和作者,不根据标题、图片或昵称猜身份。
受控网页回归覆盖了每次返回都重建节点、返回只恢复首 10 条、取消后重读以及同主页刷新,30 项测试全部通过。同文同图但属于不同原帖的内容也不能被错误合并。真实来源验收则从当前列表选择图片帖和视频帖,替换了写死某天帖子编号的旧测试,避免测试为了通过而改变列表顺序。
修复后,真实匿名主页首批 10 条、视频时间推进、图片解码、明确收录及重复收录拦截均有验证。继续读取更多历史时,网站要求登录,因此真实账号连续分页仍待验收。合成网页读满 30 条证明的是算法回归通过,不能替代平台允许读取的证据。
官方 RSS 让历史内容有了可靠来源
小宇宙的历史订阅不能靠找一个同名节目的第三方源来补齐。149 支持明确选择节目自己声明的官方 RSS,并核对原节目与至少两个真实单集的标题、发布时间交集;每次读取时还要重新检查来源声明。
这条路径把“只能看最近可见内容”与“有可靠官方源,可以继续读取历史”区分开来。订阅绑定保留,临时列表不归档;RSS 条目也保留真实网页平台,不伪造单集地址。没有可靠官方 RSS 的节目,仍只支持当前可见范围。
公开来源实测中,一个节目读到了 30 集,GitHub 公开项目连续读取了 30 个,Swift 官方 Atom 读到当前源的 20 篇后正确停止。模拟器还走完了节目第二批内容的预览、明确收录、关闭重开后保留来源以及重复收录拦截。这里的停止是源当前已到边界,不应和网络出错、平台限制或“没有任何历史”混成一种提示。
视频换源不能让人重新找进度
视频的目标不只是打开播放器。地址失效或换源时,原来的播放位置和暂停意图都应保留;已有离线副本也不应因为在线地址不可达而被忽略。
149 让主播放器与来源预览共用有界的原媒体读取。Range 读取最多 1 MiB,检查重定向和部分响应,只使用平台明确提供的转码候选。准备播放与首次恢复跳转各有 12 秒上限,避免准备阶段一直等不到换源。关闭、切换条目和退出时取消旧播放器与读取;刷新失效地址不改写收藏。
回归覆盖了 X 的实际播放、拖动和重新打开,抖音单条原生播放、深浅色打开视频、换源后保留位置与暂停状态,以及旧版 iOS 下优先播放已有离线副本。受控的播放错误测试与真实来源播放证据分开记录,不能把前者说成真实 CDN 故障已验证。大视频默认在线仍只是建议,原有自动离线规则没有在这轮改变。
149 最终执行 1597 项全量检查,其中 1595 项通过、2 项按既有条件跳过、0 项失败,解析金样本未改。干净开发归档、发布检查和实际安装包检查也通过了。但这里的“发布检查”是打包门槛,不是 App Store 发布;本轮交付的是开发安装包,尚未完成实体手机安装。
收尾要看完整路径,而不只看最后一页
今天有三点认识比较明确。第一,统一样式必须先对齐具体意图:小胶囊与大按钮不是同一种方案,截图和实际尺寸比“已统一”更能说明问题。第二,网页节点、扫描进度与原帖身份要分开保存,界面重绘不应让业务身份失效。第三,测试通过只回答其覆盖的范围;模拟器、受控网页和真实平台验证不能互相替代。
下一步仍要完成真实授权下的连续分页和更广的媒体组合验收。X、Instagram、抖音、豆瓣的订阅还存在许可或验证限制,不能据已有适配代码宣布全部开放。正式付款、恢复购买、免费版数量限制、公开政策与条款、素材授权核查、快捷指令公开分发和商店发布,也仍是独立的未完事项。解析与订阅这一轮已经交付可落地部分,整个项目的最终目标还在继续。
隐私说明
本文只整理当天有活动且能够核实的项目对话,不纳入自动化和日记发布聊天。保留理解技术过程所需的公开项目名、版本与测试数量,删除账户、个人设备、私人内容、内部地址、绝对路径及其他可定位个人基础设施的信息,不包含凭据、完整代码或原始日志。