Repository navigation
Releases: OGL-Teams/OhGithubLost
Release list
v8.2.0
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.idfinal 字段被赋值(编译错误)。
平台
- 原生端: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
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
—— 两者是兄弟(都 extendsEdgeInsetsGeometry),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
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.yaml7.3.1+70310 → 7.4.0+70400;
kOgLAppVersion同步升至 7.4.0。
v7.3.1
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); - 俄文修正(
Не вошедши→Вход не выполнен、Пубичный→Публичный、Доступ к всем→Доступ ко всем)。
- 冲突提示 8 键(
- 版本号:
pubspec.yaml7.3.0+70300 → 7.3.1+70310;kOgLAppVersion同步升至 7.3.1。
质量审计 20261011-1420(+8)
每小时质量审计报告(Agnes · 逐文件审查 lib/)。
Quality audit report (Agnes, per-file review of lib/).
报告文件:quality_audit.txt
v7.3.0
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
v7.2.2(2026-10-09 · 正式版)
Fixes from a UI and interaction review.
主题:修复一轮界面与交互审查发现的问题。
修复 · Fixed
- 打开含代码文件的 Gist 详情页会触发布局断言(编辑器组件在无界高度的列表里);
现为每个文件给定确定高度。 - 代码编辑器内打字时,键盘会遮住编辑区底部(自绘输入未纳入键盘避让判定)。
- 首页与仓库页的「下拉刷新 / 加载更多 / 切换筛选」存在竞态:快速操作会丢失第一页、
重复条目或显示与筛选不符的数据。相关列表改为排队刷新或丢弃过期响应。 - 代码编辑器退出时无条件回写草稿:「保存成功」或「放弃修改」后草稿仍会残留,
与操作语义相反。现在这两种情况不再回写,「放弃」会真正删除草稿。 - 文件预览页加载失败后,「重试」成功仍显示错误页(错误状态未复位)。
- 手动触发工作流时快速切换目标,表单参数可能与所选工作流不符(请求无序)。
- 搜索与仓库页在控制器释放后仍可能收到通知(debug 下触发断言)。
- 新建 Gist / 议题 / 仓库 / 发布 / 工作流参数 / 仓库设置等表单,
返回时不再静默丢弃已输入内容(与代码编辑器一致的「放弃确认」)。 - 删除仓库后,首页与搜索结果不再保留已删除的仓库。
- 授予「所有文件访问」权限后,提示文案误显示为 DNS 相关(文案串用)。
- 二进制 / 图片文件可经「打开方式 → 编辑器」进入并保存乱码内容覆盖原文件;
现按文件类型禁用该入口。 - 设置页账户行在页面重建时反复闪「读取中」(Future 在 build 中创建)。
- 法律文本页快速切换语言时,正文可能与所选语言不一致。
- 布局与动效:加速范围开关组与标题错位、条件内容无过渡、弹窗与折叠动画未接动效档位、
协议弹窗勾选框位置、错误卡片边距、若干对齐与触控目标过小、
两处缺失的无障碍语义、关于页硬编码颜色、字号滑块整页重建等。
v7.2.1
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
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
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。