3.0.38
3.0.38 发布说明
变更
由提交历史按类型自动生成:新功能 / Bug 修复 / 优化·重构·依赖 / 文档 / 其他。
变更日志 (v3.0.37..v3.0.38)
新功能
- 13b7bd9 feat(groups): ESPHome 密钥独立弹窗 + 四区块统一「扫描」+ AirPlay 主动扫描
- 838b1e7 feat(sendspin): 升级迁移——旧版插件页全局密钥继承为已连接设备的密钥
- ea6828d feat(sendspin): ESPHome 6053 密钥/音量下放到每台设备,移除插件页全局配置
- af9659e feat(sendspin): 统一「解绑」语义——撤销记住但保留设备行
- 27e4bb4 feat(peer): Web 页面上下线语义——关掉即清内存态,重开原样恢复
- a62c17a feat(sendspin): 播放器页 Sendspin 设备行对齐 DLNA 显示语义
优化 / 重构 / 依赖
- b73ac64 perf(sendspin): 流式解码窗口高水位 60→30 秒,与 MA 对齐
涉及文件与影响面
CHANGELOG.md | 56 ++
backend/package.json | 2 +-
backend/src/db/index.ts | 23 +
backend/src/db/schema.ts | 5 +
backend/src/plugins/types.ts | 3 -
backend/src/routes/api/index.ts | 253 +++++-
backend/src/services/airplay/discovery.ts | 55 +-
backend/src/services/peer.ts | 59 +-
backend/src/services/playerPrefs.ts | 16 +
backend/src/services/plugin/renderers/sendspin.ts | 35 +-
backend/src/services/sendspin/child.ts | 12 +-
backend/src/services/sendspin/childMain.ts | 62 +-
backend/src/services/sendspin/deviceState.test.ts | 290 ++++++-
backend/src/services/sendspin/deviceState.ts | 233 +++++-
.../src/services/sendspin/esphomeBridge.test.ts | 124 ++-
backend/src/services/sendspin/esphomeBridge.ts | 281 +++++--
backend/src/services/sendspin/index.ts | 283 +++++--
backend/src/services/sendspin/ipcProtocol.ts | 8 +-
backend/src/services/sendspin/pluginConfig.test.ts | 41 +-
backend/src/services/sendspin/proxy.ts | 8 +-
backend/src/services/sendspin/streamSource.ts | 11 +-
backend/src/services/sendspin/supervisor.ts | 14 -
backend/src/services/ws/index.ts | 33 +-
backend/tests/airplay/rescan.test.ts | 14 +
backend/tests/routes/peerOffline.test.ts | 174 +++++
backend/tests/routes/sendspinEsphomeDevice.test.ts | 280 +++++++
backend/tests/sendspin/dialTargetForget.test.ts | 189 +++++
backend/tests/services/peerLifecycle.test.ts | 143 ++++
docs/SENDSPIN_MULTIROOM_STREAMING_PLAN.md | 22 +-
frontend/e2e/groups-sendspin.spec.ts | 220 ++++++
frontend/src/components/MfIcon.vue | 4 +-
frontend/src/layouts/MainLayout.vue | 10 +
frontend/src/locales/en-US.json | 54 +-
frontend/src/locales/zh-CN.json | 54 +-
frontend/src/stores/player.ts | 31 +
frontend/src/views/Groups/index.vue | 860 +++++++++++++++++++--
frontend/src/views/admin/Plugins/index.vue | 58 +-
37 files changed, 3514 insertions(+), 506 deletions(-)
镜像
- ghcr.io/ray5378/musicflow:3.0.38 (Docker Hub 同步: ray5378/musicflow:3.0.38)
升级步骤
- 加载项/容器直接拉取最新镜像重建重启即可;数据自动迁移保留。
- 若依赖上一版本新增索引/缓存,首次启动会自动补齐,无需手工操作。
升级步骤(本版专用)
- 服务端(Docker / HA 加载项)
- Docker:
docker compose pull && docker compose up -d - HA 加载项:点「更新」后重启加载项
- 数据与插件配置自动迁移保留,无需手工操作。
- Docker:
- Web 前端:升级后按 Ctrl + Shift + R 强刷一次。本版改了播放器页的按钮布局与弹窗结构,
旧的 JS / 资源缓存会让页面停留在旧样子。 - 客户端配套版本:client 当前最新为 MusicFlow-client v5.0.15(Android apk + Windows setup),
建议同步升级。 - 预览面板 / 功能开关:本次无新增预览面板与功能开关。插件配置页原有
「流式解码(省内存)」开关保持默认开启 —— 本版只把它的滑动窗口高水位由 60 秒收到 30 秒
(与 Music Assistant 的 30 秒对齐),内存上限随之从 ~23MB 降到 ~11.5MB。
本版需要你知道的两点变化
- Sendspin 设备行新增独立的「ESPHome 密钥」入口:原来密钥 / 端口 / 测试连接与设备音量滑杆
挤在同一个弹窗里,现在拆成两个独立弹窗,行内两个按钮各自反映连接状态。
已填过的密钥与设备音量原样保留,不需要重新填写(密钥明文只对具备播放器管理权限的账号回显)。 - seek 回跳的容错略微变小:窗口由 60 秒收窄到 30 秒后,回跳超出窗口会重建解码(约 1 秒空窗)。
日常整曲播放无影响,长曲频繁回拖时可能更常听到这一下空窗。