Skip to content

MusicBox-0.3.0

Choose a tag to compare

@github-actions github-actions released this 01 Aug 04:39
· 101 commits to main since this release
40f60c5

MusicBox fork v0.3.0

本版本基于上游尚未正式发布的 0.2.6 开发版本,并在此基础上对播放列表、歌单、收藏、音乐库、播放历史及媒体库页面进行了大幅重构和完善。

上游 0.2.6 的主要更新

上游仓库在 0.2.5 之后完成了较大规模的底层重构,主要包括:

  • 将主进程及大量渲染进程代码从 JavaScript 迁移至 TypeScript。
  • 重构主进程、IPC、渲染进程及插件系统的组织方式。
  • 重新整理 Rust WASAPI 音频模块。
  • 升级 Electron、TypeScript 及相关依赖。
  • 补充项目架构、插件 API 和开发文档。

本 fork 的主要更新

播放列表系统

  • 重构播放列表,使用显式且可编辑的歌曲顺序。
  • 顺序播放和随机播放现在主要决定歌曲如何加入播放列表,不再持续打乱或重排已有列表。
  • 支持在播放列表中拖动歌曲调整顺序。
  • 改善当前播放歌曲、播放索引与列表状态之间的同步。

歌曲右键菜单与播放操作

  • 扩展单选及多选歌曲的右键菜单。
  • 支持单选和多选歌曲的“下一首播放”/“下N首播放”。
  • 支持将多首歌曲批量加入歌单和播放列表。
  • 重新设计歌单页面的播放操作,使整张歌单的播放、追加和随机播放行为更加清晰。

收藏功能

  • 实装上游未正式实现的收藏功能。
  • 收藏现在作为系统特殊歌单进行管理。
  • 播放器中的心形按钮现已可正常收藏或取消收藏歌曲。
  • 统一收藏、全部歌曲和普通歌单页面的列表样式及交互。

大型列表与封面性能

  • 重构歌曲列表和封面加载流程。
  • 对大型歌单及大型音乐库使用列表虚拟化,减少同时渲染的内容。
  • 对封面加载进行限流和任务取消,切换页面后不再继续执行无用任务。
  • 使用缓存管理和后台线程解析内嵌封面,降低页面卡顿。
  • 修复异步封面任务覆盖当前页面内容的问题。

音乐库来源与文件导入

  • 重构音乐库来源模型,区分文件夹来源和单文件来源。
  • 重新设计从文件向音乐库及歌单添加歌曲的操作,支持批量添加音乐文件。
  • 支持将文件夹绑定到歌单,绑定歌单可随文件夹扫描结果同步更新。
  • 支持从文件夹直接创建绑定歌单。
  • 每次扫描时识别并清理已经失效的文件夹或歌单绑定。

播放历史与统计

  • 重新构建播放历史记录功能。
  • 重做“最近播放”页面的数据来源和展示逻辑。
  • 修复重复记录、歌曲识别错误和索引错乱问题。
  • 更新统计页面使用的播放数据。
  • 改善播放历史的持久化及旧数据迁移。

系统媒体会话

  • 接入操作系统媒体会话。
  • 支持通过键盘媒体键播放、暂停及切换歌曲。
  • 播放状态可与系统媒体控制同步。
  • Web Audio 模式下可在 Windows 媒体浮层中显示歌曲信息。

艺术家与专辑页面

  • 重构原“星河”艺术家页面。
  • 移除原页面中性能开销较大的展示方式。
  • 艺术家和专辑页面现在采用统一的卡片和列表样式。
  • 艺术家、专辑及其他歌曲集合使用统一的详情页。
  • 增加列表视图、排序方式及专辑是否按艺术家分组设置。

歌单聚合页面

  • 新增独立的歌单聚合页面。
  • 歌单卡片样式与艺术家、专辑页面保持一致。
  • 支持在聚合页面中播放、重命名、删除及管理歌单。

歌单封面管理

  • 扩展歌单封面管理功能,改为统一的歌单封面快照存储。
  • 支持从歌单内歌曲的封面中选择歌单封面。
  • 支持自动设置或更新歌单封面,可在设置关闭。
  • 修复无封面歌曲和无封面歌单的回退显示。

文件夹管理页面

  • 新增音乐文件夹管理及浏览页面。
  • 页面复用艺术家、专辑和歌单的统一视觉样式。
  • 可以查看每个文件夹来源中的歌曲。
  • 可以直接从文件夹创建歌单。
  • 可以查看和管理文件夹已绑定的歌单。

稳定性修复

  • 修复页面切换后搜索状态残留的问题。
  • 取消已经失效的搜索和异步加载任务。
  • 修复未知路由和页面状态未正确清理的问题。
  • 修复启动阶段覆盖歌单缓存的问题。
  • 修复收藏按钮、最近播放索引、封面回退等问题。

升级说明

本版本调整了播放列表、收藏、歌单成员、音乐库来源和播放历史等数据结构,并包含旧数据迁移逻辑。

升级前仍建议备份 MusicBox 用户数据目录。首次启动时,大型音乐库可能需要重新扫描或重建部分缓存。

插件系统和部分内部模块也经过了调整。依赖 MusicBox 内部实现的旧插件可能需要适配,使用正式 Extension API 的插件受影响较小。

感谢上游作者 asxez 创建 MusicBox,并完成 0.2.6 阶段的 TypeScript 和底层架构重构。