NipaPlay Release v1.10.13 更新日志
🌟 新特性
- 自定义 User-Agent (UA) 支持 (#712)
- 支持在视频播放 -> “输入链接”串流播放处自定义单次 UA。
- 支持在“设置 -> 网络设置”中配置全局长期有效的 UA。
- 适用于 libmpv、mdk 内核,并支持调用外部播放器(如 mpv/mpv.net 和 VLC)。
- 外部弹幕渲染 (ASS 格式) (#710)
- 支持在调用外部播放器时,将弹幕以 ASS 格式次字幕的形式注入外部播放器(目前 Windows 端已完成测试)。
- 删除匹配历史记录 (#716)
- 将番剧页面“清理记录”中的“清除扫描结果”功能,重构为更全面的“清除匹配信息”功能。
- Cupertino (iOS/macOS) 界面功能补齐 (#705)
- 在 Cupertino 外观设置页面中补齐了“播放器左上角按钮”分组,包含发弹幕、跳过、窗口适配、逐帧后退/前进等控制开关。
⚡ DFM+ 弹幕渲染引擎性能优化 (#708)
- 时间轴与跳变优化:去除了弹幕慢速时间校准机制,改为直接跳变,解决弹幕抽动与重复运动问题。
- 减少内存深拷贝:
build_vertices采用std::mem::take配合引用遍历,避免了每帧对frame_items和tokens的 Vec/String 深拷贝与堆分配。 - 降低阴影分辨率:
SHADOW_RENDER_SCALE常量由 1 降为 0.5,阴影 mask 纹理面积减小 75%,极低画质损耗下大幅减轻 GPU 渲染负载。 - 持久化字形渲染线程池:构建持久的
MsdfWorkerPool并通过mpsc通道接收任务,避免密集新字形加载时频繁 spawn 线程引发的“线程风暴”;引入 2 秒超时保护机制,避免fdsm库死锁引发卡死。 - 避免 atlas 绑定组重复创建:移除了
build_vertices期间每帧创建atlas_bind_group的逻辑,改为构造时和字体切换时才重建绑定组。 - 优化日志 I/O 损耗:移除了
n2log每次写入日志时的flush()同步磁盘操作,且排除了 Release 模式下的过程日志与 format 堆分配。
🎨 界面与体验改进
- 自适应设置 UI 重构 (#707, #717)
- 引入了
lib/settings共享设置内容,统一了桌面/平板端和手机端偏好设置的底层数据源。 - 将手机端弹窗路由统一改为 bottom sheet,手机端设置滑块也相应进行了自适应适配(如 iOS 26+ 采用
AdaptiveSlider)。
- 引入了
- 下拉菜单定位优化 (#719)
- 将
BlurDropdown菜单置于 Overlay 坐标系中,解决开启逻辑 UI 缩放 (UiScaleWrapper) 时,下拉菜单定位偏移偏向右下角的问题。
- 将
🔧 维护与发布流程
- 修复 Flutter 编译错误 (#718, 37f9cdc)
- 修正了
ReorderableListView.builder中因误用onReorderItem参数(应为onReorder)导致的编译挂起问题。 - 补齐了不支持 MDK 平台(unsupported stub)下的
setUserAgent方法空实现。
- 修正了
- 文档维护 (#715)
- 从版本通道文档中移除了 Arch Linux AUR 安装/更新指令,但在 README 中继续保留提示。
- iOS 构建恢复 (#714)
- 恢复了 CI 中 iOS IPA 发布构建任务,迁移至
macos-26执行。
- 恢复了 CI 中 iOS IPA 发布构建任务,迁移至