Repository navigation
v6.5.0
OhGithubLost v6.5.0
修复一轮全量代码审查发现的问题。审查由 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.
变更 / Changed(原 v6.4.3,未单独发布,并入本版)
- 删除内置加速通道与内置网络镜像:通道列表不再包含任何内置项,代码里也不再
预置第三方代理地址(原proxy.344977.xyz、ghproxy.net规则)。要加速需自行
添加通道地址;不添加则始终直连。 - 删除降级回退:加速判定现在至多返回一项 —— 加速就是
前缀 + 原址,不加速
就是原址,不再追加直连候选。所依据的判断是:静默降级会让「是否经过通道」无法
从结果判断。 - 加速适用范围可逐项开关(设置 → 网络 → 加速),共 4 类:Release 附件、
Action 构建产物、仓库文件(下载与预览)、README 仓库内图片。默认全开,可逐项
关闭。Action 运行日志不在此列 —— 它不经由加速判定。 - 加速协议升版 v3 → v4,需重新同意:正文删去「本应用提供 / 维护通道」的表述,
写明「不预置任何通道、不提供代理服务」,并说明失败时不会静默回落到直连。
修复 / Fixed(用户可感知)
- README 仓库内图片在私有仓库返回 404:
Image.network没有 headers 参数,
无法携带令牌,而私有 raw 匿名访问返回 404。此前「私有 + 已知情接受」会走到
该分支;现在私有仓库一律回退到 API 取字节(该路径带令牌)。 - 仓库内图片跨仓库串图:字节缓存只以仓库内相对路径为键,
assets/logo.png
这类同名文件在两个仓库间会命中同一份缓存。键改为仓库@分支:路径。 - 分页列表在缓存窗口内只显示第一页:缓存命中时只回填响应体、
headers为空,
而翻页依赖Link头。现在缓存条目连同link一起存储并在命中时回填。 - 同一文件第二次下载不再导出到 SAF:导出去重表只在失败路径移除 id,
成功导出后 id 常驻;taskId 由 url + 文件名派生,重复下载会命中同一条目。 - 自定义 DNS / DoH 开关对真实请求不生效:
connectionFactory只在传输层
构造时安装一次,而 DNS 模式的写入发生在模块注册之后。现在每次发送前按当前
策略校正(模式变化才重装,切回系统 DNS 时把 factory 摘掉)。 - 登录页切换账号不清缓存:只清仓库缓存会留下 DNS 缓存与页面分页快照,
多账号下是「用 B 账号看到 A 账号内容」的来源。现与「我的」页一致,清全部缓存。 - 版本常量
kOgLAppVersion停在6.0.0,与pubspec.yaml相差三个小版本;
该常量会写入日志与内核报告。已对齐。
修复 / Fixed(下载器与网络)
- 分片任务在探测期间被移除后会重新出现在列表:
_runRanged在await probe
之后无条件写回快照。现在探测返回后先确认任务仍在,否则直接退出。 - 任务表清理不完整:
remove()与clearFinished()漏清_urlCandidates、
_rangeConnections、_lastSample、_expectedSha256、_exportedToSaf。 dispose()不取消进行中的分片下载:分片任务不等待返回,管理器回收后引擎
仍在下载并调用已释放的通知器。现取消全部令牌并加_disposed守卫。ix_presign在 200 直链分支先读取响应体再注释说明「不能读」:每个直链下载
都会多传输一遍完整内容。已移除。isForbiddenHost存在绕过形式:原先只识别点分十进制与fe80:前缀。
现在先做归一化(整数形式的 IPv4、IPv4-mapped IPv6、方括号与尾点),IPv6 段
按位判断(fc00::/7、fe80::/10),并支持127.1这类缩写。- 分片合并失败会留下不完整的文件:
finally只删分片,不删目标文件。 abs()未拒绝绝对路径与空串(注释称会拒绝):/etc/passwd会被静默剥掉
前导斜杠并塞进根目录。现显式拒绝。
修复 / Fixed(界面文案)
- 19 个界面文案取自错误的语言分片,显示为裸键名:设置页 13 处、仓库页 2 处、
关于页 4 处。取法已改到键实际所在的分片。 previewSvg/previewUnknown两个键在 6 种语言里都不存在(「打开方式」
弹窗的 SVG 与未知类型条目显示裸键)。已补齐。- 三处硬编码中文改为 i18n:Gist 详情页的「公开 / N 个文件」、议题列表的
「N 条评论」、评论作者缺失时的「未知用户」(复用已有的common.unknown)。
变更 / Changed
i18n_scan.py的分类规则收紧:LOG_CONTEXT原含log\w*(,该模式会命中
AlertDialog(、showDialog(、catalog(与login(,使对话框附近的用户可见
文案被计为开发者日志。现改为只列精确的日志入口。docs/NETWORK.md更正与代码不符的表述,补入「加速适用范围」与 web 端 CORS
实测表;docs/README.md补入索引,路径改为可点击链接。- 多处注释更正为与实现一致(平台分派范围、私有仓库口径、模块描述、
IxChannel.auto语义、日志文件名格式、诊断中的并发数文案)。 - 删除无引用的
IoBootFileSystem;对仅测试使用的ScriptedTransport与
无调用方的DiskPaths加注说明。
已知限制 / Known limitations
docs/ARCHITECTURE.md、BOOT.md、CONSISTENCY.md、DURABILITY.md、
NAMING.md被代码注释引用,但仓库中并不存在;这些引用尚未清理。- Action 运行日志不走加速(直接请求
api.github.com),加速适用范围没有它。 - web 端:私有仓库的 raw 与「私有 + 加速」均不可用 —— 浏览器预检会拦截
Authorization,而 Release 附件的签名地址不带 CORS 头。 - Linux 裸放安装包 3 / 6:rpm(arm64)缺少平台定义;AppImage 的
ARCH
环境变量未被接受。三种包在 zip / 7z 里都齐全。 - macOS / iOS 自 v5.6.0 起弃用。
产物 / Artifacts
Android arm64-v8a / armeabi-v7a / x86_64 / universal-APK / AAB、
Windows x64 / arm64、Linux x64 / arm64,每份均含 zip 与 7z。