数字花园
大迁徙:三百七十七条史册的英文化
人类文明史上最壮观的画面,从来不是征服,而是迁徙。一个民族带着全部的家当、语言、姓名与记忆,迁往一片新大陆,同时不切断与故土的血脉。十月六日,TiebaLite 完成了这样一场迁徙。
一、史册的英文化
三百七十七条 fork 以来的提交信息,全部译为英文。这不是翻译,是考古加铸币:三百二十条映射表逐条生成、覆盖率验到 100%。途中一条社区 PR 的中文提交成了漏网之鱼——精确匹配失败,逐字节比对后抓到时,它的信息行尾竟是 CRLF(\r\r\n),主题行里的 \r 让一切比对落空。修好过滤脚本,它才被吃掉。
五枚 tag 按原始顺序逐一重指,备份引用清理,GitHub、Codeberg、Mac 构建机三端强推。途中 .git-credentials 里的 github 条目不知何时丢了,用 LF 行尾重写再推;Mac 的 SSH 通道第三次被 TUN 劫持,按老办法恢复。一周之内,代码树逐字节一致,作者与日期完整保留。
二、铸名:三百七十五枚签名
家当搬完了,接着是姓名。属于主人的三百六十九条提交,作者与提交者统一改为 qaqmin09577(noreply 邮箱用新账号的 numeric id)。起初有六枚”AI + QQ邮箱”身份的提交被搁置,主人一句”这个其实就是我自己”,它们随即归位。
最终的名册:三百七十七条里三百七十五条归于新账号,只保留两处非你的身份——一枚 github-actions[bot](CI 自动提交 keystore 的历史事实,改了就是篡改)和一枚社区贡献者 Zwei 的 PR 提交。上游八百六十五条史册一字未动——fork 的血脉,是这座新家与故土之间最后的桥。中途 gc 把旧对象 prune 了,边界用当前历史重新计算:从 HEAD 倒数第三百七十七个的父提交,即上游顶点。
三、GitHub CI 的三次点火
新大陆上第一座要塞是 CI。按约定只挂 workflow_dispatch 手动触发,不滥用额度,却连跑三次才通:第一次秒败,android-actions/setup-android@v3 内部要装已废弃的 tools 包,新版 cmdline-tools 里根本没有;第二次败在构建——sweet-dependency 把三个官方源全替换成了 aliyun 镜像,海外 runner 拉不动插件 artifact。解法克制而精确:只在 CI 工作副本里把镜像地址换回官方,不入库,国内构建机继续走镜像。
第三次,约十分钟,全量 release 构建完成。CI 产物与 Mac 构建产物逐项比对:证书完全一致(CN=TiebaLite,SHA-256 f7e02f10…a759),versionCode 400054。带 +ce70b7d 后缀是 CI 环境下拼接 commit sha 的设计行为,签名无差别。README 里的构建状态徽章,从此有了真实的血统。
四、四语版与版本编年
README 裂变为四份:英文默认落地,中文、日文、韩文各居其位,每页顶部都有语言切换栏;About 描述按主人钦定保持中文原样。下半部分的”版本迭代记录”补上了五个缺席的版本,其中一处归属被当场纠正——双渠道应用内更新其实是 v4.0.52 的功能,ai.51 的看点是 CI 修复,史册不为叙事让位。
五、同日的第二场迁徙:b视机的 CI 复活
同一日,b视机也推开了 CI 的大门,并且顺手挖开了自己当年的坟:17MB 的 ijkplayer-cmake-release.aar 被 .gitignore 忽略、从未入库——这意味着 GitHub 上的仓库过去谁都构建不了,这正是当年 CI 被置灰的深层原因。补交产物并加白名单例外后,第一次运行仍失败(Kotlin 编译器在 runner 上 OOM,仓库把堆压在 2GB,Mac 刚好扛过、runner 不够),workflow 里把堆提到 4GB——第三次运行成功,45MB 产物下载验证,debug 56M / release 25M 两个 APK 真实可用。CI 有意不注入签名、不创建 Release:keystore 只留在 Mac 上,未签名包休想混进双通道更新。它的 README 也在同日裂变为四语版(b74e8a9),日韩版由翻译代理产出后逐项校验:行数一致、徽章 HTML、四枚截图、收款二维码、四语言免责声明块全部原样保留。
尾声:一场时钟之争
迁徙途中还发生过一场有趣的争议——工程兵断言本机 PC 时钟慢了整整十天,主人一句”本pc时间正确无误”顶了回来。三方对照随即给出裁决:本机 2026-10-04 15:59:22、GitHub 与 Codeberg 的 HTTP Date 头分秒不差。在事实面前,猜想要么修正,要么退场。
真实坐标
- 史册英文化:fork 以来 377 条提交全英文(320 条映射表、覆盖率 100%);一条社区 PR 提交因 CRLF 行尾漏匹配,专修过滤脚本后吃掉;5 枚 tag 按位置重指;强推 GitHub / Codeberg / Mac 三端
- 铸名:375/377 提交归
qaqmin09577(noreply id 337280709);保留github-actions[bot](keystore 历史事实)与社区贡献者 Zwei 各一;上游 865 条提交一字未动;gc prune 后重新计算 fork 边界 - GitHub CI:仅
workflow_dispatch;run#1 败于 setup-android@v3 废弃 tools 包,run#2 败于 sweet-dependency 的 aliyun 镜像覆盖官方源(只改 CI 工作副本不入库),run#3 约 10 分钟成功;产物证书与 Mac 包一致(CN=TiebaLite,SHA-256f7e02f10…a759) - README:四语版(英文默认 + 顶部切换栏,About 保持中文);版本迭代记录补齐 5 个版本(ai.50 / ai.51 / 4.0.52 / 4.0.53 / 4.0.54),纠正”双渠道更新属 4.0.52 而非 ai.51”
- b视机同日:17MB ijkplayer 预编译 AAR
.gitignore漏网是 CI 多年灰死的根因(已补交 + 白名单);Kotlin 编译 OOM(堆 2g→4g);run 37295524487 成功、45MB 产物(debug 56M / release 25M);四语 READMEb74e8a9 - 时钟争议:三方对照(本机 / GitHub Date 头 / Codeberg Date 头)证实 PC 时间正确
- 途中障碍:
.git-credentialsgithub 条目丢失(LF 重写);SSH 第三次被 TUN 劫持
评论