Repository navigation
v6.4.0
OhGithubLost v6.4.0
把界面语言从 15 种收敛到 6 种 —— 只留下真的能读的那 6 种。
Interface languages narrowed from 15 to 6: only those that were genuinely translated.
垂直切片 / Vertical slices
切片一 · 语言不再自欺 Language honesty
上一版埋着一个隐患:15 种语言里有 12 种的法律类正文实际是英文占位 ——
键在、目录在、值与英文一字不差。用户切到自己的语言,看到的仍是看不懂的
法律说明。而这方面恰恰最不容含糊:本项目对数据收集、令牌存储、
加速责任的承诺都写在这些文本里。
与其让 9 种语言挂个名,不如把留下的每一种都做到能读。保留的是:
zh简体中文(原始表述)zh_TW繁體中文enEnglishdeDeutschfrFrançaisruРусский
移除 ja ko es pt ar hi th vi id。
加回某个语种的前提是全部键都是真译文,不是把英文复制一遍。
OgLI18n.locales 的注释里写明了这条规矩。
切片二 · 三处语言清单必须一致 Consistency guard
这版真正的根因在这里。语言清单散在三处,任两处不同步都会出事,
而且两种故障方向相反、都很难在排查时想到根源:
OgLI18n.locales(Dart 运行时清单)assets/i18n/下的目录pubspec.yaml的assets声明
pubspec 多声明 → 构建期「资源不存在」直接失败;
pubspec 少声明 → 构建通过,运行时该语言全是裸键名。
后者尤其险:打出来的包能装能用,只是某个语言下满屏 settings.theme。
v6.4.0 删了 9 个语言目录,若不同步 pubspec,踩的就是第一种。
tool/i18n_scan.py --check 新增该项检查。负向验证:故意在 pubspec 加一个
不存在的语言目录 → 报「pubspec.yaml 声明但目录不存在(构建必失败)」,
退出码 1。
新增 / Added
- 语言清单三处一致成为 CI 门禁:
OgLI18n.locales×assets/i18n/目录 ×
pubspec.yaml的assets声明,逐项比对,不一致即失败(退出码 1,已负向验证)。
变更 / Changed
- 界面语言由 15 种收敛为 6 种:
zh/zh_TW/en/de/fr/ru。
同步更新OgLI18n.locales、pubspec.yaml、README.md、docs/USAGE.md、
docs/I18N.md。 - 仓库页选项卡按语种分别处理(此前各语言混杂、口径不一):
zh/zh_TW:Code/Issues/Pull requests/Actions保留英文,
其余(分支 / 提交 / 设置)照常用中文。de/fr/ru:译为各自语言的对应词。此前这些语言里混着英文残留 ——
例如fr的pulls原是Pull Requests、releases原是Releases,
现已分别改为Demandes de tirage/Versions。- 测试相应更新:语种数 15 → 6,并保留「中文语境下 GitHub 术语必须保持英文」
这条断言。
- 繁体中文修正少量沿用大陆用法的词:
Gist 片段→Gist 程式碼片段、
我的加速→我的加速節點。
修复 / Fixed
OgLProjectInfo.licenseUrl仍指向 AGPL-3.0:v6.3.0 换了许可,
标识(licenseId)与名称(licenseName)都改了,地址漏改,还指向
www.gnu.org/licenses/agpl-3.0.html。该常量目前无引用(死常量),但一旦有人
用它生成「查看许可」链接,就会把用户送到一份与实际许可无关的全文。
已改为https://www.apache.org/licenses/LICENSE-2.0。- 私有仓库大图预览「用了 raw 却不带令牌」:超过 1 MB 改用 raw 链接时,
代码写成headers: proxied || !repoPrivate ? null : const <String, String>{}——
注释说「未走代理且私有仓库才带认证头」,实际给的是空 map,一个头都没带。
私有仓库必然 404,而界面显示成「文件过大,无法在内置预览中加载」,
把认证失败误报成文件过大。现在真的去取一步令牌。 - 私有仓库被「加速已开启 → 不弹窗」规则误伤:raw 族的加速门槛本就是
「内置通道 + 公开仓库」,私有仓库的 raw 永远不加速。旧代码只要检测到加速
开着就不弹窗、直接走 raw,私有仓库用户于是什么都看不到就掉进上面那个必然失败
的分支。现已显式排除私有仓库。 - 私有仓库的音频「播放」按钮点了必然失败:该按钮把 raw 地址交给系统播放器,
而系统播放器没有本应用的令牌。私有仓库现在只给「下载」。 - 法律全文弹窗写死
height: 460:小屏 / 大字体 / 横屏下会溢出。
改为按视口比例给上限。 - 新增键
common.previewLoadFailed(6 语言),把「加载失败」与「文件过大」
区分开 —— 超过 1 MB 已有专门面板处理,走到errorBuilder说明是认证 / 限流 /
网络问题,说成「文件过大」会让人往错的方向排查。
已知限制 / Known limitations
- 音频不做内置播放:Contents API 对超过 1 MB 的文件不返回内容,音频必然超限。
预览页对公开仓库给「播放」(交系统播放器),私有仓库给「下载」。 - Linux 裸放安装包仍缺失:rpm(arm64)因 Ubuntu 的 rpm 缺少 aarch64 平台
定义、无法在 x86_64 宿主上交叉构建;两个 AppImage 因 appimagetool 未接受到
ARCH环境变量而退出码 1。三种包在 zip / 7z 里都齐全,功能不缺,
只是未裸放直传。 - 私有仓库的 raw 内容无法走加速(README 仓库内图片、仓库文件):
raw端点
没有签名机制,交给代理等于送令牌。这是硬约束,不是取舍。 - macOS / iOS 自 v5.6.0 起弃用。
- Linux 需要 glibc ≥ 2.35(Ubuntu 22.04 一代及以上)。
产物 / Artifacts
Android arm64-v8a / armeabi-v7a / x86_64 / universal-APK / AAB、
Windows x64 / arm64、Linux x64 / arm64,每份均含 zip 与 7z。
Linux 裸放安装包
与 v6.2.0 / v6.3.0 相同,仍为 3 / 6:
| amd64 / x86_64 | arm64 | |
|---|---|---|
.deb |
✅ | ✅ |
.rpm |
✅ | ❌ Ubuntu 的 rpm 缺少 aarch64 平台定义,无法交叉构建 |
.AppImage |
❌ | ❌ appimagetool 声称未收到 ARCH,退出码 1 |
三种包在 zip / 7z 里都齐全,功能不缺,只是未裸放直传。