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 执行。
Contributors
@FurudeRika123, @MCDFsteve, @makabaka11