Releases: casthan321/Venera-Community
Release list
Venera Community v1.8.0-beta.1
Venera Community 1.8.0 Beta 1
这是 Venera Community 1.8 系列的首个公开 Beta,重点改进“漫画源”页面的仓库管理、来源更新安全性与跨设备配置持久化。它不是上游官方 Venera 发布,而是用于收集实际设备反馈的社区测试版本。
Beta 提示:漫画源脚本属于可执行代码。请只添加你信任的仓库,并在安装或切换来源前核对仓库名称、清单地址和最终下载主机。升级前建议先在旧版本中导出一份本地备份。
同一界面管理多个漫画源仓库
- 保留原有“漫画源 → 仓库地址”界面,不再额外增加一个相互割裂的仓库管理页。
- 顶部仓库卡片现在可以保存多个
index.json地址,并通过下拉框切换当前仓库。 - 下方列表只显示当前选中仓库提供的漫画源,不会把多个仓库的条目混在一起。
- 支持新增、重命名、编辑地址、启用/禁用、测试连接、刷新、调整顺序和删除仓库。
- 禁用的仓库仍可被选中和编辑,重新启用后即可继续加载。
- 当前选择、仓库顺序和启用状态会立即保存,重启应用后恢复上次选择。
- 仓库操作和源列表都适配窄屏 Android、Windows 窗口缩放、键盘操作、Tooltip 与读屏语义。
兼容、迁移与同步
- 首次升级会把旧版中有效的 HTTPS
comicSourceListUrl迁移为一个已启用仓库;原官方地址继续使用官方 CDN。 - 旧版中仍可安全识别、且不含凭据或敏感查询的 HTTP 地址不会被静默覆盖,而会保留为待检查配置;含凭据、敏感参数或无法解析的异常地址不会进入新仓库列表。新建仓库要求使用 HTTPS。
- 新旧配置保留兼容镜像,降低旧客户端写入设置后再次升级造成仓库列表丢失的风险。
- 仓库列表可以随普通设置同步;如果用户将仓库设置加入“不同步字段”,旧兼容字段也会一并排除。
- 导入不含新绑定信息的旧备份时会清理不再可靠的仓库绑定,避免同 key 的旧脚本被错误仓库接管更新。
- 清单同时兼容
fileName与历史文档中的filename字段,相对脚本地址以仓库最终清单地址为基准解析。
仓库与脚本安全
- 仓库清单和脚本使用独立网络客户端,不携带应用中的登录 Cookie、Authorization 或 Cloudflare 会话。
- 仓库请求始终强制验证 HTTPS 证书;即使用户为普通漫画站点开启“忽略错误证书”,也不会影响仓库供应链。
- 每次 HTTPS 重定向都会重新校验,拒绝降级到 HTTP、凭据 URL、敏感查询参数、循环及过多跳转。
- 清单和脚本采用流式大小限制;格式错误条目只隔离自身,一个仓库失败不会遮蔽其他仓库。
- 首次安装、切换仓库以及最终下载主机发生变化时都会显示信任确认,不会静默执行来自新主机的脚本。
- 已安装源会记录仓库、脚本地址、最终地址和版本;同 key 的其他仓库不能自动接管更新。
- 跨仓库切换同 key 来源时默认隔离旧源账号与私有数据,避免把登录信息直接交给新脚本。
- 安装、切换和更新使用互斥操作与持久恢复日志;写文件、保存绑定或重新加载失败时会回滚旧脚本、旧数据和旧设置。
- 每次解析的漫画源都带有独立运行代次。旧页面、延迟回调和旧 JS 定时任务在来源被替换后无法调用新脚本,也不能读取或重写新源的私有数据。
更新与错误处理
- 自动检查会遍历全部已启用仓库;单个仓库失败会分别记录并继续,不会因一个地址不可用而中止其他仓库。
- 更新候选必须同时匹配已绑定仓库、脚本 URL、source key 和清单版本;下载脚本声明不一致时拒绝替换。
- 手动更新在应用重启后仍优先使用持久仓库绑定,不会退回脚本自行声明的未知更新地址。
- 快速切换或刷新仓库时,旧请求结果不会覆盖当前选择;取消下载后也不会继续弹出信任或安装对话框。
- 仓库配置保存失败会恢复原选择和原配置,避免下拉框进入无法继续操作的状态。
安装与升级
- Android Community 包名仍为
io.github.casthan321.venera;使用正式 Community 签名的 1.7.0 可以覆盖升级,自编译或其他签名的 APK 不能原位覆盖。社区版仍可与上游官方包com.github.wgh136.venera共存。 - 本 Beta 使用构建号
180:universal、armeabi-v7a、arm64-v8a、x86_64 APK 的 versionCode 分别为 1800、1801、1802、1803,均高于 1.7.0 正式版。 - Android 提供 universal、arm64-v8a、armeabi-v7a 与 x86_64 APK。现代手机通常选择 arm64-v8a;不确定设备架构时选择 universal。
- Windows 提供 x64 安装器与便携 ZIP。安装器可从 Venera Community 1.7.0 原位升级;便携 ZIP 需要完全退出旧程序后手动替换,或解压到新目录。安装器没有商业 Authenticode 证书,SmartScreen 可能显示未知发布者,请从本 Release 下载并核对 SHA-256。
- 1.7.0 正式版用户默认不会被引导到 Beta;希望参与测试的用户可以手动安装,或在“设置 → 关于”中开启“接收 Beta 测试版更新”。
已知限制
- 页面一次只显示当前选中仓库的漫画源;后台更新检查仍会检查所有已启用仓库。
- 禁用或删除仓库不会自动卸载已经安装的漫画源,但这些源将停止从该仓库获取更新,直到重新配置或明确切换仓库。
- 当前不支持需要 Cookie、Authorization、token 或带密钥查询参数的私有仓库;这类凭据不会被保存到仓库设置中。
- 仓库中的漫画源脚本没有独立数字签名。登录、签到、收藏和阅读能力仍取决于第三方脚本及对应站点接口,请只使用可信仓库。
- 同步仓库设置不等于同步已安装的 JS 文件、登录账号或来源私有数据;新设备仍需逐个确认并安装来源。
- 仓库索引最大 1 MiB、最多 1000 个条目,单个来源脚本最大 2 MiB。
- 取消仓库脚本下载会阻止后续信任确认和安装,但暂时不会立即终止已经发出的网络传输。
建议重点测试
- 保存两个或更多仓库,反复切换、重启应用,确认选择、顺序与启用状态都能恢复。
- 在 Android 窄屏和 Windows 不同缩放下新增、编辑、禁用、删除和刷新仓库,确认没有布局溢出。
- 让一个仓库离线或返回坏清单,确认其他仓库仍可使用,并能看到明确错误状态。
- 安装两个仓库中不同 key 的来源,以及显式切换同 key 来源,确认信任提示、账号隔离和失败回滚符合预期。
- 测试相对脚本地址、跨 HTTPS CDN 重定向、取消下载、更新版本不匹配及最终主机变化提示。
- 测试设置同步、本地导出/导入和旧版单仓库配置迁移。
验证与反馈
发布流水线会在公开前强制执行 Dart 格式检查、全仓 flutter analyze、完整 Flutter 测试、Android 永久签名证书指纹校验、四个 APK 的签名与 SHA-256 验证、Windows x64 Release/安装器构建以及双平台产物校验。任一必需步骤失败都不会公开 Release。
应用界面、仓库保存、迁移、崩溃、更新绑定或回滚问题可以反馈到 Venera Community 仓库。某个具体漫画源的登录、签到、内容、网站可用性或脚本规则问题,请联系对应仓库或来源维护者。
反馈时请附上平台、系统版本、应用版本、仓库清单地址的公开主机、操作步骤和“设置 → Debug”中的相关脱敏日志。请不要公开完整私有仓库地址、Cookie、账号密码、Authorization、访问令牌、带签名参数的下载链接或代理密码。
What's Changed
- [Stable] Venera Community 1.7.0 by @casthan321 in #2
- Add multi-repository comic source management (1.8.0 Beta 1) by @casthan321 in #3
Full Changelog: v1.7.0...v1.8.0-beta.1
Venera Community v1.7.0
Venera Community 1.7.0 正式版
Venera Community 1.7.0 是一次覆盖阅读器、下载、本地漫画、网络访问、数据安全、Android、Windows 与桌面体验的大版本正式更新。该版本基于公开 Beta 的完整双平台构建和回归结果收口,仍是独立的社区维护分支,并非上游官方 Venera 发布。
升级建议:本次更新调整了数据库访问、Cookie、下载恢复、压缩包导入和存储迁移流程。升级前建议先在旧版本中导出一份本地备份。不要让官方版与社区版同时写入同一个手工指定的共享漫画目录。
安装、升级与旧版本更新
- Android 永久包名保持
io.github.casthan321.venera,可覆盖升级 Venera Community 1.6.4、1.6.5 和 1.7.0 Beta 1,并可与官方包com.github.wgh136.venera共存。 - 正式版使用构建号
171:universal APK 的 versionCode 为 1710,armeabi-v7a、arm64-v8a、x86_64 分别为 1711、1712、1713,均高于 Beta 版本。 - Android 提供 universal、arm64-v8a、armeabi-v7a 与 x86_64 APK;现代 Android 手机通常选择 arm64-v8a,不确定架构时选择 universal。
- Windows 提供 x64 安装器与便携 ZIP。安装器目前没有商业 Authenticode 证书,SmartScreen 可能显示未知发布者,请从本 Release 下载并核对 SHA-256。
- Windows 1.7.0 Beta 1 使用相同的 Community 安装器身份,可以由正式版安装器原位升级。Windows 1.6.5 仍沿用早期/上游安装器身份,正式版会作为独立应用安装;请先在旧版导出备份,再在 Community 正式版导入,确认数据后自行卸载旧应用。正式版不会接管或删除旧版目录。
- 1.6.4/1.6.5 用户如果已经开启“启动时检查更新”,会在
master发布稳定版本信息后收到提示;其他用户可进入“设置 → 关于 → 检查更新”。旧客户端只打开 GitHub Release 页面,不会静默下载或安装 APK。 - 正式版不会要求用户开启“接收 Beta 测试版更新”;已安装 Beta 的用户也会正常识别
1.7.0为更高版本。
阅读器与图片性能
- 修复连续条漫拖动进度后无法继续滚动,以及画廊跳页、收起工具栏后图片假重载或永久转圈。
- 连续模式按可视面积最大的图片确定当前页,避免上一页残边干扰历史记录、进度和预加载。
- 下一页提前下载并解码,其余前瞻页只预下载;页面靠近时再升级为预解码,减少长图首次出现时的布局重排与卡顿。
- 画廊与连续模式统一预加载去重,限制控制器、尺寸缓存和解码缓存,清理监听器、计时器及异步内存探测生命周期。
- 修复关闭翻页动画后手势仍有弹道动画、滑动结束误弹工具栏、历史页码超过图片数、章节请求永久加载和下载漫画不能收藏图片。
- 历史封面失效后自动刷新;GIF 按内容签名绕过静态图片处理,避免动图被错误拆分或静态化。
下载、归档与本地漫画
- 重写图片列表恢复状态机,部分章节、空列表、超时、暂停/继续和旧请求晚返回不再被误标为完成。
- 图片与封面通过
.venera-part、flush 和原子重命名发布;恢复时清理残片、零字节文件并重新核对页索引。 - 下载目录加入来源/漫画身份 marker,任务记录丢失后可以安全复用未完成目录,减少重复
(1)目录。 - 下载队列采用合并写入和原子替换,取消逐页重写完整 URL 列表;坏任务只隔离自身。
- 文件下载器支持 HEAD 回退、严格 Range/Content-Range、ETag/Last-Modified、真实取消、限频 checkpoint、安全单流降级和逐跳重定向。
- 归档下载采用 staging → backup → publish 事务;取消、解压、验证、数据库写入或发布失败时恢复原漫画。
- ZIP、CBZ 与 7Z 导入增加路径穿越、名称碰撞、重复条目、路径深度、条目数、单文件/总大小及压缩比预算,阻止跨目录覆盖和 ZIP bomb。
- 存储路径迁移会暂停并排空下载,原子更新队列、数据库与配置;失败按相反顺序回滚,并保留必要副本用于恢复。
网络、网页与访问可靠性
- RHttp 客户端按传输配置复用连接池,补齐连接、发送、首响应头、响应流空闲超时和贯穿原生请求的取消。
- HTTP 重定向逐跳处理,中间
Set-Cookie可被保存;跨域时移除 Authorization、Cookie、API key、token、session 等敏感头。 - WebDAV 和文件下载支持可重开的 307/308 请求体,不可安全重放的单订阅流会明确失败。
- 缓存区分响应类型与
Vary,仅保存完整 200 响应;认证、Cookie、敏感查询、no-store、no-cache和私有响应不缓存。 - 网络日志默认脱敏 URL、查询、header、Cookie、token 与请求体;二进制内容仅记录大小,Cloudflare 页面不记录 DOM。
- Cookie 增加 Secure、前缀规则、Max-Age、默认 Path、路径边界、host-only 与公共后缀校验,同时支持合法父域登录跨子域使用。
- Cloudflare 验证保持用户可见,不自动化或绕过 CAPTCHA;只保存同源服务端真实颁发的 clearance 与对应 UA。
- WebView 增加 DNS、代理、HTTP、TLS 分阶段错误页以及安全重试/外部浏览器入口;TLS 错误不会自动关闭证书校验。
- Windows 与 Android 系统代理保留 HTTP/HTTPS 分流;应用网络栈不能可靠执行 PAC 时明确失败,WebView2 继续使用系统解析。
数据、同步与恢复
- appdata、下载队列、WebDAV 临时文件和关键状态改为原子写入;历史与本地库增加索引及小型 LRU 缓存。
- SQLite worker 各自打开连接、设置 busy retry 并在 finally 关闭,不再跨 Isolate 共享裸数据库指针。
- 数据导入先验证数据库完整性与 schema,再通过 staging/备份事务替换;失败会恢复管理器、JS 引擎、来源与旧数据。
- 导入、WebDAV 和存储迁移共享独占维护锁,并为应用数据导入和本地路径迁移写入持久恢复 journal,异常退出后可继续提交或回滚。
- WebDAV 按数值版本选择备份,检测同版本分叉;先流式上传临时文件并核对大小,再重命名和提交版本。
- 云同步不再包含 Cookie 数据库、代理/WebDAV 凭据和设备专属设置。
- 收藏页的大数据异步刷新采用合并调度,加载期间的新收藏事件与搜索结果不会丢失。
Android、Windows 与界面
- Android 分享支持
text/*、Spanned/CharSequence 和onNewIntent;文件/目录选择、DocumentFile 枚举与复制移至串行 I/O executor。 - SAF 正确处理主存储与可移除卷;权限请求合并,并为不支持专属设置页的 OEM 提供回退。
- 临时文件按任务隔离并清理遗留内容,增加路径、深度和目录穿越保护;修复 EventChannel、后台线程与 engine 销毁后的回调泄漏。
- Windows 窗口状态改为事件驱动加防抖保存,支持负坐标副屏、离线显示器恢复和尺寸夹取。
- Windows 退出不再直接
exit(0);数据事务提交期间阻止强制关闭,普通退出完整保存状态。 - 修复 WinHTTP、剪贴板所有权、XButton、COM、DPI、长路径和 WebView2 环境复用问题。
- Windows 安装器使用独立 Community AppId、非管理员安装和递归打包,不删除或覆盖官方版目录。
- 设置、探索、搜索、历史和下载中心改进宽屏布局、空状态、批量确认、异步请求代次、Tooltip 与 Semantics。
发布验证
正式版在公开前必须通过:锁定依赖解析、Dart 格式检查、全仓 flutter analyze、完整 Flutter 测试、Android 永久签名证书指纹核验、四个 APK 签名验证、Windows x64 Release/安装器构建、R8 mapping 保存,以及 Android/Windows 两份 SHA-256 清单生成。任何必需步骤失败,Release 都不会公开。
反馈问题时请附平台、系统版本、阅读模式、来源版本、复现步骤和“设置 → Debug”中的相关脱敏日志。请勿公开 Cookie、账号、Authorization、签名下载链接或代理密码。
What's Changed
- [Beta] Venera Community 1.7.0 Beta 1 by @casthan321 in #1
New Contributors
- @casthan321 made their first contribution in #1
Full Changelog: v1.6.5...v1.7.0
v1.7.0-beta.1
Venera Community 1.7.0 Beta 1
这是一次覆盖阅读器、下载、本地漫画、网络访问、数据同步、Android、Windows 与桌面 UI 的大版本测试更新。它不是上游官方 Venera 发布,而是 Venera Community 的公开 Beta。
Beta 提示:此版本包含数据库、Cookie、下载恢复和存储迁移逻辑调整。安装前建议先在旧版本中导出一份本地备份。请勿在没有额外备份的情况下让原版与社区版同时写入同一个手工指定的共享漫画目录。
安装与升级
- Android 社区版永久包名仍为
io.github.casthan321.venera,可直接覆盖升级 Venera Community 1.6.4/1.6.5,并可与上游官方包com.github.wgh136.venera共存。 - Android 提供 universal、arm64-v8a、armeabi-v7a 与 x86_64 APK;不确定设备架构时请选择 universal APK。
- Windows 提供 x64 便携 ZIP 与 Inno Setup 安装器。Beta 安装器当前没有商业 Authenticode 证书,Windows SmartScreen 可能提示未知发布者;请先核对 Release 中的 SHA-256。
- Beta 版本使用与正式版兼容的语义化版本比较,未来
beta.2、RC 和正式1.7.0可以正常识别升级顺序。 - 1.6.x 正式版默认不会被自动引导到 Beta;希望参与测试的用户可手工安装本页资产,或在“关于”中开启“接收 Beta 测试版更新”。已经安装 Beta 的用户会继续收到后续 Beta/RC 提示。
阅读器
- 修复连续条漫快速拖动进度后阅读区永久无法滚动的问题。进度条仅在松手时提交最终页,连续模式使用安全跳转,并增加动画令牌、超时、退出清理和最终位置校正。
- 修复画廊模式拖动进度、收起工具栏后图片看似重新加载或永久转圈的问题,改用稳定的项目图片组件承载 PhotoView。
- 连续模式按可视面积最大的图片计算当前页,不再被上一页残边干扰历史记录和预加载。
- 下一页会提前下载并解码,其余前瞻页只预下载;已下载页靠近时会升级为预解码,减少长图首次出现的布局重排与卡顿。
- 画廊与连续模式统一预加载去重,限制控制器、图片尺寸和解码缓存范围,修复监听器、计时器与异步内存探测的生命周期泄漏。
- 修复关闭翻页动画后手势仍有弹道动画、滑动结束误弹工具栏、历史页码超过当前图片数、章节请求永久加载、下载漫画无法收藏图片等问题。
- 修复历史封面失效后的自动刷新与详情页旧封面覆盖新封面。
- GIF 根据内容签名绕过静态图片分块脚本,避免 JM 等来源的动图被错误拆分或静态化。
下载与本地漫画
- 重写图片列表恢复状态机:部分章节、空列表、超时、暂停/继续和旧请求晚返回都不会再被误标为下载完成。
- 图片和封面使用
.venera-part临时文件、flush 与原子重命名;启动恢复会清理残片、零字节文件并完整重扫页索引。 - 下载目录加入来源与漫画身份 marker,可安全找回任务 JSON 丢失后的未完成目录,避免无意义创建
(1)重复目录。 - 下载队列 JSON 改为合并写入与原子替换,删除逐页重写完整 URL 列表的高频 I/O;单条坏任务只隔离自身,不再清空整个队列。
- 通用文件下载器支持 HEAD 不可用回退、严格 Range/Content-Range 校验、ETag/Last-Modified 恢复、真实取消、流式随机写、限频 checkpoint 与安全单流降级。
- 归档下载采用 staging → backup → publish 事务;取消、解压、验证、数据库提交或发布失败都会恢复旧漫画。
- ZIP/CBZ/7Z 加入路径穿越、大小写碰撞、重复条目、条目数、路径深度、单文件/总大小和压缩比预算,阻止 ZIP bomb 与跨目录覆盖。
- CBZ/7Z 导入使用唯一 staging 和冲突安全目录,修复标题净化碰撞、Windows 保留名、章节全部落入
0、失败后孤儿目录与部分注册。 - 存储路径迁移会暂停并排空下载、重定位队列和绝对漫画路径、原子提交配置;失败逆序回滚,迁移期间的新任务延后启动。
- 修复自定义路径首次封面回退、本地非图片文件崩溃、批量删除生命周期、嵌套
downloads目录、已有下载记录但目录缺失等问题。
网络、网页与访问可靠性
- RHttp 客户端按传输配置复用连接池,设置变更后安全换代;支持连接、发送、首响应头与流空闲超时,以及贯穿原生请求的取消。
- HTTP 重定向改为逐跳可观察处理,中间
Set-Cookie可正确保存;跨域时剥离 Authorization、Cookie、API key、token、session 等敏感头。 - 307/308 和 WebDAV 流式 PUT 使用可重开的文件流;不可安全重放的单订阅流会明确失败,不再悄悄上传空内容。
- 网络缓存纳入响应类型与
Vary,只缓存完整 200 响应;认证、Cookie、Set-Cookie、敏感查询、no-store、no-cache与私有响应不缓存。 - 日志默认脱敏 URL、header、查询参数、Cookie、token 与请求体;二进制内容只记录大小,Cloudflare 页面不再记录 DOM。
- Cookie 实现增加 Secure、
__Secure-、__Host-、Max-Age、默认 Path、路径边界、host-only 与 PSL 校验;合法父域登录可跨子域使用,公共/私有后缀注入会被拒绝。 - Cloudflare 检测采用标准响应头和保守特征,同源验证只保存服务端真实颁发的 clearance 与对应 UA;取消不会重试,也不会自动化或绕过 CAPTCHA。
- WebView 增加 DNS/代理/HTTP/TLS 分阶段错误页、重试和外部浏览器入口;TLS 错误始终拒绝,不会自动关闭证书校验。
- Windows/Android 系统代理保留 HTTP 与 HTTPS 分流;PAC/绕过规则在应用网络栈无法可靠执行时明确 fail closed,WebView2 仍交给系统解析。
数据、历史与同步
- appdata、下载队列、WebDAV 临时文件和关键状态改为原子写入;历史与本地库增加常用查询索引及小型 LRU 缓存。
- SQLite worker 不再跨 Isolate 传裸连接指针;每个 worker 独立打开连接、设置 busy retry 并在 finally 关闭。
- 导入会先验证 SQLite integrity/schema,再以 staging 和备份事务替换;管理器关闭、重开、JS 引擎和来源重载均有失败回滚。
- 导入、WebDAV 上传/下载和存储迁移共享公平、可重入的独占维护锁,避免旧快照覆盖新导入或在数据库替换时继续写入。
- WebDAV 备份按数值版本排序,检测同版本分叉,先流式上传临时文件并校验大小,再 rename 和提交版本,最后保守清理旧备份。
- 云同步归档不再包含 Cookie 数据库、代理/WebDAV 凭据和设备专属设置;本地手工备份仍按明确的本地恢复规则处理。
- 收藏页的大数据异步刷新使用合并调度,不再丢失加载期间的收藏事件;搜索状态也会同步重算。
Android
- 分享入口支持
text/*、Spanned/CharSequence 和onNewIntent,待处理队列有上限。 - 文件与目录选择、DocumentFile 枚举和复制移到串行 I/O executor;结果只在主线程返回,失败清理半成品。
- SAF 路径使用 DocumentsContract 正确处理主存储与可移除卷;权限请求合并,并为不支持专属设置页的 OEM 提供回退。
- 临时文件按文件/目录隔离、唯一命名并清理七天以上遗留;加入路径、深度和目录穿越防护。
- 修复 EventChannel、后台线程与 Flutter engine 销毁后的回调泄漏,并补充 Android 10 兼容存储声明。
Windows 与桌面 UI
- 窗口位置由 100ms 轮询改为 move/resize/maximize 事件加防抖保存,支持负坐标副屏、离线显示器恢复与尺寸夹取。
- 关闭窗口不再直接
exit(0);导入、同步或迁移提交期间会阻止强制关闭,普通退出先保存窗口状态并走完整生命周期。 - 移除 5 秒 UI 心跳强杀,修复 WinHTTP 内存初始化/UTF-8/释放、剪贴板位图所有权、XButton、COM、DPI 与长路径问题。
- WebView2 环境按代理配置共享且失败可重试,Release 禁止 inspect,桌面轮询防重入。
- 安装器使用独立 Community AppId、非管理员安装与完整递归打包,不再删除或覆盖上游原版目录。
- ARM64 构建会验证真实 ARM64 主机并清除旧产物;x64 主机不会再误打包陈旧 ARM64 文件。
- 设置页、探索页、搜索、历史与下载中心增加宽屏布局、空状态、批量操作确认、请求代次保护、Tooltip 和 Semantics。
Beta 验证与反馈
发布流水线会在公开前强制执行 Dart 格式检查、全仓 flutter analyze、完整 Flutter 测试、Android release 签名证书指纹核验、APK 签名验证、Windows x64 Release 构建及所有产物 SHA-256 生成。任何一个步骤失败都不会发布 Release。
建议重点测试:
- 连续条漫快速拖进度、快速滚动和跨章节加载。
- 画廊进度跳转、缩放、收起工具栏与关闭动画后的翻页。
- 大章节暂停/继续、杀进程恢复、取消与重新下载。
- WebDAV 上传、下载、重定向、同版本冲突与失败回滚。
- Android SAF/SD 卡迁移与 Windows 多显示器、WebView2 和安装器升级。
反馈时请附平台、系统版本、阅读模式、来源版本、复现步骤,以及设置 → Debug 中已脱敏的相关日志。请不要公开 Cookie、账号、Authorization、签名下载链接或代理密码。
What's Changed
- [Beta] Venera Community 1.7.0 Beta 1 by @casthan321 in #1
New Contributors
- @casthan321 made their first contribution in #1
Full Changelog: v1.6.5...v1.7.0-beta.1
Venera Community v1.6.5 — 画廊稳定性与连续阅读优化
Venera Community v1.6.5
发布日期:2026-08-13
本项目是已归档 Venera 的非官方社区维护分支。本次版本范围为v1.6.4...v1.6.5。
更新重点
v1.6.5 集中处理两个阅读器问题:
- 画廊模式拖动阅读进度后,返回漫画画面会重新加载或一直显示加载状态。
- 连续模式滚动到新页面时,图片解码、布局变化和网络读取集中发生,造成明显卡顿。
同时完成仓库正式更名后的应用内链接更新,并新增对应回归测试。
本次新增修复
1. 修复画廊模式拖动进度后重新加载
典型触发过程:
- 使用画廊模式阅读;
- 打开阅读工具栏并拖动进度条;
- 点击漫画区域关闭工具栏;
- 当前图片重新显示加载状态,部分情况下会一直转圈。
问题来自内置 photo_view 图片包装层:工具栏显示状态变化会改变继承的媒体布局信息,包装层随后重置内部加载标记;当它再次解析到同一个、已经加载完成的图片流时,会提前返回,却没有清除加载状态。
本版改为:
- 由 Venera 自己的稳定图片组件维护图片生命周期;
PhotoView继续负责缩放、平移和手势;- 避开会错误重置加载状态的图片包装路径;
- 保留现有画廊缩放范围和显示效果;
- 修正创建图片源时使用错误当前页码的问题。
这修复了本次反馈中,已加载图片在进度跳转、关闭工具栏后被加载层重新覆盖的路径。
2. 减少连续模式加载新页面时的卡顿
此前连续模式主要提前下载图片文件,但下一页真正进入可见区域时,仍可能同时发生图片解码、纹理上传和占位布局替换,从而影响滚动。
本版重新设计了预加载策略:
- 只提前解码距离当前位置最近的下一页;
- 更远页面仅预下载压缩后的原始数据;
- 页面逐渐接近时,再把已下载页面提升到解码缓存;
- 将内存预解码限制为一页,避免无界扩大图片内存占用;
- 分离“已请求下载”和“已请求解码”状态,使预下载过的页面之后仍能正确进入解码缓存;
- 磁盘缓存命中后直接返回,不再继续发起重复网络请求;
- 网络图片数据改用低复制的字节缓冲方式,减少大图下载过程中的重复内存拷贝;
- 主动消费后台预下载数据流,避免未监听的进度事件持续堆积;
- 延迟预热前检查页面是否仍然存在,避免页面退出后的无效工作。
该优化针对已经复现的连续阅读加载路径,不宣称固定的性能提升百分比。实际体验仍会受设备性能、图片分辨率、漫画源和网络状况影响。
3. 项目链接和版本信息
- 应用版本更新至
1.6.5; - Android 构建号更新为
1650–1653; - 应用内社区仓库、更新检查和下载入口已切换到
casthan321/Venera-Community; - README 徽章和 Android 发布文档同步更新。
与原版共存
社区版使用独立 Android 应用身份:
| 项目 | 原版 Venera | Venera Community |
|---|---|---|
| Android 包名 | com.github.wgh136.venera |
io.github.casthan321.venera |
| 应用名称和图标 | 原版 | 独立社区版标识 |
| Provider authority | 原版命名空间 | 应用自身命名空间 |
| 网页链接处理 | 原版行为 | 已移除上游网页深链处理,减少选择冲突 |
| 文本分享入口 | 支持 | 保留 |
因此本版本按与原版并存的方式构建,不会把原版 APK 当作升级包覆盖。两个应用的 Android 私有数据默认相互独立。
已经安装旧版 Venera Community 的用户,可使用同一签名、较高版本码的 v1.6.5 进行社区版原位升级。若手动让两个应用使用同一个外部存储目录,升级或切换前仍建议备份数据。
APK 下载选择
| 文件 | 大小 | 适用设备 |
|---|---|---|
| venera-community-1.6.5.apk | 45.56 MiB | 通用 APK;不确定设备架构时请选择此项 |
| venera-community-1.6.5-arm64-v8a.apk | 18.07 MiB | 大多数现代 64 位 Android 手机和平板 |
| venera-community-1.6.5-armeabi-v7a.apk | 17.44 MiB | 较旧的 32 位 ARM 设备 |
| venera-community-1.6.5-x86_64.apk | 18.45 MiB | x86_64 Android 模拟器或少量 x86 设备 |
venera-community-r8-mapping.zip 是用于分析混淆后崩溃堆栈的开发者文件,不是安装包。
构建与验证
本版本已通过:
- Flutter 3.41.4 / Dart 3.11.1;
- 77 个 Dart 文件的格式检查,0 个需要修改;
- 完整
flutter analyze --no-pub,无问题; - 完整
flutter test --no-pub,143 项全部通过; - 本次新增的 5 项画廊生命周期及连续预加载回归测试;
- GitHub Actions 正式签名构建;
- R8 release 混淆构建;
- 通用、
armeabi-v7a、arm64-v8a和x86_64四种 APK 构建; - Android 包名、应用标签、Provider authority 和版本号检查;
- APK Signature Scheme v2 验证;
- Release 下载文件 SHA-256 复核;
- R8
mapping.txt生成和归档。
版本号对应关系:
| APK | Version Code |
|---|---|
| 通用 | 1650 |
| armeabi-v7a | 1651 |
| arm64-v8a | 1652 |
| x86_64 | 1653 |
所有 APK 均由社区分支的固定发布证书签名,证书 SHA-256 指纹为:
9cfcda753fddb426bb1b2b5078d140b00085508c937785bbf32c1cfc75a2ea37
SHA-256 校验值
也可以直接下载 SHA256SUMS。
| 文件 | SHA-256 |
|---|---|
venera-community-1.6.5.apk |
da2dab280af08c90be2f2304fafab373ae735f0cdacff8b6cda919d510a0a596 |
venera-community-1.6.5-arm64-v8a.apk |
20eb1a739d51fa9fea43eb17f86958771d771b72a0565e68f319c6fb71e9c3af |
venera-community-1.6.5-armeabi-v7a.apk |
e32087e97d63ecb9cc07d6465cf9e58478e7c5d1bd116c37b5d63d5ddd3a0b24 |
venera-community-1.6.5-x86_64.apk |
3f2b9e4042f9394aaa142cb8504649942c47bc60f3de58170a35992ab2f9f18f |
venera-community-r8-mapping.zip |
02ab61c9c0110bdca4160355e1a00ef2575cef5153244083f5857ffa5bd438b6 |
SHA256SUMS |
708cc1cfa4cb129d904098ca3b760c0e10fa2487b9b7d6a7babb4e2340ae8830 |
社区分支累计维护内容
以下内容是社区分支截至 v1.6.5 的累计修复,不代表全部由 v1.6.5 新增。
阅读器
- 修复连续模式拖动进度条时重复进入滚动动画,导致输入锁未释放、条漫无法继续拖动的问题;
- 修复本版所述画廊模式进度跳转后永久加载问题;
- 优化本版所述连续模式新页面预下载与预解码;
- 修复关闭页面动画后画廊滑动惯性仍然存在的问题(#745);
- 历史阅读页码超过章节实际页数时自动校正;
- 漫画源章节调用长期不返回时,显示可重试超时而不是无限加载(#772、#825);
- 连续滚动开始后立即阻止误触,滚动结束 300 ms 后恢复点击,并消除旧定时器竞争(#680)。
下载与离线阅读
- 下载任务只有在所有选定章节均取得非空图片列表、所有预期页面均存在后才可完成;
- 图片列表调用增加超时;
- 支持依据磁盘已有文件重建部分下载进度;
- 防止旧下载任务的异步回调错误完成较新的任务;
- 图片和封面通过已刷新到磁盘的临时文件提交,减少中断导致的半文件;
- 新下载目录写入身份标记,使任务记录丢失后仍可安全恢复,而不是仅凭标题猜测目录;
- 修复下载章节被误判为导入本地漫画的问题;
- 离线收藏查询改用正确漫画 ID,并校验部分下载、章节页码和
file://路径。
涉及上游报告:#813、#707、#799、#766、#720、#513。
本地文件与存储
- 本地漫画扫描过滤非图片文件;
- 删除操作使用已解析的真实漫画目录;
- 拒绝递归复制到自身和重复迁移;
- Android 不再向外部应用暴露原始
file://URI; - 支持的外部存储和已持久化 SAF 路径通过 DocumentsProvider 打开;
- 无法直接打开时,提供系统目录选择器或安全的路径复制提示;
- 临时不可用的自定义存储路径会保留并重试,不再静默切回默认目录;
- 父目录包含多个章节子目录时,可作为一个带章节漫画导入;
- 回退封面保留完整相对路径。
涉及上游报告:#595、#845、#473、#772、#510、#495。
WebDAV 与数据库
- WebDAV 启动及后台同步失败会转换为应用内结果,不再泄漏未处理异步异常(#771);
- WebDAV 数据库导入采用分阶段复制替换,支持跨磁盘路径,并在替换失败时回滚(#683);
- 历史、收藏和缓存工作线程分别打开并释放自己的 SQLite 连接,不再跨 isolate 共享原生指针;
- 历史写入串行化,对短暂数据库锁进行等待和重试,并在导出或导入前排空写入队列(#733)。
收藏、历史与搜索
- 大型异步收藏查询期间收到的更新通知会合并为补偿刷新;
- 查询错误不再使收藏页面永久停留在加载状态(#768);
- 历史记录中过期的封面链接会从当前漫画详情刷新一次,并回写有效地址(#742);
- 修复 OpenCC 映射资源使用 CRLF 换行时的解析问题;
- 聚合搜索现在会写入搜索历史(#676、#791)。
图片与界面
- GIF87a/GIF89a 原始数据绕过只会解码、重编码单帧的来源脚本,保留动画并避免条漫图像错乱(#693);
- 折叠侧边导航布局保留当前页面标题且不重复顶部操作(#738);
- 收藏页所有快速阅读入口均使用根导航器,阅读器不再残留侧边栏或底栏(#767);
- WebView 代理初始化不再在 Windows 调用 Android 专用 API;
- 代理地址会被规范化,凭据不进入 Chromium 命令行,损坏配置安全回退,身份验证仅发送到配置的代理主机(#762)。
更多逐项状态与验证边界见 维护状态文档。
已知边界
- 本次自动化和 APK 检查期间没有连接真实 Android 设备。包名、Provider、签名和版本关系已经验证,但原版与社区版实际双装、社区版原位升级、OEM 文件管理器、SAF 和可移除 SD 卡行为仍需要真实设备复测。
- 连续阅读流畅度还会受到设备 GPU、图片尺寸、图片编码、漫画源脚本和网络环境影响。
- 高分辨率 AVIF 的失败依赖 Android 设备编解码器,目前仍缺少经过真实设备验证的回退解码器(#798)。
- 已经损坏的 SQLite 数据库暂不执行自动隔离或恢复,以避免静默删除用户数据。
- 来源配置问题、缺少复现步骤的问题,以及必须依赖特定系统或硬件的问题,不会在没有测试依据时宣称已经修复。
问题反馈建议
若仍能复现问题,请在 Issue 中尽量提供:
- 手机型号和 Android 版本;
- 安装的 APK 架构;
- Venera Community 版本;
- 阅读模式及“预加载图片数量”设置;
- 可复现的漫画源和来源脚本版本,请勿提交账号、Cookie 或密钥;
- 从打开漫画开始的完整复现步骤;
- 录屏、截图和脱敏后的日志。
源码维护基线为上游提交 a0eba91。
完整差异: v1.6.4...v1.6.5