Skip to content

Releases: OGL-Teams/OhGithubLost

v8.2.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 00:09

v8.2.0(2026-10-13 · 正式版)

主题:AI 助手接入 · 主页导航重构 · 设置页两级层级 · 下载中心直达与 32 线程。


新增 · Added

AI 助手

  • 聊天:会话历史、多轮对话、真实 SSE 流式(原生端增量、Web 端缓冲解析);
    回复以纯文本渲染(不使用 markdown)。
  • 三协议适配:OpenAI 兼容 / Claude Messages / Gemini GenerateContent,含工具调用。
  • 工具集(只读):list_files / read_file,复用 GhApi。
  • 设置:服务商 / 协议 / 模型 / 端点 / 密钥(密钥只进 DiskVault,端点为纯 HTTPS)。
  • AI 操作永久落盘:每次工具执行写一条审计(DiskKv,每账号 200 条上限)。
  • 日志 / 通知接入:每次收发写 OgLAppLog(自动进入通知中心)。

主页导航(bar 重构)

  • 底栏 / 导航轨由「首页 · 搜索 · 我的 · 设置」改为「仓库 · 搜索 · AI · 个人」。
  • 「设置」移入「个人」页内(外观 / 网络 / AI / 关于)。

设置页两级层级

  • 第一层进入式:设置主页为分类入口(外观 / 代码与文件 / 存储与网络 / AI / 关于 / 日志),点开进入分区页。
  • 第二层折叠式:分区页内为可折叠分组(折叠状态共享、退出记忆)。

下载中心直达

  • 下载入队后弹 SnackBar,带「查看下载」动作直达下载中心(此前只有一句提示,看不到进度)。

变更 · Changed

  • 下载并发档位:1 / 2 / 4 / 8 → 增加 16 / 32(分片数仍受文件大小约束,小文件自动回退单连接)。
  • 通知中心标题显示未读计数(通知 (N))。

修复 · Fixed

  • AI 聊天「重试」按钮失效(此前重试读到已清空的输入框,直接返回)。
  • AI 设置「获取模型列表」使用已持久化配置而非当前表单值。
  • AI 空回复不再误显示「正在处理…」。
  • AiConversation.id final 字段被赋值(编译错误)。

平台

  • 原生端:AI 传输走 dart:io(真 SSE 流式);密钥走 Keystore / DPAPI / libsecret。
  • Web 端:AI 传输走 package:http(SSE 缓冲解析);密钥存 localStorage(浏览器固有限制,已在界面提示)。

说明

  • lib/surface/app/{permissions,desktop_window,og_l_app} 依赖 permission_handler /
    window_manager / flutter_localizations,本机无 Flutter SDK,仅在真构建验证;
    本次未改动这三个文件。

v8.0.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 01:33

v8.0.0(2026-10-12 · 正式版)

主题:下载 / DNS 治本 · 设置页重做 · 悬浮元素让路 · 动画泄漏治理与分级预加载。


修复 · Fixed

下载

  • 分片不可用时回退单连接:并发 > 1 且文件 ≤ 1 MiB(分片数不足)时,引擎抛
    DownloadUnsupported,调用方此前把它当普通失败 → 所有小文件"下载失败"。
    现按契约回退到单连接(同一 taskId,页面无感);服务端忽略 Range 返回 200 时同样回退。
  • 分片响应校验 Content-Range:此前只验 206。CDN / 中间设备回错位区间时每片长度
    各自正确,却能拼出"长度正确的坏文件"。现逐片比对区间。
  • 分片成品读不回来:分片路径从不 enqueue,而后端的 completedSize / fileSha256 /
    deleteFile 全靠库任务表解析文件 → 恒为 null → 有摘要的 Release 资产被判"校验不匹配",
    且"删坏文件"是空操作(好文件留在磁盘,重试只重复失败)。现后端方法接受显式 path。
  • 暂停 / 重试后进度未归零:进度条先显示上一轮的假进度;重试后还会挂着上次的失败原因。
  • dispose 后异步回调仍改状态:通知收敛到 _safeNotify(),dispose 先立标志再取消令牌。

DNS

  • 「DoH 优先」开关此前是死代码:preferDoh 只出现在 toString / 摘要里,没有任何解析
    路径读它
    ;DoH 整条链从未被实例化 → 无论怎么设都走明文 UDP 53(正是被污染的那条)。
    现按「合法 https 端点 + 有 HTTP 能力」真正选择解析器,并保留「同一家 DoH 失败 → 明文」回退。
  • 换 DNS 服务商后缓存不作废:旧答案最长 5 分钟仍被返回。现真实变更时清缓存并留痕。
  • 非法 DNS 地址(空串 / 带协议前缀 / 带端口 / 非 IP)此前原样交给 socket 层抛
    ArgumentError,被归类成"网络失败"。现在入口规格化并给出明确原因。
  • AAAA 记录未补零(abc ≠ 0abc,拼出的不是那个地址);缓存淘汰语义与注释相反
    (注释说"淘汰最接近过期者",代码淘汰最早插入者 → 把最耐用的先丢)。均已对齐。
  • 自检看不出"已回退系统解析":现留痕 via / fallback,摘要写明。

设置

  • kOgLSettingsRowPadding 声明类型写成 EdgeInsets 却赋值 EdgeInsetsDirectional
    —— 两者是兄弟(都 extends EdgeInsetsGeometry),9 条编译错误、整包构建失败。
    已修正类型。

动画

  • OgLReveal 整个类没有 dispose():入场错峰用 Future.delayed(不可取消),闭包一直
    捕获 this(State + 整棵 Element 子树)。档位 3 时单项最长挂 576ms,而它大量出现在列表项
    构建器里 → 快速滚动 / 翻页时同屏可积压成百上千个"已卸载但被闭包拖着"的 State。
    现改为可取消的 Timer + dispose,_start 幂等。
  • 每个路由每帧泄漏 2 个 CurvedAnimation:buildTransitions 会被每帧调用,里面
    new 的 CurvedAnimation 从不 dispose,而它构造时会给 AnimationController 注册
    statusListener、只有 dispose 才摘除 → 一次翻页 ≈ 18 帧 ≈ 36 个永不摘除的死监听者。
    改为被动求值的 CurveTween(...).animate(...)(不注册任何监听),观感零变化。
  • OgLMotion.pageTransitions 加有界记忆化(只缓存档位 0–3,不随时间累积)。

新增 · Added

分级动画预加载

按动效档位(level 0–3)分级预加载,策略表集中在一处:

level 名称 策略
0 最低级 不预加载
1 第二级 仅预加载当前页面
2 倒数第二级 预加载最多,以全屏动画为主
3 最高级 当前层级 + 下一子层级的主要动画
  • 有数量上限与内存额度(登记时预扣,超限直接拒收而非排队堆积)——"不要过了"
  • 空闲时调度(每空闲窗口只推进 1–2 项),不与首帧争资源
  • 可取消(切走 tab / 退出路由整组取消并归还额度),模块内不持有 BuildContext
  • 已接到 4 个页面:首页(账号头像 + 前 3 个仓库 owner 头像 + 子路由首图)、
    搜索(前 2 条结果头像 + 子路由)、通知中心(级别图标字形预热)、仓库页(owner 头像 + README 头两张图)

悬浮元素滚动感知

用户要求:"下滑时靠边只露 1/4,点击弹出;往上再自动弹出来,免得滑动到页面底部挡视野;
滑动到最底部半屏时收起"
。新组件 ScrollAwareAction 统一实现:

  • 向下滚动 → 收边(只留约 1/4,贴屏幕边缘);点击收边态 → 立即完全展开
  • 向上滚动 → 自动弹回;距底部约半屏以内 → 强制收起
  • 滚动判定用累积位移 + 阈值(不是单帧 delta,避免惯性/回弹/微抖导致"抽搐")
  • 收边态仍可点(命中区 ≥ 48dp),拖拽滚动不被拦截
  • 覆盖 7 处:首页 FAB、仓库页 4 个标签页 FAB、发布页 2 个主操作按钮
    (发布页两处按"主操作不能被藏起来"的取舍传 bottomReserve: 0,只保留方向规则)

变更 · Changed

设置页重新设计

用户原话:"设置页面布局混乱,你重新设计"。新结构:

  • 根级:保存失败横幅 → 账户卡 → 5 个可折叠分组(界面 / 代码与文件 / 存储与网络 /
    关于与帮助 / 日志)→ 危险区
  • 行型统一为 5 种:分组卡片 / 选择行 / 开关行 / 滑杆行 / 危险卡片
  • 色板与分段按钮收进选择弹窗(此前平铺把一屏挤成两屏)
  • 每个分组收起时显示当前值摘要(明暗 · 主题色 · 缩放 / 高亮主题 · 字号 / 解析方式 /
    项目名 · 版本 / 已落盘 · N 行)
  • 危险项与普通项在颜色 + 间距上拉开
  • 折叠状态可记忆(同会话)
  • 功能一项未少:改造前 137 个 i18n 键逐项对照,仅 4 个旧分组标题被新标题取代

性能 · Performance

  • 主包体积与冷启动:见「Web」小节
  • 动画泄漏修复后,反复翻页不再累积死监听者与已卸载 State(这正是"切回正常频率也不恢复"的机制)
  • 预加载按档位分级,低档位不增加任何开销

说明 · Notes

  • CI 与开发环境:本机无 Flutter SDK,验证以「真 Flutter 源码静态分析 + 解析级校验 +
    仓库自带四道门禁(i18n / 分层 / 动效分级 / 性能反模式)」为主;lib/surface 中依赖第三方
    插件的少数文件(编辑器 / 通知 / 桌面窗口)仍需在真 SDK 上跑一次 flutter analyze。
  • 悬空 i18n 键:设置页重做后有 9 个旧键(densityMin/Standard/Enhanced/Current、
    maintenance、guideAndReset、appearance、currentAccount、loggedOut/logout*)
    已无代码引用;为不混淆本次改动未删除(其中 appearance 在 shell 分片仍被引导页使用,
    清理时须按分片区分)。

v7.4.0

Choose a tag to compare

@github-actions github-actions released this 11 Oct 03:35

v7.4.0(2026-10-11 · 正式版)

Repo file operations now go through the RepoFileService; legacy defect fix batch.

主题:仓库文件操作接入文件操作服务 + 遗留缺陷修复批。

修复 · Fixed

  • 仓库页文件操作接入 RepoFileService:新建 / 删除 / 重命名与目录递归删除改调服务 ——
    路径与内容先在服务端规则里校验;单文件写入带文件级基线(create 不覆盖既有文件、
    delete 不删错版本);目录删除由服务重新展开前缀并自动分批(≤200/批、基线链式推进),
    页面级 200 文件硬上限移除。整体成败以 result.ok 判定,失败按 result.items
    逐项提示(同一文案只报一次,避免重复提示淹没界面)。
  • 目录删除 / 重命名增加进行中进度:服务的 onProgress 回调把阶段与计数
    (准备 / 读取 / 上传 / 提交)更新到代码标签顶部的状态行;进行中不再整页转圈、
    把列表藏起来。
  • 写后失效只读缓存:RepoFileService 的每个写操作在条目真正落定后调用
    GhApi.invalidateReadCache(),随后的读取回源;失效本身失败不改变
    「写入已成功」的事实,只记一条诊断。
  • 语言白名单对齐:设置层 languageCodes 由 15 种收敛为 6 种
    (简中 / 繁中 / 英 / 德 / 法 / 俄),注释同步说明与 OgLI18n.locales、
    assets/i18n/ 目录、pubspec 声明三处一致(此前白名单留着已被删除的语言代码)。
  • 文件预览枚举删除死值 OgLPreviewKind.text:文本文件仍判定为 unknown
    (既有行为由测试锁定),file_preview_page 的两处对应分支一并删除。
  • 文件图标删除不可达分支:readme.md / changelog.md 两个 case 删除 ——
    md 在扩展名分支已先返回,这两个 case 进不去。
  • 加速地址校验补主机名检查:https://(无主机)不再放行 —— 它会以空前缀参与
    拼接、把「加速已开」伪装成直连;新增键 accelUrlHost(6 语言)。
  • 下载文件名净化:Windows 保留名改按第一个点之前的部分判定 ——
    aux.tar.gz 等多扩展名不再绕过(Microsoft 文档:NUL.tar.gz 等价于 NUL),
    补测试用例。
  • 登录令牌格式提示补齐:tokenShapeInvalid 增补 ghs_ / ghr_ 前缀
    (6 语言),提示与实际接受的 6 种前缀一致。
  • Gist 详情截断标注:raw 回退拉全文失败时,_GistFile.truncated 如实置真,
    卡片标注「内容可能被截断(全文回退失败)」(新增键 truncatedWarning,6 语言),
    不再把残缺内容当完整内容展示。
  • 通知中心落盘去重:相同的 title + detail 先查去重、再落盘 ——
    重复条目不再反复写入磁盘日志。
  • OgLNoticeDelivery 接线状态注释:当前所有调用点都走默认 auto,
    参数尚未接线(逻辑未变,枚举与参数保留)。
  • 关于页依赖许可清单补 6 项:flutter_svg / window_manager / saf_util /
    saf_stream / flutter_local_notifications / yaml;顺序声明改为与
    pubspec.yaml 的 dependencies 逐项一致。
  • 登录页清理:删除数字进度的死注释、finally 中冗余的未挂载分支;
    _openOnboarding 改用已取得的 navigator(不再从 builder 的 context 现取)。
  • 动效注释与实现对齐:起始缩放「仅拉满档 < 1」改为「标准档起 < 1:0.99 → 0.975」。

变更 · Changed

  • 版本号:pubspec.yaml 7.3.1+70310 → 7.4.0+70400;
    kOgLAppVersion 同步升至 7.4.0。

v7.3.1

Choose a tag to compare

@github-actions github-actions released this 11 Oct 01:37

v7.3.1(2026-10-11 · 正式版)

UI-detail fix batch: sheet close animation, form back-guard, motion/accessibility coverage, i18n wording.

主题:界面细节修复批 —— 弹层闭场动效 / 表单返回保护 / 动效与无障碍覆盖 / 多语言文案。

修复 · Fixed

  • 底部弹层闭场动画:ogLShowSheet 不再自建动画控制器(面板关闭的同帧释放控制器会掐断出场动画),
    改用 sheetAnimationStyle 继续按动效档位给时长;档位 0 仍为零时长、直接出现。
  • 表单返回保护:新建发布 / 仓库 / 议题 / Gist / 工作流参数与仓库设置六个表单的
    PopScope.canPop 现随输入即时生效 —— 此前输入后按返回仍被当作「未修改」直接放行,
    已输入的内容会被静默丢弃。
  • 代码编辑器草稿恢复:草稿是异步读回的;期间用户已开始输入时,不再用旧草稿
    覆盖当前内容(用户改动优先)。
  • 关于页赞助入口:打不开外部浏览器时先真的把仓库链接写入剪贴板,再提示「已复制」;
    此前只弹提示不复制,属于谎报成功。
  • 提示收敛:设置页 9 处、关于页 2 处散装 showSnackBar 统一走 OgLNotifier
    (按语义分 success / info / warning);「取消文件夹授权」改告警语气、
    「下载并发数」改成功语气。

变更 · Changed

  • 设置页日志区改为 ExpansionTile(默认收起):日志随时可能很长,不再常展开撑长页面;
    收起态不构建日志正文。
  • 动效覆盖补齐:账户行(FutureBuilder 换挡)、日志空态 / 正文加常驻 AnimatedSize;
    加速通道增删由通道区外层 AnimatedSize 覆盖。
  • 无障碍:设置页分组标题补 Semantics(header: true);滑块行加 MergeSemantics
    (标题 + 当前值 + 滑块合成一个节点);色板与加速通道声明 inMutuallyExclusiveGroup。
  • 动效档位说明与实现对齐:「档位 2 不缩放」更正为「标准档缩放 0.99」,
    motionStandardDesc 同步改为「轻微缩放」;「减少动效」说明更正为「手动强制」(档位「静默」直接关闭)。
  • 多语言:
    • 冲突提示 8 键(writeConflict*)补齐 zh_TW / de / fr / ru 真实翻译;
    • onboardingLicenseHighlights 补齐 de / fr / ru(替换仍为英文旧版的整块文案);
    • 6 语言清除指向已删内置通道的表述(onboarding.json 许可正文与要点、settings.json 私有仓库加速警示);
    • 德文拼写修正(Protokdatei → Protokolldatei、Projektnformationen → Projektinformationen);
    • 俄文修正(Не вошедши → Вход не выполнен、Пубичный → Публичный、Доступ к всем → Доступ ко всем)。
  • 版本号:pubspec.yaml 7.3.0+70300 → 7.3.1+70310;kOgLAppVersion 同步升至 7.3.1。

质量审计 20261011-1420(+8)

Pre-release

Choose a tag to compare

每小时质量审计报告(Agnes · 逐文件审查 lib/)。
Quality audit report (Agnes, per-file review of lib/).
报告文件:quality_audit.txt

v7.3.0

Choose a tag to compare

@github-actions github-actions released this 10 Oct 16:34

v7.3.0(2026-10-10 · 正式版)

Adds a unified file-operation service (move / copy / batch) + transport hardening + UI and interaction fixes.

主题:新增文件操作服务(移动 / 复制 / 批量)+ 传输层健全 + 界面与交互修复。

新增 · Added

  • 文件操作服务(RepoFileService):统一 create / delete / rename(=move) / copy / batchDelete / batchMove / batchCopy;支持文本与二进制(Blobs API / sha 引用,不限 1 MB);目录操作递归展开;>200 文件自动分批 + 基线链式推进 + 进度回调 + 取消;目标已存在拒绝覆盖。
  • 下载错误分类(IxDownloadError):网络 / 磁盘 / 校验 / 取消 / 不支持 / 需认证——取代裸字符串。
  • 下载任务幂等入队(重复点下载不再创建重复任务);clearFinished 补清泄漏的辅助表;completed 双入口去重。

变更 · Changed

  • net_transport.dart 默认可重试方法移除 PUT / DELETE(非幂等操作,重试会导致 422 冲突)。
  • types.dart 的 9 条 export 路径修正(此前解析到仓库外)。
  • IxPresign 补传令牌(此前漏传导致签名族加速静默失效)。
  • 法律文案清除指向已删内置通道的表述(6 语言)。
  • kOgLAppVersion 对齐 pubspec 版本号。

修复 · Fixed

  • 文件预览页重试成功后不再卡在错误页。
  • 工作流表单快速切换不再错配参数(请求序号守卫)。
  • 下载管理页的控制器释放后不再触发通知(debug 断言)。
  • 返回键快速连按不再穿透多层(重入保护)。
  • atHome 判定收窄:引导 / 登录阶段不再触发「再按一次退出」。

v7.2.2

Choose a tag to compare

@github-actions github-actions released this 09 Oct 23:14

v7.2.2(2026-10-09 · 正式版)

Fixes from a UI and interaction review.

主题:修复一轮界面与交互审查发现的问题。

修复 · Fixed

  • 打开含代码文件的 Gist 详情页会触发布局断言(编辑器组件在无界高度的列表里);
    现为每个文件给定确定高度。
  • 代码编辑器内打字时,键盘会遮住编辑区底部(自绘输入未纳入键盘避让判定)。
  • 首页与仓库页的「下拉刷新 / 加载更多 / 切换筛选」存在竞态:快速操作会丢失第一页、
    重复条目或显示与筛选不符的数据。相关列表改为排队刷新或丢弃过期响应。
  • 代码编辑器退出时无条件回写草稿:「保存成功」或「放弃修改」后草稿仍会残留,
    与操作语义相反。现在这两种情况不再回写,「放弃」会真正删除草稿。
  • 文件预览页加载失败后,「重试」成功仍显示错误页(错误状态未复位)。
  • 手动触发工作流时快速切换目标,表单参数可能与所选工作流不符(请求无序)。
  • 搜索与仓库页在控制器释放后仍可能收到通知(debug 下触发断言)。
  • 新建 Gist / 议题 / 仓库 / 发布 / 工作流参数 / 仓库设置等表单,
    返回时不再静默丢弃已输入内容(与代码编辑器一致的「放弃确认」)。
  • 删除仓库后,首页与搜索结果不再保留已删除的仓库。
  • 授予「所有文件访问」权限后,提示文案误显示为 DNS 相关(文案串用)。
  • 二进制 / 图片文件可经「打开方式 → 编辑器」进入并保存乱码内容覆盖原文件;
    现按文件类型禁用该入口。
  • 设置页账户行在页面重建时反复闪「读取中」(Future 在 build 中创建)。
  • 法律文本页快速切换语言时,正文可能与所选语言不一致。
  • 布局与动效:加速范围开关组与标题错位、条件内容无过渡、弹窗与折叠动画未接动效档位、
    协议弹窗勾选框位置、错误卡片边距、若干对齐与触控目标过小、
    两处缺失的无障碍语义、关于页硬编码颜色、字号滑块整页重建等。

v7.2.1

Choose a tag to compare

@github-actions github-actions released this 09 Oct 14:24

OhGithubLost v7.2.1

调整平台架构兼容性。

变更 / Changed

  • Web 与原生拆分为两个独立系统:本分支为原生版,只构建 Android / Windows / Linux;
    Web 在独立分支维护,产物发布到该分支的 app/<版本数字>/,不产生 GitHub Release。

产物 / Artifacts

Android arm64-v8a / armeabi-v7a / x86_64 / universal-APK / AAB、
Windows x64 / arm64、Linux x64 / arm64,每份均含 zip 与 7z。

v7.0.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 23:29

OhGithubLost v7.0.0

新增 Web 版(浏览器),并把它作为正式平台之一。
Adds a Web build and treats it as one of the supported platforms.

新增 / Added

  • Web 版(PWA):可在浏览器中使用,并可「添加到桌面 / 主屏幕」作为独立窗口打开。
    • 入口 app/index.html 用 iframe 包裹当前版本,地址长期不变;各版本产物在
      app/v<版本号去点>/(本版为 v700),app/versions.json 为清单。
    • 图标与三端同源(assets/icon/ogl_icon.svg 光栅化)。
  • 「添加到桌面」提示:Chromium(含 macOS)走标准流程,每次打开提示一次;
    iOS Safari 不支持 beforeinstallprompt(平台限制),iOS 上给出
    「共享 → 添加到主屏幕」的引导。已安装后不再提示;可在 设置 → Web 版 关闭。
  • Web 首次打开对话框:提示可配置加速服务,并写明不配置也能正常使用(下载走直连)。
  • tool/web_publish.py:按版本发布到 app/ 并重写入口页与清单。

变更 / Changed

  • 平台差异改用条件导入:此前 18 个文件直接 import 'dart:io'(浏览器无该库),
    现改为 import 'x_io.dart' if (dart.library.js_interop) 'x_web.dart';。
  • 新增依赖 http: ^1.2.2(自带浏览器实现)。
  • web.yml 在 main 与 web 两条分支构建 Web;其成败不阻塞五平台发布。

Web 与桌面不同的部分(均在界面与日志中如实标注)

  • 磁盘:无文件系统。键值走 localStorage;文件类存储仅会话内有效;
    令牌保险库仅内存持有,刷新需重新登录(避免长期令牌明文留在 localStorage)。
  • 网络:传输层用 BrowserClient。自定义 DNS / DoH 不可用(浏览器不提供裸 socket)。
  • 网络自检:Web 上为有限自检,只测 HTTP 可达性。
  • 下载:background_downloader 无 Web 实现,下载交给浏览器。因此暂停、续传、
    多连接分片、进度、文件大小、保存路径、sha256 校验均不可用 —— 如实标注,不做假动作。
  • 带 Authorization 头的下载会明确失败(浏览器不允许页面设置跨域鉴权头)。
  • 预签名不可用:fetch 读不到跨域 302 的 Location;实现如实返回「解不出签名」,
    不会改成跟随重定向(那会绕过「令牌只用于第一跳」的设计)。
  • 日志不落盘:Web 上 OgLLogFile.isEnabled == false,保留控制台输出。

已知限制 / Known limitations

  • Web 不提供:自定义 DNS / DoH、多连接分片、后台下载与续传、下载进度与校验、
    导出到 SAF、TLS / DNS 级网络自检。
  • iOS 需按引导手动「添加到主屏幕」(Safari 不提供安装接口)。
  • docs/ARCHITECTURE.md 等 5 份被注释引用的文档仍不存在(已逐处标注「以源码为准」)。
  • Linux 裸放安装包 3 / 6:rpm(arm64)缺平台定义;AppImage 的 ARCH
    环境变量未被接受。三种包在 zip / 7z 里都齐全。
  • macOS / iOS 原生应用自 v5.6.0 起弃用(Web 版在 iOS 浏览器可用,但不是原生应用)。

产物 / Artifacts

Android arm64-v8a / armeabi-v7a / x86_64 / universal-APK / AAB、
Windows x64 / arm64、Linux x64 / arm64,每份均含 zip 与 7z;
Web 产物按版本发布在分支的 app/ 目录下。

v6.5.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 15:04

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。