<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2026-10-09T14:35:45+00:00</updated><id>/feed.xml</id><title type="html">OhGithubLost · 更新日志</title><subtitle>从 v0.1.0 到 v6.2.0 的逐版本更新日志（GitHub 仓库管理客户端 OGL）。 Changelog for OhGithubLost, a GitHub repository manager client.</subtitle><entry><title type="html">OhGithubLost 6.5.0 · 正式版 / Stable</title><link href="/release/2026/10/08/v6.5.0.html" rel="alternate" type="text/html" title="OhGithubLost 6.5.0 · 正式版 / Stable" /><published>2026-10-08T00:00:00+00:00</published><updated>2026-10-08T00:00:00+00:00</updated><id>/release/2026/10/08/v6.5.0</id><content type="html" xml:base="/release/2026/10/08/v6.5.0.html"><![CDATA[<p>修复一轮全量代码审查发现的问题。审查由 4 个子代理并行覆盖加速链路、平台与底座、
展示层、领域层与工具，结论逐条经人工复核。
Fixes from a full-codebase review run by four parallel sub-agents across the
acceleration path, platform layer, presentation layer, and domain/tooling;
every finding was verified by hand before being acted on.</p>

<h2 id="变更--changed原-v643未单独发布并入本版">变更 / Changed（原 v6.4.3，未单独发布，并入本版）</h2>

<ul>
  <li><strong>删除内置加速通道与内置网络镜像</strong>：通道列表不再包含任何内置项，代码里也不再
预置第三方代理地址（原 <code class="language-plaintext highlighter-rouge">proxy.344977.xyz</code>、<code class="language-plaintext highlighter-rouge">ghproxy.net</code> 规则）。要加速需自行
添加通道地址；不添加则始终直连。</li>
  <li><strong>删除降级回退</strong>：加速判定现在至多返回一项 —— 加速就是 <code class="language-plaintext highlighter-rouge">前缀 + 原址</code>，不加速
就是原址，不再追加直连候选。所依据的判断是：静默降级会让「是否经过通道」无法
从结果判断。</li>
  <li><strong>加速适用范围可逐项开关</strong>（设置 → 网络 → 加速），共 4 类：Release 附件、
Action 构建产物、仓库文件（下载与预览）、README 仓库内图片。默认全开，可逐项
关闭。<strong>Action 运行日志不在此列</strong> —— 它不经由加速判定。</li>
  <li><strong>加速协议升版 v3 → v4，需重新同意</strong>：正文删去「本应用提供 / 维护通道」的表述，
写明「不预置任何通道、不提供代理服务」，并说明失败时不会静默回落到直连。</li>
</ul>

<h2 id="修复--fixed用户可感知">修复 / Fixed（用户可感知）</h2>

<ul>
  <li><strong>README 仓库内图片在私有仓库返回 404</strong>：<code class="language-plaintext highlighter-rouge">Image.network</code> 没有 headers 参数，
无法携带令牌，而私有 raw 匿名访问返回 404。此前「私有 + 已知情接受」会走到
该分支；现在私有仓库一律回退到 API 取字节（该路径带令牌）。</li>
  <li><strong>仓库内图片跨仓库串图</strong>：字节缓存只以仓库内相对路径为键，<code class="language-plaintext highlighter-rouge">assets/logo.png</code>
这类同名文件在两个仓库间会命中同一份缓存。键改为 <code class="language-plaintext highlighter-rouge">仓库@分支:路径</code>。</li>
  <li><strong>分页列表在缓存窗口内只显示第一页</strong>：缓存命中时只回填响应体、<code class="language-plaintext highlighter-rouge">headers</code> 为空，
而翻页依赖 <code class="language-plaintext highlighter-rouge">Link</code> 头。现在缓存条目连同 <code class="language-plaintext highlighter-rouge">link</code> 一起存储并在命中时回填。</li>
  <li><strong>同一文件第二次下载不再导出到 SAF</strong>：导出去重表只在失败路径移除 id，
成功导出后 id 常驻；taskId 由 url + 文件名派生，重复下载会命中同一条目。</li>
  <li><strong>自定义 DNS / DoH 开关对真实请求不生效</strong>：<code class="language-plaintext highlighter-rouge">connectionFactory</code> 只在传输层
构造时安装一次，而 DNS 模式的写入发生在模块注册之后。现在每次发送前按当前
策略校正（模式变化才重装，切回系统 DNS 时把 factory 摘掉）。</li>
  <li><strong>登录页切换账号不清缓存</strong>：只清仓库缓存会留下 DNS 缓存与页面分页快照，
多账号下是「用 B 账号看到 A 账号内容」的来源。现与「我的」页一致，清全部缓存。</li>
  <li><strong>版本常量 <code class="language-plaintext highlighter-rouge">kOgLAppVersion</code> 停在 <code class="language-plaintext highlighter-rouge">6.0.0</code></strong>，与 <code class="language-plaintext highlighter-rouge">pubspec.yaml</code> 相差三个小版本；
该常量会写入日志与内核报告。已对齐。</li>
</ul>

<h2 id="修复--fixed下载器与网络">修复 / Fixed（下载器与网络）</h2>

<ul>
  <li><strong>分片任务在探测期间被移除后会重新出现在列表</strong>：<code class="language-plaintext highlighter-rouge">_runRanged</code> 在 <code class="language-plaintext highlighter-rouge">await probe</code>
之后无条件写回快照。现在探测返回后先确认任务仍在，否则直接退出。</li>
  <li><strong>任务表清理不完整</strong>：<code class="language-plaintext highlighter-rouge">remove()</code> 与 <code class="language-plaintext highlighter-rouge">clearFinished()</code> 漏清 <code class="language-plaintext highlighter-rouge">_urlCandidates</code>、
<code class="language-plaintext highlighter-rouge">_rangeConnections</code>、<code class="language-plaintext highlighter-rouge">_lastSample</code>、<code class="language-plaintext highlighter-rouge">_expectedSha256</code>、<code class="language-plaintext highlighter-rouge">_exportedToSaf</code>。</li>
  <li><strong><code class="language-plaintext highlighter-rouge">dispose()</code> 不取消进行中的分片下载</strong>：分片任务不等待返回，管理器回收后引擎
仍在下载并调用已释放的通知器。现取消全部令牌并加 <code class="language-plaintext highlighter-rouge">_disposed</code> 守卫。</li>
  <li><strong><code class="language-plaintext highlighter-rouge">ix_presign</code> 在 200 直链分支先读取响应体再注释说明「不能读」</strong>：每个直链下载
都会多传输一遍完整内容。已移除。</li>
  <li><strong><code class="language-plaintext highlighter-rouge">isForbiddenHost</code> 存在绕过形式</strong>：原先只识别点分十进制与 <code class="language-plaintext highlighter-rouge">fe80:</code> 前缀。
现在先做归一化（整数形式的 IPv4、IPv4-mapped IPv6、方括号与尾点），IPv6 段
按位判断（<code class="language-plaintext highlighter-rouge">fc00::/7</code>、<code class="language-plaintext highlighter-rouge">fe80::/10</code>），并支持 <code class="language-plaintext highlighter-rouge">127.1</code> 这类缩写。</li>
  <li><strong>分片合并失败会留下不完整的文件</strong>：<code class="language-plaintext highlighter-rouge">finally</code> 只删分片，不删目标文件。</li>
  <li><strong><code class="language-plaintext highlighter-rouge">abs()</code> 未拒绝绝对路径与空串</strong>（注释称会拒绝）：<code class="language-plaintext highlighter-rouge">/etc/passwd</code> 会被静默剥掉
前导斜杠并塞进根目录。现显式拒绝。</li>
</ul>

<h2 id="修复--fixed界面文案">修复 / Fixed（界面文案）</h2>

<ul>
  <li><strong>19 个界面文案取自错误的语言分片，显示为裸键名</strong>：设置页 13 处、仓库页 2 处、
关于页 4 处。取法已改到键实际所在的分片。</li>
  <li><strong><code class="language-plaintext highlighter-rouge">previewSvg</code> / <code class="language-plaintext highlighter-rouge">previewUnknown</code> 两个键在 6 种语言里都不存在</strong>（「打开方式」
弹窗的 SVG 与未知类型条目显示裸键）。已补齐。</li>
  <li>三处<strong>硬编码中文</strong>改为 i18n：Gist 详情页的「公开 / N 个文件」、议题列表的
「N 条评论」、评论作者缺失时的「未知用户」（复用已有的 <code class="language-plaintext highlighter-rouge">common.unknown</code>）。</li>
</ul>

<h2 id="变更--changed">变更 / Changed</h2>

<ul>
  <li><strong><code class="language-plaintext highlighter-rouge">i18n_scan.py</code> 的分类规则收紧</strong>：<code class="language-plaintext highlighter-rouge">LOG_CONTEXT</code> 原含 <code class="language-plaintext highlighter-rouge">log\w*(</code>，该模式会命中
<code class="language-plaintext highlighter-rouge">AlertDialog(</code>、<code class="language-plaintext highlighter-rouge">showDialog(</code>、<code class="language-plaintext highlighter-rouge">catalog(</code> 与 <code class="language-plaintext highlighter-rouge">login(</code>，使对话框附近的用户可见
文案被计为开发者日志。现改为只列精确的日志入口。</li>
  <li><code class="language-plaintext highlighter-rouge">docs/NETWORK.md</code> 更正与代码不符的表述，补入「加速适用范围」与 web 端 CORS
实测表；<code class="language-plaintext highlighter-rouge">docs/README.md</code> 补入索引，路径改为可点击链接。</li>
  <li>多处注释更正为与实现一致（平台分派范围、私有仓库口径、模块描述、
<code class="language-plaintext highlighter-rouge">IxChannel.auto</code> 语义、日志文件名格式、诊断中的并发数文案）。</li>
  <li>删除无引用的 <code class="language-plaintext highlighter-rouge">IoBootFileSystem</code>；对仅测试使用的 <code class="language-plaintext highlighter-rouge">ScriptedTransport</code> 与
无调用方的 <code class="language-plaintext highlighter-rouge">DiskPaths</code> 加注说明。</li>
</ul>

<h2 id="已知限制--known-limitations">已知限制 / Known limitations</h2>

<ul>
  <li><code class="language-plaintext highlighter-rouge">docs/ARCHITECTURE.md</code>、<code class="language-plaintext highlighter-rouge">BOOT.md</code>、<code class="language-plaintext highlighter-rouge">CONSISTENCY.md</code>、<code class="language-plaintext highlighter-rouge">DURABILITY.md</code>、
<code class="language-plaintext highlighter-rouge">NAMING.md</code> 被代码注释引用，但仓库中并不存在；这些引用尚未清理。</li>
  <li><strong>Action 运行日志不走加速</strong>（直接请求 <code class="language-plaintext highlighter-rouge">api.github.com</code>），加速适用范围没有它。</li>
  <li><strong>web 端</strong>：私有仓库的 raw 与「私有 + 加速」均不可用 —— 浏览器预检会拦截
<code class="language-plaintext highlighter-rouge">Authorization</code>，而 Release 附件的签名地址不带 CORS 头。</li>
  <li><strong>Linux 裸放安装包 3 / 6</strong>：rpm（arm64）缺少平台定义；AppImage 的 <code class="language-plaintext highlighter-rouge">ARCH</code>
环境变量未被接受。三种包在 zip / 7z 里都齐全。</li>
  <li>macOS / iOS 自 v5.6.0 起弃用。</li>
</ul>

<h2 id="产物--artifacts">产物 / Artifacts</h2>

<p>Android <code class="language-plaintext highlighter-rouge">arm64-v8a</code> / <code class="language-plaintext highlighter-rouge">armeabi-v7a</code> / <code class="language-plaintext highlighter-rouge">x86_64</code> / <code class="language-plaintext highlighter-rouge">universal-APK</code> / <code class="language-plaintext highlighter-rouge">AAB</code>、
Windows <code class="language-plaintext highlighter-rouge">x64</code> / <code class="language-plaintext highlighter-rouge">arm64</code>、Linux <code class="language-plaintext highlighter-rouge">x64</code> / <code class="language-plaintext highlighter-rouge">arm64</code>，每份均含 zip 与 7z。</p>

<hr />

<h2 id="下载--download">下载 / Download</h2>

<p>本版本共 23 个构件产物。</p>

<p><strong>Android</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.5.0/OGL-v6.5.0-Android.AAB.7z">OGL-v6.5.0-Android.AAB.7z</a></td>
      <td style="text-align: right">59 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.5.0/OGL-v6.5.0-Android.AAB.zip">OGL-v6.5.0-Android.AAB.zip</a></td>
      <td style="text-align: right">62 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.5.0/OGL-v6.5.0-Android.arm64-v8a.7z">OGL-v6.5.0-Android.arm64-v8a.7z</a></td>
      <td style="text-align: right">8.0 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.5.0/OGL-v6.5.0-Android.arm64-v8a.zip">OGL-v6.5.0-Android.arm64-v8a.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.5.0/OGL-v6.5.0-Android.armeabi-v7a.7z">OGL-v6.5.0-Android.armeabi-v7a.7z</a></td>
      <td style="text-align: right">8.0 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.5.0/OGL-v6.5.0-Android.armeabi-v7a.zip">OGL-v6.5.0-Android.armeabi-v7a.zip</a></td>
      <td style="text-align: right">10 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.5.0/OGL-v6.5.0-Android.universal-APK.7z">OGL-v6.5.0-Android.universal-APK.7z</a></td>
      <td style="text-align: right">20 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.5.0/OGL-v6.5.0-Android.universal-APK.zip">OGL-v6.5.0-Android.universal-APK.zip</a></td>
      <td style="text-align: right">29 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.5.0/OGL-v6.5.0-Android.x86_64.7z">OGL-v6.5.0-Android.x86_64.7z</a></td>
      <td style="text-align: right">8.5 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.5.0/OGL-v6.5.0-Android.x86_64.zip">OGL-v6.5.0-Android.x86_64.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>Windows</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.5.0/OGL-v6.5.0-Windows.arm64.7z">OGL-v6.5.0-Windows.arm64.7z</a></td>
      <td style="text-align: right">8.3 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.5.0/OGL-v6.5.0-Windows.arm64.zip">OGL-v6.5.0-Windows.arm64.zip</a></td>
      <td style="text-align: right">13 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.5.0/OGL-v6.5.0-Windows.x64.7z">OGL-v6.5.0-Windows.x64.7z</a></td>
      <td style="text-align: right">9.5 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.5.0/OGL-v6.5.0-Windows.x64.zip">OGL-v6.5.0-Windows.x64.zip</a></td>
      <td style="text-align: right">14 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>Linux</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.5.0/OGL-v6.5.0-Linux.arm64.7z">OGL-v6.5.0-Linux.arm64.7z</a></td>
      <td style="text-align: right">7.3 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.5.0/OGL-v6.5.0-Linux.arm64.zip">OGL-v6.5.0-Linux.arm64.zip</a></td>
      <td style="text-align: right">12 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.5.0/OGL-v6.5.0-Linux.x64.7z">OGL-v6.5.0-Linux.x64.7z</a></td>
      <td style="text-align: right">8.1 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.5.0/OGL-v6.5.0-Linux.x64.zip">OGL-v6.5.0-Linux.x64.zip</a></td>
      <td style="text-align: right">12 MB</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p>完整列表与校验信息见 <a href="https://github.com/yingo-server/OhGithubLost/releases/tag/v6.5.0">Releases v6.5.0</a>。</p>
</blockquote>]]></content><author><name>OGL</name></author><category term="release" /><summary type="html"><![CDATA[修复一轮全量代码审查发现的问题。审查由 4 个子代理并行覆盖加速链路、平台与底座、 展示层、领域层与工具，结论逐条经人工复核。 Fixes from a full-codebase review run by four parallel sub-agents across the acceleration path, platform layer, presentation layer, and domain/tooling; every finding was verified by hand before being acted on.]]></summary></entry><entry><title type="html">OhGithubLost 6.4.0 · 正式版 / Stable</title><link href="/release/2026/10/07/v6.4.0.html" rel="alternate" type="text/html" title="OhGithubLost 6.4.0 · 正式版 / Stable" /><published>2026-10-07T00:00:00+00:00</published><updated>2026-10-07T00:00:00+00:00</updated><id>/release/2026/10/07/v6.4.0</id><content type="html" xml:base="/release/2026/10/07/v6.4.0.html"><![CDATA[<p>把界面语言从 15 种收敛到 6 种 —— 保留全部键均有实际译文的 6 种。
Interface languages narrowed from 15 to 6 — the ones whose strings are all actually translated.</p>

<h2 id="垂直切片--vertical-slices">垂直切片 / Vertical slices</h2>

<h3 id="切片一--译文与语言清单一致-language-accuracy">切片一 · 译文与语言清单一致 Language accuracy</h3>

<p>上一版的情况是：15 种语言里有 12 种的法律类正文实际是<strong>英文占位</strong> ——
键在、目录在、值与英文一字不差。用户切到自己的语言，看到的仍是看不懂的
法律说明。而这方面的文本需要准确：本项目对数据收集、令牌存储、
加速责任的承诺都写在这些文本里。</p>

<p>以下 6 种语言的键全部有实际译文，予以保留：</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">zh</code> 简体中文（原始表述）</li>
  <li><code class="language-plaintext highlighter-rouge">zh_TW</code> 繁體中文</li>
  <li><code class="language-plaintext highlighter-rouge">en</code> English</li>
  <li><code class="language-plaintext highlighter-rouge">de</code> Deutsch</li>
  <li><code class="language-plaintext highlighter-rouge">fr</code> Français</li>
  <li><code class="language-plaintext highlighter-rouge">ru</code> Русский</li>
</ul>

<p>移除 <code class="language-plaintext highlighter-rouge">ja</code> <code class="language-plaintext highlighter-rouge">ko</code> <code class="language-plaintext highlighter-rouge">es</code> <code class="language-plaintext highlighter-rouge">pt</code> <code class="language-plaintext highlighter-rouge">ar</code> <code class="language-plaintext highlighter-rouge">hi</code> <code class="language-plaintext highlighter-rouge">th</code> <code class="language-plaintext highlighter-rouge">vi</code> <code class="language-plaintext highlighter-rouge">id</code>。
<strong>加回某个语种的前提是其全部键都有实际译文</strong>，而非复用英文。
<code class="language-plaintext highlighter-rouge">OgLI18n.locales</code> 的注释里写明了这条规矩。</p>

<h3 id="切片二--三处语言清单必须一致-consistency-guard">切片二 · 三处语言清单必须一致 Consistency guard</h3>

<p>根因在这里。语言清单散在三处，任两处不同步都会出事，
而且<strong>两种故障方向相反</strong>、都很难在排查时想到根源：</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">OgLI18n.locales</code>（Dart 运行时清单）</li>
  <li><code class="language-plaintext highlighter-rouge">assets/i18n/</code> 下的目录</li>
  <li><code class="language-plaintext highlighter-rouge">pubspec.yaml</code> 的 <code class="language-plaintext highlighter-rouge">assets</code> 声明</li>
</ul>

<p>pubspec 多声明 → 构建期「资源不存在」直接失败；
pubspec 少声明 → 构建通过，运行时该语言<strong>全是裸键名</strong>。</p>

<p>后者的表现是：打出来的包能安装运行，但该语言下显示的是键名（如 <code class="language-plaintext highlighter-rouge">settings.theme</code>）。
v6.4.0 删了 9 个语言目录，若不同步 pubspec，踩的就是第一种。</p>

<p><code class="language-plaintext highlighter-rouge">tool/i18n_scan.py --check</code> 新增该项检查。负向验证：故意在 pubspec 加一个
不存在的语言目录 → 报「pubspec.yaml 声明但目录不存在（构建必失败）」，
退出码 1。</p>
<h2 id="新增--added">新增 / Added</h2>
<ul>
  <li><strong>语言清单三处一致成为 CI 门禁</strong>：<code class="language-plaintext highlighter-rouge">OgLI18n.locales</code> × <code class="language-plaintext highlighter-rouge">assets/i18n/</code> 目录 ×
<code class="language-plaintext highlighter-rouge">pubspec.yaml</code> 的 <code class="language-plaintext highlighter-rouge">assets</code> 声明，逐项比对，不一致即失败（退出码 1，已负向验证）。</li>
</ul>

<h2 id="变更--changed">变更 / Changed</h2>
<ul>
  <li><strong>界面语言由 15 种收敛为 6 种</strong>：<code class="language-plaintext highlighter-rouge">zh</code> / <code class="language-plaintext highlighter-rouge">zh_TW</code> / <code class="language-plaintext highlighter-rouge">en</code> / <code class="language-plaintext highlighter-rouge">de</code> / <code class="language-plaintext highlighter-rouge">fr</code> / <code class="language-plaintext highlighter-rouge">ru</code>。
同步更新 <code class="language-plaintext highlighter-rouge">OgLI18n.locales</code>、<code class="language-plaintext highlighter-rouge">pubspec.yaml</code>、<code class="language-plaintext highlighter-rouge">README.md</code>、<code class="language-plaintext highlighter-rouge">docs/USAGE.md</code>、
<code class="language-plaintext highlighter-rouge">docs/I18N.md</code>。</li>
  <li><strong>仓库页选项卡按语种分别处理</strong>（此前各语言混杂、口径不一）：
    <ul>
      <li><code class="language-plaintext highlighter-rouge">zh</code> / <code class="language-plaintext highlighter-rouge">zh_TW</code>：<code class="language-plaintext highlighter-rouge">Code</code> / <code class="language-plaintext highlighter-rouge">Issues</code> / <code class="language-plaintext highlighter-rouge">Pull requests</code> / <code class="language-plaintext highlighter-rouge">Actions</code> 保留英文，
其余（分支 / 提交 / 设置）照常用中文。</li>
      <li><code class="language-plaintext highlighter-rouge">de</code> / <code class="language-plaintext highlighter-rouge">fr</code> / <code class="language-plaintext highlighter-rouge">ru</code>：译为各自语言的对应词。此前这些语言里混着英文残留 ——
例如 <code class="language-plaintext highlighter-rouge">fr</code> 的 <code class="language-plaintext highlighter-rouge">pulls</code> 原是 <code class="language-plaintext highlighter-rouge">Pull Requests</code>、<code class="language-plaintext highlighter-rouge">releases</code> 原是 <code class="language-plaintext highlighter-rouge">Releases</code>，
现已分别改为 <code class="language-plaintext highlighter-rouge">Demandes de tirage</code> / <code class="language-plaintext highlighter-rouge">Versions</code>。</li>
      <li>测试相应更新：语种数 15 → 6，并保留「中文语境下 GitHub 术语必须保持英文」
这条断言。</li>
    </ul>
  </li>
  <li><strong>繁体中文修正少量沿用大陆用法的词</strong>：<code class="language-plaintext highlighter-rouge">Gist 片段</code> → <code class="language-plaintext highlighter-rouge">Gist 程式碼片段</code>、
<code class="language-plaintext highlighter-rouge">我的加速</code> → <code class="language-plaintext highlighter-rouge">我的加速節點</code>。</li>
</ul>

<h2 id="修复--fixed">修复 / Fixed</h2>
<ul>
  <li><strong><code class="language-plaintext highlighter-rouge">OgLProjectInfo.licenseUrl</code> 仍指向 AGPL-3.0</strong>：v6.3.0 换了许可，
标识（<code class="language-plaintext highlighter-rouge">licenseId</code>）与名称（<code class="language-plaintext highlighter-rouge">licenseName</code>）都改了，<strong>地址漏改</strong>，还指向
<code class="language-plaintext highlighter-rouge">www.gnu.org/licenses/agpl-3.0.html</code>。该常量目前无引用（死常量），但一旦有人
用它生成「查看许可」链接，就会把用户送到一份<strong>与实际许可无关</strong>的全文。
已改为 <code class="language-plaintext highlighter-rouge">https://www.apache.org/licenses/LICENSE-2.0</code>。</li>
  <li><strong>私有仓库大图预览「用了 raw 却不带令牌」</strong>：超过 1 MB 改用 raw 链接时，
代码写成 <code class="language-plaintext highlighter-rouge">headers: proxied || !repoPrivate ? null : const &lt;String, String&gt;{}</code> ——
注释说「未走代理且私有仓库才带认证头」，实际给的是<strong>空 map</strong>，一个头都没带。
私有仓库必然 404，而界面显示成「文件过大，无法在内置预览中加载」，
把<strong>认证失败</strong>误报成<strong>文件过大</strong>。现在真的去取一步令牌。</li>
  <li><strong>私有仓库被「加速已开启 → 不弹窗」规则误伤</strong>：raw 族的加速门槛本就是
「内置通道 + 公开仓库」，<strong>私有仓库的 raw 永远不加速</strong>。旧代码只要检测到加速
开着就不弹窗、直接走 raw，私有仓库用户于是什么都看不到就掉进上面那个必然失败
的分支。现已显式排除私有仓库。</li>
  <li><strong>私有仓库的音频「播放」按钮点了必然失败</strong>：该按钮把 raw 地址交给<strong>系统播放器</strong>，
而系统播放器没有本应用的令牌。私有仓库现在只给「下载」。</li>
  <li><strong>法律全文弹窗写死 <code class="language-plaintext highlighter-rouge">height: 460</code></strong>：小屏 / 大字体 / 横屏下会溢出。
改为按视口比例给上限。</li>
  <li>新增键 <code class="language-plaintext highlighter-rouge">common.previewLoadFailed</code>（6 语言），把「加载失败」与「文件过大」
区分开 —— 超过 1 MB 已有专门面板处理，走到 <code class="language-plaintext highlighter-rouge">errorBuilder</code> 说明是认证 / 限流 /
网络问题，说成「文件过大」会让人往错的方向排查。
    <h2 id="已知限制--known-limitations">已知限制 / Known limitations</h2>
  </li>
  <li><strong>音频不做内置播放</strong>：Contents API 对超过 1 MB 的文件不返回内容，音频必然超限。
预览页对公开仓库给「播放」（交系统播放器），私有仓库给「下载」。</li>
  <li><strong>Linux 裸放安装包仍缺失</strong>：rpm（arm64）因 Ubuntu 的 rpm 缺少 aarch64 平台
定义、无法在 x86_64 宿主上交叉构建；两个 AppImage 因 appimagetool 未接受到
<code class="language-plaintext highlighter-rouge">ARCH</code> 环境变量而退出码 1。三种包在 zip / 7z 里都齐全，功能不缺，
只是未裸放直传。</li>
  <li><strong>私有仓库的 raw 内容无法走加速</strong>（README 仓库内图片、仓库文件）：<code class="language-plaintext highlighter-rouge">raw</code> 端点
没有签名机制，交给代理等于送令牌。这是硬约束，不是取舍。</li>
  <li>macOS / iOS 自 v5.6.0 起弃用。</li>
  <li>Linux 需要 glibc ≥ 2.35（Ubuntu 22.04 一代及以上）。</li>
</ul>

<h2 id="产物--artifacts">产物 / Artifacts</h2>
<p>Android <code class="language-plaintext highlighter-rouge">arm64-v8a</code> / <code class="language-plaintext highlighter-rouge">armeabi-v7a</code> / <code class="language-plaintext highlighter-rouge">x86_64</code> / <code class="language-plaintext highlighter-rouge">universal-APK</code> / <code class="language-plaintext highlighter-rouge">AAB</code>、
Windows <code class="language-plaintext highlighter-rouge">x64</code> / <code class="language-plaintext highlighter-rouge">arm64</code>、Linux <code class="language-plaintext highlighter-rouge">x64</code> / <code class="language-plaintext highlighter-rouge">arm64</code>，每份均含 zip 与 7z。</p>

<h3 id="linux-裸放安装包">Linux 裸放安装包</h3>
<p>与 v6.2.0 / v6.3.0 相同，仍为 3 / 6：</p>

<table>
  <thead>
    <tr>
      <th> </th>
      <th>amd64 / x86_64</th>
      <th>arm64</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">.deb</code></td>
      <td>✅</td>
      <td>✅</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">.rpm</code></td>
      <td>✅</td>
      <td>❌ Ubuntu 的 rpm 缺少 aarch64 平台定义，无法交叉构建</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">.AppImage</code></td>
      <td>❌</td>
      <td>❌ appimagetool 声称未收到 <code class="language-plaintext highlighter-rouge">ARCH</code>，退出码 1</td>
    </tr>
  </tbody>
</table>

<p><strong>三种包在 zip / 7z 里都齐全</strong>，功能不缺，只是未裸放直传。</p>

<hr />

<h2 id="下载--download">下载 / Download</h2>

<p>本版本共 23 个构件产物。</p>

<p><strong>Android</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.0/OGL-v6.4.0-Android.AAB.7z">OGL-v6.4.0-Android.AAB.7z</a></td>
      <td style="text-align: right">60 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.0/OGL-v6.4.0-Android.AAB.zip">OGL-v6.4.0-Android.AAB.zip</a></td>
      <td style="text-align: right">62 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.0/OGL-v6.4.0-Android.arm64-v8a.7z">OGL-v6.4.0-Android.arm64-v8a.7z</a></td>
      <td style="text-align: right">8.0 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.0/OGL-v6.4.0-Android.arm64-v8a.zip">OGL-v6.4.0-Android.arm64-v8a.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.0/OGL-v6.4.0-Android.armeabi-v7a.7z">OGL-v6.4.0-Android.armeabi-v7a.7z</a></td>
      <td style="text-align: right">8.0 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.0/OGL-v6.4.0-Android.armeabi-v7a.zip">OGL-v6.4.0-Android.armeabi-v7a.zip</a></td>
      <td style="text-align: right">10 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.0/OGL-v6.4.0-Android.universal-APK.7z">OGL-v6.4.0-Android.universal-APK.7z</a></td>
      <td style="text-align: right">20 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.0/OGL-v6.4.0-Android.universal-APK.zip">OGL-v6.4.0-Android.universal-APK.zip</a></td>
      <td style="text-align: right">29 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.0/OGL-v6.4.0-Android.x86_64.7z">OGL-v6.4.0-Android.x86_64.7z</a></td>
      <td style="text-align: right">8.5 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.0/OGL-v6.4.0-Android.x86_64.zip">OGL-v6.4.0-Android.x86_64.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>Windows</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.0/OGL-v6.4.0-Windows.arm64.7z">OGL-v6.4.0-Windows.arm64.7z</a></td>
      <td style="text-align: right">8.3 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.0/OGL-v6.4.0-Windows.arm64.zip">OGL-v6.4.0-Windows.arm64.zip</a></td>
      <td style="text-align: right">13 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.0/OGL-v6.4.0-Windows.x64.7z">OGL-v6.4.0-Windows.x64.7z</a></td>
      <td style="text-align: right">9.5 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.0/OGL-v6.4.0-Windows.x64.zip">OGL-v6.4.0-Windows.x64.zip</a></td>
      <td style="text-align: right">14 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>Linux</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.0/OGL-v6.4.0-Linux.arm64.7z">OGL-v6.4.0-Linux.arm64.7z</a></td>
      <td style="text-align: right">7.3 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.0/OGL-v6.4.0-Linux.arm64.zip">OGL-v6.4.0-Linux.arm64.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.0/OGL-v6.4.0-Linux.x64.7z">OGL-v6.4.0-Linux.x64.7z</a></td>
      <td style="text-align: right">8.1 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.0/OGL-v6.4.0-Linux.x64.zip">OGL-v6.4.0-Linux.x64.zip</a></td>
      <td style="text-align: right">12 MB</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p>完整列表与校验信息见 <a href="https://github.com/yingo-server/OhGithubLost/releases/tag/v6.4.0">Releases v6.4.0</a>。</p>
</blockquote>]]></content><author><name>OGL</name></author><category term="release" /><summary type="html"><![CDATA[把界面语言从 15 种收敛到 6 种 —— 保留全部键均有实际译文的 6 种。 Interface languages narrowed from 15 to 6 — the ones whose strings are all actually translated.]]></summary></entry><entry><title type="html">OhGithubLost 6.4.1 · 正式版 / Stable</title><link href="/release/2026/10/07/v6.4.1.html" rel="alternate" type="text/html" title="OhGithubLost 6.4.1 · 正式版 / Stable" /><published>2026-10-07T00:00:00+00:00</published><updated>2026-10-07T00:00:00+00:00</updated><id>/release/2026/10/07/v6.4.1</id><content type="html" xml:base="/release/2026/10/07/v6.4.1.html"><![CDATA[<p>私有仓库加速需先通过<strong>知情警告</strong>。
Private repos can now be accelerated, after an explicit warning.</p>

<h2 id="变更--changed">变更 / Changed</h2>

<ul>
  <li><strong>私有仓库加速的知情开关</strong>（<code class="language-plaintext highlighter-rouge">accelPrivateRepoAccepted</code>，默认关闭）：
    <ul>
      <li>位于<strong>设置 → 网络 → 加速通道</strong>；</li>
      <li><strong>开启</strong>必须先过警告弹窗，且<strong>强制展示 3 秒</strong>后才可操作，按钮显示剩余秒数
（防止误触连点 —— 这是「令牌离开设备」的唯一一道闸门）；</li>
      <li><strong>关闭</strong>不弹窗，语义是「不再询问<strong>且</strong>不再加速」，退回 API 直取。
本项目不提供「不再询问但仍发送令牌」的选项，以避免把一次性知情同意
变为永久授权。</li>
    </ul>
  </li>
  <li>公开仓库不受影响：加速行为与之前一致。</li>
</ul>

<h2 id="为什么要有这道闸门都是实测结论">为什么要有这道闸门（都是实测结论）</h2>

<ul>
  <li>私有仓库的 raw <strong>匿名 404</strong>，<code class="language-plaintext highlighter-rouge">?token=</code> 形式早已废弃，只有带
<code class="language-plaintext highlighter-rouge">Authorization</code> 头才 200；</li>
  <li>内置通道会<strong>原样转发</strong>该头给 GitHub（带令牌 200 / 不带 404）
—— 所以「令牌离开设备」是实测事实，不是理论风险；</li>
  <li>令牌进入第三方服务器后，其留存与用途不在本项目控制范围内。</li>
</ul>

<h2 id="新增--added">新增 / Added</h2>

<ul>
  <li><strong><code class="language-plaintext highlighter-rouge">docs/NETWORK.md</code></strong>：全仓库网络连接清单 —— 出口主机 × 资源类型 ×
取法 × 公私差异 × 复现命令。</li>
</ul>

<h2 id="修复--fixed">修复 / Fixed</h2>

<ul>
  <li>补回 <code class="language-plaintext highlighter-rouge">ogLAccelCandidates</code> 在上一笔提交中被误删的 <code class="language-plaintext highlighter-rouge">repoPrivate</code> 参数
（改签名时替换掉了，函数体却仍在引用它），该项曾导致 9 条构建腿与质量门全红。</li>
  <li>私有 + 已接受加速时<strong>必须带令牌</strong>：旧判据 <code class="language-plaintext highlighter-rouge">proxied || !repoPrivate</code>
在此情形给出空头，代理拿到一个取不到内容的地址，必然 404。</li>
</ul>

<h2 id="已知限制--known-limitations">已知限制 / Known limitations</h2>

<ul>
  <li><strong>音频不做内置播放</strong>：Contents API 对超过 1 MB 的文件不返回内容。</li>
  <li><strong>私有仓库的 raw 无法像 Release 附件那样「先签名再加速」</strong> —— GitHub 没有
给 raw 提供签名机制，这是硬约束。</li>
  <li><strong>Linux 裸放安装包 3 / 6</strong>：rpm（arm64）缺平台定义；AppImage 的 <code class="language-plaintext highlighter-rouge">ARCH</code>
环境变量未被接受。三种包在 zip / 7z 里都齐全。</li>
  <li>macOS / iOS 自 v5.6.0 起弃用。</li>
</ul>

<h2 id="产物--artifacts">产物 / Artifacts</h2>

<p>Android <code class="language-plaintext highlighter-rouge">arm64-v8a</code> / <code class="language-plaintext highlighter-rouge">armeabi-v7a</code> / <code class="language-plaintext highlighter-rouge">x86_64</code> / <code class="language-plaintext highlighter-rouge">universal-APK</code> / <code class="language-plaintext highlighter-rouge">AAB</code>、
Windows <code class="language-plaintext highlighter-rouge">x64</code> / <code class="language-plaintext highlighter-rouge">arm64</code>、Linux <code class="language-plaintext highlighter-rouge">x64</code> / <code class="language-plaintext highlighter-rouge">arm64</code>，每份均含 zip 与 7z。</p>

<hr />

<h2 id="下载--download">下载 / Download</h2>

<p>本版本共 23 个构件产物。</p>

<p><strong>Android</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.1/OGL-v6.4.1-Android.AAB.7z">OGL-v6.4.1-Android.AAB.7z</a></td>
      <td style="text-align: right">60 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.1/OGL-v6.4.1-Android.AAB.zip">OGL-v6.4.1-Android.AAB.zip</a></td>
      <td style="text-align: right">62 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.1/OGL-v6.4.1-Android.arm64-v8a.7z">OGL-v6.4.1-Android.arm64-v8a.7z</a></td>
      <td style="text-align: right">8.0 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.1/OGL-v6.4.1-Android.arm64-v8a.zip">OGL-v6.4.1-Android.arm64-v8a.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.1/OGL-v6.4.1-Android.armeabi-v7a.7z">OGL-v6.4.1-Android.armeabi-v7a.7z</a></td>
      <td style="text-align: right">8.0 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.1/OGL-v6.4.1-Android.armeabi-v7a.zip">OGL-v6.4.1-Android.armeabi-v7a.zip</a></td>
      <td style="text-align: right">10 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.1/OGL-v6.4.1-Android.universal-APK.7z">OGL-v6.4.1-Android.universal-APK.7z</a></td>
      <td style="text-align: right">20 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.1/OGL-v6.4.1-Android.universal-APK.zip">OGL-v6.4.1-Android.universal-APK.zip</a></td>
      <td style="text-align: right">29 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.1/OGL-v6.4.1-Android.x86_64.7z">OGL-v6.4.1-Android.x86_64.7z</a></td>
      <td style="text-align: right">8.5 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.1/OGL-v6.4.1-Android.x86_64.zip">OGL-v6.4.1-Android.x86_64.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>Windows</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.1/OGL-v6.4.1-Windows.arm64.7z">OGL-v6.4.1-Windows.arm64.7z</a></td>
      <td style="text-align: right">8.3 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.1/OGL-v6.4.1-Windows.arm64.zip">OGL-v6.4.1-Windows.arm64.zip</a></td>
      <td style="text-align: right">13 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.1/OGL-v6.4.1-Windows.x64.7z">OGL-v6.4.1-Windows.x64.7z</a></td>
      <td style="text-align: right">9.5 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.1/OGL-v6.4.1-Windows.x64.zip">OGL-v6.4.1-Windows.x64.zip</a></td>
      <td style="text-align: right">14 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>Linux</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.1/OGL-v6.4.1-Linux.arm64.7z">OGL-v6.4.1-Linux.arm64.7z</a></td>
      <td style="text-align: right">7.3 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.1/OGL-v6.4.1-Linux.arm64.zip">OGL-v6.4.1-Linux.arm64.zip</a></td>
      <td style="text-align: right">12 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.1/OGL-v6.4.1-Linux.x64.7z">OGL-v6.4.1-Linux.x64.7z</a></td>
      <td style="text-align: right">8.1 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.1/OGL-v6.4.1-Linux.x64.zip">OGL-v6.4.1-Linux.x64.zip</a></td>
      <td style="text-align: right">12 MB</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p>完整列表与校验信息见 <a href="https://github.com/yingo-server/OhGithubLost/releases/tag/v6.4.1">Releases v6.4.1</a>。</p>
</blockquote>]]></content><author><name>OGL</name></author><category term="release" /><summary type="html"><![CDATA[私有仓库加速需先通过知情警告。 Private repos can now be accelerated, after an explicit warning.]]></summary></entry><entry><title type="html">OhGithubLost 6.4.2 · 正式版 / Stable</title><link href="/release/2026/10/07/v6.4.2.html" rel="alternate" type="text/html" title="OhGithubLost 6.4.2 · 正式版 / Stable" /><published>2026-10-07T00:00:00+00:00</published><updated>2026-10-07T00:00:00+00:00</updated><id>/release/2026/10/07/v6.4.2</id><content type="html" xml:base="/release/2026/10/07/v6.4.2.html"><![CDATA[<p>图标改由 <code class="language-plaintext highlighter-rouge">assets/icon</code> 生成，并修复两个自 v5.6.0 起存在的缺陷。
Icons now derive from <code class="language-plaintext highlighter-rouge">assets/icon</code>, fixing two bugs that shipped since v5.6.0.</p>

<h2 id="修复--fixed">修复 / Fixed</h2>

<h3 id="1-windows-与-linux-的图标自-v560-起一直是空白的">1. Windows 与 Linux 的图标自 v5.6.0 起一直是<strong>空白</strong>的</h3>

<p><code class="language-plaintext highlighter-rouge">desktop_icon.render_rgba</code> 解析出的图层里存的是 <code class="language-plaintext highlighter-rouge">url(#bodyGrad)</code> 这样的引用串，
而渐变表的键是 <code class="language-plaintext highlighter-rouge">bodyGrad</code>；查表写成 <code class="language-plaintext highlighter-rouge">grads.get(layer["fill"].strip())</code>，
<strong>结果始终为空</strong>，于是每个图层都被跳过，输出是一张<strong>全透明</strong>的图。</p>

<p>症状不是报错，而是一个看不见的图标；构建全程”成功”。
现在：正确解析引用，并且<strong>渲染结果若全透明就直接报错</strong> —— 不允许再交出空白图。</p>

<h3 id="2-android-图标从来没有跟过源图">2. Android 图标从来没有跟过源图</h3>

<p>注入器里是一段<strong>硬编码的矢量前景</strong>（盾牌 + 蓝色三角），与
<code class="language-plaintext highlighter-rouge">assets/icon/ogl_icon.svg</code>（深色多边形 + 金色双眼）不一致。此前所称的「唯一事实来源」与实际不符。现在改为真实转换。</p>

<h3 id="3-自适应图标纵向偏移-3">3. 自适应图标纵向偏移 3%</h3>

<p>居中只按 X 算了横向平移，Y 套用了同一个值；源图重心是 (256, 272)，于是图形在
安全区里整体下移。已改为 X/Y 分别计算。</p>

<h2 id="变更--changed">变更 / Changed</h2>

<ul>
  <li><strong>图标全平台统一从同一份 SVG 派生</strong>：
    <ul>
      <li>Android：<strong>矢量</strong>（VectorDrawable，自适应前景收在安全区内）</li>
      <li>Windows：256 ICO；Linux：2048 PNG 母版</li>
    </ul>
  </li>
  <li>传统启动图标放 <code class="language-plaintext highlighter-rouge">mipmap-anydpi/</code>：优先级高于具体密度，会盖过模板生成的 PNG，
因此 API &lt; 26 也不会残留 Flutter 默认图标。</li>
</ul>

<h2 id="新增--added">新增 / Added</h2>

<ul>
  <li><code class="language-plaintext highlighter-rouge">tool/svg_vector.py</code>：SVG → VectorDrawable（纯标准库，渐变按
<code class="language-plaintext highlighter-rouge">objectBoundingBox</code> 语义换算成绝对坐标）。</li>
  <li>注入器自检新增「图标管线」一节共 13 项断言：渲染非空白、全透明必须报错、
矢量含真实几何与渐变、安全区生效、五个 Android 图标文件均写出。</li>
</ul>

<h2 id="已知限制--known-limitations">已知限制 / Known limitations</h2>

<ul>
  <li>图标转换器只认 <code class="language-plaintext highlighter-rouge">polygon</code> + <code class="language-plaintext highlighter-rouge">linearGradient</code>（当前源图恰好只用这两者）；
源图若引入 <code class="language-plaintext highlighter-rouge">path</code>/<code class="language-plaintext highlighter-rouge">circle</code>/径向渐变，转换会<strong>明确报错</strong>而不是静默画错。</li>
  <li><strong>私有仓库的 raw 无法像 Release 附件那样「先签名再加速」</strong>：GitHub 没给 raw
提供签名机制，这是硬约束（详见 v6.4.1）。</li>
  <li><strong>Linux 裸放安装包 3 / 6</strong>：rpm（arm64）缺平台定义；AppImage 的 <code class="language-plaintext highlighter-rouge">ARCH</code>
环境变量未被接受。三种包在 zip / 7z 里都齐全。</li>
  <li>macOS / iOS 自 v5.6.0 起弃用。</li>
</ul>

<h2 id="产物--artifacts">产物 / Artifacts</h2>

<p>Android <code class="language-plaintext highlighter-rouge">arm64-v8a</code> / <code class="language-plaintext highlighter-rouge">armeabi-v7a</code> / <code class="language-plaintext highlighter-rouge">x86_64</code> / <code class="language-plaintext highlighter-rouge">universal-APK</code> / <code class="language-plaintext highlighter-rouge">AAB</code>、
Windows <code class="language-plaintext highlighter-rouge">x64</code> / <code class="language-plaintext highlighter-rouge">arm64</code>、Linux <code class="language-plaintext highlighter-rouge">x64</code> / <code class="language-plaintext highlighter-rouge">arm64</code>，每份均含 zip 与 7z。</p>

<hr />

<h2 id="下载--download">下载 / Download</h2>

<p>本版本共 23 个构件产物。</p>

<p><strong>Android</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.2/OGL-v6.4.2-Android.AAB.7z">OGL-v6.4.2-Android.AAB.7z</a></td>
      <td style="text-align: right">60 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.2/OGL-v6.4.2-Android.AAB.zip">OGL-v6.4.2-Android.AAB.zip</a></td>
      <td style="text-align: right">62 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.2/OGL-v6.4.2-Android.arm64-v8a.7z">OGL-v6.4.2-Android.arm64-v8a.7z</a></td>
      <td style="text-align: right">8.0 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.2/OGL-v6.4.2-Android.arm64-v8a.zip">OGL-v6.4.2-Android.arm64-v8a.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.2/OGL-v6.4.2-Android.armeabi-v7a.7z">OGL-v6.4.2-Android.armeabi-v7a.7z</a></td>
      <td style="text-align: right">8.0 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.2/OGL-v6.4.2-Android.armeabi-v7a.zip">OGL-v6.4.2-Android.armeabi-v7a.zip</a></td>
      <td style="text-align: right">10 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.2/OGL-v6.4.2-Android.universal-APK.7z">OGL-v6.4.2-Android.universal-APK.7z</a></td>
      <td style="text-align: right">20 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.2/OGL-v6.4.2-Android.universal-APK.zip">OGL-v6.4.2-Android.universal-APK.zip</a></td>
      <td style="text-align: right">29 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.2/OGL-v6.4.2-Android.x86_64.7z">OGL-v6.4.2-Android.x86_64.7z</a></td>
      <td style="text-align: right">8.5 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.2/OGL-v6.4.2-Android.x86_64.zip">OGL-v6.4.2-Android.x86_64.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>Windows</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.2/OGL-v6.4.2-Windows.arm64.7z">OGL-v6.4.2-Windows.arm64.7z</a></td>
      <td style="text-align: right">8.3 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.2/OGL-v6.4.2-Windows.arm64.zip">OGL-v6.4.2-Windows.arm64.zip</a></td>
      <td style="text-align: right">13 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.2/OGL-v6.4.2-Windows.x64.7z">OGL-v6.4.2-Windows.x64.7z</a></td>
      <td style="text-align: right">9.5 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.2/OGL-v6.4.2-Windows.x64.zip">OGL-v6.4.2-Windows.x64.zip</a></td>
      <td style="text-align: right">14 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>Linux</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.2/OGL-v6.4.2-Linux.arm64.7z">OGL-v6.4.2-Linux.arm64.7z</a></td>
      <td style="text-align: right">7.3 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.2/OGL-v6.4.2-Linux.arm64.zip">OGL-v6.4.2-Linux.arm64.zip</a></td>
      <td style="text-align: right">12 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.2/OGL-v6.4.2-Linux.x64.7z">OGL-v6.4.2-Linux.x64.7z</a></td>
      <td style="text-align: right">8.1 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.4.2/OGL-v6.4.2-Linux.x64.zip">OGL-v6.4.2-Linux.x64.zip</a></td>
      <td style="text-align: right">12 MB</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p>完整列表与校验信息见 <a href="https://github.com/yingo-server/OhGithubLost/releases/tag/v6.4.2">Releases v6.4.2</a>。</p>
</blockquote>]]></content><author><name>OGL</name></author><category term="release" /><summary type="html"><![CDATA[图标改由 assets/icon 生成，并修复两个自 v5.6.0 起存在的缺陷。 Icons now derive from assets/icon, fixing two bugs that shipped since v5.6.0.]]></summary></entry><entry><title type="html">OhGithubLost 6.2.0 · 正式版 / Stable</title><link href="/release/2026/10/06/v6.2.0.html" rel="alternate" type="text/html" title="OhGithubLost 6.2.0 · 正式版 / Stable" /><published>2026-10-06T00:00:00+00:00</published><updated>2026-10-06T00:00:00+00:00</updated><id>/release/2026/10/06/v6.2.0</id><content type="html" xml:base="/release/2026/10/06/v6.2.0.html"><![CDATA[<p>下载链路重做（端点 / 路由 / 完整性）+ 文件预览 + 隐私承诺。九条构建腿全绿。
Download pipeline rebuilt (endpoints, routing, integrity), plus file previews and a privacy commitment.</p>

<h2 id="新增--added">新增 / Added</h2>
<ul>
  <li><strong>文件预览</strong>：图片（可缩放）、SVG（矢量渲染）、XML 与文本（语法高亮）。
在仓库页<strong>长按文件 →「打开方式」</strong>可在「内置预览 / 编辑器 / 浏览器」之间选择。
File previews for images (zoomable), SVG (vector), XML and text; long-press a file
in the repository page and pick “Open with”.</li>
  <li><strong>Action 构建产物下载控件</strong>：运行详情页列出产物（名称 / 大小 / 有效期），
已过期的条目直接禁用。
Build-artifact download control in the run detail page; expired artifacts are disabled.</li>
  <li><strong>编辑器长按菜单</strong>：复制 / 剪切 / 粘贴 / 全选（只读态自动裁掉剪切与粘贴）。
Long-press selection menu in the code editor.</li>
  <li><strong>引导页最后一页《开源协议与隐私承诺》</strong>（15 语言全文）：
<strong>保证不收集数据</strong>（无遥测 / 分析 / 广告 / 追踪 SDK，令牌只在本机），
并<strong>明确排除</strong>可选的 Web 浏览器版本 —— 该功能默认关闭，开启前会再次单独提示。
A licence-and-privacy page as the final onboarding step, guaranteeing no data
collection while explicitly excluding the optional Web build.</li>
</ul>

<h2 id="变更--changed">变更 / Changed</h2>
<ul>
  <li><strong>内置加速通道改为 <code class="language-plaintext highlighter-rouge">https://proxy.344977.xyz/</code></strong>（单前缀转发完整原始链接），
同意协议版本 1 → 2（地址变更属实质修改，需重新征求同意）。
Built-in acceleration channel switched to <code class="language-plaintext highlighter-rouge">proxy.344977.xyz</code>; consent version 1 → 2.</li>
  <li><strong>加速路由改为纯函数判定</strong>（<code class="language-plaintext highlighter-rouge">ogLAccelCandidates</code>）：签名族（Release 附件 /
Action 日志 / 产物）按 500KB 阈值；<strong>raw 族仅「内置通道 + 公开仓库」才加速</strong>。
Routing is now a pure function: signed assets follow a 500 KB threshold; raw assets
accelerate only on the built-in channel for public repositories.</li>
  <li><strong>仓库文件取法按是否加速分流</strong>：不加速走 API
（<code class="language-plaintext highlighter-rouge">/repos/{o}/{r}/contents/{path}</code> + <code class="language-plaintext highlighter-rouge">Accept: application/vnd.github.raw</code>，
实测支持 Range，多连接分片不退化）；加速才把 raw 链接交给代理。
Repository files now use the Contents API with the raw media type when not
accelerating, and only hand raw links to the proxy when accelerating.</li>
  <li><strong>README 仓库内图片</strong>：内置 + 公开时改走 raw + 代理 —— raw 不限流，而
Contents API 认证后也只有 5000 次/小时，一次 README 几十张图很容易吃配额。
README images use raw through the proxy on the built-in channel: raw is not
rate-limited, unlike the 5 000/hour authenticated Contents API.</li>
  <li><strong>登录页精简</strong>：删掉「怎么拿令牌」引导、「向导进度」四步清单与重复标题，
保留安全说明、输入、显示/隐藏、登录与游客入口（文件缩小 27%）。
Login page simplified; the how-to guide and step checklist are gone.</li>
  <li>下载管理页的状态与分类标签改为走 i18n（此前是域层硬编码中文）。
Download status/category labels are now localised.</li>
</ul>

<h2 id="修复--fixed">修复 / Fixed</h2>
<ul>
  <li><strong>私有仓库下载未带认证头</strong>（Release 附件 / Action 产物 / 仓库文件三处都会
401/404）。私有仓库此前实际上无法下载。
Private-repository downloads carried no auth header and failed outright.</li>
  <li><strong>下载后不校验完整性</strong>：现在比对 GitHub 提供的 SHA-256；不匹配判为失败且
<strong>不导出到 SAF</strong>；没有摘要可比对时如实标注「未校验」，不声称已验证。
Downloads are now verified against GitHub’s SHA-256 digest; mismatches fail and are
never exported. Resources without a digest are honestly labelled “not verified”.</li>
  <li><strong>文件名未做净化</strong>：新增净化（只取末段、剔控制字符、拒 <code class="language-plaintext highlighter-rouge">..</code>、绕开 Windows
保留设备名、限长 120 并保住扩展名）。
Download file names are now sanitised.</li>
  <li><strong>非 http(s) 地址被放行</strong>：新增协议白名单，入队与全部降级地址一律校验。
A scheme allow-list now rejects anything that is not http/https.</li>
  <li><strong>跨域重定向的令牌外泄风险</strong>：此前依赖 Dart SDK 未文档化的”自动剥离
Authorization”行为；现在显式不跟随重定向，并校验跳转目标（拒绝回环 / 私网 /
链路本地，含云元数据 <code class="language-plaintext highlighter-rouge">169.254.169.254</code>）。
Redirects are no longer followed implicitly, and redirect targets are validated.</li>
  <li><strong>构建：Windows 两条腿 spec 从未被应用</strong> —— Windows runner 无 PyYAML，注入器
走了手写的兜底解析器，而它几乎解析不出内容，导致编译宏全部未注入。
已重写为缩进驱动解析器，与 PyYAML 结果逐字段一致。
Windows builds never applied the platform spec because the dependency-free YAML
fallback parser was broken; it has been rewritten.</li>
  <li><strong>构建：Android 五条腿未跟进 Kotlin DSL 迁移</strong> —— 模板已生成
<code class="language-plaintext highlighter-rouge">build.gradle.kts</code>，spec 仍指向 <code class="language-plaintext highlighter-rouge">build.gradle</code>，注入被静默跳过，
<code class="language-plaintext highlighter-rouge">compileSdk</code> 停在 36 且 desugaring 未开。注入器现在<strong>缺目标文件即报错退出</strong>，
失败点从编译期前移到注入期。
Android legs had not followed the Kotlin DSL migration; the injector now fails
loudly instead of silently skipping.</li>
  <li><strong>发布：Linux 的 deb / rpm / AppImage 从未真正发布过</strong> —— 发布作业<strong>没有
<code class="language-plaintext highlighter-rouge">actions/checkout</code></strong>，工作目录是空的，<code class="language-plaintext highlighter-rouge">tool/linux_packages.py</code> 根本找不到；
而该步骤带 <code class="language-plaintext highlighter-rouge">|| true</code>，把错误整个吞掉。v5.6.0、v6.0.0、v6.2.0 的 Release 里
裸放安装包数量均为 0。已补上签出步骤，并把「脚本不存在」改为<strong>非零退出码失败</strong>
（单个格式打包失败仍只告警，不拖垮发布）。
Linux .deb / .rpm / AppImage were never actually published: the release job had no
<code class="language-plaintext highlighter-rouge">actions/checkout</code>, so the packaging script was absent, and <code class="language-plaintext highlighter-rouge">|| true</code> swallowed it.</li>
</ul>

<h2 id="移除--removed">移除 / Removed</h2>
<ul>
  <li>main 上的 Web 残留：<code class="language-plaintext highlighter-rouge">.github/workflows/web.yml</code>（挂在 <code class="language-plaintext highlighter-rouge">push:[main]</code>，每次推 main
都会执行且带 <code class="language-plaintext highlighter-rouge">contents: write</code>）、<code class="language-plaintext highlighter-rouge">tool/web_build.py</code>、<code class="language-plaintext highlighter-rouge">docs/WEB.md</code>。</li>
  <li>5 个已被 <code class="language-plaintext highlighter-rouge">platform_spec.yaml</code> + 统一注入器取代的旧脚本
（<code class="language-plaintext highlighter-rouge">inject_android_gradle</code> / <code class="language-plaintext highlighter-rouge">inject_android_icon</code> / <code class="language-plaintext highlighter-rouge">inject_android_manifest</code> /
<code class="language-plaintext highlighter-rouge">inject_desktop_shell</code> / <code class="language-plaintext highlighter-rouge">inject_windows_cmake</code>）。</li>
  <li>2 个无引用的遗留文档（<code class="language-plaintext highlighter-rouge">docs/ANIMATION_PLAN.md</code>、<code class="language-plaintext highlighter-rouge">docs/RELEASE_NOTES.md</code>）。</li>
</ul>

<h2 id="已知限制--known-limitations">已知限制 / Known limitations</h2>
<ul>
  <li><strong>私有仓库的 raw 内容无法走加速</strong>（README 仓库内图片、仓库文件）。<code class="language-plaintext highlighter-rouge">raw</code> 端点
没有签名机制，私有内容必须直接带令牌 —— 交给代理等于泄露令牌。这是硬约束。
Raw content of private repositories cannot be accelerated: the raw endpoint has no
signing mechanism, so delegating it to a proxy would leak the token.</li>
  <li><strong>音频不做内置播放</strong>：Contents API 对超过 1 MB 的文件不返回内容，音频必然超限。
可在下载后用系统播放器打开。
No in-app audio playback: the Contents API returns no content above 1 MB.</li>
  <li><strong>Web 功能不在隐私承诺范围内</strong>（见引导页最后一页）；该功能默认关闭。
The Web build is excluded from the privacy commitment; it is off by default.</li>
  <li>macOS / iOS 自 v5.6.0 起弃用。</li>
  <li>Linux 需要 glibc ≥ 2.35（Ubuntu 22.04 一代及以上）。</li>
  <li><strong>Linux 裸放安装包本版仅 3 / 6</strong>：deb（两架构）与 rpm（x86_64）已产出，
rpm（arm64）与两个 AppImage 尚未产出。三种包在 zip / 7z 里都齐全，
详见「产物」一节。</li>
</ul>

<h2 id="产物--artifacts">产物 / Artifacts</h2>
<p>Android <code class="language-plaintext highlighter-rouge">arm64-v8a</code> / <code class="language-plaintext highlighter-rouge">armeabi-v7a</code> / <code class="language-plaintext highlighter-rouge">x86_64</code> / <code class="language-plaintext highlighter-rouge">universal-APK</code> / <code class="language-plaintext highlighter-rouge">AAB</code>、
Windows <code class="language-plaintext highlighter-rouge">x64</code> / <code class="language-plaintext highlighter-rouge">arm64</code>、Linux <code class="language-plaintext highlighter-rouge">x64</code> / <code class="language-plaintext highlighter-rouge">arm64</code>，每份均含 zip 与 7z。</p>

<h3 id="linux-裸放安装包本版只产出了-3--6如实说明">Linux 裸放安装包：本版只产出了 3 / 6（如实说明）</h3>
<p>这三种包此前<strong>从未真正发布过</strong> —— 本版第一次让它们开始产出，但仍未齐备：</p>

<table>
  <thead>
    <tr>
      <th> </th>
      <th>amd64 / x86_64</th>
      <th>arm64</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">.deb</code></td>
      <td>✅</td>
      <td>✅</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">.rpm</code></td>
      <td>✅</td>
      <td>❌ Ubuntu 的 rpm 缺少 aarch64 平台定义，无法在 x86_64 宿主上交叉构建</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">.AppImage</code></td>
      <td>❌</td>
      <td>❌ appimagetool 未接受到 <code class="language-plaintext highlighter-rouge">ARCH</code> 环境变量，退出码 1</td>
    </tr>
  </tbody>
</table>

<p><strong>三种包在 zip / 7z 里都齐全</strong> —— deb / rpm / AppImage 一并打进了
<code class="language-plaintext highlighter-rouge">OGL-v6.2.0-Linux.*.zip</code> 与 <code class="language-plaintext highlighter-rouge">.7z</code>，所以功能上不缺，只是没有裸放直传。
裸放安装包是本版新增的，缺失项会在后续版本补齐。</p>

<hr />

<h2 id="下载--download">下载 / Download</h2>

<p>本版本共 23 个构件产物。</p>

<p><strong>Android</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.2.0/OGL-v6.2.0-Android.AAB.7z">OGL-v6.2.0-Android.AAB.7z</a></td>
      <td style="text-align: right">60 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.2.0/OGL-v6.2.0-Android.AAB.zip">OGL-v6.2.0-Android.AAB.zip</a></td>
      <td style="text-align: right">62 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.2.0/OGL-v6.2.0-Android.arm64-v8a.7z">OGL-v6.2.0-Android.arm64-v8a.7z</a></td>
      <td style="text-align: right">8.2 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.2.0/OGL-v6.2.0-Android.arm64-v8a.zip">OGL-v6.2.0-Android.arm64-v8a.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.2.0/OGL-v6.2.0-Android.armeabi-v7a.7z">OGL-v6.2.0-Android.armeabi-v7a.7z</a></td>
      <td style="text-align: right">8.2 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.2.0/OGL-v6.2.0-Android.armeabi-v7a.zip">OGL-v6.2.0-Android.armeabi-v7a.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.2.0/OGL-v6.2.0-Android.universal-APK.7z">OGL-v6.2.0-Android.universal-APK.7z</a></td>
      <td style="text-align: right">20 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.2.0/OGL-v6.2.0-Android.universal-APK.zip">OGL-v6.2.0-Android.universal-APK.zip</a></td>
      <td style="text-align: right">29 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.2.0/OGL-v6.2.0-Android.x86_64.7z">OGL-v6.2.0-Android.x86_64.7z</a></td>
      <td style="text-align: right">8.7 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.2.0/OGL-v6.2.0-Android.x86_64.zip">OGL-v6.2.0-Android.x86_64.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>Windows</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.2.0/OGL-v6.2.0-Windows.arm64.7z">OGL-v6.2.0-Windows.arm64.7z</a></td>
      <td style="text-align: right">8.4 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.2.0/OGL-v6.2.0-Windows.arm64.zip">OGL-v6.2.0-Windows.arm64.zip</a></td>
      <td style="text-align: right">13 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.2.0/OGL-v6.2.0-Windows.x64.7z">OGL-v6.2.0-Windows.x64.7z</a></td>
      <td style="text-align: right">9.6 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.2.0/OGL-v6.2.0-Windows.x64.zip">OGL-v6.2.0-Windows.x64.zip</a></td>
      <td style="text-align: right">14 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>Linux</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.2.0/OGL-v6.2.0-Linux.arm64.7z">OGL-v6.2.0-Linux.arm64.7z</a></td>
      <td style="text-align: right">7.4 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.2.0/OGL-v6.2.0-Linux.arm64.zip">OGL-v6.2.0-Linux.arm64.zip</a></td>
      <td style="text-align: right">12 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.2.0/OGL-v6.2.0-Linux.x64.7z">OGL-v6.2.0-Linux.x64.7z</a></td>
      <td style="text-align: right">8.2 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.2.0/OGL-v6.2.0-Linux.x64.zip">OGL-v6.2.0-Linux.x64.zip</a></td>
      <td style="text-align: right">12 MB</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p>完整列表与校验信息见 <a href="https://github.com/yingo-server/OhGithubLost/releases/tag/v6.2.0">Releases v6.2.0</a>。</p>
</blockquote>]]></content><author><name>OGL</name></author><category term="release" /><summary type="html"><![CDATA[下载链路重做（端点 / 路由 / 完整性）+ 文件预览 + 隐私承诺。九条构建腿全绿。 Download pipeline rebuilt (endpoints, routing, integrity), plus file previews and a privacy commitment.]]></summary></entry><entry><title type="html">OhGithubLost 6.3.0 · 正式版 / Stable</title><link href="/release/2026/10/06/v6.3.0.html" rel="alternate" type="text/html" title="OhGithubLost 6.3.0 · 正式版 / Stable" /><published>2026-10-06T00:00:00+00:00</published><updated>2026-10-06T00:00:00+00:00</updated><id>/release/2026/10/06/v6.3.0</id><content type="html" xml:base="/release/2026/10/06/v6.3.0.html"><![CDATA[<p>无障碍补全 + 恢复 UI 截屏矩阵 + 消除两套「可见性」定义。
Accessibility completed, the UI screenshot matrix restored, and two conflicting definitions of “storage visibility” unified.</p>

<h2 id="新增--added">新增 / Added</h2>
<ul>
  <li><strong>无障碍语义标注（4 处）</strong>：此前全项目 <code class="language-plaintext highlighter-rouge">Semantics</code> 为 <strong>0</strong> —— 50 个图标按钮虽都有
<code class="language-plaintext highlighter-rouge">tooltip</code>（Flutter 会自动取作语义标签），但<strong>自定义可点击区域</strong>没有任何语义标注，
屏幕阅读器只能念出”按钮”，用户不知道点了会怎样。
    <ul>
      <li>标题栏窗口控件（最小化 / 最大化 / 关闭）→ <code class="language-plaintext highlighter-rouge">Semantics(button: true, label: …)</code></li>
      <li>代码配色色板 → <code class="language-plaintext highlighter-rouge">Semantics(button: true, selected: …, label: 颜色 #rrggbb)</code></li>
      <li>通知开关行 → <code class="language-plaintext highlighter-rouge">Semantics(toggled: …, button: true, label: 消息内容)</code></li>
      <li>仓库页分支选择条 → <code class="language-plaintext highlighter-rouge">Semantics(button: true, label: 选择分支)</code></li>
      <li>文案 4 键 × 15 语言。</li>
    </ul>
  </li>
  <li><strong>恢复 UI 截屏矩阵</strong>：从 <strong>2 张样本</strong>扩回 <strong>26 张</strong>（5 页面 × 亮/暗 × 横/竖 = 20，
再加 3 平台 × 亮/暗的首页 = 6）。此前退化成冒烟测试后，UI 改动<strong>无法自动发现视觉回归</strong>。</li>
</ul>

<h2 id="变更--changed">变更 / Changed</h2>
<ul>
  <li><strong>「落盘可见性」统一成一套判定</strong>。此前有两处定义：
    <ul>
      <li><code class="language-plaintext highlighter-rouge">OgLStoragePlan.userVisible</code>：<code class="language-plaintext highlighter-rouge">mode != internal</code>（按<strong>档位</strong>）</li>
      <li><code class="language-plaintext highlighter-rouge">OgLAppDirs.isUserVisible</code>：<code class="language-plaintext highlighter-rouge">tier ∈ {public, desktop}</code>（按<strong>路径分级</strong>）</li>
    </ul>

    <p>两者在「桌面文档目录不可写、最终落到应用支持目录」时会给出<strong>相反结论</strong>。
界面接的是前者、测试锁的是后者，<strong>两者的一致性未被验证</strong>。
现统一为路径分级（唯一来源），SAF 档作为例外单列（用户授权过就可见）。
新增测试把「无论什么档位，可见性都等于按路径分级的结论」钉成回归。</p>
  </li>
  <li><strong><code class="language-plaintext highlighter-rouge">OgLAppDirs.categoryFolder</code> 补上 <code class="language-plaintext highlighter-rouge">artifact</code> 映射</strong>。此前漏了 Action 构建产物，
一旦被用到会<strong>静默落到 <code class="language-plaintext highlighter-rouge">other/</code></strong> —— 用户看不到任何异常，只是分类目录不对。
补上映射，并新增测试把底座与中枢两份映射<strong>逐枚举比对</strong>（新增分类漏改一侧立刻红灯）。
死代码转为防漂移护栏。</li>
</ul>

<h2 id="修复--fixed">修复 / Fixed</h2>
<ul>
  <li><strong><code class="language-plaintext highlighter-rouge">window_windows.dart</code> 缩进损坏</strong>：第 27/29/30 行等顶格，Linux 同位置正常。
应是 v6.0.1 删除注入脚本那次重构的残留。</li>
  <li><strong><code class="language-plaintext highlighter-rouge">app_dirs.dart</code> 注释与代码矛盾</strong>：<code class="language-plaintext highlighter-rouge">_resolveRoot()</code> ② 档注释原说应用外部目录
「文件管理器可见」，而 <code class="language-plaintext highlighter-rouge">isUserVisible()</code> 明确判为<strong>不可见</strong>（Android 11+ 隐藏
<code class="language-plaintext highlighter-rouge">Android/data/</code>）。注释会误导后续维护，已改为准确描述并说明为何仍选它作退路。</li>
  <li><strong><code class="language-plaintext highlighter-rouge">appTitle</code> 三份字面量重复</strong>（windows / linux / macos）：值上收到
<code class="language-plaintext highlighter-rouge">window_capability.dart</code> 的 <code class="language-plaintext highlighter-rouge">kOgLAppTitle</code>，各平台保留同名常量指向它
（不删符号），消除标题不一致的可能。</li>
</ul>

<h2 id="已知限制--known-limitations">已知限制 / Known limitations</h2>
<ul>
  <li><strong>音频不做内置播放</strong>：Contents API 对超过 1 MB 的文件不返回内容，音频必然超限。
预览页给出「下载」动作，之后可在下载管理页交给系统播放器。</li>
  <li><strong>Linux 裸放安装包仅 3 / 6</strong>：deb（amd64 / arm64）与 rpm（x86_64）已产出；
rpm（arm64）因 Ubuntu 的 rpm 缺少 aarch64 平台定义、无法在 x86_64 宿主上交叉构建；
两个 AppImage 因 appimagetool 未接受到 <code class="language-plaintext highlighter-rouge">ARCH</code> 环境变量而退出码 1。
三种包在 zip / 7z 里都齐全，功能不缺，只是未裸放直传。详见「产物」一节。</li>
  <li><strong>14 种语言的加速协议文本仍为旧版</strong>（zh 已改，键集合未变故门禁通过）。
法律 / 隐私文本在 15 种语言下不一致是合规风险，需按既定流程补齐。</li>
  <li><strong>私有仓库的 raw 内容无法走加速</strong>（README 仓库内图片、仓库文件）：<code class="language-plaintext highlighter-rouge">raw</code> 端点
没有签名机制，交给代理等于送令牌。这是硬约束。</li>
  <li>macOS / iOS 自 v5.6.0 起弃用。</li>
  <li>Linux 需要 glibc ≥ 2.35（Ubuntu 22.04 一代及以上）。</li>
</ul>

<h2 id="产物--artifacts">产物 / Artifacts</h2>
<p>Android <code class="language-plaintext highlighter-rouge">arm64-v8a</code> / <code class="language-plaintext highlighter-rouge">armeabi-v7a</code> / <code class="language-plaintext highlighter-rouge">x86_64</code> / <code class="language-plaintext highlighter-rouge">universal-APK</code> / <code class="language-plaintext highlighter-rouge">AAB</code>、
Windows <code class="language-plaintext highlighter-rouge">x64</code> / <code class="language-plaintext highlighter-rouge">arm64</code>、Linux <code class="language-plaintext highlighter-rouge">x64</code> / <code class="language-plaintext highlighter-rouge">arm64</code>，每份均含 zip 与 7z。</p>

<h3 id="linux-裸放安装包本版只产出了-3--6如实说明">Linux 裸放安装包：本版只产出了 3 / 6（如实说明）</h3>
<p>| | amd64 / x86_64 | arm64 |
|—|—|—|
| <code class="language-plaintext highlighter-rouge">.deb</code> | ✅ | ✅ |
| <code class="language-plaintext highlighter-rouge">.rpm</code> | ✅ | ❌ Ubuntu 的 rpm 缺少 aarch64 平台定义，无法交叉构建 |
| <code class="language-plaintext highlighter-rouge">.AppImage</code> | ❌ | ❌ appimagetool 声称未收到 <code class="language-plaintext highlighter-rouge">ARCH</code>，退出码 1 |</p>

<p><strong>三种包在 zip / 7z 里都齐全</strong>，功能不缺，只是未裸放直传。
裸放安装包是 v6.2.0 才开始产出的（此前从未真正发布过），缺失项后续补齐。</p>

<hr />

<h2 id="下载--download">下载 / Download</h2>

<p>本版本共 23 个构件产物。</p>

<p><strong>Android</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.3.0/OGL-v6.3.0-Android.AAB.7z">OGL-v6.3.0-Android.AAB.7z</a></td>
      <td style="text-align: right">60 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.3.0/OGL-v6.3.0-Android.AAB.zip">OGL-v6.3.0-Android.AAB.zip</a></td>
      <td style="text-align: right">62 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.3.0/OGL-v6.3.0-Android.arm64-v8a.7z">OGL-v6.3.0-Android.arm64-v8a.7z</a></td>
      <td style="text-align: right">8.2 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.3.0/OGL-v6.3.0-Android.arm64-v8a.zip">OGL-v6.3.0-Android.arm64-v8a.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.3.0/OGL-v6.3.0-Android.armeabi-v7a.7z">OGL-v6.3.0-Android.armeabi-v7a.7z</a></td>
      <td style="text-align: right">8.2 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.3.0/OGL-v6.3.0-Android.armeabi-v7a.zip">OGL-v6.3.0-Android.armeabi-v7a.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.3.0/OGL-v6.3.0-Android.universal-APK.7z">OGL-v6.3.0-Android.universal-APK.7z</a></td>
      <td style="text-align: right">20 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.3.0/OGL-v6.3.0-Android.universal-APK.zip">OGL-v6.3.0-Android.universal-APK.zip</a></td>
      <td style="text-align: right">29 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.3.0/OGL-v6.3.0-Android.x86_64.7z">OGL-v6.3.0-Android.x86_64.7z</a></td>
      <td style="text-align: right">8.7 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.3.0/OGL-v6.3.0-Android.x86_64.zip">OGL-v6.3.0-Android.x86_64.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>Windows</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.3.0/OGL-v6.3.0-Windows.arm64.7z">OGL-v6.3.0-Windows.arm64.7z</a></td>
      <td style="text-align: right">8.4 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.3.0/OGL-v6.3.0-Windows.arm64.zip">OGL-v6.3.0-Windows.arm64.zip</a></td>
      <td style="text-align: right">13 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.3.0/OGL-v6.3.0-Windows.x64.7z">OGL-v6.3.0-Windows.x64.7z</a></td>
      <td style="text-align: right">9.6 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.3.0/OGL-v6.3.0-Windows.x64.zip">OGL-v6.3.0-Windows.x64.zip</a></td>
      <td style="text-align: right">14 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>Linux</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.3.0/OGL-v6.3.0-Linux.arm64.7z">OGL-v6.3.0-Linux.arm64.7z</a></td>
      <td style="text-align: right">7.4 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.3.0/OGL-v6.3.0-Linux.arm64.zip">OGL-v6.3.0-Linux.arm64.zip</a></td>
      <td style="text-align: right">12 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.3.0/OGL-v6.3.0-Linux.x64.7z">OGL-v6.3.0-Linux.x64.7z</a></td>
      <td style="text-align: right">8.2 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.3.0/OGL-v6.3.0-Linux.x64.zip">OGL-v6.3.0-Linux.x64.zip</a></td>
      <td style="text-align: right">12 MB</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p>完整列表与校验信息见 <a href="https://github.com/yingo-server/OhGithubLost/releases/tag/v6.3.0">Releases v6.3.0</a>。</p>
</blockquote>]]></content><author><name>OGL</name></author><category term="release" /><summary type="html"><![CDATA[无障碍补全 + 恢复 UI 截屏矩阵 + 消除两套「可见性」定义。 Accessibility completed, the UI screenshot matrix restored, and two conflicting definitions of “storage visibility” unified.]]></summary></entry><entry><title type="html">OhGithubLost 6.0.0 · 正式版 / Stable</title><link href="/release/2026/10/05/v6.0.0.html" rel="alternate" type="text/html" title="OhGithubLost 6.0.0 · 正式版 / Stable" /><published>2026-10-05T00:00:00+00:00</published><updated>2026-10-05T00:00:00+00:00</updated><id>/release/2026/10/05/v6.0.0</id><content type="html" xml:base="/release/2026/10/05/v6.0.0.html"><![CDATA[<p>跨平台差异面硬化 + 桌面自研窗口 + 设置页层级整改 + 仓库浏览修复。
Cross-platform hardening, a self-drawn desktop window, a re-layered settings page, and repo-browsing fixes.</p>

<h2 id="新增--added">新增 / Added</h2>
<ul>
  <li>桌面自绘窗口：自研标题栏（拖拽 / 双击最大化 / 最小化·最大化·关闭），可在设置菜单回退系统窗口管理器。
Custom desktop window: our own title bar (drag / double-click maximize / min / max / close), with a fallback to the system window manager in Settings.</li>
  <li>桌面图标与原生标题：Windows 生成 256 单帧 ICO，Linux 生成 2048 PNG 母版，原生窗口标题统一为 <code class="language-plaintext highlighter-rouge">OhGithubLost</code>。
Desktop icon &amp; native title: a single-frame 256 ICO for Windows, a 2048 PNG master for Linux; the native title is <code class="language-plaintext highlighter-rouge">OhGithubLost</code> everywhere.</li>
  <li>Linux 安装包：<code class="language-plaintext highlighter-rouge">.deb</code> / <code class="language-plaintext highlighter-rouge">.rpm</code> / <code class="language-plaintext highlighter-rouge">.AppImage</code>，在 Release 中裸放直传。
Linux packages: <code class="language-plaintext highlighter-rouge">.deb</code>, <code class="language-plaintext highlighter-rouge">.rpm</code> and <code class="language-plaintext highlighter-rouge">.AppImage</code>, uploaded raw in the Release.</li>
  <li>Windows 长路径三层处理：<code class="language-plaintext highlighter-rouge">\\?\</code> 前缀绕过 → 超限收纳为 <code class="language-plaintext highlighter-rouge">TooLongRoad_&lt;8位&gt;.zip</code> → 根目录 <code class="language-plaintext highlighter-rouge">.ogl_toolong.json</code> 索引，读 / 写 / 删 / 列全部可还原。
Windows long paths in three layers: <code class="language-plaintext highlighter-rouge">\\?\</code> prefix bypass → overflow packed into <code class="language-plaintext highlighter-rouge">TooLongRoad_&lt;8-hex&gt;.zip</code> → <code class="language-plaintext highlighter-rouge">.ogl_toolong.json</code> index; read / write / delete / list all round-trip.</li>
</ul>

<h2 id="修复--fixed">修复 / Fixed</h2>
<ul>
  <li><strong>Linux 产物长期构建不出来</strong>：原先在 <code class="language-plaintext highlighter-rouge">ubuntu:20.04</code> 容器内构建，而该版本已 EOL、archive 源缓慢易超时；且”容器失败回退宿主构建”的兜底等于把全量编译跑两遍——曾使该腿运行 5 小时 50 分后失败。现在 x64 腿固定 <code class="language-plaintext highlighter-rouge">ubuntu-22.04</code>、arm64 腿 <code class="language-plaintext highlighter-rouge">ubuntu-24.04-arm</code>，<strong>宿主直编</strong>；并给 <code class="language-plaintext highlighter-rouge">build</code> job 加 45 分钟超时兜底。
<strong>Linux artifacts could not finish building</strong>: they were built inside an <code class="language-plaintext highlighter-rouge">ubuntu:20.04</code> container that is now EOL (slow, timeout-prone archive mirrors), and the “fall back to a host build” path effectively compiled everything twice — one leg ran for 5h50m before failing. The x64 leg is now pinned to <code class="language-plaintext highlighter-rouge">ubuntu-22.04</code> and the arm64 leg to <code class="language-plaintext highlighter-rouge">ubuntu-24.04-arm</code>, building directly on the host; the <code class="language-plaintext highlighter-rouge">build</code> job also gained a 45-minute timeout.</li>
  <li><strong>README / Markdown 里的链接点了没反应</strong>：相对地址（<code class="language-plaintext highlighter-rouge">LICENSE</code>、<code class="language-plaintext highlighter-rouge">docs/x.md</code>、<code class="language-plaintext highlighter-rouge">#锚点</code>、裸域名）先按仓库基址解析成绝对地址再交给系统浏览器；解析不了会明确提示。
<strong>Links in README / Markdown did nothing</strong>: relative targets are now resolved against the repository base before opening, and unresolvable ones are reported instead of failing silently.</li>
  <li><strong>README 图片不显示</strong>：改为经 <strong>GitHub Contents API</strong> 取字节后用 <code class="language-plaintext highlighter-rouge">Image.memory</code> 渲染，不经过 <code class="language-plaintext highlighter-rouge">raw.githubusercontent.com</code>，避开 DNS 污染；<code class="language-plaintext highlighter-rouge">&lt;img src=…&gt;</code> 也会渲染；单次上限 40 张，失败退化为 alt 文本。
<strong>README images never showed</strong>: they are now fetched through the <strong>GitHub Contents API</strong> and rendered with <code class="language-plaintext highlighter-rouge">Image.memory</code>, avoiding <code class="language-plaintext highlighter-rouge">raw.githubusercontent.com</code> DNS pollution; <code class="language-plaintext highlighter-rouge">&lt;img src=…&gt;</code> is rendered too, capped at 40 images per view with an alt-text fallback.</li>
  <li>Windows 缓存崩溃：缓存 blob 文件名原样拼接编码键，其中 <code class="language-plaintext highlighter-rouge">|</code> 是 Windows 非法文件名字符；改为 <code class="language-plaintext highlighter-rouge">sha256(编码键)</code>。
Windows cache crash: blob names embedded the raw encoded key and <code class="language-plaintext highlighter-rouge">|</code> is illegal on Windows; now <code class="language-plaintext highlighter-rouge">sha256(key)</code>.</li>
  <li>设置页退出登录入口重复（危险区已在用户页）。
Duplicate sign-out entry in Settings.</li>
</ul>

<h2 id="变更--changed">变更 / Changed</h2>
<ul>
  <li>设置页重新分层：根级一律取消折叠、严格排序；分类下拉移入二级且默认收起。
Settings re-layered: no collapsing at the root and a strict order; category dropdowns moved down a level and collapsed by default.</li>
  <li>赞助入口并入「关于」页。
The sponsor entry moved into About.</li>
</ul>

<h2 id="已知限制--known-limitations">已知限制 / Known limitations</h2>
<ul>
  <li><strong>glibc ≥ 2.35</strong>（对应 Ubuntu 22.04 一代及以上；Linux 产物在 <code class="language-plaintext highlighter-rouge">ubuntu-22.04</code> / <code class="language-plaintext highlighter-rouge">ubuntu-24.04-arm</code> 宿主上直接构建以锁定该下限）。
    <blockquote>
      <p><strong>glibc &gt;= 2.35</strong> (Ubuntu 22.04 era and newer; Linux artifacts are built directly on <code class="language-plaintext highlighter-rouge">ubuntu-22.04</code> / <code class="language-plaintext highlighter-rouge">ubuntu-24.04-arm</code> hosts to pin that floor).</p>
    </blockquote>
  </li>
  <li>Windows 建议开启长路径支持（非必须，超限有收纳回退）；桌面 32 位、musl、Windows 7 / 8.1 均不支持。
Windows: enabling long-path support is recommended (not required). Desktop 32-bit, musl and Windows 7 / 8.1 are unsupported.</li>
</ul>

<h2 id="产物--artifacts">产物 / Artifacts</h2>
<ul>
  <li>Android：<code class="language-plaintext highlighter-rouge">arm64-v8a</code>、<code class="language-plaintext highlighter-rouge">armeabi-v7a</code>、<code class="language-plaintext highlighter-rouge">x86_64</code>、<code class="language-plaintext highlighter-rouge">universal</code> APK、AAB</li>
  <li>Windows：<code class="language-plaintext highlighter-rouge">x64</code>、<code class="language-plaintext highlighter-rouge">arm64</code></li>
  <li>Linux：<code class="language-plaintext highlighter-rouge">x64</code>、<code class="language-plaintext highlighter-rouge">arm64</code>（deb / rpm / AppImage 裸放）</li>
</ul>

<blockquote>
  <p>压缩包统一命名为 <code class="language-plaintext highlighter-rouge">OGL-v6.0.0-&lt;平台&gt;.&lt;架构&gt;.zip</code> / <code class="language-plaintext highlighter-rouge">.7z</code>，zip 与 7z 双份、极限压缩。
完整逐版本日志：https://yingo-server.github.io/OhGithubLost/</p>
</blockquote>

<hr />

<h2 id="下载--download">下载 / Download</h2>

<p>本版本共 20 个构件产物。</p>

<p><strong>Android</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.0.0/OGL-v6.0.0-Android.AAB.7z">OGL-v6.0.0-Android.AAB.7z</a></td>
      <td style="text-align: right">59 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.0.0/OGL-v6.0.0-Android.AAB.zip">OGL-v6.0.0-Android.AAB.zip</a></td>
      <td style="text-align: right">61 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.0.0/OGL-v6.0.0-Android.arm64-v8a.7z">OGL-v6.0.0-Android.arm64-v8a.7z</a></td>
      <td style="text-align: right">8.1 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.0.0/OGL-v6.0.0-Android.arm64-v8a.zip">OGL-v6.0.0-Android.arm64-v8a.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.0.0/OGL-v6.0.0-Android.armeabi-v7a.7z">OGL-v6.0.0-Android.armeabi-v7a.7z</a></td>
      <td style="text-align: right">8.1 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.0.0/OGL-v6.0.0-Android.armeabi-v7a.zip">OGL-v6.0.0-Android.armeabi-v7a.zip</a></td>
      <td style="text-align: right">10 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.0.0/OGL-v6.0.0-Android.universal-APK.7z">OGL-v6.0.0-Android.universal-APK.7z</a></td>
      <td style="text-align: right">19 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.0.0/OGL-v6.0.0-Android.universal-APK.zip">OGL-v6.0.0-Android.universal-APK.zip</a></td>
      <td style="text-align: right">29 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.0.0/OGL-v6.0.0-Android.x86_64.7z">OGL-v6.0.0-Android.x86_64.7z</a></td>
      <td style="text-align: right">8.5 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.0.0/OGL-v6.0.0-Android.x86_64.zip">OGL-v6.0.0-Android.x86_64.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>Windows</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.0.0/OGL-v6.0.0-Windows.arm64.7z">OGL-v6.0.0-Windows.arm64.7z</a></td>
      <td style="text-align: right">8.3 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.0.0/OGL-v6.0.0-Windows.arm64.zip">OGL-v6.0.0-Windows.arm64.zip</a></td>
      <td style="text-align: right">13 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.0.0/OGL-v6.0.0-Windows.x64.7z">OGL-v6.0.0-Windows.x64.7z</a></td>
      <td style="text-align: right">9.4 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.0.0/OGL-v6.0.0-Windows.x64.zip">OGL-v6.0.0-Windows.x64.zip</a></td>
      <td style="text-align: right">14 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>Linux</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.0.0/OGL-v6.0.0-Linux.arm64.7z">OGL-v6.0.0-Linux.arm64.7z</a></td>
      <td style="text-align: right">7.3 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.0.0/OGL-v6.0.0-Linux.arm64.zip">OGL-v6.0.0-Linux.arm64.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.0.0/OGL-v6.0.0-Linux.x64.7z">OGL-v6.0.0-Linux.x64.7z</a></td>
      <td style="text-align: right">8.0 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v6.0.0/OGL-v6.0.0-Linux.x64.zip">OGL-v6.0.0-Linux.x64.zip</a></td>
      <td style="text-align: right">12 MB</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p>完整列表与校验信息见 <a href="https://github.com/yingo-server/OhGithubLost/releases/tag/v6.0.0">Releases v6.0.0</a>。</p>
</blockquote>]]></content><author><name>OGL</name></author><category term="release" /><summary type="html"><![CDATA[跨平台差异面硬化 + 桌面自研窗口 + 设置页层级整改 + 仓库浏览修复。 Cross-platform hardening, a self-drawn desktop window, a re-layered settings page, and repo-browsing fixes.]]></summary></entry><entry><title type="html">OhGithubLost 6.0.1 · 正式版 / Stable</title><link href="/release/2026/10/05/v6.0.1.html" rel="alternate" type="text/html" title="OhGithubLost 6.0.1 · 正式版 / Stable" /><published>2026-10-05T00:00:00+00:00</published><updated>2026-10-05T00:00:00+00:00</updated><id>/release/2026/10/05/v6.0.1</id><content type="html" xml:base="/release/2026/10/05/v6.0.1.html"><![CDATA[<p>内置加速通道换新代理 + 架构决策：Web 端独立成支。
New acceleration proxy for the built-in channel, plus an architecture decision: Web moves to its own branch.</p>

<h2 id="架构决策--architecture">架构决策 / Architecture</h2>
<ul>
  <li><strong>Web 端独立</strong>：独立分支 <code class="language-plaintext highlighter-rouge">web</code> + 独立 <code class="language-plaintext highlighter-rouge">lib/</code> + 独立 workflows。
    <ul>
      <li><strong>不共用代码</strong>：web 端不复用 main 的 <code class="language-plaintext highlighter-rouge">lib/</code>；</li>
      <li><strong>不共用 actions</strong>：web 端不跑 <code class="language-plaintext highlighter-rouge">build.yml</code> / <code class="language-plaintext highlighter-rouge">ci.yml</code>；</li>
      <li><strong>允许反复失败</strong>：web 失败<strong>不影响</strong> main 的五平台构建与发布。
        <blockquote>
          <p>Web lives on its own branch with its own <code class="language-plaintext highlighter-rouge">lib/</code> and its own workflows — no shared
code, no shared actions, and it may fail as often as it needs without ever
affecting the five-platform release.</p>
        </blockquote>
      </li>
    </ul>
  </li>
  <li><strong>平台能力下沉为原生实现</strong>（下一阶段）：原先由 action 里的 <code class="language-plaintext highlighter-rouge">inject_*.py</code>
改平台工程的做法，改为<strong>原生 Dart 实现</strong>，action 退化为<strong>可选编译</strong>开关。
Platform capabilities move from action-time injection to native Dart implementations;
actions degrade to opt-in compile switches.</li>
</ul>

<h2 id="变更--changed">变更 / Changed</h2>
<ul>
  <li><strong>内置加速通道改走 <code class="language-plaintext highlighter-rouge">gh.felicity.ac.cn</code> 转发完整 GitHub 链接</strong>：优先前缀由
<code class="language-plaintext highlighter-rouge">https://gh.344977.xyz/</code> 改为 <code class="language-plaintext highlighter-rouge">https://gh.felicity.ac.cn/https://github.com/</code>；
<code class="language-plaintext highlighter-rouge">https://gh.felicity.ac.cn/</code> 保留为降级备选，仍按序探测并静默降级，
最后永远保留直连兜底。
The built-in channel now forwards the full GitHub link through
<code class="language-plaintext highlighter-rouge">gh.felicity.ac.cn</code>; the bare host stays as a silent-fallback option.</li>
  <li>更新日志站（<code class="language-plaintext highlighter-rouge">changed/</code>）全部 Release 下载链接改为同一形式。
All changelog-site download links now use the same form.</li>
</ul>

<h2 id="移除--removed">移除 / Removed</h2>
<ul>
  <li><strong>实验性 Web（wasm）构建管线从 main 移除</strong>：Web 改由独立分支承接。
The experimental Web (wasm) pipeline is removed from main; Web moves to its own branch.</li>
</ul>]]></content><author><name>OGL</name></author><category term="release" /><summary type="html"><![CDATA[内置加速通道换新代理 + 架构决策：Web 端独立成支。 New acceleration proxy for the built-in channel, plus an architecture decision: Web moves to its own branch.]]></summary></entry><entry><title type="html">OhGithubLost 4.9.0 · 预发布版 / Pre-release</title><link href="/release/2026/10/04/v4.9.0-beta.html" rel="alternate" type="text/html" title="OhGithubLost 4.9.0 · 预发布版 / Pre-release" /><published>2026-10-04T00:00:00+00:00</published><updated>2026-10-04T00:00:00+00:00</updated><id>/release/2026/10/04/v4.9.0-beta</id><content type="html" xml:base="/release/2026/10/04/v4.9.0-beta.html"><![CDATA[<p><strong>主题 · Theme</strong> — 结构与多语言工程（<strong>不含新功能</strong>）：四层依赖收口 + 15 种界面语言落地。
<em>Architecture and localisation only — no new features: four-layer dependency clean-up plus 15 UI languages.</em></p>

<h3 id="新增--added">新增 · Added</h3>

<ul>
  <li>
    <p><strong>交互层类型门面 · Surface type facade</strong>
新增 <code class="language-plaintext highlighter-rouge">lib/surface/types.dart</code>：UI 只能看到 DTO / 枚举 / 异常，服务类（<code class="language-plaintext highlighter-rouge">GhClient</code> / <code class="language-plaintext highlighter-rouge">GhAuthService</code> / <code class="language-plaintext highlighter-rouge">IxDownloadManager</code> / <code class="language-plaintext highlighter-rouge">IxSession</code> / <code class="language-plaintext highlighter-rouge">IxNotificationCenter</code>）被 <code class="language-plaintext highlighter-rouge">hide</code>，一律经 <code class="language-plaintext highlighter-rouge">SurfaceBridge</code> 取用；15 个页面 / 组件改为只 import 门面。<br />
Added <code class="language-plaintext highlighter-rouge">lib/surface/types.dart</code>: the UI sees only DTOs, enums and exceptions, while service classes are hidden behind a facade and reached exclusively through <code class="language-plaintext highlighter-rouge">SurfaceBridge</code>. Fifteen pages/components now import only the facade.</p>
  </li>
  <li>
    <p><strong>下载能力上桥 · Download capabilities on the bridge</strong>
<code class="language-plaintext highlighter-rouge">SurfaceBridge</code> 提供 <code class="language-plaintext highlighter-rouge">downloadTasks</code> / <code class="language-plaintext highlighter-rouge">downloadsListenable</code> / <code class="language-plaintext highlighter-rouge">pause|resume|retry|cancel|removeDownload</code> / <code class="language-plaintext highlighter-rouge">clearFinishedDownloads</code>，下载页不再接触管理器实现。<br />
<code class="language-plaintext highlighter-rouge">SurfaceBridge</code> now exposes task listing, a listenable, pause/resume/retry/cancel/remove and “clear finished”, so the download page never touches the manager implementation.</p>
  </li>
  <li>
    <p><strong>15 种界面语言 · 15 UI languages</strong>
zh / zh_TW / en / ja / ko / fr / de / es / pt / ru / ar / hi / th / vi / id：<strong>27 个页面 / 848 条中文文案</strong>由人工按语境撰写（GitHub / Release / Actions / PR / Token / Pages 等术语<strong>不译</strong>），其余 14 种语言 AI 按语种合并生成，校验 <strong>15 × 27 / 13065 键，0 问题</strong>。<strong>首次启动跟随系统语言</strong>（繁体系统 → <code class="language-plaintext highlighter-rouge">zh_TW</code>），设置页即时切换、选择落盘。<br />
Chinese copy for 27 pages (848 strings) was authored by hand with terminology deliberately left untranslated; the other 14 locales were generated per-language in a single merged request each and validated with zero issues (15 × 27 pages / 13,065 keys). First launch follows the system language (traditional Chinese systems get <code class="language-plaintext highlighter-rouge">zh_TW</code>); switching in Settings applies instantly and persists.</p>
  </li>
  <li>
    <p><strong>可执行门禁 · Executable quality gates</strong>
<code class="language-plaintext highlighter-rouge">tool/layer_audit.py --fatal</code>（依赖只能 <code class="language-plaintext highlighter-rouge">surface → domain → base → kernel</code>）与 <code class="language-plaintext highlighter-rouge">tool/i18n_scan.py --check</code>（界面文案 0 遗漏 / 分片键集合与 zh 一致）已接入 CI；新增维护手册 <code class="language-plaintext highlighter-rouge">docs/I18N.md</code>。<br />
Added to CI: a layer audit (dependencies may only point downwards) and an i18n audit (no unlocalised UI copy; shard key sets identical to the source locale). A maintenance handbook ships as <code class="language-plaintext highlighter-rouge">docs/I18N.md</code>.</p>
  </li>
</ul>

<h3 id="变更--changed">变更 · Changed</h3>

<ul>
  <li>共享抽象上提到 <code class="language-plaintext highlighter-rouge">kernel/contract/</code>（<code class="language-plaintext highlighter-rouge">disk_store</code> / <code class="language-plaintext highlighter-rouge">disk_types</code> / <code class="language-plaintext highlighter-rouge">net_types</code>，原路径保留转发导出），逻辑层改依赖契约；待收敛项由 11 处降至 <strong>2 处</strong>（仅剩两个实现类）。<br />
Shared abstractions moved into <code class="language-plaintext highlighter-rouge">kernel/contract/</code> with forwarding exports kept at the old paths, and the domain layer now depends on the contracts; outstanding convergence items dropped from 11 to 2 (two implementation classes remain).</li>
  <li>交互层界面文案 <strong>0 处未本地化</strong>；剩余约 405 处中文均为开发者日志 / 诊断（按设计保留）。<br />
There is now zero unlocalised UI copy; the ~405 remaining Chinese strings are developer logs and diagnostics, kept in Chinese by design.</li>
</ul>

<h3 id="已知限制--known-limitations">已知限制 · Known limitations</h3>

<ul>
  <li><strong>本版本为预发布（pre-release）</strong>，仅结构与多语言改动，请以稳定版为准。<br />
This is a pre-release containing architecture and localisation changes only; prefer a stable build for daily use.</li>
  <li>翻译由 AI 产出并经过格式与占位符校验，但<strong>未逐条人工校对</strong>；如发现措辞问题请反馈。<br />
Translations are AI-produced and validated for structure and placeholders, but not line-by-line human-reviewed; please report wording issues.</li>
  <li>个别上下文相关文案（如通知正文）可能与实际场景存在细微语感差异。<br />
A few context-sensitive strings (e.g. notification bodies) may read slightly off in specific scenarios.</li>
  <li>5.0 待办：下载多线程与进度/速度动画、页面过渡卡顿、Actions 长日志加载、通知中心图标与展开动画、安卓返回键统一处理。<br />
Planned for 5.0: multi-threaded downloads with progress/speed animation, page-transition jank, long Actions logs, notification-centre icons &amp; expand animation, unified Android back-key handling.</li>
</ul>

<h3 id="产物--artifacts">产物 · Artifacts</h3>

<p>Android（<code class="language-plaintext highlighter-rouge">arm64-v8a</code> / <code class="language-plaintext highlighter-rouge">armeabi-v7a</code> / <code class="language-plaintext highlighter-rouge">x86_64</code> / <code class="language-plaintext highlighter-rouge">universal</code> APK / AAB）、Windows、Linux、macOS、iOS，以及引导清单 <code class="language-plaintext highlighter-rouge">boot-manifest.zip</code> —— 共 <strong>19</strong> 个文件；APK 文件名与版本名一致（<code class="language-plaintext highlighter-rouge">OGL-v4.9.0-app-*</code>）。<br />
Android (arm64-v8a / armeabi-v7a / x86_64 / universal APK / AAB), Windows, Linux, macOS, iOS plus the signed boot manifest — 19 files in total; APK names match the version (<code class="language-plaintext highlighter-rouge">OGL-v4.9.0-app-*</code>).</p>

<hr />

<h2 id="下载--download">下载 / Download</h2>

<p>本版本共 19 个构件产物。</p>

<p><strong>Android</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v4.9.0-beta/Android.AAB.zip">Android.AAB.zip</a></td>
      <td style="text-align: right">60 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v4.9.0-beta/Android.arm64-v8a.zip">Android.arm64-v8a.zip</a></td>
      <td style="text-align: right">10 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v4.9.0-beta/Android.armeabi-v7a.zip">Android.armeabi-v7a.zip</a></td>
      <td style="text-align: right">10 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v4.9.0-beta/Android.universal-APK.zip">Android.universal-APK.zip</a></td>
      <td style="text-align: right">28 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v4.9.0-beta/Android.x86_64.zip">Android.x86_64.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>Windows</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v4.9.0-beta/Windows.arm64-best-effort.zip">Windows.arm64-best-effort.zip</a></td>
      <td style="text-align: right">13 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v4.9.0-beta/Windows.x64.zip">Windows.x64.zip</a></td>
      <td style="text-align: right">14 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>Linux</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v4.9.0-beta/Linux.arm64-best-effort.zip">Linux.arm64-best-effort.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v4.9.0-beta/Linux.x64.zip">Linux.x64.zip</a></td>
      <td style="text-align: right">12 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>macOS</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v4.9.0-beta/macOS.arm64.zip">macOS.arm64.zip</a></td>
      <td style="text-align: right">64 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v4.9.0-beta/macOS.x64.zip">macOS.x64.zip</a></td>
      <td style="text-align: right">64 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>iOS</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v4.9.0-beta/iOS.device-arm64.zip">iOS.device-arm64.zip</a></td>
      <td style="text-align: right">9.7 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v4.9.0-beta/iOS.simulator.zip">iOS.simulator.zip</a></td>
      <td style="text-align: right">58 MB</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p>完整列表与校验信息见 <a href="https://github.com/yingo-server/OhGithubLost/releases/tag/v4.9.0-beta">Releases v4.9.0-beta</a>。</p>
</blockquote>]]></content><author><name>OGL</name></author><category term="release" /><summary type="html"><![CDATA[主题 · Theme — 结构与多语言工程（不含新功能）：四层依赖收口 + 15 种界面语言落地。 Architecture and localisation only — no new features: four-layer dependency clean-up plus 15 UI languages.]]></summary></entry><entry><title type="html">OhGithubLost 5.0.0 · 预发布版 / Pre-release</title><link href="/release/2026/10/04/v5.0.0-beta.html" rel="alternate" type="text/html" title="OhGithubLost 5.0.0 · 预发布版 / Pre-release" /><published>2026-10-04T00:00:00+00:00</published><updated>2026-10-04T00:00:00+00:00</updated><id>/release/2026/10/04/v5.0.0-beta</id><content type="html" xml:base="/release/2026/10/04/v5.0.0-beta.html"><![CDATA[<blockquote>
  <p><strong>已被取代 · Superseded</strong>：本 beta 的产物构建于内核一致性硬化之前；
请直接使用 <strong>v5.1.0（正式版）</strong> ——它包含本版全部内容 + <code class="language-plaintext highlighter-rouge">OGL-BOOT-108</code> 交叉校验。
<em>These artifacts predate the kernel hardening; use v5.1.0 instead.</em></p>
</blockquote>

<p><strong>主题 · Theme</strong> — 交互与体验打磨（不加新功能面）：多连接下载、过渡卡顿修复、长日志虚拟化、通知中心去符号、返回键统一。
<em>Interaction and feel: multi-connection downloads, transition jank fix, virtualised long logs, emoji-free notification centre, unified back key.</em></p>

<h3 id="新增--added">新增 · Added</h3>

<ul>
  <li><strong>多连接分片下载 · Multi-connection chunked download</strong>
用 <code class="language-plaintext highlighter-rouge">Range</code> 请求把文件切成至多 N 片<strong>并发拉取</strong>，最后顺序合并；每片写独立临时文件（规避”共用文件句柄错位写坏”），任一分片失败即删除全部分片——<strong>不交付不完整的文件</strong>。服务端不支持 <code class="language-plaintext highlighter-rouge">Range</code> 时<strong>自动回退</strong>单连接（同 taskId，页面无感知）。<br />
Chunked downloads fetch up to N ranges <strong>in parallel</strong> and merge sequentially. Each part has its own temp file (avoiding the old shared-handle corruption), and any failing part deletes every part — never a half-written file. Servers without <code class="language-plaintext highlighter-rouge">Range</code> support fall back to a single connection transparently.</li>
  <li><strong>「下载并发连接数」设置 · Download connections setting</strong>
设置 → 网络：1 / 2 / 4 / 8（默认 4）；非法值回落默认。<br />
Settings → Network: 1 / 2 / 4 / 8, default 4; invalid values fall back to the default.</li>
  <li><strong>权限自检（每次启动）· Permission self-check on every launch</strong>
每次启动实测存储（真实写入探针）与通知权限；缺失时以 <strong>warn + 事件码</strong>（<code class="language-plaintext highlighter-rouge">OGL-PERM-001</code> / <code class="language-plaintext highlighter-rouge">002</code> / <code class="language-plaintext highlighter-rouge">000</code>）进通知中心；「关于 → 启动诊断」新增权限自检折叠组。<br />
Every launch re-tests storage (real write probe) and notification permissions. Missing ones are reported as <strong>warnings with event codes</strong> through the notification centre; About → boot diagnostics gains a permission self-check section.</li>
  <li><strong>内核「清单 ↔ 运行期模块」交叉校验 · Manifest coverage cross-check</strong>
清单声明了某模块、装配时却没提供它 → 记为 <code class="language-plaintext highlighter-rouge">OGL-BOOT-108</code>（此前会静默放过）。<br />
If the manifest declares a module that is never assembled, it is now recorded as <code class="language-plaintext highlighter-rouge">OGL-BOOT-108</code> (previously silent).</li>
</ul>

<h3 id="变更--changed">变更 · Changed</h3>

<ul>
  <li><strong>页面过渡改为单层淡入 + 轻位移 · Page transitions rebuilt</strong>
去掉整页缩放（<code class="language-plaintext highlighter-rouge">ZoomPageTransitionsBuilder</code> 要求整页反复重新光栅化，正是”只有页面过渡卡”的根因），并强制 <code class="language-plaintext highlighter-rouge">RepaintBoundary</code>：过渡期间只重合成、不重绘页面内容。<br />
Dropped whole-page scaling (the root cause of transition-only jank) in favour of a single fade + slight offset, wrapped in <code class="language-plaintext highlighter-rouge">RepaintBoundary</code> so transitions only re-composite instead of repainting.</li>
  <li><strong>Actions 长日志分块虚拟化 · Virtualised long logs</strong>
按行分块（120 行/块）交给 <code class="language-plaintext highlighter-rouge">ListView.builder</code> 按需渲染，并显示「共 N 行」。<br />
Logs are chunked by line (120 per chunk) and rendered on demand, with a total-line count shown.</li>
  <li><strong>通知中心去掉 emoji 风格符号 · Emoji-style glyphs removed</strong>
<code class="language-plaintext highlighter-rouge">✔ / ▶ / ✗ / ★</code> 等不再出现在用户可见文案里（改由图标与 <code class="language-plaintext highlighter-rouge">level</code> 承载），详情展开带动画。<br />
Symbols like ✔ / ▶ / ✗ / ★ no longer appear in user-visible copy (icons and log levels take over), and detail expansion is animated.</li>
  <li><strong>安卓返回键统一 · Unified back key</strong>
二级页 / 弹窗 → 抽屉 → 回首页 tab → 首页第一次提示「再按一次退出」、窗口内第二次才退出；<strong>一次误按不会退出应用</strong>。<br />
Nested routes/dialogs → drawer → home tab → on home, first press asks for confirmation and only a second press within the window exits.</li>
</ul>

<h3 id="修复--fixed">修复 · Fixed</h3>

<ul>
  <li>修掉「页面过渡卡顿」根因（见上）。</li>
  <li>修掉<code class="language-plaintext highlighter-rouge">IxDownloadManager</code> 在分片任务下的暂停 / 取消 / 重试语义（走取消令牌；不产生错位文件）。</li>
  <li>修掉通知/日志正文里的符号字形（Android 上会被当 emoji 渲染，即用户报告的”emoji 撕裂”）。</li>
</ul>

<h3 id="已知限制--known-limitations">已知限制 · Known limitations</h3>

<ul>
  <li><strong>本版本为 beta 预发布</strong>：请以正式版为准。<br />
This is a beta pre-release; prefer a stable build for daily use.</li>
  <li>分片下载的<strong>暂停 = 重新开始</strong>（不声称续传）；单连接库任务的断点续传不受影响。<br />
Pausing a chunked download restarts it rather than resuming; single-connection library tasks keep true resume.</li>
  <li>桌面端仍使用库下载（分片引擎按 <code class="language-plaintext highlighter-rouge">Range</code> 能力自动判定，不支持则回退）。<br />
Desktop keeps using the library downloader; the chunk engine falls back whenever the server lacks <code class="language-plaintext highlighter-rouge">Range</code>.</li>
</ul>

<h3 id="产物--artifacts">产物 · Artifacts</h3>

<p>Android（<code class="language-plaintext highlighter-rouge">arm64-v8a</code> / <code class="language-plaintext highlighter-rouge">armeabi-v7a</code> / <code class="language-plaintext highlighter-rouge">x86_64</code> / <code class="language-plaintext highlighter-rouge">universal</code> APK / AAB）、Windows、Linux、macOS、iOS，以及引导清单 <code class="language-plaintext highlighter-rouge">boot-manifest.zip</code> —— 共 <strong>19</strong> 个文件。
Android (arm64-v8a / armeabi-v7a / x86_64 / universal APK / AAB), Windows, Linux, macOS, iOS plus the signed boot manifest — 19 files in total.</p>

<hr />

<h2 id="下载--download">下载 / Download</h2>

<p>本版本共 19 个构件产物。</p>

<p><strong>Android</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v5.0.0-beta/Android.AAB.zip">Android.AAB.zip</a></td>
      <td style="text-align: right">61 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v5.0.0-beta/Android.arm64-v8a.zip">Android.arm64-v8a.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v5.0.0-beta/Android.armeabi-v7a.zip">Android.armeabi-v7a.zip</a></td>
      <td style="text-align: right">10 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v5.0.0-beta/Android.universal-APK.zip">Android.universal-APK.zip</a></td>
      <td style="text-align: right">29 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v5.0.0-beta/Android.x86_64.zip">Android.x86_64.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>Windows</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v5.0.0-beta/Windows.arm64-best-effort.zip">Windows.arm64-best-effort.zip</a></td>
      <td style="text-align: right">13 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v5.0.0-beta/Windows.x64.zip">Windows.x64.zip</a></td>
      <td style="text-align: right">14 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>Linux</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v5.0.0-beta/Linux.arm64-best-effort.zip">Linux.arm64-best-effort.zip</a></td>
      <td style="text-align: right">11 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v5.0.0-beta/Linux.x64.zip">Linux.x64.zip</a></td>
      <td style="text-align: right">12 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>macOS</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v5.0.0-beta/macOS.arm64.zip">macOS.arm64.zip</a></td>
      <td style="text-align: right">65 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v5.0.0-beta/macOS.x64.zip">macOS.x64.zip</a></td>
      <td style="text-align: right">65 MB</td>
    </tr>
  </tbody>
</table>

<p><strong>iOS</strong></p>

<table>
  <thead>
    <tr>
      <th>文件</th>
      <th style="text-align: right">大小</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v5.0.0-beta/iOS.device-arm64.zip">iOS.device-arm64.zip</a></td>
      <td style="text-align: right">9.8 MB</td>
    </tr>
    <tr>
      <td><a href="https://github.com/yingo-server/OhGithubLost/releases/download/v5.0.0-beta/iOS.simulator.zip">iOS.simulator.zip</a></td>
      <td style="text-align: right">58 MB</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p>完整列表与校验信息见 <a href="https://github.com/yingo-server/OhGithubLost/releases/tag/v5.0.0-beta">Releases v5.0.0-beta</a>。</p>
</blockquote>]]></content><author><name>OGL</name></author><category term="release" /><summary type="html"><![CDATA[已被取代 · Superseded：本 beta 的产物构建于内核一致性硬化之前； 请直接使用 v5.1.0（正式版） ——它包含本版全部内容 + OGL-BOOT-108 交叉校验。 These artifacts predate the kernel hardening; use v5.1.0 instead.]]></summary></entry></feed>