OhGithubLost 6.4.0 · 正式版 / Stable
把界面语言从 15 种收敛到 6 种 —— 保留全部键均有实际译文的 6 种。 Interface languages narrowed from 15 to 6 — the ones whose strings are all actually translated.
垂直切片 / Vertical slices
切片一 · 译文与语言清单一致 Language accuracy
上一版的情况是:15 种语言里有 12 种的法律类正文实际是英文占位 —— 键在、目录在、值与英文一字不差。用户切到自己的语言,看到的仍是看不懂的 法律说明。而这方面的文本需要准确:本项目对数据收集、令牌存储、 加速责任的承诺都写在这些文本里。
以下 6 种语言的键全部有实际译文,予以保留:
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 里都齐全,功能不缺,只是未裸放直传。
下载 / Download
本版本共 23 个构件产物。
Android
| 文件 | 大小 |
|---|---|
| OGL-v6.4.0-Android.AAB.7z | 60 MB |
| OGL-v6.4.0-Android.AAB.zip | 62 MB |
| OGL-v6.4.0-Android.arm64-v8a.7z | 8.0 MB |
| OGL-v6.4.0-Android.arm64-v8a.zip | 11 MB |
| OGL-v6.4.0-Android.armeabi-v7a.7z | 8.0 MB |
| OGL-v6.4.0-Android.armeabi-v7a.zip | 10 MB |
| OGL-v6.4.0-Android.universal-APK.7z | 20 MB |
| OGL-v6.4.0-Android.universal-APK.zip | 29 MB |
| OGL-v6.4.0-Android.x86_64.7z | 8.5 MB |
| OGL-v6.4.0-Android.x86_64.zip | 11 MB |
Windows
| 文件 | 大小 |
|---|---|
| OGL-v6.4.0-Windows.arm64.7z | 8.3 MB |
| OGL-v6.4.0-Windows.arm64.zip | 13 MB |
| OGL-v6.4.0-Windows.x64.7z | 9.5 MB |
| OGL-v6.4.0-Windows.x64.zip | 14 MB |
Linux
| 文件 | 大小 |
|---|---|
| OGL-v6.4.0-Linux.arm64.7z | 7.3 MB |
| OGL-v6.4.0-Linux.arm64.zip | 11 MB |
| OGL-v6.4.0-Linux.x64.7z | 8.1 MB |
| OGL-v6.4.0-Linux.x64.zip | 12 MB |
完整列表与校验信息见 Releases v6.4.0。