Conversation
…sonic to github-dev Add Subsonic endpoints star and unstar, reusing new handleStar. Songs are added/removed to the My-Favorites (love) list and persisted via createSnapshot. Song-only; album/artist starring skipped because github-dev lacks the meta subsystem. Fixes the previous 'Method not found: star' error.
…b-dev) Add resolveMusicById (tx/wy/kg/mg) and resolveSongMeta. handleStar now resolves any song id via local lists first, then the online music source, so songs not yet in any list can be starred. Online-resolved songs are added to the love list with listId 'online'.
…ithub-dev) Port getUserMetaFilePath/getUserSubsonicMeta/saveUserSubsonicMeta. handleStar now stars albums (alb_*) and artists (art_*) by storing starred sets in subsonic-meta.json. getStarred/getStarred2 now filter library albums/artists by the actual starred sets (correct Subsonic semantics; browsing stays via getArtists/getAlbumList2).
…kfill cover images
feat(subsonic): 新增红心收藏/取消收藏(star/unstar)功能并持久化
…ta loss - Load disk cache on the read path (findMusicById) instead of only on write, so a restarted server can recover cached song metadata instead of falling back to Unknown. - Write cache synchronously and atomically (temp file + rename) per new entry, replacing the 2s debounced async write that lost data on fast or hard restarts. - Persist client-param fallback results (e.g. kw streams) so they also survive restarts. - Add kw/bd branches to resolveMusicById for online metadata fallback.
- Add subsonic.cacheOnPlay config (default false) with a web UI toggle in index.html; when enabled, Subsonic playback triggers server-side downloadAndCache into the user's cache directory, skipping already-cached. - Wire the option through defaultConfig, config types and server config. - Add a download dedup guard in fileCache so repeated Subsonic stream requests for the same track do not trigger duplicate downloads.
… PR merge conflict buildHash is auto-generated at build time (scripts/update-build-hash.js), so it should not diverge from the base branch in a PR. Reset it to upstream/dev's value to keep the file conflict-free on merge.
- feat: 新增 Subsonic 播放缓存能力 (#339),支持 `subsonic.cacheOnPlay` 自动落盘与优先本地缓存读取 - feat: 新增 Abort 流式响应调度,在客户端快速切歌时终止后台并发缓存任务,防服务器资源耗尽 - feat: 实现红心收藏/取消收藏与持久化联动 (#338 @pyss56),支持单曲、专辑、歌手收藏实时写入 `love` 歌单 - feat: 建立 `subsonic-meta.json` 扩展元数据,打通音流等客户端与 Web 原生媒体库双向收藏联动 - feat: 优化 `onlineSongCache` 机制,实现磁盘文件防抖原子持久化,彻底解决重启元数据丢失问题 - fix: 修复 `getStarred` 接口精准剥离自定义歌单,严格镜像服务端的 `love` 列表 - fix: 全局联动透传红心状态,重构 `musicToSongFlat/Xml` 及十余个接口,完美实时回显 `starred` 标记 - fix: 修复收藏状态的零延迟同步,点按红心时不仅落盘同时瞬间同步内存态
新增 Subsonic 播放缓存能力(subsonic.cacheOnPlay)
- fix(filemanager): 修复快捷栏按钮无法准确返回自定义管理后台的问题 - 引入 `/js/config.js` 动态注入服务端运行态配置到 `window.CONFIG` - 新增 `goToAdmin()` 路由函数,动态获取 `admin.path`(默认兜底 `/admin`)实现精准跳转 - 将「返回主页」按钮文案优化为「返回后台」,并绑定点击拦截与动态导航事件 - feat(filemanager): 引入 elFinder Material Design 现代主题与视觉优化 - 集成 `@3.0.0` Material Theme 样式库,升级工具栏图标、文件列表与右键菜单交互 - 移除硬编码旧版工具栏底色覆盖,消除与整体现代暗色布局的反差
- 补充 SETTINGS_UI_MAP 中 serverCacheNamingPattern 字段的 normalize 白名单支持
…umCoverUrl) Re-apply the cover fix from cb52a0e: emit real QQ cover URLs for home album lists / genre playlists, and let handleGetCoverArt resolve alb_<source>_<id> placeholders via buildAlbumCoverUrl. - subsonic.ts: add buildAlbumCoverUrl (tx source), use it in getAlbumList and in handleGetCoverArt's alb_ branch - discovery.ts: fall back to real QQ cover URL for genre playlists
- 修复了在关闭“播放搜索/歌单歌曲时切换歌单”设置的情况下,点击播放单曲时,界面上的播放队列依然错误显示为整个搜索列表/歌单的问题。 - 修正了回退默认试听列表时的逻辑,现在会自动刷新界面显示,并精准定位新加入歌曲的真实位置,不再强制将播放索引置为 0。 - 新增了自动滚动跟随机制,确保在列表回退后,视线能立即聚焦到当前播放的歌曲。
…xy module - Move cover cache, concurrency semaphore and retry logic out of subsonic.ts into src/server/coverProxy.ts (exported proxyCoverImage) - Clean up leftover commented debug logs in handleGetCoverArt - Keep album cover URL building (buildAlbumCoverUrl) and getCoverArt routing in subsonic.ts - server.ts: limit concurrent album-cover fetching to avoid CDN rate limiting
fix(subsonic): 修复首页/推荐专辑封面显示并抽取封面代理模块
- 统一将默认配置路径重定向至持久化卷 data/config.js,解决 Docker 重建后配置丢失问题 - 启动时自动从根目录旧 config.js 迁移初始化,实现新老版本无感平滑升级 - 简化 WebDAV 备份与还原流程,天然覆盖数据卷内 config.js - 同步更新 README、说明文档及发布日志
…ylists (lb_) Surface QQ Music 鎺掕姒?姒滃崟 as read-only playlists prefixed with lb_ that appear in the all-playlists view without being added to the user own playlists. Adds getLeaderboardPlaylists and read-only guards.
- **功能**: 在 Subsonic 协议中将各平台(如 QQ 音乐等)的在线排行榜暴露为只读虚拟歌单,歌单统一归属于虚拟用户 `lxserver` 的公开歌单中。 - **配置**: 在系统设置中新增独立的“开启公开排行榜映射”多平台公开开关,以及“排行榜音源平台”单选配置,支持通过界面配置切换不同平台的榜单数据。 - **修复**: 获取排行榜时缓存规范化后的歌曲数据,以支持客户端将榜单歌曲添加到用户自身歌单中;修复因未传递 username 导致已收藏榜单歌曲红心状态显示错误的问题。
feat(subsonic): expose QQ Music leaderboards as read-only virtual playlists (lb_)
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: ⛔ Files ignored due to path filters (3)
📒 Files selected for processing (34)
📝 WalkthroughWalkthrough本次变更将配置持久化路径统一为 Changes配置路径与环境变量
Subsonic 配置界面
Subsonic 核心流程
封面与媒体处理
前端修复与发布
Estimated code review effort: 5 (Critical) | ~90 minutes Severity of issue fixed: Low ✨ Finishing Touches📝 Generate docstrings
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
更新V2.0.2
🎯 核心变更
本次更新至 V2.0.2,重点增强 Subsonic 收藏同步、在线解析、排行榜和播放缓存能力。配置文件默认持久化至
data/config.js,并支持旧配置自动迁移。📝 主要改动点
songmid的兼容性,避免调用includes时发生异常。data/config.js,并支持旧版根目录config.js自动迁移。config.js调整为data/config.js。部署时应持久化挂载data目录。CONFIG_PATH时,该路径具有最高优先级。SUBSONIC_PUBLIC_LEADERBOARDS、SUBSONIC_LEADERBOARD_SOURCE、SUBSONIC_CACHE_ON_PLAY和SUBSONIC_PLAY_CACHE_FIRST。subsonic.playCacheFirst默认启用,可能改变播放时的文件来源和缓存行为。