Skip to content

Changelog ​

All notable changes to this project are documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[v2.13.1] - 2026-10-08 ​

✨ New Features ​

  • ed20db7 - jsplugin: 支持 DLNA 接收所需的网络能力 (commit by @hanxi)

🐛 Bug Fixes ​

  • 76ae4d3 - hls: seek 流增加 Content-Length 与 Range 支持 (commit by @hanxi)
  • 5670554 - jsplugin: 同步 MIoT 对话轮询修复 (commit by @hanxi)
  • fb0d644 - lynx: 同步安卓通知栏歌词修复 (commit by @hanxi)
  • 8797dc3 - jsplugin: 更新 MIoT 切歌复播修复 (commit by @hanxi)
  • 5479a2d - miot: 同步语音序号口令误匹配修复 (commit by @hanxi)
  • 7503495 - miot: 同步播放失败标记恢复修复 (commit by @hanxi)
  • 69bd9e5 - jsplugin: 同步 MIoT 后台返回后状态恢复修复 (commit by @hanxi)
  • ea4f258 - jsplugin: 同步 Lynx Android 插件前台恢复修复 (commit by @hanxi)
  • e3d837b - miot: 更新插件以修复继续播放单曲循环 (commit by @hanxi)
  • 81ea9a5 - dlna: 同步投屏接收兼容与客户端控制修复 (commit by @hanxi)
  • d4cd66b - jsplugin: 修复客户端断开后的插件激活 (commit by @hanxi)
  • 395ff17 - docs: 补齐落地页路由器安装入口 (commit by @hanxi)
  • b4460b4 - clients: 同步投屏修复与错误日志优化 (commit by @hanxi)
  • 38631c2 - lynx: 同步 Android 原生插件加载与恢复验收 (commit by @hanxi)
  • ddd5669 - web: 修复子路径部署时静态资源前缀丢失 (commit by @hanxi)
  • aa59317 - metadata: 同步 MP3 时长精度与 MIoT 尾部切歌修复 (commit by @hanxi)
  • 4dd7ef4 - miot: 同步歌曲搜索状态修复 (commit by @hanxi)
  • 0dadaba - jsplugin: 同步客户端跨仓库发布包支持和开发文档 (commit by @hanxi)
  • 09043ab - jsplugin: 同步根清单空哈希兼容和开发文档 (commit by @hanxi)

📝 Documentation Changes ​

  • 68732b8 - update CHANGELOG for v2.13.0 (commit by @github-actions[bot])
  • bb7c225 - lynx: 同步双语客户端指南与文档站入口 (commit by @hanxi)
  • 5945a02 - lynx: 同步已验证的 dev 发布说明 (commit by @hanxi)
  • 37e1530 - lynx: 同步 Firefox 验收与环境限制记录 (commit by @hanxi)
  • 68d6465 - lynx: 同步 Firefox 音频环境与快捷键验收 (commit by @hanxi)
  • cd1f6fe - lynx: 同步 Android 隔离设备复测记录 (commit by @hanxi)
  • d5df76a - lynx: 同步 Android 系统复制与恢复验收 (commit by @hanxi)
  • 1630290 - plugins: 补充 GitHub topic 自动发现发布提醒 (commit by @hanxi)

🔧 Chores ​

  • 2866ec2 - bump clients/player 子模块 (commit by @hanxi)
  • 8d44742 - clients: 同步两端插件管理入口改进 (commit by @hanxi)
  • f9a8c21 - player: 同步商店无限滚动与底部导航避让修复 (commit by @hanxi)
  • 28c899b - lynx: 同步弹窗布局修复 (commit by @hanxi)
  • 724b420 - plugins: 更新 MIot 提前切歌修复 (commit by @hanxi)
  • 782a31a - plugins: 同步 miot 定时任务日志时间修复 (commit by @hanxi)
  • eaa1ad2 - plugins: 更新 miot 子模块修复 DLNA 投屏 (commit by @hanxi)
  • 443dc3b - player: 更新客户端子模块以同步 Windows WebView 窗口位置 (commit by @hanxi)
  • b17bbba - lynx: 同步多音轨与客户端更新实现 (commit by @hanxi)
  • 2517651 - lynx: 同步 Android 设备缓存基础实现 (commit by @hanxi)
  • 7381b77 - lynx: 同步 iOS 设备缓存源码与验证配置 (commit by @hanxi)
  • 12b8270 - lynx: 同步 HarmonyOS 缓存源码与新版兼容声明 (commit by @hanxi)
  • cacf684 - lynx: 同步批量缓存与下载任务管理 (commit by @hanxi)
  • 90c231b - lynx: 同步离线缓存管理与播放 (commit by @hanxi)
  • db167c0 - lynx: 同步 Web 歌单导入导出 (commit by @hanxi)
  • 2be5c7b - lynx: 同步 Web 播放快捷键 (commit by @hanxi)
  • 71220b9 - lynx: 同步剪贴板写入确认 (commit by @hanxi)
  • 30cf5cf - lynx: 同步通知歌词与音频契约补齐批次 (commit by @hanxi)
  • 7d462a4 - lynx: 同步插件前台恢复与 SDK 注册修复 (commit by @hanxi)
  • 78ce304 - lynx: 同步 HarmonyOS 编译修复与验收文档 (commit by @hanxi)
  • fd9c624 - lynx: 同步本地交付包验收记录 (commit by @hanxi)
  • d2f4fb0 - lynx: 同步 WebKit 验收证据 (commit by @hanxi)
  • c1b846d - lynx: 同步原生验收文档与环境条件 (commit by @hanxi)
  • d49aff1 - lynx: 同步 Web 部署实测文档 (commit by @hanxi)
  • 2b8f360 - lynx: 同步插件真实可见性验收文档 (commit by @hanxi)
  • 00d5b78 - lynx: 同步 HarmonyOS 插件模板加载修复 (commit by @hanxi)
  • d1d8938 - lynx: 同步 iOS 模板加载与壳兼容声明 (commit by @hanxi)
  • d3e28c3 - lynx: 同步模板能力回归与新壳交付记录 (commit by @hanxi)
  • dbdfa6f - lynx: 同步 Web 子路径修复与交付记录 (commit by @hanxi)
  • 96eb82b - lynx: 同步 Android 暂停定位修复与锁屏验收 (commit by @hanxi)
  • b71861d - lynx: 同步封面验收与 Firefox 观察文档 (commit by @hanxi)
  • 9cec269 - plugins: 同步 MIoT 对话轮询优化 (commit by @hanxi)
  • e9b2315 - clients: 同步长歌名滚动开关客户端版本 (commit by @hanxi)
  • f88076d - plugins: 同步 MIoT 状态查询限流修复 (commit by @hanxi)
  • 65f6104 - clients: 同步 GitHub 社区插件发现与原生修复 (commit by @hanxi)
  • 454ba85 - clients: 同步社区插件发布标签兼容修复 (commit by @hanxi)
  • 513483e - clients: 同步 dev 服务端插件兼容规则 (commit by @hanxi)
  • 37afed3 - lynx: 同步自动热更新功能子模块指针 (commit by @hanxi)
  • d8d41c8 - miot: 同步播放兼容设置说明 (commit by @hanxi)
  • a09bbca - release version 2.13.1 (commit by @hanxi)

[v2.13.0] - 2026-09-30 ​

💥 BREAKING CHANGES ​

  • due to 20cf441 - 彻底移除 WebF 渲染引擎支持 (commit by @hanxi):

    声明 renderEngine: "webf" 的插件在新宿主上安装/更新
    会被拒绝;存量已安装条目由客户端回落到系统 WebView。
    songloft-org/songloft#341

✨ New Features ​

  • 2b8bbf2 - jsplugin: 主页插件网格新增自定义排序设置 (commit by @hanxi)
  • 0606c81 - cover: 视频无封面时从视频抽帧兜底 (commit by @hanxi)
  • 0b8c0d2 - jsplugin: songs.create 透传 is_video;同步 player/lynx/sdk 子模块 (commit by @hanxi)
  • e69fe70 - jsplugin: 向插件下发主题外观参数,支撑胶囊播放器等非颜色样式 (commit by @hanxi)

🐛 Bug Fixes ​

  • 93b20b0 - playlist: 歌单歌曲排序增加二级排序键,修复等值行下升降序无效 (commit by @hanxi)
  • 1d34f77 - ci: 修复 Pages 构建与 Release 发布两个失败 (commit by @hanxi)
  • a156dca - jsplugin: 修插件商店 icon 显示为首字符 (commit by @hanxi)
  • 81c582e - rename: 手动编辑同步重命名文件包含歌手前缀 (commit by @hanxi)
  • f8aec42 - backend: 修复关键功能 Bug(MarshalJSON 变异、Logout clientID、随机数安全) (commit by @hanxi)
  • 4c6b219 - jsplugin: 插件安全加固——请求 body、下载、解压、文件追加、进程数限制 (commit by @hanxi)
  • 27bf3c9 - backend: 系统性修复 9 处并发安全问题 (commit by @hanxi)
  • a932463 - handlers: 统一错误处理与 API 响应一致性 (commit by @hanxi)
  • 947a6f5 - backend: 输入校验与资源管理加固(Batch 5) (commit by @hanxi)
  • 002ef2a - scan: 按 mtime 触发扫描重提取;客户端歌词缓存按 updatedAt 失效 (PR #477 by @hanxi)
  • 5b9ef13 - source: 补全音源解析缓存键,避免跨排除集/时长串缓存 (PR #486 by @tangsong404)

♻️ Refactors ​

  • 20f5903 - backend: 代码质量改进(Batch 6) (commit by @hanxi)
  • 20cf441 - 彻底移除 WebF 渲染引擎支持 (commit by @hanxi)

📝 Documentation Changes ​

  • 171e928 - update CHANGELOG for v2.12.1 (commit by @github-actions[bot])
  • 437fc90 - 整理 CHANGELOG.md (commit by @hanxi)
  • c57fb25 - repowiki: 同步 Batch 1-6 代码修改到文档 (commit by @hanxi)
  • 6f27a69 - 全仓库文档与实现一致性同步 (commit by @hanxi)
  • 494b375 - player: 同步胶囊迷你播放器重构后的前端架构说明并 bump 子模块 (commit by @hanxi)
  • c8939d4 - 修正 Linux webview 口径与许可证,跟进 player 子模块 (commit by @hanxi)
  • 3f46307 - 同步落后于代码的文档 (commit by @hanxi)

🔧 Chores ​

  • c6ed3e6 - submodule: 升级 clients/player 与 clients/player-lynx 至插件排序版本 (commit by @hanxi)
  • 033964b - submodules: bump player / player-lynx / tv (commit by @hanxi)
  • a68fbf3 - home: bump player 子模块(首页定位到正在播放歌单) (commit by @hanxi)
  • 449d65f - miot: bump 子模块(诊断日志 + X08E 兼容 + v2026.9.16)
  • e565c66 - miot: 更新子模块指针到 bb1e962 (commit by @hanxi)
  • 06f054a - miot: bump 子模块(播放时支持从歌单删除歌曲) (commit by @hanxi)
  • 4ac6f09 - submodules: 更新 5 个子模块指针 (commit by @hanxi)
  • 6adc74e - submodules: 更新 clients/player 指针修复 CI iOS 构建 (commit by @hanxi)
  • 308bac0 - miot: 升级 miot 插件子模块指针,修复定时任务起始歌曲不刷新 (commit by @hanxi)
  • 5cc57f3 - miot: 升级 miot 插件子模块指针,新增"播放第 N 首"语音口令 (commit by @hanxi)
  • d78fb9e - deps: 升级子模块指针,长歌单添加可拖动滚动条 (commit by @hanxi)
  • 6532d34 - miot: 更新 songloft-plugin-miot 指针至 df0b74c (commit by @hanxi)
  • eb63aee - subs: 更新 miot 与 player 子模块指针至滚动条修复 (commit by @hanxi)
  • c5ca49b - miot: 更新 miot 插件子模块指针至 89e9bd7(切歌尾部校验修复 #481) (commit by @hanxi)
  • 7333a06 - player: 更新 player 子模块指针至 f705992(单尖括号逐字 LRC 支持 #483) (commit by @hanxi)
  • 5f82458 - 更新 player/lynx/miot 子模块指针 (commit by @hanxi)
  • c70c547 - 更新 player/miot 子模块指针(插件主题外观与页面样式优化) (commit by @hanxi)
  • c29b654 - submodule: 更新 player/lynx/tv/toolchain 子模块指针 (commit by @hanxi)
  • 536e764 - release version 2.13.0 (commit by @hanxi)

[v2.12.1] - 2026-09-14 ​

✨ New Features ​

  • fbba7e4 - play-history: 支持 tag 上下文并删标签时级联清理历史 (commit by @hanxi)
  • f98ac60 - 歌曲支持按文件大小排序、指纹失败详情查看、修复 401 重复弹窗 (commit by @hanxi)
  • 3bbdeca - 曲库新增文件夹浏览视图(后端) (commit by @hanxi)
  • 799b0d5 - library: 曲库新增 tag 视图,修复 PUT library-browse 的 400 (commit by @hanxi)
  • 08b9ab7 - theme: 主题包 schema 加独立 glassColor 字段 (commit by @hanxi)
  • 01e4830 - theme: 主题包数据增加 navigationStyle 字段 (commit by @hanxi)
  • fff2188 - playlist: 歌单列表支持按歌单内歌曲来源筛选 (commit by @hanxi)
  • 01a8454 - scan: 多值歌手关联与按歌手检索 (commit by @hanxi)

🐛 Bug Fixes ​

  • 6e1b354 - scan: Windows 路径处理导致重复导入与自动歌单无限循环 (commit by @hanxi)
  • c14cbc6 - playlist: 修复"按一级子目录"自动歌单在绝对路径下不分组 (commit by @hanxi)
  • a551fba - bubble_up 自动歌单越过 music_path 创建上级目录歌单 (PR #428 by @hanxi)
  • 9c27613 - jsplugin: 自动更新在插件忙时推迟热重载 (commit by @hanxi)
  • 75fc772 - jsplugin: songs.create 桥接导入补元数据探测,避免 duration 长期为 0 (commit by @hanxi)
  • e7807ff - play: 转码播放不再阻塞首个请求,实时流补上 Range 支持 (commit by @hanxi)
  • 4e6c9bc - scan: 大曲库扫描流式入库,取消不再丢弃已导入成果 (commit by @hanxi)
  • 67a22ef - playlist: CUE 专辑歌单使用目录封面图片 (commit by @hanxi)
  • 38b837e - jsplugin: 修复 HarmonyOS 插件认证问题 (commit by @hanxi)
  • d9c2a78 - metadata: 优化 ffprobe 远程探测并添加 Range 回退 (PR #456 by @deerwan)
  • 09feebf - mobile: 内嵌后端监听所有网卡,修复本地模式投屏小爱音箱失败 (commit by @hanxi)

⚡ Performance Improvements ​

  • c5f6221 - logs: 日志导出脱敏改并行分块,端点耗时降到七分之一 (commit by @hanxi)

♻️ Refactors ​

  • f5b41d4 - 整理工程目录结构,客户端/插件/工具/集成归类 (commit by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

  • b2ab664 - 更新 songloft-player 子模块指针(歌单排序升降序切换) (commit by @hanxi)
  • 3955bb9 - 更新 songloft-player 子模块(文件夹根视图修复) (commit by @hanxi)
  • c676a4a - bump clients/player-lynx — P1b 设置行彩色色调图标 (commit by @hanxi)
  • c648c4a - bump clients/player-lynx — P2 SongRow Apple 曲目行形态 (commit by @hanxi)
  • 6d537aa - bump clients/player-lynx — P3 导航度量令牌化 + 配色 (commit by @hanxi)
  • df307dd - bump clients/player-lynx — P4 首页排版 + 统计卡 (commit by @hanxi)
  • c2d0429 - bump clients/player-lynx — P5 歌单列表与详情 (commit by @hanxi)
  • fffdea9 - bump clients/player-lynx — P6 播放器迁 Apple (commit by @hanxi)
  • fee14a9 - bump clients/player-lynx — P7 登录页迁 Apple (commit by @hanxi)
  • b8ea573 - bump clients/player-lynx — P8 对话框/抽屉/菜单 + 全仓别名扫荡 (commit by @hanxi)
  • 92447c9 - bump clients/player-lynx — P9 硬编码 px 清零 (commit by @hanxi)
  • 0a6eeb9 - bump clients/player-lynx — P10 删除 Muse 颜色别名层 (commit by @hanxi)
  • 216af44 - bump clients/player-lynx — Docker Chrome 真机验证记录 (commit by @hanxi)
  • ff1db97 - bump clients/player-lynx — font-role 扫荡删 legacy --font-* (commit by @hanxi)
  • 13fe0ff - bump clients/player-lynx — 修复计划文档中文乱码 (commit by @hanxi)
  • dc923b3 - player: 更新 songloft-player 子模块指针(WebF 桌面端最小化恢复重载修复) (commit by @hanxi)
  • c9a9931 - bump clients/player-lynx — 实机前 Apple 风格五项收尾
  • cac5a30 - bump clients/player-lynx — 登录页全屏白底无卡(Apple 登录式)
  • ad23166 - bump clients/player-lynx — 实机前收尾五项 + 截图审计 + 宽屏侧栏 iPad 化 + 登录页白边修复
  • a5e50e6 - bump clients/player-lynx — 设置圆角对齐 iOS 26 + 外观页全面 iOS 化
  • 6f0c05b - bump clients/player-lynx — 勾选列表选中项去背景只留对勾 + Icon accent 修正
  • 1b37ad2 - bump clients/player-lynx — Icon PALETTES 全部对齐 Apple(完成迁移遗漏)
  • 13b89b5 - bump songloft-plugin-miot 子模块指针(修复语音设置按钮超宽 #440) (commit by @hanxi)
  • c00d8ef - bump clients/player — 宿主页禁掉视口滚动条根治整页抖动 (PR #439 by @hanxi)
  • c29f7f3 - bump clients/player — 曲库宽屏行内与多选工具栏补「管理标签」入口 (PR #441 by @hanxi)
  • 1161ecf - bump clients/player-lynx — 播放队列抽屉改虚拟化 <list>,修 500+ 首打开卡死 (commit by @hanxi)
  • 74fdb6a - bump songloft-plugin-miot 子模块指针(15acf85..d67fe74) (commit by @hanxi)
  • e55b46a - plugins: bump miot 子模块(v2026.9.8 + 歌单回滑到顶空白修复) (commit by @hanxi)
  • 499b37d - deps: 更新 miot 子模块至 0940c11 (commit by @hanxi)
  • 90c20b9 - update player-lynx submodule (title unification + iOS font-scale fix) (commit by @hanxi)
  • aae23a2 - update player-lynx submodule (#9 播放全部队列补全 + mini/全屏播放 UI) (commit by @hanxi)
  • bd60164 - update player-lynx submodule (harmony webview DOM storage patch) (commit by @hanxi)
  • 88cab5d - update player-lynx submodule (auto-apply harmony webview patch) (commit by @hanxi)
  • c2ec614 - bump songloft-plugin-miot for #455 (commit by @hanxi)
  • e2b505e - subrepo: 升级 player-lynx 子模块(插件商店无限滚动) (commit by @hanxi)
  • 96eb892 - bump clients/player to fix lyric race condition (commit by @hanxi)
  • cc05f58 - miot: 更新子模块至 aefb02d (commit by @hanxi)
  • d74ab2e - submodule: 升级 clients/player-lynx 至多歌手编辑版本 (commit by @hanxi)
  • b769f4c - release version 2.12.1 (commit by @hanxi)

[v2.12.0] - 2026-08-31 ​

✨ New Features ​

  • 747468c - jsplugin: 新增 net:insecure-tls 权限,支持 fetch 跳过 TLS 证书校验 (commit by @hanxi)
  • ba43f5b - 自定义歌曲标签功能 (Phase 1) (PR #414 by @hanxi)
  • 636c35f - tags: 标签同步写入音频文件 SONGLOFT_TAGS (PR #414 by @hanxi)
  • 644353e - tags: 开放 JS 插件 tags Bridge API (PR #414 by @hanxi)
  • 5afffc6 - Lynx native rendering — docs, backend validation, and submodule bump (commit by @hanxi)

🐛 Bug Fixes ​

  • 253ac00 - jsplugin: 修复 Docker 环境 MIoT 初始化失败 (commit by @hanxi)
  • 8bc0030 - jsplugin: common.js 公开 favorite 与 invokeHost 出口 (commit by @hanxi)
  • 1275d2e - fingerprint: 修复大曲库重复检测超时 (commit by @hanxi)
  • 393f151 - update github.com/hanxi/tag to include CustomTags field (commit by @hanxi)
  • ab149e3 - nav: 修正底部 Tab 配置限额口径,清理孤儿条目 (PR #416 by @hanxi)
  • ef61d7a - jsplugin: 插件页适配 COEP 宿主与嵌入态滚动条不占宽 (commit by @hanxi)
  • a75a9ff - restore corrupted Chinese characters (U+FFFD mojibake) (commit by @hanxi)
  • 3827bb0 - strip v prefix from version API to prevent "vv2.11.6" display (commit by @hanxi)
  • dcd774e - prevent double v prefix in version display (vv2.11.6) (commit by @hanxi)
  • e9b53af - upgrade: 本地开发构建不再误报有可用更新 (commit by @hanxi)

♻️ Refactors ​

  • 8d52804 - tags: 移除歌单转标签接口,迁移至 tagger 插件 (commit by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

  • 4f5c804 - jsplugin: 更新 MIoT 子模块指针 (commit by @hanxi)
  • faf9811 - 更新 miot 与 player 子模块指针 (commit by @hanxi)
  • 2de3e9a - 更新 miot 子模块指针(修复发版 job 的推送竞态与 tag 指向) (commit by @hanxi)
  • 9a09f15 - 更新 miot 与 player 子模块指针(恢复歌单下拉搜索) (commit by @hanxi)
  • ebbd1a2 - 更新 songloft-player 子模块 (fix #409) (commit by @hanxi)
  • 5e7dd52 - bump songloft-plugin-miot 子模块指针 (commit by @hanxi)
  • 638936d - 更新 songloft-player 子模块指针(修复歌单搜索框首次输入乱跳 #361) (commit by @hanxi)
  • eaca864 - 更新 songloft-player 子模块指针(播放速度按钮改回图标 + Flutter 界面取证 runner) (commit by @hanxi)
  • 1f25011 - 去除品牌名称引用 (commit by @hanxi)
  • 8be28e9 - 更新 songloft-player 子模块指针(首页底部改为曲库统计面板) (commit by @hanxi)
  • 8348d1f - 更新子模块指针(歌单转标签迁移) (commit by @hanxi)
  • 8bc6240 - bump songloft-player (fix Korean tofu on web, #425) (commit by @hanxi)
  • 95217c1 - release version 2.12.0 (commit by @hanxi)

[v2.11.6] - 2026-08-21 ​

✨ New Features ​

  • 31a4d18 - jsplugin: fetch 响应头支持多值无损与标准 Headers 读取方法 (commit by @hanxi)
  • 85d4330 - GET /api/v1/songs/{id}/tracks 音轨枚举端点 (commit by @hanxi)
  • 825f70f - scan: 外部封面图片查找 + 歌单封面优先外部图片 (commit by @hanxi)
  • a954521 - jsplugin: 新增 songs.refreshMetadata 桥接,支持带 Headers 的远程元数据提取 (commit by @hanxi)
  • caecb48 - playlist: 新增歌单置顶接口 (commit by @hanxi)

🐛 Bug Fixes ​

  • 5deae33 - services: MoveFile 跨盘检测兼容 Windows ERROR_NOT_SAME_DEVICE (commit by @hanxi)
  • 25786f9 - app: 加 CORP 头,修 Web 端跨源封面/音频被 COEP 静默阻断 (commit by @hanxi)
  • 6c905f7 - database: :memory: 限制为单连接,修并发用例随机报 no such table (commit by @hanxi)
  • 27ded61 - fileutil: 修复 Windows 编译错误,syscall.ERROR_NOT_SAME_DEVICE 未定义 (commit by @hanxi)
  • f474555 - ci: 修复发版时 tag run 被 dev run 阻塞导致正式版延迟发布 (commit by @hanxi)

⚡ Performance Improvements ​

  • 3ef2073 - cover: 缩略图磁盘缓存,避免重复解码+缩放 (commit by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

  • cb8f5ef - 更新 songloft-player 子模块指针 (commit by @hanxi)
  • 15a62a1 - docker: entrypoint 启动时输出完整版本信息 (commit by @hanxi)
  • 14fe330 - 更新 songloft-player 子模块(播放速度按钮样式优化) (commit by @hanxi)
  • c9d31d4 - bump plugin-toolchain 子模块(songs.refreshMetadata 类型) (commit by @hanxi)
  • 8146f43 - player: 更新 songloft-player 子模块指针 (commit by @hanxi)
  • 8316d53 - jsplugin: 更新 songloft-plugin-miot 子模块指针 (commit by @hanxi)
  • 52f098d - miot: 更新 songloft-plugin-miot 子模块指针 (commit by @hanxi)
  • c5df438 - release version 2.11.6 (commit by @hanxi)

[v2.11.5] - 2026-08-16 ​

✨ New Features ​

  • 888fb48 - add PUT /playlists/{id}/songs/move endpoint for single-song reposition (commit by @hanxi)
  • c5bf861 - songs: 新增 GET /songs/random 随机歌曲接口 (commit by @hanxi)

🐛 Bug Fixes ​

  • ff42922 - 修复项目中所有 UTF-8 乱码字符 (commit by @hanxi)
  • a4b906b - app: 修复 Close() 资源泄漏 + .js MIME 补 charset + 注释乱码修正 (PR #393 by @xiaoniao427)
  • 198bc51 - docs: 清理 Swagger @Router 注释中冗余的 /api/v1 前缀,并写入规范文档 (commit by @hanxi)

♻️ Refactors ​

  • f00e426 - playlist: 将歌单永久排序从客户端移至服务端 (commit by @hanxi)

👷 Build System ​

  • bd02ac8 - 正式版 release 要求所有平台 bundled 构建成功才发布 (commit by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

  • ce116e1 - 更新 miot 插件 (设置页双栏独立滚动 + 默认选中歌单) (commit by @hanxi)
  • b024a84 - bump songloft-plugin-miot (修复输入框/下拉框焦点边框 & 自动填充) (commit by @hanxi)
  • 5e8ec9f - release version 2.11.5 (commit by @hanxi)

[v2.11.4] - 2026-08-12 ​

✨ New Features ​

  • e35df74 - docker: 支持 PUID/PGID 非 root 运行 (commit by @hanxi)
  • 658b3df - jsplugin: playlists.getSongs bridge 支持 sort/order 排序参数 (commit by @hanxi)
  • ef4bbd7 - play: 后端支持倍速播放转码 (0.5x–2x) (commit by @hanxi)
  • 8506c11 - 登录页新增同意协议勾选功能 (commit by @hanxi)
  • 6633cec - normalize: 开放音量均衡目标响度自定义 (commit by @hanxi)
  • a7efc92 - proxy: 新增 /proxy/transcode 实时转码代理;radio 转码接入 http_proxy (commit by @hanxi)

🐛 Bug Fixes ​

  • d27d727 - player: 修复 Web 播放错位并优化日志导出 (commit by @hanxi)
  • a60878c - player: 更新 Windows 首帧尺寸修复 (commit by @hanxi)
  • 56c7562 - scan: 修复自动创建歌单重复的问题 (commit by @hanxi)
  • d8efd8f - build: armv7 交叉编译跳过 UPX 压缩,避免运行时 futex 崩溃 (commit by @hanxi)
  • 674d0f3 - jsplugin: 更新 MIoT 插件子模块指针,修复歌曲定位跳回第一屏 (commit by @hanxi)
  • 6cabc75 - player: 更新 songloft-player 子模块指针 (songloft-org/songloft#361) (commit by @hanxi)
  • 58e174a - playlist: song-ids 接口支持自定义 sort/order (commit by @hanxi)
  • 45c4985 - play: 修复音量均衡切歌截断音频被误判为完整缓存并永久保留 (commit by @hanxi)
  • 038ccdf - docs: 安装落地页 Scoop 章节与 README 同步 (PR #384 by @altman08)
  • 1a65f5b - cover: 限制缩略图并发解码防止弱设备 OOM (commit by @hanxi)
  • 4ede17d - app: 修复 Tracely 初始化多余逗号导致编译失败 (commit by @hanxi)
  • 866478f - metadata: ProbeForValidation 使用 tag.FileType 替代临时文件扩展名识别格式 (commit by @hanxi)
  • 604bb82 - miot: 修复 miot 插件 webf 重写后的前端 bug 与宿主返回键通路 (commit by @hanxi)

📝 Documentation Changes ​

  • 9360a43 - update CHANGELOG for v2.11.3 (commit by @github-actions[bot])
  • 33e8e25 - 新增第三方客户端板块(音乐方舟、箭头音乐) (commit by @hanxi)
  • 6dd7673 - 第三方客户端Logo改用官网图标 (commit by @hanxi)
  • 8d74c11 - 修正隐私宣传措辞,对齐 PRIVACY.md 实际口径 (commit by @hanxi)
  • 6ebc26d - player: 记录播放按钮形状设计规范 (commit by @hanxi)
  • c42cdbb - 第三方客户端新增音流(Stream Music) (commit by @hanxi)

🔧 Chores ​

  • 322a631 - player: 更新子模块修复冷启动首次点歌错歌 (commit by @hanxi)
  • a397bd3 - player: 同步插件商店刷新修复 (commit by @hanxi)
  • 486498d - player: 更新播放器子模块指针 (commit by @hanxi)
  • b36328e - 更新 songloft-player 子模块指针 (commit by @hanxi)
  • 9073f29 - 更新子模块 - 清理GitHub加速代理预设,添加AI Prompt复制功能 (commit by @hanxi)
  • 5c198a7 - player: 更新 songloft-player 子模块指针 (commit by @hanxi)
  • e47d96d - player: 更新 songloft-player 子模块指针 (commit by @hanxi)
  • 7739690 - bump songloft-plugin-miot (commit by @hanxi)
  • a42a361 - release version 2.11.4 (commit by @hanxi)

[v2.11.3] - 2026-08-09 ​

🐛 Bug Fixes ​

  • 42b0906 - plugin-builder: 更新前端源码监听修复 (commit by @hanxi)
  • faf0a38 - player: 同步 Web 更新检测修复 (commit by @hanxi)
  • eb30e90 - 修复客户端更新问题 (commit by @hanxi)

🔧 Chores ​

[v2.11.1] - 2026-08-03 ​

💥 BREAKING CHANGES ​

  • due to a9a5938 - 本地 .lrc 歌词文件优先适配 (commit by @hanxi):

    扫描/重新导入时若读不到歌词,不再清空库中已有歌词。
    要清空歌词请使用 PUT /api/v1/songs/{id}/lyrics 接口。
    Fixes songloft-org/songloft-plugin-miot#62

✨ New Features ​

  • 85ccbbe - backend-patch: Bundle 版 Android 后端热更发布流水线 + 导出面守卫 (commit by @hanxi)
  • 5ddbeca - proxy: 私网代理白名单,允许 /proxy 代理指定内网地址*(PR #313 by @hanxi)*
  • 53bcf8c - 支持音量均衡 songloft-org/songloft#315 (commit by @hanxi)
  • e87eb77 - expand audio/video format support and Web HLS video playback (commit by @hanxi)
  • 169aa77 - playlist: 删除歌单支持连带清理孤儿歌曲 (PR #325 by @hanxi)
  • b9109fc - release: bundled 热更前后端 manifest 写入原生契约哈希 (commit by @hanxi)
  • 3570c44 - player: bump songloft-player 子模块,首页歌单网格行列可自定义 (PR #332 by @hanxi)
  • e1cdfca - play: /songs/{id}/play 支持 seek 参数,服务端 input seek 流式续播 (commit by @hanxi)
  • 970619d - fingerprint: 指纹计算支持仅重试失败项,不清空已算指纹 (commit by @hanxi)
  • faa5eb4 - play-history: 新增按播放上下文的播放历史(歌单/歌手/专辑等) (commit by @hanxi)
  • 4af1a8e - jsplugin: 私有仓库 Release 资源下载支持走 github_proxy 加速 (commit by @hanxi)
  • ef025ee - songs: 新增曲库歌名/歌手名清单接口 GET /songs/names (commit by @hanxi)
  • cd87296 - theme pack backend with online catalog support (PR #337 by @hanxi)
  • a0109f8 - api: add library stats summary endpoint (PR #349 by @hanxi)

🐛 Bug Fixes ​

  • 6fe2426 - 播放伪 mp3(WebM 存为 .mp3)时按内容校验强制转码 (songloft-org/songloft#300) (commit by @hanxi)
  • 961a6b2 - cover: 本地封面支持 ?w= 服务端缩略,配合 Web 端 <img> 修封面空白 (PR #309 by @hanxi)
  • e046edc - release: 修 Bundle Android 补丁 pack 缺失的 --target-version-code (commit by @hanxi)
  • a635989 - release: soname 校验放宽为「空或 libgojni.so」(gomobile 产物无 DT_SONAME) (commit by @hanxi)
  • 9313dc1 - video-hls: fix containsEndList boundary bug, early-fail detection, path traversal hardening (commit by @hanxi)
  • 4ec2af8 - player: 更新 songloft-player 子模块,修复原生构建的 dart:js_interop 编译失败 (commit by @hanxi)
  • c6676b3 - ci: bundled 热更 manifest 写入分 ABI APK 的真实 versionCode (commit by @hanxi)
  • 28c5e9a - playlist: 歌单封面 URL 补版本号,修复替换封面后不刷新 (PR #327 by @Jsongcloud)
  • f61a9e7 - fingerprint: 扫描后指纹计算默认关闭并限制开销,修 CPU 长期占满 #323 (commit by @hanxi)
  • a7bc950 - fingerprint: 指纹去重聚簇改进 + Cancel 竞态修复 + 文件不可达容错 (songloft-org/songloft#323) (commit by @hanxi)
  • 8e83998 - entrypoint: 非语义化版本按底包覆盖,避免误判为旧而跳过热更 (PR #331 by @Jsongcloud)
  • eff80fa - docker: bump ffmpeg-builder 子模块,Docker 内 ffmpeg 支持视频解码转 HLS,修 mpg 无法播放 (commit by @hanxi)
  • fddcd4d - player: bump songloft-player 子模块 + 补踩坑文档(修 iOS Safari 登录页不弹软键盘 songloft-org/songloft-player#26) (commit by @hanxi)
  • 0a2adaf - player: bump songloft-player 子模块(原生端老旧视频容器改走 video-hls,修手机播 mpg 卡顿) (commit by @hanxi)
  • 5694025 - video-hls: 边转边播 playlist 改为 EVENT 类型,修首次播放 mpg 必卡 (commit by @hanxi)
  • df58cc8 - docs: 适配 GitHub 代理重构——附件前缀改为根路径且带主机名 (commit by @hanxi)
  • 536f9fb - play: 音量均衡不再阻塞首个播放请求,预热也带上 normalize songloft-org/songloft-plugin-miot#61 (commit by @hanxi)
  • 8ce8a1f - jsplugin: LoadPlugin 幂等化,消除启动期与懒加载竞态导致的 env already exists (commit by @hanxi)
  • 187acdc - jsplugin: 去掉 LoadPlugin 的 singleflight,修正与 EnsureLoaded 的契约冲突 (commit by @hanxi)
  • dc494e7 - jsplugin: 修复 JSService.timerStop 的 data race (commit by @hanxi)
  • a9a5938 - lyric: 本地 .lrc 歌词文件优先适配 (commit by @hanxi)
  • 6481996 - GitHub 代理仅对 GitHub 域名生效,非 GitHub 订阅源直连 (commit by @hanxi)
  • e3ccc49 - upgrade: GitHub 代理失败自动降级直连,修复死代理导致更新检查 500 (commit by @hanxi)
  • acb8a44 - metadata: 批量刷新元数据改为纯本地提取,只处理本地有文件的歌曲 (commit by @hanxi)
  • b58bc72 - jsplugin: 插件商店按 entry_path + 作者身份去重,撞名不再静默覆盖 (commit by @hanxi)
  • 7f8b0a0 - ci: 热更补丁资产改带 commit 的不可变文件名,同步前端子模块 (commit by @hanxi)

⚡ Performance Improvements ​

  • f38f658 - jsplugin: 插件商店拉取结果缓存 5 分钟,翻页搜索不再重拉注册表 (commit by @hanxi)

♻️ Refactors ​

  • 0fefcf0 - addon: HA 加载项拆为独立仓库 songloft-org/home-assistant-addon (commit by @hanxi)

✅ Tests ​

  • 27e75c4 - jsplugin: 验证休眠歌词插件在 SearchLyrics 时被正常唤醒 (commit by @hanxi)

👷 Build System ​

  • 10e2f6c - Bundle 版 Android 统一为单个 universal APK (commit by @hanxi)
  • fcbf4dc - release: Bundle Android 热更补丁改为随 release 自动发布(无基线) (commit by @hanxi)
  • 76888e5 - release: bundled 热更补丁与 gomobile 产物扩展到 x86_64 (commit by @hanxi)

📝 Documentation Changes ​

  • 07fd163 - update CHANGELOG for v2.11.0 (commit by @github-actions[bot])
  • 5685e11 - site: 同步 flutter_patcher 热更新文档到文档站 (commit by @hanxi)
  • 5e247e8 - issue-template: Bug 报告引导用户附上「设置→关于与更新→导出日志」的日志 zip (commit by @hanxi)
  • 3b21f19 - agents: 补充前端 UI 验证走 Docker 无头浏览器的方法与踩坑 (commit by @hanxi)
  • 84c22ff - remove Flutter TV references, recommend songloft-tv client (commit by @hanxi)
  • 917af15 - 落地页安装选择器添加 TV 客户端下载链接 (commit by @hanxi)
  • bb2c503 - agents: 补充「子模块同步页」类别到文档站结构章节 (commit by @hanxi)
  • 8482492 - add theme pack guide and update color system docs (commit by @hanxi)

🎨 Code Style Changes ​

  • d27fd3a - format all go/dart code and add formatting rules to AGENTS docs (commit by @hanxi)
  • 281dc09 - 同步前端子模块(dart format 补齐未格式化文件) (commit by @hanxi)

🔧 Chores ​

  • c7fdf56 - addon: sync HA add-on version to 2.11.0 (commit by @github-actions[bot])
  • 28a5ccc - bump songloft-player 修复分类列表播放全部无歌曲 (commit by @hanxi)
  • fbb04ea - 更新 songloft-player 子模块,含 #309 封面回滚修复与 CanvasKit auto 变体 (commit by @hanxi)
  • 0041f20 - player: bump songloft-player 子模块(播放队列自动定位当前项 songloft-org/songloft#311) (commit by @hanxi)
  • 0138426 - player: 更新 songloft-player 子模块指针 (commit by @hanxi)
  • b1738f7 - player: 更新 songloft-player 子模块指针(修复 iOS 构建) (commit by @hanxi)
  • eefe4c7 - player: bump songloft-player 子模块(首屏加载韧性兜底,修偶发无限骨架屏卡死 #314) (commit by @hanxi)
  • 1da7e78 - player: 更新 songloft-player 子模块指针(已是最新时也可下载完整安装包) (commit by @hanxi)
  • 7d40530 - miot: bump 插件子模块(修全屏播放器收藏按钮状态无法区分) (commit by @hanxi)
  • 611c733 - player: bump songloft-player 子模块(迷你播放条按钮 #25 + 取消指纹时序修复 #323) (commit by @hanxi)
  • 94221e0 - player: bump songloft-player 子模块(修 Windows 桌面歌词打开即秒退 #318) (commit by @hanxi)
  • c16ff65 - plugin: bump songloft-plugin-miot 子模块(硬停/语音打断按位置续播 songloft-org/songloft-plugin-miot#60) (commit by @hanxi)
  • d7f2ac8 - submodule: 更新 songloft-player——HLS 视频卡死修复与指纹失败项重试入口 (commit by @hanxi)
  • 4a3bca8 - submodule: 更新 songloft-player——GitHub 加速代理统一到设置网络页 (commit by @hanxi)
  • fd81082 - submodule: 更新 songloft-plugin-miot——对话去重基线改用服务端时间戳 (commit by @hanxi)
  • b5e6b4f - submodule: 更新 songloft-player——启动热更检查三道闸与设置页手动入口 (commit by @hanxi)
  • fa37468 - submodule: 更新 songloft-plugin-miot——语音搜歌不再误判本地歌曲 songloft-org/songloft-plugin-miot#62 (commit by @hanxi)
  • ea9596f - submodule: 更新 songloft-plugin-miot——响应优先模式补上播放失败回落 (commit by @hanxi)
  • 4d2d655 - update pkg/tag submodule (gofmt) (commit by @hanxi)
  • c3c35a2 - release version 2.11.1 (commit by @hanxi)

[v2.11.0] - 2026-07-22 ​

✨ New Features ​

  • 7dc4d92 - jsplugin: 为 JS 插件 SDK 增加 TCP Socket API (PR #276 by @hanxi)
  • 8687a3e - jsplugin: 插件自动更新开关 + 源列表「全部」聚合 (PR #270 by @hanxi)
  • 09c292a - songs: 按流派/语种/风格等标签分类浏览曲库 (PR #277 by @hanxi)
  • 548bee6 - scan: 支持 mp4 格式音频扫描与播放 (PR #281 by @hanxi)
  • 338d574 - scan: 支持视频容器扫描、播放与 DLNA 视频投屏 (PR #76 by @hanxi)
  • 1aa9936 - songs: 网络歌曲/电台创建与更新端点支持 is_video (PR #76 by @hanxi)
  • 89b788e - playlist: ListPlaylists 支持 keyword 搜索,并同步前端子模块 (commit by @hanxi)
  • a6d7441 - songs: facets 支持分页/搜索/封面 + 新增 /settings/library-browse 配置端点 (commit by @hanxi)
  • a650185 - songs: 下载支持可选转码(format/quality),复用 GetOrTranscode hanxi/songloft-plugin-bili#1 (commit by @hanxi)
  • 692ded7 - songs: library-browse 放行歌单三视图 key,默认顺序按组连续 (commit by @hanxi)
  • edf6d99 - jsplugin: 客户端 SDK 宿主桥接(common.js) + 文档 (PR #285 by @hanxi)
  • 441f1a6 - 支持 MKA 导入/播放与双音轨切换 (commit by @hanxi)
  • c3b62e3 - lyric: /songs/{id}/lyric 支持 refresh 强制重抓歌词 (PR #303 by @hanxi)
  • d219948 - CUE 按需提取替代预分割,解决磁盘空间占用问题 (PR #306 by @hanxi)
  • b964bbf - cache: 缓存网络歌曲支持统一转码落盘格式 #300 (commit by @hanxi)
  • 9da8d62 - logs: 新增日志落盘与脱敏导出端点 (commit by @hanxi)
  • a221545 - radio: 电台流支持服务端实时转码,兼容仅支持 MP3 的播放设备 #275 (commit by @hanxi)
  • 88e9abb - 插件sdk新增封面提供者接口 (commit by @hanxi)

🐛 Bug Fixes ​

  • 878d9c0 - radio: 电台代理改为 ICY 元数据透传,修复 web 端播放 1 秒即停 (PR #275 by @hanxi)
  • 387058e - download: 缓解导入探测与批量下载争用导致的下载失败 (PR #265 by @hanxi)
  • a6509fa - download: 用停滞检测替代整请求硬超时,避免慢速网络下载被误掐 (PR #265 by @hanxi)
  • 2c14108 - jsplugin: 自动更新用 GetJSON 读 github_proxy 配置,修正代理前缀拼接 (commit by @hanxi)
  • 91a1e44 - web: app shell 静态资源改用 no-cache,修复升级后浏览器仍跑旧 main.dart.js (commit by @hanxi)
  • c63531f - player: 更新子模块修复 Web 插件 Tab iframe 反复重载抖动 (PR #278 by @hanxi)
  • e40b702 - player: 更新子模块修复移动端插件 Tab 再次打开黑屏/底栏消失 (PR #273 by @hanxi)
  • 5df23a2 - radio: 去交织浏览器路径 ICY 元数据,修复 web 端非 m3u8 电台 2-3 秒断流 (PR #275 by @hanxi)
  • 8ecddd4 - source: 下载链路加同源重试与 Content-Length 截断校验 (PR #265 by @hanxi)
  • 26fb2e1 - jsruntime: 修复 youtube 歌单串号/标题被改/缓存不全 songloft-org/songloft#286 (commit by @hanxi)
  • aa5fc0e - radio: 电台代理支持 hls=direct 绕过反代 + 归一化 audio/aacp (commit by @hanxi)
  • 14e662c - jsplugin: 慢端点支持 X-Plugin-Timeout-Ms 放宽调用超时,修复 extract 504 (PR #265 by @hanxi)
  • 3980309 - play: 慢音源播放解析被切歌/客户端超时误杀致 502 (songloft-org/songloft#271) (commit by @hanxi)
  • 3b1c97b - radio: 直连电台流改用非浏览器 UA,修复防盗链源约 3 秒断流 (PR #275 by @hanxi)
  • dba7966 - docker cache (commit by @hanxi)
  • 2b6f113 - flutter web 后台回来黑屏问题修复 (commit by @hanxi)
  • e32844b - lyric: 修复歌词插件自动抓取失效(测试成功但播放抓不到)#303 (commit by @hanxi)
  • 0e97a99 - jsplugin: 修复插件市场分页顺序随机跳变 #302 (commit by @hanxi)
  • bf21354 - jsplugin: 插件页预留滚动条槽根除内容抖动 #278 (commit by @hanxi)
  • 15fb3f8 - source: 分块 Range 下载绕过 YouTube 单连接限速 (songloft-org/songloft#305) (commit by @hanxi)
  • d5d4102 - source: 流式代理去掉整请求硬超时,避免音箱播到中途重拉/切歌 (songloft-org/songloft-plugin-miot#55) (commit by @hanxi)
  • 6f7e528 - jsplugin: 插件页 html 常驻纵向滚动条根除抖动 #278 (commit by @hanxi)
  • 1cea176 - playactivity: Activate 不再取消下一首的 prefetch 转码 #300 (commit by @hanxi)
  • 07cea28 - jsplugin: 公共资源 URL 加内容哈希版本号,修复 immutable 缓存致 common.css 更新不下发 #278 (commit by @hanxi)
  • 3d660d0 - download: 歌名含斜杠不再拆目录、目标冲突追加序号防覆盖 #265 (commit by @hanxi)
  • 6f373b2 - 下载歌曲后保留 plugin_entry_path,修复重复导入时唯一约束冲突 (commit by @hanxi)
  • b83464b - 客户端超时断开时触发后台缓存,避免未缓存歌曲反复失败 (commit by @hanxi)
  • 4446b0c - 修复开发版本更新问题 (commit by @hanxi)
  • ecce7c5 - 修复无法添加超过3万首歌到歌单的问题 (PR #308 by @hanxi)
  • cbb00c4 - 已是 MP3 格式的缓存歌曲在设备上播放失败 (songloft-org/songloft#300) (commit by @hanxi)

⚡ Performance Improvements ​

  • b5f44e1 - docker: 交叉编译替代 QEMU 编译 + 分层重排提速镜像打包与更新 (commit by @hanxi)
  • 9b0c733 - docker: pin alpine base 与 ffmpeg 镜像 digest 稳定前置层缓存 (commit by @hanxi)

♻️ Refactors ​

👷 Build System ​

  • 80d136a - web 构建走 beta 3.47(修复切后台白屏),原生升 stable 3.44.6 (commit by @hanxi)
  • f9ab2bd - web 也统一 stable 3.44.6(撤回 web 专用 beta 3.47) (commit by @hanxi)

📝 Documentation Changes ​

  • 21ef81d - update CHANGELOG for v2.10.0 (commit by @github-actions[bot])
  • 7b4e6ba - faq: 新增电台 HLS 流无法播放时开启 HLS 代理的说明 (commit by @hanxi)
  • e0c4e70 - faq: 补充应用内视频画面渲染的平台支持说明 (songloft-org/songloft#76) (commit by @hanxi)
  • de95b87 - frontend: 更新音频后端与视频画面架构描述 (PR #76 by @hanxi)
  • d3cef86 - agents: 约定直接提交 main 分支,不建功能分支 (commit by @hanxi)
  • 1526608 - js-plugin: 更新客户端 SDK host bridge 适用范围 (commit by @hanxi)
  • 87dbec4 - repowiki: 同步 Web 插件页改为 iframe 内嵌 (commit by @hanxi)
  • 4a7fbec - 全面同步文档与代码并将 repowiki 改为手动维护 (commit by @hanxi)
  • 18135f7 - repowiki: 接入文档站并补全英文版 (commit by @hanxi)
  • 102936c - repowiki: 将 file:// 源码链接改为 GitHub blob 链接 (commit by @hanxi)
  • bbe3ab0 - 同步文档为原生平台统一 media_kit 后端 + 更新子模块指针 (songloft-org/songloft#76) (commit by @hanxi)
  • 86a70a4 - 声明项目纯为爱发电、无收费/赞助渠道,提醒防诈骗 (commit by @hanxi)

🔧 Chores ​

  • c724aa7 - addon: sync HA add-on version to 2.10.0 (commit by @github-actions[bot])
  • 6e3e285 - 同步 songloft-player 子模块 (web 端 hls.js 电台修复 songloft-org/songloft#275) (commit by @hanxi)
  • c19b54b - 同步 songloft-player 子模块 (Windows 退出/播放/日志修复 songloft-org/songloft#271) (commit by @hanxi)
  • 7dd8a1c - 更新 songloft-player 子模块指针(分类页播放全部+多选) (commit by @hanxi)
  • 76442a6 - 更新 miot 子模块指针(补搜索源注册开发者文档) (commit by @hanxi)
  • 869a06d - 更新 songloft-player 子模块指针(桌面播放快捷键 #279) (commit by @hanxi)
  • edf3e72 - 更新 songloft-player 子模块指针(全屏播放页快捷键修复 #279) (commit by @hanxi)
  • fcf741b - 更新 songloft-player 子模块指针(打开后自动进入全屏歌词 songloft-org/songloft-player#19) (commit by @hanxi)
  • 4b453ce - 更新 songloft-player 子模块指针(插件 Tab 关闭 Android Hybrid Composition 修复菜单栏黑屏 #273) (commit by @hanxi)
  • 2c5bded - 更新 songloft-player 子模块指针(libmpv 日志接入 FileLogger 排查桌面端 HLS 电台失败 #249) (commit by @hanxi)
  • 0026796 - 更新 songloft-player 子模块指针(桌面端应用内视频画面渲染 songloft-org/songloft#76) (commit by @hanxi)
  • 64a51ab - 更新 songloft-player 子模块指针(侧边/TV 播放器接入视频画面 songloft-org/songloft#76) (commit by @hanxi)
  • 3945bf1 - 更新 songloft-player 子模块指针(macOS/移动/Web 视频画面 songloft-org/songloft#76) (commit by @hanxi)
  • ab42a92 - 更新 songloft-player 子模块指针(macOS/移动默认启用 media_kit) + FAQ 视频画面全平台默认支持 (songloft-org/songloft#76) (commit by @hanxi)
  • eada187 - 更新 songloft-player 子模块指针(视频画面架构文档 + Web 后端决策记录 songloft-org/songloft#76) (commit by @hanxi)
  • 9c0c1b2 - 更新 songloft-player 子模块指针(移除测试未使用 import) (commit by @hanxi)
  • 051663b - 更新 songloft-player 子模块指针(添加歌曲/电台是否视频开关 songloft-org/songloft#76) (commit by @hanxi)
  • 2b4d17f - 更新 songloft-player 子模块指针(修复 macOS 视频黑屏与首次播放失败 songloft-org/songloft#76) (commit by @hanxi)
  • 8bc9950 - 更新 songloft-player 子模块指针(单曲循环修复 songloft-org/songloft#284) (commit by @hanxi)
  • 087ca92 - 更新 songloft-player 子模块指针(TerminateProcess 根治退出报警框 songloft-org/songloft#271) (commit by @hanxi)
  • fa1217b - 更新 songloft-player 子模块指针(自定义视图入口收进更多菜单) (commit by @hanxi)
  • cfd8f01 - 更新 plugin-toolchain 子模块指针(SDK v2.12.1 + 修复发布 workflow) (commit by @hanxi)
  • df63057 - 更新 songloft-player 子模块指针(歌曲行统一为共享 SongTile) (commit by @hanxi)
  • 173bd83 - 更新 songloft-player 子模块指针(facet 卡片加播放按钮) (commit by @hanxi)
  • 7808602 - 更新 plugin-toolchain 子模块指针(v2.12.2:修复 Vue 模板 dev 死循环与重复安装) (commit by @hanxi)
  • f2ca805 - 更新 songloft-player 子模块指针(歌单视图工具栏上移顶部 AppBar) (commit by @hanxi)
  • 143cc44 - 更新 songloft-player 子模块指针(歌单搜索提示词修正) (commit by @hanxi)
  • bdf69b3 - 更新 songloft-player 子模块指针(修复切换歌单子视图 GlobalKey 报错) (commit by @hanxi)
  • 7bb2946 - 更新 songloft-player 子模块指针(WebView2 环境/托盘残留/电台直连) (commit by @hanxi)
  • 9854627 - 更新 songloft-player 子模块指针(切后台黑屏无 reload 修复) (commit by @hanxi)
  • 23eba04 - 更新 songloft-player 子模块指针(切后台白屏 Dart 侧重绘修复) (commit by @hanxi)
  • dc6a229 - 更新 songloft-player 子模块指针(切后台白屏补发 webglcontextlost 修复) (commit by @hanxi)
  • f3ba3fe - 更新 songloft-player 子模块指针(悬浮 console 调试面板) (commit by @hanxi)
  • cf25c55 - 更新 songloft-player 子模块指针(悬浮 console 增强错误抓取) (commit by @hanxi)
  • e603860 - 更新 songloft-player 子模块指针(TV D-pad 焦点专属布局 + isTv 门控修复) (commit by @hanxi)
  • 3a48de9 - 更新 songloft-player 子模块指针(收尾清理 MultiSurface/恢复 band-aid) (commit by @hanxi)
  • 42d899c - 更新 songloft-player 子模块指针(onReorder→onReorderItem 迁移,Flutter 3.44.6) (commit by @hanxi)
  • 79e2fd9 - 更新 songloft-player 子模块指针(修复最小化残留 HWND 拦截桌面右键 #293) (commit by @hanxi)
  • 9e99919 - 更新 songloft-player 子模块至逐字歌词版本 (PR #294 by @hanxi)
  • a2b98b9 - update miot plugin submodule (commit by @hanxi)
  • a833d63 - update miot plugin submodule (commit by @hanxi)
  • a5e5d08 - 更新 songloft-player 子模块 (修复 Web 语义节点遮挡插件 iframe #295) (commit by @hanxi)
  • 7fc4cbe - 更新 songloft-player 子模块 (修复移动端 media_kit 后端 Android 全曲无法播放 songloft-org/songloft#76) (commit by @hanxi)
  • 2ae3be6 - 更新 songloft-player 子模块 (media_kit 后端实现 setAndroidAudioAttributes,修复 Android 全曲无法播放 songloft-org/songloft#76) (commit by @hanxi)
  • f2f9afa - 更新 songloft-player 子模块 (原生平台统一 media_kit 后端,移除原生后端回退 songloft-org/songloft#76) (commit by @hanxi)
  • b46fe0f - 更新 songloft-player 子模块(修复 NextConsole UMD 全局实例化,Web 调试面板悬浮按钮恢复显示) (commit by @hanxi)
  • b411685 - 更新 songloft-player 子模块(修复 Web 切后台回来封面偶发纯黑,resume 驱逐图片缓存+重解码) (commit by @hanxi)
  • d08205b - 更新 songloft-player 子模块(修复 Web 应用内切页面回来列表封面纯黑,导航时驱逐图片缓存重解码) (commit by @hanxi)
  • 3137005 - 更新 songloft-player 子模块(修复 Web 封面切插件 WebView 页返回后变黑,按封面精准驱逐缓存重解码) (commit by @hanxi)
  • eb4c9ba - 更新 songloft-player 子模块(Web 强制 CanvasKit CPU 渲染根治封面偶发纯黑,回退应用层缓解) (commit by @hanxi)
  • adecd8b - 更新 songloft-player 子模块(封面切tab/筛选丢失根治:调大imageCache+缩略解码,回退CPU渲染) (commit by @hanxi)
  • 80bd72f - 更新 songloft-player 子模块(CoverImage 加临时诊断日志排查封面三态) (commit by @hanxi)
  • 3f74c1e - 更新 songloft-player 子模块(Web 封面走 HttpGet 解码缩小 GPU 纹理 + 删冗余 imageBuilder + 加 WebGL context 丢失诊断日志) (commit by @hanxi)
  • df4e1d4 - 更新 songloft-player 子模块(所有封面卡片统一走 HttpGet 缩略解码,修专辑/歌手/歌单列表封面黑) (commit by @hanxi)
  • 1df7170 - 更新 songloft-player 子模块(清理封面诊断日志 + 文档记录 CanvasKit 大纹理封面变黑坑) (commit by @hanxi)
  • 05601ea - 更新 songloft-player 子模块(修复歌单单曲播放队列被截断到已加载页 #299) (commit by @hanxi)
  • 0094f1a - 更新 songloft-player 子模块(修复分类页点击单曲播放队列被截断 #299) (commit by @hanxi)
  • f6c87d6 - 更新 songloft-player 子模块(文档记录分页列表点单曲播放队列构建铁律 #299) (commit by @hanxi)
  • 55ca279 - 更新 downloader 子模块(按歌单/艺术家/专辑筛选下载 #304) (commit by @hanxi)
  • d124f88 - 更新 songloft-player 子模块(桌面折叠播放栏补齐拖动滑块 #301) (commit by @hanxi)
  • 1ba55a4 - 更新 songloft-player 子模块(插件 iframe 抖动诊断埋点 #278) (commit by @hanxi)
  • 1233bf5 - 更新 songloft-player 子模块(设置页显示后端构建时间) (commit by @hanxi)
  • cb64286 - 更新 songloft-player 子模块(加整页抖动尺寸振荡探针 #278) (commit by @hanxi)
  • d60d15a - release version 2.11.0 (commit by @hanxi)

[v2.10.0] - 2026-07-11 ​

✨ New Features ​

  • 510f309 - songs: 支持按歌单 label 排除歌曲,默认排除隐藏歌单 songloft-org/songloft-player#18 (commit by @hanxi)
  • cf84ae0 - addon: 新增 Home Assistant 加载项 (commit by @hanxi)
  • 7e938d0 - organize: 目录整理新增 preview 与插件 bridge,修复 file_path 双前缀 (PR #261 by @hanxi)
  • b6b42c4 - metadata: 网络歌曲导入即探测时长,修复音箱无法自动切歌 (PR #264 by @hanxi)
  • 90c964e - scan: 目录级定向扫描,过期清理按作用域收敛 (PR #262 by @hanxi)
  • 617ff39 - songs: 支持编辑本地歌曲改名,修复插件音源歌曲编辑 (commit by @hanxi)
  • e377144 - tags: WriteSongTags 支持 track 音轨号字段 (PR #269 by @hanxi)
  • 0a00903 - scan: 支持 mov 格式音频 (commit by @hanxi)

🐛 Bug Fixes ​

  • 26aa89f - miot: update plugin for touchscreen lyrics playback (commit by @hanxi)
  • 1f4f57e - radio: prevent stuck radio streams (commit by @hanxi)
  • e1efc32 - upgrade: enforce matching update channels (commit by @hanxi)
  • 99152f0 - jsplugin: deliver host events during awaits (commit by @hanxi)
  • 87be549 - release: repair bundled macos signing (commit by @hanxi)
  • 11fb982 - docs: 修复英文 README 同步后 docs/en/ 链接多套一层导致死链 (commit by @hanxi)
  • adeb8b0 - jsplugin: sync plugin toolchain permissions (commit by @hanxi)
  • 2e0b21f - cover: prevent slow cover requests from hanging (commit by @hanxi)
  • c60bebb - cover: 修复自动歌单封面重新扫描后随机变化 (commit by @hanxi)
  • 0774040 - server: 支持 port=0 由系统自动分配监听端口 (commit by @hanxi)
  • 09c569e - ci: mac bundle 兜底重签给 songloft-server 补 inherit entitlements (commit by @hanxi)
  • 2c1ae52 - server: 新增 -music flag 供 Bundle 桌面模式传入音乐目录 (commit by @hanxi)
  • a4b209d - playlist: 隐藏歌单后支持可见子集重排,修复排序报错 (PR #266 by @hanxi)
  • 66b2e62 - upgrade: 检查更新加短超时并持久化 GitHub 代理 (commit by @hanxi)
  • ffabd30 - release: package valid bundled iOS app (commit by @hanxi)

⚡ Performance Improvements ​

  • 43fdfee - scan: 修复 CUE 整轨切分对大 CD 镜像退化为 O(N²) 慢速 seek (commit by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

  • f866fb4 - miot: update plugin submodule (commit by @hanxi)
  • 1b66d48 - plugins: update miot submodule for search priority (songloft-org/songloft-plugin-miot#30) (commit by @hanxi)
  • d69ef52 - player: update auth wallet fix (commit by @hanxi)
  • 30c1d02 - submodules: update player and radio plugin refs (commit by @hanxi)
  • a8c730f - player: update submodule for Windows HLS fix #249 (commit by @hanxi)
  • 839606a - player: update submodule for hidden-playlist song filtering songloft-org/songloft-player#18 (commit by @hanxi)
  • 6dba52d - deps: 更新 songloft-player 修复 mac 本地模式 (commit by @hanxi)
  • b173f91 - deps: 更新 songloft-player 修复 iOS 本地模式 (commit by @hanxi)
  • eb934af - deps: 更新 songloft-player 修复退出登录与桌面本地扫描 (commit by @hanxi)
  • f3886cf - deps: 更新 songloft-player 支持编辑本地歌曲与修复编辑入口 (commit by @hanxi)
  • 11e9ff4 - player: 更新子模块,记住 GitHub 代理并抽取选择 mixin (commit by @hanxi)
  • 0890f59 - player: 更新子模块,统一 GitHub 代理选择为顶部下拉 (commit by @hanxi)
  • 607e381 - deps: 更新 songloft-player 修复 iOS 本地模式扫描沙盒报错 (commit by @hanxi)
  • b607701 - release version 2.10.0 (commit by @hanxi)

[v2.9.6] - 2026-07-04 ​

✨ New Features ​

🐛 Bug Fixes ​

📝 Documentation Changes ​

🔧 Chores ​

[v2.9.5] - 2026-07-03 ​

✨ New Features ​

  • 836ddc7 - CUE Sheet 整轨音乐支持 (PR #33 by @hanxi)
  • 850c996 - 歌曲支持按文件修改时间排序 #242 (commit by @hanxi)
  • b29d052 - jsplugin: support inbound websocket handlers (commit by @hanxi)
  • e24c2e2 - jsruntime: 新增原生 __go_crypto_sha256_bytes 与 __go_crypto_rc4 (commit by @hanxi)
  • da9158f - jsruntime: 新增原生 __go_crypto_sha1 (commit by @hanxi)
  • e2e6206 - source: 插件音源可返回自定义请求头并在代理/下载时应用 (commit by @hanxi)

🐛 Bug Fixes ​

  • 46c57dc - 修复内存泄漏和性能问题 (commit by @hanxi)
  • 3ce474d - auto-create 歌单按名复用 ID 避免每次扫描重建 (commit by @hanxi)
  • 0e2bfef - jsruntime: support binary fetch payloads (commit by @hanxi)

⚡ Performance Improvements ​

  • 4a55fc2 - jsruntime: 优化 JS 插件热路径与冷启动 (commit by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

  • 95575d9 - update pkg/tag submodule (FLAC CUESHEET 支持) (commit by @hanxi)
  • 28bdb36 - update songloft-plugin-miot submodule (关闭口令修复) (commit by @hanxi)
  • 56d08d6 - update songloft-plugin-miot submodule (搜索接口选项修复) (commit by @hanxi)
  • 6dd6cc6 - update songloft-plugin-miot submodule (歌单 ID 失效重试) (commit by @hanxi)
  • 7994aed - update songloft-plugin-subsonic submodule (修复外部歌曲歌词 404) (commit by @hanxi)
  • 28614d1 - update songloft-plugin-subsonic submodule (bump v2.2.1) (commit by @hanxi)
  • b5201ce - update songloft-plugin-miot submodule (新增触屏歌词开关 #239) (commit by @hanxi)
  • 7b1e58a - release version 2.9.5 (commit by @hanxi)

[v2.9.4] - 2026-06-30 ​

✨ New Features ​

✅ Tests ​

  • e0f3b5f - jsplugin: 新增 UDP socket API 单元测试 + 文档更新 #222 (commit by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

[v2.9.3] - 2026-06-30 ​

🐛 Bug Fixes ​

📝 Documentation Changes ​

🔧 Chores ​

[v2.9.2] - 2026-06-29 ​

📝 Documentation Changes ​

🔧 Chores ​

[v2.9.1] - 2026-06-29 ​

🐛 Bug Fixes ​

  • 5b92b91 - player: update frontend playback crash fix (commit by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

[v2.9.0] - 2026-06-29 ​

✨ New Features ​

  • 993a3e7 - scan: 歌单创建方式支持三种模式(按文件夹/按顶层文件夹/包含子目录) (commit by @hanxi)
  • e858260 - plugin: 新增自动下载 bridge API,支持插件注册缓存完成后自动下载 (PR #224 by @hanxi)
  • 2989703 - equalizer: 添加 EQ 均衡器 settings 端点 (PR #217 by @hanxi)
  • 8f82ef7 - 将 Go 后端嵌入客户端,支持本地模式播放 (PR #225 by @hanxi)
  • 7cf670d - plugin: 插件持久化存储 API + 卸载保留数据 + 孤儿清理 (PR #220 by @hanxi)
  • 0f732ed - player: 更新子模块实现按服务器隔离凭证 (commit by @hanxi)

🐛 Bug Fixes ​

  • 0456bbf - scan: 修复元数据提取失败时标题含扩展名、空数据覆盖已有记录的问题 (commit by @hanxi)
  • 02a866b - cache: 修复插件来源歌曲缓存/下载时扩展名始终为 .mp3 的问题 (commit by @hanxi)
  • 0eeb224 - cache: ffprobe format_name 未标准化导致 M4A 文件可能获得 .mov 扩展名 (commit by @hanxi)
  • f3aa113 - subsonic: 修复 Subsonic 服务端模式无法播放远程歌曲和电台 (PR #219 by @hanxi)
  • c5f2cb2 - scan: 扫描完成后返回本地歌曲总数,解决与歌曲库计数不一致的困惑 (commit by @hanxi)
  • 49fff2e - plugin: EnablePlugin 前先卸载残留环境,避免 env already exists 错误 (commit by @hanxi)
  • e14cae5 - cover: 封面 URL 追加时间戳参数穿透客户端缓存 (PR #218 by @hanxi)
  • 5e36bf0 - ci: 添加 gomobile tool 依赖修复 iOS/Android 构建 (commit by @hanxi)
  • 73e28ec - plugin: playlists.getSongs 桥接增加诊断日志和重试 (PR #21 by @hanxi)
  • a3811da - ci: 更新 songloft-player 子模块修复 macOS 构建 (commit by @hanxi)
  • 412b28c - plugin: 私有 GitHub 仓库插件通过 API 端点下载 (commit by @hanxi)
  • 90f5a79 - player: 更新 songloft-player 子模块修复本地模式 (commit by @hanxi)
  • f812e1d - player: 更新子模块修复 Xcode 26.5 编译 (commit by @hanxi)
  • a48b776 - player: 更新子模块修复 macOS linker 错误 (commit by @hanxi)
  • 1c27231 - player: 更新子模块修复 iOS 构建 (commit by @hanxi)
  • a0b8c1b - player: 更新子模块修复 iOS EqualizerPlugin 和 SongloftBackendPlugin 编译 (commit by @hanxi)
  • da65db1 - 修复 Android bundled 模式下 covers 目录路径解析错误 (commit by @hanxi)
  • 8739e1a - local: 修复 Android 本地模式扫描 + 更新子模块 (commit by @hanxi)
  • 039bdf5 - player: 更新子模块修复本地模式设置页入口 (commit by @hanxi)
  • 56e042c - scan: 扫描文件发现阶段增加进度报告 (PR #227 by @hanxi)
  • 281a8d5 - settings: 更新子模块修复歌单创建方式下拉竖排显示 (PR #228 by @hanxi)
  • e5ac251 - web: 更新子模块修复移动端浏览器切后台黑屏 (PR #229 by @hanxi)
  • 7c13a31 - player: 更新子模块修复桌面端播完不自动切歌 (commit by @hanxi)
  • bd84888 - 标签解析与扫描稳定性修复 (songloft-org/songloft-player#14) (commit by @hanxi)
  • e433aa3 - jsplugin: serveFile 支持非本地歌曲 + removeSongs 容错 (songloft-org/songloft-plugin-subsonic#6) (commit by @hanxi)
  • e58358d - Subsonic 远程歌曲格式显示与电台列表修复 + Windows 缓存兼容 (PR #231 by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

[v2.8.10] - 2026-06-24 ​

📝 Documentation Changes ​

🔧 Chores ​

[v2.8.9] - 2026-06-24 ​

✨ New Features ​

  • 34a6e4c - remote 歌曲播放时自动提取元数据 (commit by @hanxi)
  • 0b19732 - jsplugin: implement remaining Bridge API operations (commit by @hanxi)
  • 0984246 - jsplugin: add yt-dlp music import plugin (commit by @hanxi)
  • 15dbb79 - support AIF/AIFF format scanning and metadata extraction (commit by @hanxi)
  • 15b47b8 - add AIFF write support and update docs (commit by @hanxi)
  • c9cf78e - subsonic: 补全 Subsonic 协议支持,修复音流等客户端兼容性问题 (commit by @hanxi)
  • bd98b73 - jsplugin: 新增 plugin.getNetworkAddresses bridge API 并更新 miot 插件 (commit by @hanxi)

🐛 Bug Fixes ​

  • 96a1718 - 解决 http proxy 问题 (commit by @hanxi)
  • 9048266 - jsplugin: 修复禁用插件后状态被自愈机制覆盖回 active 的竞态问题 (commit by @hanxi)
  • 962950c - jsplugin: 电台插件 M3U 导入大小限制从 5MB 提升到 20MB (commit by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

  • e371ff7 - update radio plugin submodule (v2026.6.23) (commit by @hanxi)
  • 8391804 - update songloft-player submodule (commit by @hanxi)
  • 15a7f33 - update subsonic plugin submodule (歌单浏览功能) (commit by @hanxi)
  • 5b87148 - update miot plugin submodule (升级 SDK 2.6.3) (commit by @hanxi)
  • ec153c9 - update subsonic/dav plugin submodules (icon + v2.1.1/v1.1.1) (commit by @hanxi)
  • aa3a4e8 - update miot plugin submodule (设置页 UI 补全) (commit by @hanxi)
  • b5b7021 - update miot plugin submodule (外部搜索下拉列表) (commit by @hanxi)
  • b1ae529 - update miot plugin submodule (外部搜索超时可配置) (commit by @hanxi)
  • f5aef4e - release version 2.8.9 (commit by @hanxi)

[v2.8.8] - 2026-06-22 ​

✨ New Features ​

  • 6e36dcb - jsplugin: 插件源支持 Bearer Token 认证,用于私有源分发 (commit by @hanxi)
  • 90a3f19 - 封面支持插件相对 URL 解析 + AddRemoteSongs 新增 lyric_remote_url 直传字段 (PR #203 by @hanxi)
  • 9f7eaf7 - 添加 songloft-plugin-radio 子模块 + 更新 registry (commit by @hanxi)

🐛 Bug Fixes ​

  • 5f0cec3 - models: LyricURLPath 对 remote 歌曲始终返回歌词端点 URL (PR #201 by @hanxi)
  • 8a73b0a - services: 避免 exec.LookPath 使用 faccessat2 导致 Termux 上 SIGSYS 崩溃 (PR #202 by @hanxi)
  • ce441f2 - miot: 更新子模块引用,修复密码/Token登录 token 续期问题 (PR #200 by @hanxi)
  • b3e077f - jsplugin: 私有源 token 仅对同 host 的 includes 透传,防止跨域泄露 (commit by @hanxi)
  • 046cf14 - 修正开发版下载链接,release tag 应为 dev 而非 main (commit by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

  • 7ab59e3 - legal: 补全字体许可证,清理插件子模块,更新文档引用 (commit by @hanxi)
  • ffec8e9 - 更新 songloft-player 子模块引用 (commit by @hanxi)
  • 9ee94e0 - release version 2.8.8 (commit by @hanxi)

[v2.8.7] - 2026-06-20 ​

✨ New Features ​

🐛 Bug Fixes ​

📝 Documentation Changes ​

🔧 Chores ​

[v2.8.6] - 2026-06-19 ​

✨ New Features ​

🐛 Bug Fixes ​

  • 6db9455 - player: 随机播放模式下全部播放不再固定从第一首开始 (PR #184 by @hanxi)
  • 6c9590a - cache: 流式播放缓存后自动回填歌曲时长 (PR #185 by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

[v2.8.5] - 2026-06-16 ​

✨ New Features ​

  • 5744cc3 - nav: 放宽 tab 数量限制至 10,移动端支持「更多」溢出菜单 (commit by @hanxi)
  • 389be4a - playlist: 更新 songloft-player 子模块,歌单列表高亮当前播放歌单 (close #182) (commit by @hanxi)
  • 3c37727 - plugin: 新增歌词提供者回调机制和 lrclib 歌词插件 (close #183) (commit by @hanxi)

🐛 Bug Fixes ​

  • bec658c - web: 更新 songloft-player 子模块,修复 embedded 模式字体缺失 (close #177) (commit by @hanxi)
  • e1b7d40 - playlist: 修复从歌曲选择封面后预览空白及缓存不刷新 (close #176) (commit by @hanxi)
  • 4c01988 - plugin: 更新 songloft-player 子模块,修复 Windows 最小化后插件 WebView 拦截桌面右键 (close #181) (commit by @hanxi)
  • 1eb05ac - plugin: 修复 DAV 插件 buildStreamUrl 路径双重前缀导致播放 404 (close #180) (commit by @hanxi)
  • d5ec3cc - plugin: URLSearchParams polyfill 支持对象参数,修复歌词插件精确搜索参数丢失 (commit by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

  • 12b565d - plugin: 更新歌词插件子模块,补全元数据和发布流程 (commit by @hanxi)
  • 841fffc - plugin: 更新插件源子模块,添加歌词搜索插件 (commit by @hanxi)
  • 27be42d - release version 2.8.5 (commit by @hanxi)

[v2.8.4] - 2026-06-15 ​

🐛 Bug Fixes ​

  • 422c968 - miot: 更新 miot 插件 - 修复语音搜歌匹配错误 (close #83) (commit by @hanxi)
  • e127621 - playlist: 修复编辑歌单从歌曲选择封面无效的问题 (close #176) (commit by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

[v2.8.3] - 2026-06-15 ​

✨ New Features ​

  • 00763f2 - 下载歌曲时拉取 URL 歌词写入文件,实现 MP4/OGG 元数据写入 (commit by @hanxi)
  • 7f98bae - APE 封面读写支持,更新 tag 写入文档 (commit by @hanxi)

🐛 Bug Fixes ​

  • 80d6a8f - player: 低码率音质下播放按钮需按两次才能播放 (close #170) (commit by @hanxi)
  • fc03e78 - player: 所有播放来源广播 onPlayEvent 事件 (close #173) (commit by @hanxi)
  • 69554eb - player: 歌词加载后立即推送到灵动岛 (close #98) (commit by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

[v2.8.2] - 2026-06-13 ​

✨ New Features ​

  • feb75bb - jsplugin: add onPlayEvent callback for play event subscription (close #164) (commit by @hanxi)
  • 23311d3 - transcode: 支持多音质转码与按码率缓存 (close #169) (commit by @hanxi)
  • 7ea30d2 - playlist: 歌单歌曲支持排序与搜索 (close #168) (commit by @hanxi)

🐛 Bug Fixes ​

  • 0737849 - miot: 修复语音调音量"百分之X"被误解析为100% (close #166) (commit by @hanxi)
  • e31f67d - jsruntime: HealthProbe 污染 eval 超时导致定时器驱动操作被误中断 (close songloft-org/songloft-plugin-miot#10) (commit by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

  • 0bac21d - submodule: update jsplugins and player submodules (commit by @hanxi)
  • cecabad - submodule: update player and plugin-toolchain for play event support (PR #164 by @hanxi)
  • 65d806d - release version 2.8.2 (commit by @hanxi)

[v2.8.1] - 2026-06-12 ​

✨ New Features ​

  • 9705163 - cache: remove convert-to-local feature and add custom cache directory (commit by @hanxi)
  • 6c35b39 - cache: streaming proxy with cache_path + song download plugin (commit by @hanxi)
  • 2a1ef4e - model: 添加 source_cover_url 字段并统一编辑表单短域显示 (commit by @hanxi)
  • 86d1805 - jsplugin: 新安装插件默认启用 (commit by @hanxi)
  • de30985 - 新增自动创建歌单排除目录 (commit by @hanxi)

🐛 Bug Fixes ​

  • 821aa41 - jsplugin: refresh publicPaths at runtime without restart (PR #158 by @hanxi)
  • f3a28bc - fingerprint: remove invalid length threshold in ExtractFingerprint
  • bd2aec9 - cache: 修复 Windows 编译失败 — syscall.Statfs 不跨平台 (commit by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

[v2.8.0] - 2026-06-11 ​

✨ New Features ​

  • da56b08 - scan: add toggle to enable/disable auto-create playlists on scan (commit by @hanxi)
  • f2a6c1e - jsplugin: externalPaths 改为 manifest 声明,删除管理员 API (PR #151 by @hanxi)
  • f313243 - api: 暴露 lyric_remote_url 字段,支持编辑网络歌曲歌词 URL (PR #141 by @hanxi)
  • afc45a6 - tracely: 支持安装/升级统计上报,配置改为三变量注入 (commit by @hanxi)

🐛 Bug Fixes ​

📝 Documentation Changes ​

🔧 Chores ​

  • a2c4860 - bump plugin submodules (tag v1.0.6, dav v1.0.4, subsonic v2.0.1) (commit by @hanxi)
  • dceab9e - release version 2.8.0 (commit by @hanxi)

[v2.7.0] - 2026-06-09 ​

✨ New Features ​

  • 9b3fb55 - jsplugin: support pathPrefix param in songs.list bridge (commit by @hanxi)
  • 59f8d0c - song: add ISRC field to Song model and extract from audio tags (commit by @hanxi)
  • 4ccbc0c - scan: add auto-scan with file stability detection (commit by @hanxi)
  • 24f934d - 核心镜像缺ALSA用户态运行文件 (PR #135 by @huaimi123)
  • 5b8d062 - jsplugin: add serveFile directive, file serve route, and publicPaths (commit by @hanxi)
  • 139b667 - jsplugin: add external-paths settings API (commit by @hanxi)
  • e7c365c - subsonic: add Subsonic server mode (commit by @hanxi)
  • b5ebe57 - subsonic: add server mode settings UI (commit by @hanxi)
  • afd326e - subsonic: add getGenres endpoint (commit by @hanxi)
  • 51eab49 - subsonic: add getSong, getStarred, getIndexes endpoints (commit by @hanxi)
  • 383b6c1 - subsonic: getStarred reads from built-in favorites playlist (commit by @hanxi)
  • f3f9b85 - subsonic: add copy button for server URL (commit by @hanxi)
  • fdddf45 - jsplugin: add plugin icon support (PR #139 by @hanxi)

🐛 Bug Fixes ​

  • fc52d35 - miot: embed模式下搜索框被遮挡 (commit by @hanxi)
  • 4e06ba5 - plugin-toolchain: add fs:music, fs:external to builder permission whitelist (commit by @hanxi)
  • 59e2f65 - jsplugin: publicPaths bypass via AuthMiddleware checker (commit by @hanxi)
  • 1997a90 - subsonic: server URL display should not include /rest suffix (commit by @hanxi)
  • 48d4939 - subsonic: fix field mapping and add getAlbum/getArtist endpoints (commit by @hanxi)
  • a927818 - subsonic: add required song fields for client compatibility (commit by @hanxi)
  • 66a0114 - subsonic: fix cover art and add lyrics support (commit by @hanxi)
  • e26f71e - subsonic: playlist cover art display (commit by @hanxi)

♻️ Refactors ​

  • d7a0d89 - jsplugin: merge manifest.json into plugin.json (commit by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

[v2.6.4] - 2026-06-07 ​

✨ New Features ​

  • 27aeb03 - jsplugin: 支持插件强制更新(跳过版本检查) (commit by @hanxi)
  • 0cce183 - fingerprint: 支持重新计算全部音频指纹 (commit by @hanxi)

🐛 Bug Fixes ​

  • d617b20 - 修复 WAV/APE 标签及文件名的中文编码乱码问题 (commit by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

[v2.6.3] - 2026-06-07 ​

✨ New Features ​

  • 5dbbff9 - 用 ffmpeg chromaprint 替代 fpcalc,扫描后自动计算指纹 (commit by @hanxi)
  • fe7810c - 更新 miot 插件,支持定时开关对话监听 (commit by @hanxi)
  • 4fbfdcb - 重构插件主题 (commit by @hanxi)
  • ca52f4e - dedup: 指纹去重删除时同步删除音频文件 (commit by @hanxi)

🐛 Bug Fixes ​

  • cec5a8a - 设置 PKG_CONFIG_PATH 让 ffmpeg configure 找到 libchromaprint (commit by @hanxi)
  • d4a8cc4 - 设置 PKG_CONFIG_PATH 让 ffmpeg configure 找到 libchromaprint (commit by @hanxi)
  • 872abaf - tag: 移除与 common.css 重复的导航样式,修复非 embed 模式 tab 异常 (commit by @hanxi)
  • 8336676 - tag: 移除与 common.css 重复的 card 样式定义 (commit by @hanxi)
  • 9c8db18 - settings: 缓存管理操作区域默认折叠,防止误触 (commit by @hanxi)

⚡ Performance Improvements ​

  • e8c4d5a - 写入标签前预检,标签一致时跳过磁盘写入 (commit by @hanxi)

♻️ Refactors ​

  • a4459ad - tag: 导航改为底部 tab-bar,统一插件 UI 风格 (commit by @hanxi)
  • 87c217f - tag-plugin: 移除 fpcalc 依赖,改用主程序指纹 (commit by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

  • 316bbd6 - 更新 dav/subsonic 子模块,清理死代码 (commit by @hanxi)
  • 28da741 - 更新 miot 子模块,搜索前打断音箱播报 (commit by @hanxi)
  • 3306c2c - release version 2.6.3 (commit by @hanxi)

[v2.6.2] - 2026-06-06 ​

✨ New Features ​

🐛 Bug Fixes ​

  • 1e9722f - 更新 pkg/tag 子模块,修复 APE/WAV 读写问题 (commit by @hanxi)

🔧 Chores ​

[v2.6.0] - 2026-06-05 ​

✨ New Features ​

🐛 Bug Fixes ​

  • 4cf8a77 - 修复插件无法运行的问题 (commit by @hanxi)
  • 2db9ac8 - 统一插件打包脚本 (commit by @hanxi)
  • 236ec5b - convert: 接入全局 HTTP 代理,修复代理环境下歌曲/封面下载失败 (commit by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

[v2.5.1] - 2026-06-04 ​

✨ New Features ​

🐛 Bug Fixes ​

📝 Documentation Changes ​

🔧 Chores ​

[v2.5.0] - 2026-06-04 ​

✨ New Features ​

🐛 Bug Fixes ​

  • 1596210 - 优化首次加载 songloft-org/songloft#91 (commit by @hanxi)
  • 2d85024 - http: 修复 URL userinfo 丢失及 JS URL polyfill 相对路径解析缺陷 (commit by @hanxi)
  • f268fe3 - proxy: add basic auth handling and update User-Agent for remote resources (PR #93 by @Dev-Wiki)
  • 38174a4 - 修复打包镜像报错 (commit by @hanxi)
  • 5e971b3 - scan: 检测并跳过垃圾 tag,回退使用文件名作为标题 (PR #94 by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

[v2.4.0] - 2026-06-02 ​

✨ New Features ​

🐛 Bug Fixes ​

  • c0751a2 - 解决m3u8格式的电台无法播放问题 (commit by @hanxi)
  • aca70a4 - access log 改用 slog 输出,解决日志等级控制问题 (commit by @hanxi)

👷 Build System ​

📝 Documentation Changes ​

🔧 Chores ​

[v2.3.0] - 2026-06-01 ​

✨ New Features ​

  • dad2d9c - 电台支持走后端代理 (commit by @hanxi)
  • 2d10351 - 快速切多次歌曲时抖动优化 songloft-org/songloft#79 (commit by @hanxi)
  • 8bedce2 - 添加歌曲支持目录筛选和类型筛选 songloft-org/songloft#57 (commit by @hanxi)

🐛 Bug Fixes ​

📝 Documentation Changes ​

🔧 Chores ​

[v2.2.5] - 2026-06-01 ​

📝 Documentation Changes ​

🔧 Chores ​

[v2.2.4] - 2026-05-31 ​

🐛 Bug Fixes ​

📝 Documentation Changes ​

🔧 Chores ​

[v2.2.3] - 2026-05-31 ​

🐛 Bug Fixes ​

📝 Documentation Changes ​

🔧 Chores ​

[v2.2.2] - 2026-05-31 ​

✨ New Features ​

📝 Documentation Changes ​

🔧 Chores ​

[v2.2.1] - 2026-05-31 ​

🐛 Bug Fixes ​

  • 5843b56 - 解决url参数被解析合并的问题 (commit by @hanxi)

📝 Documentation Changes ​

🔧 Chores ​

[v2.2.0] - 2026-05-31 ​

🐛 Bug Fixes ​

📝 Documentation Changes ​

🔧 Chores ​

[v2.1.2] - 2026-05-31 ​

🐛 Bug Fixes ​

📝 Documentation Changes ​

🔧 Chores ​

[v2.1.1] - 2026-05-30 ​

📝 Documentation Changes ​

🔧 Chores ​

[v2.1.0] - 2026-05-30 ​

✨ New Features ​

🐛 Bug Fixes ​

📝 Documentation Changes ​

🔧 Chores ​

[v2.0.2] - 2026-05-30 ​

✨ New Features ​

🐛 Bug Fixes ​

📝 Documentation Changes ​

🔧 Chores ​

[v2.0.1] - 2026-05-29 ​

✨ New Features ​

🔧 Chores ​

[v2.0.0-alpha.1] - 2026-05-29 ​

✨ New Features ​

  • 58232ea - app: one-shot mimusic.db -> songloft.db auto migration (v2.0) (commit by @hanxi)

🐛 Bug Fixes ​

  • 8e15634 - ci: prevent changelog SHA lines from executing as shell commands (commit by @hanxi)

♻️ Refactors ​

  • 65c53cb - rename Go module mimusic -> songloft (v2.0) (commit by @hanxi)
  • fc2d601 - rename JS plugin global ABI mimusic.* -> songloft.* (v2.0) (commit by @hanxi)
  • c9f05cd - rename runtime literals MiMusic -> Songloft (v2.0) (commit by @hanxi)
  • c32ab18 - retire jsplugins aggregator, plugins self-host releases (commit by @hanxi)

👷 Build System ​

  • e0ff7b5 - complete v2.0 rebrand of release workflows (Phase 3h follow-up) (commit by @hanxi)

📝 Documentation Changes ​

  • 1b766d2 - add NOTICE and PRIVACY.md for license and privacy compliance (commit by @hanxi)
  • 2f5bbf8 - tighten README disclaimers and remove demo site link (commit by @hanxi)
  • 85244b1 - announce planned v2.0 rebrand to Songloft (commit by @hanxi)
  • 5da054a - add MIGRATION.md for v2.0 Songloft rebrand (commit by @hanxi)
  • 79c6df9 - swagger: regenerate Swagger after v2.0 rebrand (commit by @hanxi)
  • b3b17d7 - add V2 release playbook + update-remotes helper (commit by @hanxi)
  • 7bc6fdd - playbook: fix gh CLI command + add transfer helper script (commit by @hanxi)
  • 432632d - complete link migration to songloft-org / songloft.hanxi.cc (commit by @hanxi)
  • 392fdc4 - remove 'formerly MiMusic' from AGENTS.md (commit by @hanxi)

🔧 Chores ​

  • 07fada7 - remove lxmusic plugins and rename xiaomi plugin (legal cleanup) (commit by @hanxi)
  • a12a765 - bump jsplugins submodule to drop xiaomi.json (commit by @hanxi)
  • 8027762 - bump plugin-toolchain, jsplugin-musicsdk, pkg/tag submodules (commit by @hanxi)
  • 6c80981 - wire up songloft-player submodule rename (v2.0) (commit by @hanxi)
  • abb6ade - wire up songloft-plugin-miot submodule rename (v2.0) (commit by @hanxi)
  • 68a497f - gitignore songloft-player-build (Phase 3h follow-up) (commit by @hanxi)
  • 95e3c0e - bump submodule pointers to alpha-published commits (commit by @hanxi)

[1.4.1] - 2026-05-28 ​

✨ New Features ​

🐛 Bug Fixes ​

🔧 Chores ​

  • 964233c - release version 1.4.1 (commit by @hanxi)
  • cdf8359 - 优化扫描设置开关文案 (commit by @hanxi)

[1.4.0] - 2026-05-27 ​

✨ New Features ​

🐛 Bug Fixes ​

♻️ Refactors ​

  • a37070b - test: 删除手写 mock,全切 :memory: 真实 DB (commit by @hanxi)
  • c7e2032 - database: 引入 UnitOfWork,下线 database.Tx/SQLiteTx (commit by @hanxi)
  • d58e1d4 - database: playlist_songs 表切到 PlaylistSongRepository (commit by @hanxi)
  • 8c23575 - database: playlists 表切到 PlaylistRepository (commit by @hanxi)
  • 10337aa - database: songs 表切到 SongRepository (commit by @hanxi)
  • 9d995cc - database: js_plugins 仓储改用 sqlc.Queries (commit by @hanxi)
  • 7094d5f - database: configs 表切到 ConfigRepository (commit by @hanxi)
  • ea352cd - database: tokens 表切到 TokenRepository (commit by @hanxi)
  • b004464 - database: 引入 sqlc + goose + squirrel 基础设施 (commit by @hanxi)
  • 1910fd0 - 抽取 InternalURLResolver,让歌词代理 URL 也能带 token 访问 (commit by @hanxi)

📝 Documentation Changes ​

  • 50a67b1 - database: 新增 DATABASE_MIGRATIONS 操作指南 + 集成 sqlc 命令到 Makefile (commit by @hanxi)
  • 703d2bc - agents: 同步数据库重构后的开发约定 (commit by @hanxi)

🔧 Chores ​

  • 3c07269 - release version 1.4.0 (commit by @hanxi)
  • 96aa6c4 - bump musicsdk v1.1.0 + lxmusic 用上 LyricFetcher.lyricParams (commit by @hanxi)

[1.3.50] - 2026-05-25 ​

✨ New Features ​

🔧 Chores ​

[1.3.49] - 2026-05-24 ​

🐛 Bug Fixes ​

🔧 Chores ​

[1.3.48] - 2026-05-22 ​

🐛 Bug Fixes ​

🔧 Chores ​

[1.3.47] - 2026-05-22 ​

✨ New Features ​

🐛 Bug Fixes ​

🔧 Chores ​

[1.3.46] - 2026-05-21 ​

✨ New Features ​

🔧 Chores ​

[1.3.45] - 2026-05-20 ​

✨ New Features ​

🐛 Bug Fixes ​

🔧 Chores ​

[1.3.43] - 2026-05-16 ​

🔧 Chores ​

[1.3.42] - 2026-05-16 ​

✨ New Features ​

🐛 Bug Fixes ​

♻️ Refactors ​

  • c706dbb - jsplugin: split playlists permission into read/write (commit by @hanxi)

🔧 Chores ​

📝 Other Changes ​

[1.3.41] - 2026-05-11 ​

✨ New Features ​

🔧 Chores ​

[1.3.40] - 2026-05-07 ​

🐛 Bug Fixes ​

🔧 Chores ​

[1.3.39] - 2026-05-06 ​

✨ New Features ​

  • dd30f31 - 歌单排序功能优化,首页歌单数量显示优化,自动生成的歌单名字优化 (commit by @hanxi)

🔧 Chores ​

[1.3.38] - 2026-05-06 ​

✨ New Features ​

🐛 Bug Fixes ​

  • d078fa7 - 清理失效的本地歌曲 (commit by @hanxi)
  • 3dc4eed - 修复windows网络歌曲无法缓存的问题 (commit by @hanxi)

🔧 Chores ​

[1.3.37] - 2026-04-30 ​

🐛 Bug Fixes ​

  • d0b3c2c - 修复vbr播放时长读取错误问题 (commit by @hanxi)

🔧 Chores ​

[1.3.35] - 2026-04-29 ​

✨ New Features ​

🔧 Chores ​

[1.3.34] - 2026-04-27 ​

🐛 Bug Fixes ​

  • 2d0877d - 修复arm/v7系统无法加载插件问题 (commit by @hanxi)

🔧 Chores ​

[1.3.33] - 2026-04-26 ​

🔧 Chores ​

[1.3.32] - 2026-04-26 ​

🐛 Bug Fixes ​

🔧 Chores ​

[1.3.31] - 2026-04-25 ​

🔧 Chores ​

[1.3.30] - 2026-04-25 ​

🐛 Bug Fixes ​

🔧 Chores ​

📝 Other Changes ​

  • 8541df4 - 插件加载失败添加错误日志 (commit by @hanxi)

[1.3.29] - 2026-04-20 ​

✨ New Features ​

🐛 Bug Fixes ​

  • 60202c9 - 修复部分洛雪音源无法使用问题 (commit by @hanxi)

🔧 Chores ​

[1.3.28] - 2026-04-20 ​

✨ New Features ​

🔧 Chores ​

[1.3.24] - 2026-04-19 ​

🔧 Chores ​

📝 Other Changes ​

[1.3.22] - 2026-04-17 ​

✨ New Features ​

🔧 Chores ​

[1.3.21] - 2026-04-17 ​

✨ New Features ​

🐛 Bug Fixes ​

  • cfded04 - 修复 FLAC 中的 ID3v2 信息无法解析的问题 (commit by @hanxi)
  • c488c01 - 修复导入相同插件问题 (commit by @hanxi)

🔧 Chores ​

[1.3.20] - 2026-04-16 ​

🔧 Chores ​

📝 Other Changes ​

[1.3.18] - 2026-04-15 ​

✨ New Features ​

🐛 Bug Fixes ​

🔧 Chores ​

[1.3.16] - 2026-04-10 ​

✨ New Features ​

🐛 Bug Fixes ​

🔧 Chores ​

📝 Other Changes ​

[1.3.13] - 2026-04-09 ​

✨ New Features ​

🐛 Bug Fixes ​

🔧 Chores ​

📝 Other Changes ​

[1.3.12] - 2026-04-08 ​

✨ New Features ​

🔧 Chores ​

📝 Other Changes ​

[1.3.10] - 2026-04-06 ​

🐛 Bug Fixes ​

♻️ Refactors ​

🔧 Chores ​

📝 Other Changes ​

[1.3.9] - 2026-04-03 ​

✨ New Features ​

🔧 Chores ​

📝 Other Changes ​

[1.3.8] - 2026-04-03 ​

✨ New Features ​

🔧 Chores ​

📝 Other Changes ​

[1.3.7] - 2026-04-02 ​

🔧 Chores ​

📝 Other Changes ​

[1.3.6] - 2026-04-02 ​

♻️ Refactors ​

🔧 Chores ​

[1.3.5] - 2026-04-02 ​

🔧 Chores ​

[1.3.4] - 2026-04-01 ​

✨ New Features ​

🐛 Bug Fixes ​

🔧 Chores ​

[1.3.3] - 2026-03-31 ​

✨ New Features ​

🔧 Chores ​

📝 Other Changes ​

[1.3.2] - 2026-03-30 ​

✨ New Features ​

  • 663576d - 添加网络歌曲电台接口改为批量 (commit by @hanxi)

🔧 Chores ​

📝 Other Changes ​

  • 738896f - Update todo list with song-related tasks (commit by @hanxi)

[1.3.1] - 2026-03-30 ​

🔧 Chores ​

[1.3.0] - 2026-03-30 ​

🔧 Chores ​

[1.2.8] - 2026-03-30 ​

✨ New Features ​

♻️ Refactors ​

🔧 Chores ​

📝 Other Changes ​

[1.2.7] - 2026-03-26 ​

✨ New Features ​

  • abff90a - 添加歌曲批量删除 API (POST /songs/batch-delete) (commit by @hanxi)

🔧 Chores ​

📝 Other Changes ​

[1.2.6] - 2026-03-25 ​

🔧 Chores ​

[1.2.5] - 2026-03-25 ​

✨ New Features ​

♻️ Refactors ​

🔧 Chores ​

📝 Other Changes ​

[1.2.4] - 2026-03-19 ​

🔧 Chores ​

[1.2.3] - 2026-03-19 ​

✨ New Features ​

🐛 Bug Fixes ​

♻️ Refactors ​

🔧 Chores ​

📝 Other Changes ​

[1.2.1] - 2026-02-26 ​

🐛 Bug Fixes ​

🔧 Chores ​

[1.2.0] - 2026-02-26 ​

🔧 Chores ​

[1.1.0] - 2026-02-25 ​

✨ New Features ​

🐛 Bug Fixes ​

♻️ Refactors ​

🔧 Chores ​

📝 Other Changes ​

[1.0.9] - 2026-02-21 ​

🔧 Chores ​

[1.0.8] - 2026-02-21 ​

🔧 Chores ​

[1.0.6] - 2026-02-21 ​

🔧 Chores ​

📝 Other Changes ​