Files
Entryway_Release/RELEASE_NOTES.md
T

228 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Entryway Release Notes
## 手机版 v0.16.0 / TV 版 v0.15.0 - 2026-07-19
> ⚡ **缓存优先、按需刷新,故障服务器不再拖垮全局** — 双端首页优先恢复按账号隔离的本地快照;进入子媒体库时只在缓存超过 30 分钟后强制获取最新数据,同时保留手动刷新能力。单个服务器不可用时,其他已保存服务器仍可正常进入。
### 手机版首页与媒体库
- **首页完整快照**:精选轮播、继续观看、下一集、我的媒体和各媒体库分区按服务器与用户隔离持久化,启动和切回首页时先显示缓存,再在后台分区更新。
- **局部更新合并**:进入子媒体库成功刷新后,只替换首页缓存中对应媒体库的内容,并异步刷新精选轮播,不再等待整页重新获取。
- **30 分钟子库缓存**:缓存未满 30 分钟时进入媒体库立即显示现有内容且不重复请求;超过时前台刷新,用户手动下拉可随时强制刷新。
- **分页缓存一致性**:已加载分页会写入磁盘缓存,但不会延长首屏数据的 30 分钟新鲜度;刷新或分页失败均保留已有内容。
- **返回位置修复**:从媒体库或详情页返回首页时恢复原有滚动位置,不再强制跳回精选轮播顶部。
### TV 首页与媒体库
- **TV 首页快照**:我的媒体、继续观看、收藏及各库最新内容使用按账号和服务器隔离的持久化快照;分区请求互不阻塞,单个媒体库超时不会清空其缓存行。
- **TV 子库刷新策略**:与手机版一致采用 30 分钟缓存窗口;过期时前台刷新,遥控器可直接触发显式刷新,分页不会伪造新的刷新时间。
- **遥控器位置与焦点**:返回首页保留纵向滚动状态,后台刷新不再强制抢回首项焦点;空库或首次请求失败时默认聚焦刷新按钮。
- **跨服缓存隔离**:缓存身份同时包含账号、完整服务器地址和用户 ID,并使用稳定编码或散列生成缓存键,避免不同服务器误用同一份内容。
### 服务器故障恢复
- **冷启动不再联网验凭据**:启动时直接恢复本地会话,DNS、TLS、超时或服务端暂时不可用不会清除账号,也不会把应用锁回服务器录入页。
- **保存账号恢复入口**:兼容旧版本已经清掉当前会话的情况;登录页可直接进入已保存账号列表,切换到其他正常服务器。
- **失败相互隔离**:刷新失败只影响当前服务器与当前分区,缓存和其他已保存服务器继续可用;退出和删除仍保持显式、可预期的行为。
### APK
- 手机版:`entryway-debug-0.16.0.apk`
- TV 版:`Entryway-tv-debug-0.15.0.apk`
### 构建信息
- 手机版:`versionName 0.16.0``versionCode 35`
- TV 版:`versionName 0.15.0``versionCode 34`
## 手机版 v0.15.0 / TV 版 v0.14.0 - 2026-07-19
> 💿 **双端播放内核与 ISO 能力增强** — 手机版和 TV 版接入可解析 DVD / Blu-ray 的自构建 mpv 内核、JNI 主标题读取与本地 Range 代理;同时补齐 TV 弹幕、MPV 字幕、直链播放性能和跨端视觉统一。
### DVD / Blu-ray ISO 与双内核
- **实验性原盘 ISO 播放**:支持未加密 DVD / Blu-ray ISO。手机版可识别已下载到本机的原盘文件;手机和 TV 可对支持 HTTP Range 的远程 ISO 建立可随机读取的播放链路。
- **原盘增强 mpv 内核**:以兼容现有 `mpv-android-lib 0.1.12` API 的自构建 AAR 替换 Maven 版本,加入 `libdvdread``libdvdnav``libudfread``libbluray`,覆盖四种 Android ABI,并保留 16 KiB 页面兼容。
- **JNI 主标题代理**:新增原生 JNI 模块,自动选择 Blu-ray 主标题或 DVD 最长标题,再通过仅监听 `127.0.0.1`、带随机令牌的 HTTP Range 代理交给 mpv 播放。
- **失败回退**:上游不支持 Range、原盘解析失败或检测到加密时,在用户允许服务器转码的前提下自动回退到服务器媒体流。
- **内核路由统一**:新增共享播放内核能力模型和选择策略;原始 ISO 不再误交给 ExoPlayer,普通视频仍按用户首选内核起播。
- **自动容错切换**:ExoPlayer 遇到不支持的封装或解码器故障时,可保留进度并单次切换至 mpv;鉴权、网络和普通 I/O 错误不会触发无意义的内核循环。
- **安全退出与切片取消**:切集、切内核和退出播放器会中止尚未结束的 Range 探测、头尾预取及原生打开,并按安全顺序释放 mpv、代理和原盘源。
### 手机版播放体验
- **默认内核设置**:播放器设置新增 ExoPlayer / mpv 默认播放内核选择;播放器内临时切换不会覆盖默认偏好。
- **Dolby Vision 软件回退**mpv 硬解循环新增 `DV-SW` 模式,通过 `gpu-next` 和软件解码为部分显示异常的 Dolby Vision / HDR 文件提供会话级诊断回退。
- **mpv 卡顿优化**:减少主线程 JNI 属性读取,改进状态缓存、轨道刷新与字幕切换调度,降低起播、拖动和切换字幕时的停顿。
- **播放进度上报修复**:严格保证 Start、Progress、Stopped 顺序,并在退出前捕获最终位置,避免快速暂停或销毁时向服务器回报错误进度。
- **首页过渡修复**:从当前精选背景图底缘提取环境色,使 Hero、渐隐区和下方内容共享同一背景,消除轮播与媒体分区之间的色带接缝。
### TV 弹幕与字幕
- **完整 DandanPlay 弹幕**:TV 播放器新增自动匹配、动漫搜索、剧集选择、本地弹幕、缓存与重新匹配,视频播放不再等待弹幕网络请求。
- **遥控器弹幕设置**:新增滚动 / 顶部 / 底部弹幕、字号、透明度、速度、显示区域、时间偏移、屏蔽词、重复合并、防重叠、热力图、简繁转换及 Canvas / SurfaceView 等设置。
- **双内核弹幕连续性**:暂停、倍速、跳转、切集以及 ExoPlayer / mpv 切换均跟随实际播放时钟,保留已匹配弹幕和设置。
- **MPV 字幕链路补齐**:同步手机版的 CJK 字体、编码回退和 ASS 兼容配置;外挂字幕等待真实轨道出现后再选择,手动切换立即生效。
- **原生字幕格式保留**:继续由 mpv/libass 渲染 ASS、PGS、VobSub 等格式,并改进服务器字幕索引到 mpv 轨道的精确映射。
- **播放结束判定修复**:替换文件、停止和错误事件不再被误判为自然播放完成,避免错误跳集或重复上报。
### 直链、网络与兼容性
- **双端直链提速**:手机和 TV 统一通过带鉴权的稳定播放入口解析最终 CDN 地址,减少重复探测,并避免把服务端凭据带到外部 CDN。
- **短效链接刷新**:切换内核或重载播放器时可刷新过期的签名直链,降低长时间停留后起播失败。
- **子路径服务器修复**:修复 Emby / Jellyfin 部署在 `/emby` 等子路径时,服务端返回的根相对播放地址丢失前缀的问题。
- **日志脱敏与 UA 统一**:播放探测日志不再输出完整鉴权 URL、Token 或服务端错误正文,手机和 TV 使用统一 Entryway User-Agent。
- **更新源容错**:应用更新检查优先使用 Gitea Release,失败时回退 GitHub。
### 视觉与产品入口
- **跨端设计统一**:手机和 TV 统一语义颜色、排版、卡片、焦点环、进度色和空间层级;TV 搜索、媒体库、详情、播放器菜单等页面同步调整。
- **TV 登录页精简**:扫码录入区域收敛为二维码与局域网扫码提示,减少无关说明。
- **双语产品官网**:新增响应式中英文官网、下载入口、无 JavaScript 兜底、SEO / 分享元数据、无障碍规则和 NAS 部署配置;本次同步更新双端版本与下载地址。
### 兼容性与验证说明
- 不包含 `libdvdcss``libaacs``libbdplus`,仅支持未加密原盘。
- 远程 ISO 的源站必须正确支持单段 HTTP Range;不支持时需开启服务器转码。
- 未提供 DVD / Blu-ray 类型元数据的通用 ISO 不会猜测盘型,将走服务器回退链路。
- 原盘模块已通过 Range/JNI/回退策略单元测试和双端 APK 构建;真实设备上的 DVD / Blu-ray ISO 端到端样本验证尚待完成,因此本版本仍将该能力标记为实验性。
### APK
- 手机版:`entryway-debug-0.15.0.apk`
- TV 版:`Entryway-tv-debug-0.14.0.apk`
### 构建信息
- 手机版:`versionName 0.15.0``versionCode 34`
- TV 版:`versionName 0.14.0``versionCode 33`
## 手机版 v0.14.0 / TV 版 v0.13.2 - 2026-07-11
> 💬 **手机版弹幕功能正式上线** — 接入 DandanPlay 弹幕匹配、加载、显示和完整设置体系,同时改善 MPV 字幕渲染与切换体验。TV 版本次无代码变更,继续提供 v0.13.2。
### 手机版弹幕
- 支持按文件哈希与文件名自动匹配,也可搜索动漫、手动选择剧集或载入本地弹幕。
- 完整设置集中到弹幕设置页,支持行数、字号、透明度、速度、显示区域、时间偏移、关键词屏蔽、重复合并、防重叠、热力图、简繁转换及 Canvas / SurfaceView 模式。
- 修复 SurfaceView 弹幕阻断播放器点击和手势的问题。
- 已匹配媒体复用持久化映射,候选详情并发获取,大体积 JSON 后台解析。
- 弹幕内容改用跟随播放器缓存上限的 LRU 缓存,仅超限时逐出,映射关系永久保留。
### 手机版 MPV 字幕
- 修复 Android 字体族配置,补充 CJK 回退、编码识别与 ASS 兼容参数。
- 字幕切换直接写入 `sid`,后台校验状态,减少切换时的界面卡顿。
- 保留 MPV/libass 对 ASS 特效和 PGS、VobSub 位图字幕的原生支持。
### APK
- 手机版:`entryway-debug-0.14.0.apk`
- TV 版(本次无变更):`Entryway-tv-debug-0.13.2.apk`
### 构建信息
- 手机版:`versionName 0.14.0``versionCode 33`
- TV 版:`versionName 0.13.2``versionCode 32`
## v0.8.2 - 2026-04-26
### 手机版更新
- **首页与媒体库视觉重构**:继续向 Hills 风格靠拢,优化首页精选轮播、我的媒体卡片、媒体目录标题入口和列表过渡效果,减少深浅主题切换时的突兀感
- **搜索页体验重做**:将搜索页从海报轮播改为更轻量的文字推荐入口,并限制搜索结果只展示电影和剧集,避免直接展示到单集
- **概览页逻辑修复**:媒体目录概览页恢复为展示电影/剧集层级,不再直接铺开所有最终单集;同时修复浅色主题下排序/筛选弹窗未选中项文字不可见的问题
- **点击热区优化**:首页与目录概览页的影视卡片点击范围扩展到标题区域,减少只点海报才能进入详情的误操作
- **详情页与主题细节修复**:修复剧集详情页分季海报底部异常灰色阴影,并统一部分页面在浅色/深色主题下的背景与文字对比
- **GitHub 版本检查**:设置页版本信息接入 `Entryway_Release` 最新发布检测,当前版本一致时显示“已是最新版”,发现手机版 APK 更新时显示下载按钮并调用系统下载器下载
### TV 版更新
- **新增 Entryway TV 正式模块**:引入独立 `tv-app`,包名为 `com.entryway.tv`,不再复用手机版布局外壳,借鉴 OpenEmby TV 界面并引入 Entryway 内核核心
- **TV 登录与服务器录入**:首次启动支持同局域网手机扫码录入服务器,成功添加后自动进入服务器,并保留服务器切换与新增入口
- **客厅端首页与详情体验**:迁移并优化 TV 首页、媒体库、概览页、详情页与遥控器焦点效果,补充 Logo、深色模式标签对比度、继续观看标题格式和媒体库封面展示
- **TV 播放器增强**:接入 Entryway 的 Exo 播放解析链路,并在不破坏 OpenEmby 播放器 UI 的前提下接入 `MpvPlaybackEngine` 作为第二内核,补齐左右键快进快退、进度条、暂停图标、顶部 OSD、菜单呼出、音轨/字幕/内核切换等体验
- **TV 搜索页重做**:新增遥控器全键盘搜索、二维码手机输入、服务器筛选与电影/剧集结果卡片展示,并修复焦点高亮、按钮裁切和浅色文字可读性问题
- **TV 首页加载优化与缓存兜底**:首页先展示轻量媒体库列表,再异步加载前几个库和完整库内容;完整刷新成功后写入本地缓存,网络异常时优先用缓存兜底
- **TV 品牌与更新检测**:应用名、Logo、UA、`X-Emby-Client` 与版本检查均切换为 Entryway TV,并指向 `Entryway_Release` 的 TV 版 APK
### APK
- 手机版:`entryway-debug-0.8.2.apk`
- TV 版:`Entryway-tv-debug-0.8.2.apk`
### 构建信息
- `versionName`: `0.8.2`
- `versionCode`: `25`
## v0.8.1 - 2026-04-23
### 首页与服务器详情页加载优化
- **媒体库两段式加载**:首页和服务器详情页先快速展示前 6 个媒体库,随后后台异步补齐完整媒体库列表,避免首屏等待过久或后续媒体库完全不显示
- **精选轮播提速**:精选轮播不再强制等待 Logo 与背景图全部解析完成;背景图可用后即展示内容,Logo 后续加载补齐
- **轮播兜底展示优化**:当条目没有 Logo 或 Logo 加载较慢时,使用片名文字兜底,减少空白骨架停留时间
- **图片预取降噪**:收紧首页图片预取并发和首批预取数量,降低进入首页时的网络与解码竞争,让关键内容优先加载
- **精选数据轻量化**:精选轮播请求数量从 10 条缩减为 6 条,减少随机推荐和首屏图片解析成本
### 播放与调试链路收敛
- **起播诊断写盘关闭**:默认关闭 debug 包中的播放诊断文件写入,避免起播阶段产生额外 I/O
- **既有播放修复保留**:延续 v0.8.0 的 NextEmby 稳定流入口、认证参数补齐、Exo 外挂字幕修复和字幕浮窗文案修正
### 构建信息
- `versionName`: `0.8.1`
- `versionCode`: `24`
## v0.8.0 - 2026-04-23
## ▶️ 播放链路与 NextEmby 兼容性增强
- **起播请求精简**:生产环境移除额外的 `getPlaybackInfoRaw()` 诊断请求,减少起播时无意义的接口往返
- **详情快照复用**:详情页、下载页和投屏链路优先复用已有 `BaseItemDto`,显著降低播放器兜底 `getItemById()` 的触发频率
- **Emby 稳定流入口**Emby / NextEmby 播放改为优先使用稳定的 `Videos/{id}/stream` 入口,并保留认证信息,避免被服务端识别为无效身份预加载
- **熔断快速止损**:识别 `请重新登录``禁止回源``防穿透` 等 NextEmby 熔断信号后立即停止放大重试,减少短时间重复请求
## 💬 外挂字幕与播放器可用性修复
- **Exo 外挂字幕修复**:外置字幕改为优先使用标准 `Videos/.../Subtitles/.../Stream.xxx` 地址,并对 `ass/ssa/subrip` 做更稳的格式请求策略
- **mpv 外挂字幕支持**:新增 mpv 运行时外挂字幕注入,补齐此前部分 `srt/sub/ass` 无法显示的问题
- **字幕入口统一鉴权**:Exo 与 mpv 的外挂字幕链路统一补足服务端可识别的鉴权参数,避免字幕流单独失败
## 🗂️ 详情页与目录体验优化
- **媒体目录排序修复**:首页和服务器卡片进入的详情页,季列表和剧集目录会跟随用户默认排序偏好,不再退回 Emby 全局默认顺序
- **播放器浮窗文案修正**:字幕切换浮窗现在正确显示“X 个字幕”,不再误用音轨数量文案
## 🛠️ 构建与环境稳定性
- **Gradle JDK 固定**:在项目级固定 `org.gradle.java.home`,修复 Gradle 偶发误用不完整 JRE 导致的 `jlink` 构建失败
- **调试包重新发布**:本次版本升级为 `0.8.0``versionCode` 提升至 `23`
## 🎨 UI 逻辑整体重构
- **多服务器架构**:首页(Home)改为动态服务器切换器,服务器详情页(Server Detail)使用静态头部,两者职责分离
- **私有服务器支持**:新增服务器访问控制,支持标记私有服务器,元数据(`isPrivate``displayName`)通过 `upsertSavedServer()` 持久化
- **导航栏优化**:非 Home/Detail 页面强制显示底部导航栏,修复 FAB 定位和标题在浅色/深色模式下的可见性问题
## 🔗 修复 302 重定向播放问题
- **Nextemby / Redia CDN 直连播放**:全面适配 Nextemby 反向代理的 302 重定向机制,实现 STRM 文件通过 CDN 加速的直连播放
- **Auth 认证修复**:将所有 API 请求的认证前缀从 `Emby` 统一为 `MediaBrowser`,匹配 Nextemby 的拦截要求
- **PlaybackInfo 改为 POST**:使用 POST 请求 + DeviceProfile 请求体获取播放信息,与官方客户端行为一致
- **取消 URL 预探测**:移除播放前的 URL 探测逻辑,直接将流媒体 URL 传递给 ExoPlayer,由播放器自行处理 302 重定向,与 NipaPlay 等成功客户端的实现方式对齐
- **身份验证参数**:在流媒体 URL 中携带 `UserId``MediaSourceId`,确保 Nextemby 能正确识别用户身份
## 🎬 修复 4K 高码率视频播放闪退问题
- **内存溢出修复**:修正 ExoPlayer 缓冲策略,将 `prioritizeTimeOverSizeThresholds``true`(时间优先)改为 `false`(大小优先),并设置 150MB 内存缓冲上限,防止 80Mbps+ 4K 视频因缓冲过大导致 OOM 崩溃
- **协程生命周期修复**:修复播放器界面位置更新协程在 ExoPlayer 释放后仍运行导致的 `CoroutinesInternalError` 崩溃
- **CDN 连接增强**:优化 HTTP 客户端配置,增加读取超时(60s)、启用连接失败自动重试、配置连接池(4连接/5分钟保活),提升大文件流媒体播放的连接稳定性
## 📋 其他改进
- 播放器位置更新频率从 100ms 调整为 250ms,降低 CPU 占用
- 优化服务器列表管理逻辑,支持服务器显示名称自定义