Skip to content

Release v2.0.7

Latest

Choose a tag to compare

@github-actions github-actions released this 02 Nov 12:03
· 1 commit to main since this release

[2.0.7] - 2026-11-02

新功能

  • M4B 内嵌章节:本地单文件 M4B/M4A 会自动读取文件内的章节表(Nero chpl、章节音轨或 Audible JSON 标签),扫描后把一本书拆成与内嵌章节一致的多个章节;章节保存文件内起止时间,Web 与 Flutter 客户端按区间播放、拖动进度并自动切换到下一章。已有存储库在升级后的下次扫描自动补齐,手动调整过章节的书籍保持不变。
  • M4B 元数据全量提取:新增纯 Rust MP4 解析,读取完整 iTunes 标签与自由格式标签(书名、作者、旁白、类型、简介、出版社、出版日期、语言、ASIN、版权、编码器等)、全部封面以及时长、采样率、声道、码率等音频参数;本地 M4B 的书籍信息与封面不再依赖外部 FFprobe。
  • 其他格式章节:非 MP4 格式(如 MP3、FLAC)继续使用原有 FFprobe 路径,并补充读取其内嵌章节信息。
  • 接口:GET /api/v1/books/:id/chapters 在单文件内嵌章节上返回 start_time、end_time(毫秒)。

修复与优化

  • Web 加载性能:页面按需加载,减少首次打开时下载的代码;优化兼容版构建,保留原有旧版浏览器支持。
  • 依赖安全更新:更新前端及构建工具依赖,修复多项已知安全漏洞。
  • 插件配置保存:修复 AI 刮削等插件使用中英文配置标题、说明时无法打开或保存配置的问题,保留多语言显示与配置校验。
  • Web 连续播放:修复暂停或拖动到片尾时意外切章、章节结束事件重复跳集的问题;短章节保留完整播放,转码音频按正确的时间偏移跳过片头。
  • Web 会话恢复:记住密码并重新登录一次后,登录过期可自动恢复同一服务器账号的会话;临时网络错误不会直接退出,退出或切换账号后不会被旧请求重新登录。
  • Web 后台同步:进度连接支持心跳超时重连和返回前台时检测,清理旧连接及定时器,减少长时间后台后的同步中断。
  • Web 界面流畅度:减少系列详情和嵌入播放器页面随播放进度产生的无关刷新。
  • Web 章节入口:手机和桌面的播放小窗可直接打开章节列表,无需先展开播放器;按钮样式与其他播放控件保持一致。
  • 沉浸式播放器(横屏/大屏):Web 展开播放器在 lg(≥1024px)及以上改为左右分栏,顶部显示书名与作者/演播(两者都存在时一起显示,只有一项时只显示该项),左侧为大封面,章节名放在右侧功能按钮上方;右侧保持快捷操作、进度条与播放控制的原有位置和顺序;手机与竖屏仍为封面下章节名的单列布局。
  • 沉浸式播放器章节列表:新增临时正序/倒序切换,只反转当前分组内的章节,分组展示顺序保持不变;从第一组进入默认正序,从最后一组进入默认逆序;不写入设置,也不影响书籍详情。保存设置仍只负责分组展示顺序。
  • 书籍详情章节列表:章节区改为通栏,取消卡片左右内边距、页面左右边距与分组箭头的外扩偏移,章节行在小屏和大屏都使用接近通栏的宽度、仅保留 8/12px 小边距;小屏隐藏行首的章节序号(与 Flutter 小屏一致);标题、排序、正文/番外切换与章节范围分组吸顶显示,滚动时章节条目在吸顶栏下方继续滚动;小屏下吸顶栏的字号、图标、按钮内边距与分组标签同步压缩,与章节行比例一致;小屏顶部标题栏、底部导航与迷你播放器保持原有独立占位,不会被吸顶栏覆盖。

升级提示

  • 升级后对存储库执行一次扫描即可让单文件 M4B 的内嵌章节生效(增量扫描会自动识别尚未拆分的书籍),需要立即重建时可执行完整扫描。
  • 客户端需同步升级到支持章节 start_time/end_time 的版本,才能按内嵌章节区间播放。