Releases: wzgrx/pure_live
Release list
Pure Live v3.1.8
Pure Live v3.1.8
v3.1.8 build 4121 是 Android / Windows 录制会话时间一致性补丁。本轮没有同步上游代码。Windows v3.1.7 实播回归证明虎牙画质、线路、弹幕和跨短签名续接录制均能工作,但同时发现录制中心把用户首次点击开始录制的时间错误地改成了最近一次 FFmpeg 自动续接时间。
录制会话时间
- 将“用户录制会话开始时间”与“当前 FFmpeg 尝试文件前缀”拆成两个独立状态。
- 用户明确开始或重新开始录制时只写入一次会话时间;CDN 短签名更新、自动重连和换线只轮换尝试前缀,不再修改界面时间。
- 会话时间进入任务持久化 schema 6,应用重启和录制中心恢复后仍显示原始开始时间。
- 旧版任务没有新字段时回退到既有
createTime,升级读取保持兼容;显式重新录制会生成新的会话时间。 - 每次原生尝试仍保留毫秒级唯一文件前缀,分段文件隔离和失败分片恢复语义不变。
实播验证与交付
- v3.1.7 Windows 虎牙实播中完成
蓝光20M → 蓝光8M、线路1 → 线路2切换,视频与弹幕持续;短录跨一次签名续接得到两个可解码的 H.264 1080p60 + AAC MP4,总媒体时长 195.550334 秒、总大小 83,138,772 bytes。 - 新增确定性回归,覆盖自动续接保留会话时间、尝试前缀轮换、累计大小/时长不清零、持久化恢复和显式重启重置;聚焦回归 13/13 通过。
- 校正 Twitch 公开接口门禁,使目录探针与客户端实际
ZH/KO语言合同一致;不再用当前会触发 GraphQL 部分服务错误的EN/ZH/KO组合制造误报。 - Android
arm64-v8a与 Windows x64 从同一冻结源码串行构建;Windows 提供可选择安装目录的安装程序和便携 ZIP。 - 本轮只修复已实测的录制中心时间语义,不改播放器、平台线路算法、竖屏几何或用户配置目录。
完整根因、兼容边界、测试证据和交付信息见 docs/STAGE_UPDATE_3_1_8.md。
Pure Live v3.1.7
Pure Live v3.1.7
v3.1.7 build 4120 是 Android / Windows 虎牙醒目留言事件身份补丁。本轮没有同步上游代码。v3.1.6 已解决“通知先到、留言板快照后更新”造成的手动刷新问题,但继续审计发现旧值对象只按用户名、文字和金额判等:同一用户稍后再次发送完全相同内容和金额时,即使是虎牙服务器生成的新付费事件,也会被整场直播的已发送集合误认为旧消息。
虎牙醒目留言事件身份
- 读取虎牙留言板结构中原本已经存在但未使用的
lMessageId,转换为带平台前缀的稳定事件 ID。 - 重复 WUP 快照使用同一事件 ID,因此仍只显示一次;后续真实事件即使用户名、文字和金额相同,只要服务器 ID 不同就会正常显示。
- 不使用由“当前时间 + 剩余倒计时”重建的开始时间作为身份,避免每次网络拉取的毫秒偏差把同一留言误判成新事件。
- UI 列表与控制器共享同一事件身份;无平台 ID 的旧适配器继续使用原有兼容键,不改变其他平台行为。
- 虎牙传输层最多保留 512 个已发送身份,长时间观看不会让去重集合持续无界增长;切换房间和停止弹幕仍立即清空会话状态。
验证与交付
- 新增两项确定性回归:同一事件在重建时间发生漂移时仍合并;两个可见内容完全相同但事件 ID 不同的付费留言都能进入列表。
- 虎牙协议、跨房间代际隔离与醒目留言到期策略聚焦测试 11/11 通过;最终 Analyze 0 issue、Flutter 全量回归 680/680、公开平台接口 42/42、全仓审计 3898 个已跟踪文件且 0 error。
- Android
arm64-v8a与 Windows x64 从同一冻结源码串行构建;Windows 同时提供可选择安装目录的安装程序和便携 ZIP。 - 自动测试证明事件身份、快照合并、有界缓存和生命周期边界;真实付费醒目留言仍依赖外部直播事件,继续保留为实播观察项。
- 冻结源码与
v3.1.7标签均指向13d4d4094a200ff43b2ec98e986818e7a58a1fc3。Android APK 为 118,451,707 bytes,SHA-2567233a01ad90e207df483fb63b125ac7d9ab33f9811b6b797f78e3b5397969a7a;Windows 便携 ZIP 为 73,781,511 bytes,SHA-256ac174263d67c3d131656c69043d21562b5c4fd85512c5fca970e23ef2c603013;Windows 安装程序为 56,046,835 bytes,SHA-25699b3f1983aac9025d4f6da41a4dde52bdb135c1afa55921e25dcbb08b76f81f3。 - Android 为 Release 编译模式、本地调试证书签名,文件名和元数据明确标记
debug-signed;Windows 资产未配置 Authenticode,元数据明确标记unsigned。
完整根因、影响范围、回归证据、安装包与校验信息见 docs/STAGE_UPDATE_3_1_7.md。
Pure Live v3.1.6
Pure Live v3.1.6
v3.1.6 build 4119 是 Android / Windows 虎牙醒目留言实时刷新补丁。本轮没有同步上游代码;修复来自上游 Issue liuchuancong#828 的共享协议时序问题:虎牙 WebSocket 的 URI 2001314 只表示留言板已经发生变化,通知到达时 WUP getHeadLineMessageBoard 的快照可能尚未更新。旧实现只查询一次、直接取最后一项并在弹幕解码链中等待网络请求,因此会出现留言延迟到手动刷新才显示、空列表异常,以及普通弹幕被慢请求连带阻塞。
虎牙醒目留言
- 将通知处理改为后台非阻塞协调,不再在 WebSocket 解码函数中等待 WUP 请求。
- 采用
0 / 600 / 1800 / 4000 ms的有界补偿窗口;每次请求最多等待 3 秒,覆盖“推送先到、留言板稍后可见”的最终一致性时序,同时避免无限轮询。 - 用房间会话代际隔离补偿任务;切换房间或停止弹幕后,旧任务不会把消息写入新房间。
- 合并短时间内的重复通知,对完整快照做值相等去重;同一醒目留言只进入列表一次。
- 留言板为空时返回空列表,不再调用
.last;接口失败或超时只结束本轮补偿,不中断普通弹幕通道。
验证与交付
- 新增确定性协议回归:模拟首轮 WUP 为空、后续快照出现,验证 WebSocket 解码先返回而醒目留言随后自动出现;模拟重复快照,验证只发送一次。
- 虎牙协议、跨房间代际隔离与醒目留言到期策略聚焦测试 9/9 通过;最终 Analyze 0 issue、Flutter 全量回归 678/678、公开平台接口 42/42、全仓审计 3896 个已跟踪文件且 0 error。
- Android
arm64-v8a与 Windows x64 从同一提交串行构建;Windows 同时提供可选择安装目录的安装程序和便携 ZIP。 - 自动测试证明时序协调、去重、空板和生命周期边界;真实付费醒目留言仍依赖外部直播事件,发布说明保留这项实播观察边界。
- 冻结源码/标签提交为
398d182dcb02a3587a6ae74e35f258f7d3eebbc9。Android APK 为 118,450,755 bytes,SHA-2560736e9cb2844a2bbfbccf22eaba5e0da8f0ed11410437b35c4faad6abe171a17;Windows 便携 ZIP 为 72,313,273 bytes,SHA-2560e7423e84e9ec694aabffadf4de0f1eff1392ef3d72c946117fd4fbd99da758e;Windows 安装程序为 56,046,319 bytes,SHA-2561a2fa055ec2497469493a98e224cca9fbba8bccd9c0e2d62bb1024460ae9068a。 - Android 为 Release 编译模式、本地调试证书签名,文件名和元数据明确标记
debug-signed;Windows 资产未配置 Authenticode,元数据明确标记unsigned。
完整根因、影响范围、回归证据、安装包与校验信息见 docs/STAGE_UPDATE_3_1_6.md。
Pure Live v3.1.5
Pure Live v3.1.5
v3.1.5 build 4118 是 Android / Windows 双平台一致性发布。本轮没有同步上游,也没有改动播放器、平台接口、弹幕或录制业务逻辑;目标是把已通过回归的 v3.1.4 Android 平板关注刷新修复与 v3.1.3 Windows 多画面/全屏修复冻结到同一版本、同一源码提交和同一 GitHub Release,避免用户需要跨两个发布页判断安装包。
Android arm64-v8a
- 平板横屏继续按移动平台保留逐平台下拉刷新,不再因视口宽度超过 680 px 被错误归入桌面分支。
- 手机竖屏、短列表、空列表与平台左右切换逻辑不变;网格列数仍按宽度响应,刷新交互按输入平台判断。
- APK 只包含
arm64-v8a;Release 模式、Manifest 版本、Flutter 资源、关键原生库和 SHA-256 由本机构建门禁核验。
Windows x64
- 多画面真全屏保留安全区内的显式退出按钮,同时支持
Escape和既有系统返回链路。 - 延续真全屏窗口边界、普通窗口/最大化状态恢复、安装目录数据保护和单实例启动修复。
- 提供可选择安装目录的 Inno Setup 安装程序与便携 ZIP;不会把开发符号、旧插件残留或运行期用户数据打进安装包。
质量与发布边界
- 功能源码沿用 v3.1.4 冻结前完整门禁:Analyze 0 issue、Flutter 675/675、公开平台接口 42/42、全仓审计 3895 个文件且 0 error;本轮只修改版本、发布说明和平台打包元数据。
- Android 与 Windows 按构建策略串行执行,不并发占用 Gradle、Java、Dart、Flutter 或 CMake 资源。
- 两个平台均从冻结提交
dacd2daf07e1817923a02d04c7d3519c97df829a串行构建,结束后重型进程数均为 0;发布配置测试 4/4 通过。 - Android APK 为
118449355bytes,SHA-256c4380eefa002b525e1fabeadd7ecb5c616b3b5972af232dccc2fc86ba2e8ff39;本地调试证书状态已在文件名和元数据标注debug-signed。 - Windows 便携 ZIP 为
72310038bytes,SHA-256b07741c5acab25b56e252aaf9286c8f3e2f79b7114d0e56813ce1e8a5dc3bd0b;安装程序为56041592bytes,SHA-2566d00beb58d66dd7e0b1f8ee201ffa98923b7efd7563bf1ce2752911ecf4a38ae。两者未配置 Authenticode,元数据明确记录unsigned。 - Windows ZIP 内容审计 1301 项:必需 EXE、WebView2 loader、Flutter manifest 和 v3.1.5 更新源齐全,开发符号、退役 QuickJS DLL 与用户运行数据均为 0。
完整范围、版本关系、证据和回滚边界见 docs/STAGE_UPDATE_3_1_5.md。
Pure Live v3.1.4
Pure Live v3.1.4
v3.1.4 build 4117 是 Android 平板横屏关注页下拉刷新补丁。本轮不合并上游代码;近期 Issue liuchuancong#826 的现象在维护分支同样存在,根因是关注网格用 width > 680 直接关闭逐平台 EasyRefresh。Android 平板横屏会超过这个阈值,但仍属于触控移动平台,于是外层刷新已因嵌套 TabBarView 主动关闭,内层刷新又被宽度判断移除,最终只剩一个裸 GridView。
平板横屏关注刷新
- 宽度继续只决定网格列数和图片缓存范围,不再独自决定刷新交互类型。
- Android/iOS 无论横竖屏和窗口宽度都保留逐平台纵向下拉刷新;Windows 等桌面宽屏继续使用分页、重试按钮和键盘入口。
- 每个平台页仍持有独立
EasyRefresh.builder,并把 builder 返回的 physics 直接安装到唯一纵向滚动视图;平台左右切换与纵向下拉不会共用手势轴。 - 空列表与短列表继续使用
AlwaysScrollableScrollPhysics,72 px 释放时显示 Material 指示器并调用同一串行刷新事务。
回归与影响边界
- 新增宽屏移动设备、宽屏桌面和窄窗口三种判定回归;既有真实 pointer drag 测试继续验证动画、释放和回调,不用直接调用 callback 代替手势证据。
- 聚焦
test/favorite_pull_refresh_test.dart2/2 通过;冻结前 Analyze 0 issue、完整 Flutter 675/675、公开平台接口 42/42、全仓审计 3895 个文件且 0 error。 - 完整质量记录:
local-artifacts/build-records/20260831T171731254Z-quality-full.json。 - Android Release 模式 APK 完成单一 arm64-v8a、版本
3.1.4 (6117)、Flutter 资源与关键原生库核验;大小118445503bytes,SHA-256e52eaf396ac233528cc4930bdf70368c9715798d28905f6339e6a05fb0b12691。 - PJZ110 / Android 16 已在不切走用户当前前台应用的情况下覆盖安装成功;手机手势与平板横屏运行证据继续单独记录,不用安装成功替代交互测试。
- 本轮只修改关注网格的刷新包装条件;启动核验、卡片单次发布、平台状态、播放器、弹幕、录制和 Windows 列表行为均未改动。
- Android
arm64-v8a进入正式构建与安装验证;Windows 继续使用 v3.1.3 安装程序和便携 ZIP。
完整根因、近期 Issue 分类、测试和交付证据见 docs/STAGE_UPDATE_3_1_4.md、docs/FAVORITE_REFRESH_DESIGN.md 与 docs/ISSUE_AUDIT_2026_08_31.md。
Pure Live v3.1.3
Pure Live v3.1.3
v3.1.3 build 4116 是 Android / Windows 多画面真全屏退出补丁。本轮没有同步上游代码;问题来自本仓库多画面页面把真全屏设计成“完全没有界面控件”,只留下 Android 系统返回手势和 Windows Escape。因此用户点击任意画面时只会按既有逻辑切换声音来源,界面本身没有可发现的退出路径。
多画面真全屏退出
- 真全屏左上角增加 44×44 半透明退出按钮,避让刘海、挖孔和系统安全区;视频网格仍然铺满整个屏幕。
- 按钮只占用自身触控区域,其他区域继续响应格子选择与声音来源切换,不用牺牲原有多画面操作。
- Android 系统侧边返回和 Windows
Escape继续作为等价回退路径;三种入口都只从真全屏恢复到普通多画面页面,不直接销毁多路播放器。 - 独立封装全屏表面,统一按钮样式、语义标签和命中边界,避免后续布局重构再次删掉退出入口。
根因与验证
- Issue liuchuancong#824 的复现描述与当前代码一致:
_DisplayMode.fullscreen明确只渲染网格,没有任何 chrome;格子点击则由音频焦点逻辑处理。 - 新增
test/multiview_fullscreen_surface_test.dart,验证安全区位置、退出回调、视频内容去除上下系统留白,以及按钮外点击仍落到网格。 - 冻结前完整门禁通过:Analyze 0 issue、Flutter 674/674、公开平台接口 42/42、全仓审计 0 error;质量记录为
20260831T153514548Z-quality-full.json。 - Android arm64-v8a 与 Windows x64 从同一冻结提交串行构建;安装包附构建元数据与 SHA-256。
- 完整根因、影响边界与回归记录见
docs/STAGE_UPDATE_3_1_3.md和docs/ISSUE_AUDIT_2026_08_31.md。
Pure Live v3.1.2
Pure Live v3.1.2
v3.1.2 build 4115 是 Android / Windows 全屏一致性与平台接口韧性补丁。本轮没有同步上游代码;Windows 根因来自隐藏标题栏初始化与 window_manager 0.5.2 原生 frameless 状态的交互,不是 v3.1.1 多画面业务代码。旧版会把 Dart 侧标记为全屏,但原生窗口没有改变样式或边界,因此仍保留标题栏、任务栏和普通页面布局。
Windows 真全屏
- Windows 进入全屏前重新应用同一隐藏标题栏样式,清除插件原生层遗留的
frameless阻断状态,再执行系统全屏边界切换。 - 全屏窗口现在覆盖当前显示器完整区域;标题栏、任务栏和普通直播间侧栏不会继续占位。
Escape退出后,普通窗口精确恢复进入前的位置和尺寸;从最大化进入时恢复原最大化状态。- macOS、Linux 继续直接调用既有全屏路径,不执行 Windows 专用准备步骤。
网易 CC 分类接口迁移兼容
- 完整回归发现 CC 旧分类 JSON 地址已在部分网络直接跳转到网易官方
ds.163.com/gliveHTML 页面;旧实现会在jsonDecode处终止分类页加载。 - 分类解析改为防御式合同:旧 JSON 仍可解析全部游戏子分类;遇到官方迁移跳转、HTML、空响应或部分 schema 时保留“全部 / 端游 / 手游 / 其他”稳定入口,推荐直播、搜索、房间和播放链路互不连带失败。
- 公开接口探针同时识别旧 JSON 合同与官方 Glive 迁移目标,仍会拒绝第三方重定向和未知 HTML;新增解析回归覆盖 HTML 回退与旧 JSON 分组。
回归与运行验证
- 新增
test/windows_fullscreen_transition_test.dart,锁定 Windows 的“标题栏准备 → 原生全屏”调用顺序,并验证其他桌面平台不执行 Windows 专用步骤。 - 聚焦 Analyze 为 0 issue;Windows 全屏与 PiP 呈现测试 4/4 通过,记录为
20260831T091722185Z-quality-focused.json。 - Windows Debug 在 3840×2400、250% 缩放、200 Hz 显示器完成真实直播复验:全屏截图从普通窗口
1155×703或最大化1536×912变为完整显示器1536×960;原生窗口边界为(0,0)-(1536,960)。 - 普通窗口全屏往返后边界精确恢复为
(188,104)-(1347,809);最大化往返后IsZoomed=true,进程全程响应。 - Android arm64-v8a、Windows x64 安装程序和便携 ZIP 从同一冻结提交串行构建,并附构建元数据与 SHA-256。
证据与边界
- 完整根因、旧/新行为、验证矩阵和回滚点见
docs/STAGE_UPDATE_3_1_2.md。 - 本修复解决 Windows 原生窗口进入全屏失败;平台直播接口、主播下播、CDN 波动和账号风控仍按各平台运行时诊断处理。
发布后正式包复验(2026-08-31)
- Android:PJZ110 / Android 16 覆盖升级保留关注数据;10 次冷启动全部成功,293~332 ms、平均 306.2 ms,0 FATAL/ANR。分类/搜索标签硬边界、网易 CC 官方 HTML 迁移回退、120 Hz 三档即时切换与冷启动持久化均通过。
- Twitch:直连搜索明确显示局部失败;临时启用手机可达的本机 Clash 应用代理后,Twitch 原生搜索和在线人数正常。测试结束已恢复原代理地址及关闭状态。
- Windows:3840×2400、200 Hz 环境确认三档刷新率即时生效和持久化;普通窗口、最大化两条真全屏往返均覆盖完整显示器并精确恢复,播放和弹幕持续。
- 详细证据已更新到 master:ANDROID_RUNTIME_AUDIT_3_1_2.md、WINDOWS_RUNTIME_AUDIT_3_1_2.md、ACCEPTANCE_MATRIX_3_1_0.md。
- Release 二进制和源码标签仍对应冻结提交 4d79e5f;发布后运行审计文档提交为 �4e40124,没有替换安装包内容。
Pure Live v3.1.1
Pure Live v3.1.1
v3.1.1 build 4114 是 Android / Windows 多画面体验补丁。本轮没有合并新的上游提交;修复 Issue liuchuancong#820 中只有 1+3 布局可调音量、其他布局弹幕按钮不工作,以及格子重建后音量丢失的问题。Android arm64-v8a、Windows x64 安装程序和便携 ZIP 从同一源码提交串行构建。
多画面声音与音量
- 1×1、1×2、2×2、1+3 四种布局都增加当前声音来源格的音量入口;没有有效播放格时入口保持禁用。
- 声音来源改为唯一响应式状态,音频启用、工具栏、音量弹窗和弹幕目标不再依赖多处手动刷新。
- 音量弹窗显示房间名称、实时百分比与滑杆;复用普通直播间的按房间音量存储,移除格子、重建播放器或重新进入后继续恢复用户设置。
- 音量存储异常只进入诊断,不会阻断播放、切台或播放器释放。
多画面弹幕
- 1+3 布局继续把弹幕绑定到大画面;1×1、1×2、2×2 改为绑定当前声音来源格。
- 切换声音来源会同步切换弹幕会话与渲染目标,旧格不会残留同一房间弹幕。
- 修复顶部弹幕按钮在非 1+3 布局只改变视觉状态、实际没有连接和渲染目标的结构问题。
验证与交付
- 聚焦 Analyze 为 0 issue,
test/multiview_test.dart45/45 通过;新增 2×2 弹幕目标切换与按房间音量重建恢复测试。 - 冻结源码完整门禁通过:Analyze 0 issue、Flutter 669/669、公开平台接口 42/42、全仓审计 0 error。
- Windows Debug 2×2 页面确认全布局音量入口实际渲染;v3.0.1 以来的跨模式比例、播放器释放和录制状态回归继续进入完整门禁。
- v3.1.0 Windows 便携正式包补充 Bilibili 播放/弹幕/设置/画质/录制与 10 分钟资源采样证据,详细记录见
docs/ACCEPTANCE_MATRIX_3_1_0.md。 - APK、Windows 安装程序和便携 ZIP 均附独立构建元数据及 SHA-256;完整根因、改动和证据边界见
docs/STAGE_UPDATE_3_1_1.md与docs/ISSUE_AUDIT_2026_08_31.md。
发布后 Windows 正式包复验
- GitHub Release 的 Windows x64 便携包已在隔离数据目录完成真实联网复验:2×2 同时播放 Letme 与虎牙赛事两路直播,声音来源可在两格间切换,音量面板显示当前房间。
- Letme 房间音量从 100% 调至 54%,切换四种布局、正常退出并重启进程后,重新选入同一房间仍恢复 54%。
- 两路播放采样 182.3 秒、19 点且全程响应;Working Set 峰值 493.19 MiB。退出多画面约 5 秒后降至 238.70 MiB,线程 325→154、句柄 2032→1266;关闭应用后进程消失。
- 详细操作、指标与证据边界见
docs/V3_1_1_WINDOWS_RUNTIME_REPORT_2026_08_31.md。在线观察窗内未截获可见聊天消息,因此平台弹幕实时接收仍保留为后续运行观察项。
Pure Live v3.1.0
Pure Live v3.1.0
v3.1.0 build 4113 是 Android / Windows 稳定性与网络一致性更新。本轮没有合并新的上游提交;以维护分支 v3.0.24 为基线,集中交付后台播放策略、Bilibili 弹幕有界解析、统一应用代理、启动竞态与本机构建门禁修复。Android arm64-v8a、Windows x64 安装程序和便携 ZIP 从同一源码提交串行构建。
后台播放、纯音频与助眠
- 修复关闭后台播放后,手动纯音频仍隐式取得后台保活权限的问题;耳机按钮只改变当前房间呈现/功耗模式。
- 后台继续播放现在只接受两个明确意图:用户打开后台播放,或用户已经启动带停止计时的助眠会话。
- 主动系统 PiP 继续播放,普通退后台按总开关暂停;回前台恢复和计时停止使用同一策略边界。
- Android 16 实机四组合已核对媒体状态、CPU/Wi-Fi lock、回前台恢复及 1 分钟到点资源释放。
Bilibili 与实时弹幕
- Bilibili 多包及 zlib/Brotli 嵌套协议增加传输大小、解压输出、帧数和嵌套深度硬边界;零长度、截断或压缩放大帧不会形成死循环或无限内存增长。
- 当前坏帧只终止当前 WebSocket 消息解析,后一条正常弹幕仍可继续进入列表和画面。
- 用户名优先选择完整富字段,平台返回掩码名时保留完整旧字段回退;观看累计与平台热度继续保持不同指标语义。
- WebSocket 的单连接、静默半开检测、有界轮换和房间关闭代次隔离保持回归覆盖。
代理、封面与弹幕连接
- 修复应用代理只覆盖 Dio 的结构缺口:平台 API、封面/头像缓存和所有平台弹幕 WebSocket 现在读取同一套实时应用代理设置。
- 播放器媒体流继续由独立播放器代理控制,接口代理不会无意改写解码链路。
- 中文输入法输入
127。0。0。1等全角地址时即时转换为 ASCII;初始化、备份导入和保存同样归一化。 - 代理主机、端口与 IPv6 指令统一校验;分号/换行注入、空主机和越界端口保持直连。
- 虎牙当前公开房间协议探针完成 WebSocket 101、分组注册、心跳并收到 command 22;Android Debug 已验证代理下目录、封面和头像一致加载。
启动、测试与交付
- 应用首次启动等待设置服务完成注册,避免升级或新安装时首帧先于依赖初始化而出现白屏/重复启动。
- Android UI 自动化补充启动稳定等待、控制层确定性唤出和包版本校验;后台播放、助眠和 PiP 证据写入 v3.1.0 验收矩阵。
- APK 门禁核对包名、版本、唯一 arm64 ABI、Flutter 资源、FFmpegKit、SQLite、MediaKit、应用原生库、签名状态和 SHA-256。
- Windows 安装程序继续支持自选目录,并同时提供便携 ZIP;两个平台分别记录构建命令、耗时、峰值资源、产物路径和校验文件。
- 冻结源码完成一次 Analyze(0 issue)、完整 Flutter 回归(667/667)、公开平台接口探针(42/42)和全仓审计(3884 个文件、0 error);质量记录为
20260831T032317652Z-quality-full.json。
证据与已知边界
- 完整证据和根因:
docs/STAGE_UPDATE_3_1_0.md、docs/NETWORK_PROXY_AUDIT_3_1_0.md、docs/ISSUE_AUDIT_2026_08_31.md、docs/ACCEPTANCE_MATRIX_3_1_0.md。 - 公开接口探针只证明当前匿名 API 合同;平台账号风控、地区限制、主播下播、CDN 与用户网络波动仍按运行时诊断处理。
- Linux、macOS 和 iOS 本轮没有重新构建,继续使用已有 Release 资产。
Pure Live v3.0.24
Pure Live v3.0.24
v3.0.24 build 4112 集中交付虎牙现网播放会话、Windows 长播连续性、直播状态、多画面离线空态和录制续租修复。本轮串行发布 Android arm64-v8a 与 Windows x64 安装包;Android 使用平台原生播放路径,Windows 对虎牙短连接增加首帧门控的双播放器暖切换。
虎牙匿名取流与服务器会话
- 对齐虎牙当前网页匿名观看流程:账号登录只改变观众 UID/Cookie,匿名观看仍可使用;主播 UID、网页观众 UID 与 Windows HYSDK 身份彻底分离。
- 保留 64 位观众 UID,高 32 位不再被截断;TARS UA、
iAppId=66、iLoopTime=0、FLV/HLS 独立 AntiCode 和线路顺序均按当前官方播放器合同锁定。 - AntiCode 改为在服务端完整
fm模板原位替换占位符;模板畸形、签名过期或单线路失败只淘汰对应候选,不再清空同一快照中的其他健康线路。 - 综合
wsTime、WUPiExpireTime、seqid签发时间和活动传输寿命判断刷新边界;同一个旧 URL 不会因晚读取元数据而获得新的有效窗口。 - 匿名登录瞬态失败不再永久缓存临时身份;随机 UID 生成保持在 Dart 合法范围,后续请求可重新取得官方匿名身份。
Windows 长播无黑场续接
- 虎牙活动传输按本地 40 秒与服务器声明刷新点中的较早值启动候选连接;候选完成 DNS、TLS、解复用并实际呈现首帧后才接管,旧画面在提交前持续显示。
- 固定复用两个 MediaKit/D3D 输出交替续接,旧 session 的迟到
complete/buffering/error由代次栅栏丢弃;相同 URL 的死亡传输也会真正重新打开。 - 0×0 或首帧超时的候选只释放候选自身,不替换最后一个有效纹理;覆盖页面返回时强制重新提交 viewport,隐藏期间暂停呈现帧看门狗而不破坏网络、音频和弹幕会话。
- 原生帧探针只发布帧进度,不再逐帧重复广播相同播放状态;暖机后的播放器、VideoOutput 与 Texture 数量保持固定,减少换源抖动和资源增长。
直播状态、多画面与返回
- 卡片、进入房间和多画面统一使用权威直播状态;明确下播、接口未知和解析失败分开表示,应用冷启动及恢复前台会重新核验,旧的“正在直播”缓存不会继续冒充当前状态。
- 多画面加入下播房间时显示可重新选台的业务空态,不请求画质或播放地址,也不创建原生播放器;替换为开播房间后再初始化并成对释放资源。
- Windows 离线直播页保持页面级 Escape 返回;播放器尚未创建时不会读取残留的全屏状态或注册无效音量、录制快捷键。
录制租约与恢复
- 原生输入建立后的
startAck成为续租计时边界;刷新点前预取同画质、同线路的新签名,到点静默切换输入,不把租约续接误报为用户停止、下播或录制失败。 - 每次输入使用独立目录和前缀,上一轮 TS 先登记为持久化待处理组,新输入优先建立;真正停止录制后再统一封装,避免同步 remux 造成十余秒录制缺口。
- 任务 schema 升级并保存待处理产物,异常退出后仍可继续整理;诊断只记录脱敏后的时间边界和失败分类。
验证与证据边界
- 虎牙当前房间的 5 条 CDN、FLV/HLS 共 10 个入口完成媒体头探测;Windows 公开房间完成 8/8 次提前续接,后 7 次暖切换耗时约 0.5~1.8 秒,第 8 次提交后仍持续出帧。
- Windows 虎牙录制连续 342 秒并跨越三次主动输入切换,最终 4 个 H.264/AAC MP4 总时长与界面累计一致,残留 TS 为 0。
- 最终源码
flutter analyze为 0 issue,完整 Flutter 回归 661/661、公开接口探针 42/42 通过;Android APK 内容门禁与 Windows 安装器/便携包继续按产物阶段独立核验。真实服务器和极端网络仍按脱敏诊断继续观察。