Skip to content

LX Music Sync Server v1.9.4

Choose a tag to compare

@github-actions github-actions released this 10 Jun 16:28
· 90 commits to main since this release

v1.9.4 (2026-06-10)

🌟 新增功能

  • 安全 VM 模式管理:
    • VM 模式配置: 在系统设置的“权限与缓存限制”卡片中新增“允许 VM 模式运行脚本”开关,默认关闭,极大提升安全性。
    • 强制管理员验证: 任何上传、导入或启用原生 VM 模式自定义源脚本的操作,都必须附带正确的管理员密码验证,彻底阻断了通过单条命令行(如 curl)进行越权上传和运行 VM 模式的攻击路径。
    • 可视化 VM 标识: 自定义音源列表中,以原生 VM 模式运行的音源其后面会新增明显的 VM 标签提示,更易于管理员进行安全审计。
    • VM Settings
  • 设置界面分块优化:
    • 设置界面去英文: 移除设置界面中多余的英文标识。
    • 分块设置布局: 对设置界面进行合理分块排版,让选项设置更加一目了然,结构层次更明晰。
    • Setting Separation
  • 播放失败处理策略优先级:
    • 策略优先级自定义: 新增“播放失败策略优先级”设置,支持灵活配置失败处理逻辑的优先级(例如选择 切换平台 -> 降低音质 -> 下一首),以提供更好的自动纠错机制。
    • Playback Failure Priority
  • 默认入口设置:
    • 默认Tab自定义: 新增“默认入口”设置,支持自定义刷新或打开网页时默认显示的Tab页面(支持“搜索”、“歌单”、“排行榜”、“我的收藏(默认)”、“本地音乐”)。
    • 状态恢复逻辑适配: 即使开启了“自动恢复进度”,系统在静默恢复播放状态时也绝不会强制跳转走用户设定的默认入口页面。
    • Default Entry
  • 群晖 SPK 分发:
    • 引入 SPK 打包子模块 (#190 @yy505149): 引入群晖套件打包子模块,支持群晖 SPK 套件分发。

🔧 修复与优化

  • 仅下载模式优化 (#207):
    • 选项文本更新: 仅下载模式下,单曲下载菜单选项由“缓存到服务器”改为“下载到服务器”。
    • 忽略缓存重复下载: 在仅下载模式下,即使歌曲在 cache 目录中已缓存,依旧允许用户继续进入下一步选择新的音质并下载到 /music 目录。
    • Download Server
  • 播放器自动换源优化:
    • 检索优先级更新: 将播放失败自动换源的目标平台检索优先级调整为:网易云 ➔ QQ ➔ 酷我 ➔ 酷狗 ➔ 咪咕
    • 解析源平台校验: 自动匹配时仅在当前已启用的自定义源所支持的平台中搜索,防止匹配到无法解析的音乐源。
    • 无解跳过提示: 如果当前没有其他可解析的目标平台,则直接跳过跨平台搜索并弹出“未找到自定义源下支持的平台下的对应歌曲”提示。
  • 系统安全与路径过滤:
    • 防路径穿越 (#223 @sebastiondev): 修复了 elFinder 文件管理器中 decode() 方法的路径穿越风险,防止未授权访问或读取系统文件。
  • 文件存储安全与健壮性:
    • 安全重命名回退 (#226 @bobcc4): 修复了 fileCache 部分场景下的移动与命名安全问题,引入了安全命名回退和调试日志,并确保目标路径目录存在。
  • 本地歌曲与缓存性能优化 (#186):
    • 歌曲封面缓存机制: 在服务端引入封面缓存。提取音频文件的 ID3 封面时,计算文件名 MD5 并将图片数据与 MIME 类型缓存至 cover_cache 目录。后续请求直接读取缓存文件,彻底避免了重复读取并解析大音频文件标签的高开销操作,同时在删除歌曲缓存时自动清理关联封面缓存。
    • 异步扫描与事件循环让渡: 将本地歌曲扫描(syncCacheIndex)的递归文件遍历改写为异步 I/O 模式(使用 fs.promises),并在遍历循环中加入 setImmediate 机制主动释放/让渡 Node.js 事件循环,避免了超大音乐库扫描时导致的服务器主线程阻塞,保证了高并发下的服务响应速度。
    • 客户端浏览器缓存优化: 移除了本地音乐及缓存列表中封面图 URL 携带的 &t=Date.now() 时间戳,允许浏览器正常对封面图片进行强缓存,显著降低了重复的 HTTP 缓存请求开销,使歌曲列表页面加载和滚动渲染更加丝滑。
  • 前端样式重构:
    • 暗色模式适配: 为部分内容适配不同的系统主题配色并保障对比度。
    • 样式提取与分离: 将 index.html 头部 <style> 样式块提取并搬移到了独立的外部样式表 app.css 中,大幅缩减了主页面的 HTML 体积,便于后续样式的独立维护。
    • 歌曲重映射(#199,#195): 本地音乐面板新增“歌曲重映射”功能按钮,激活后可以针对已关联好的歌曲显示手动关联/重新关联按钮,提升本地音乐与云端数据的映射灵活度。