Releases: javycoder/fnos_music_ext
Release list
fnmusic-ext 2.6.3
修复
- 第三方音源(墨澜/星海等)搜索超时与无结果修复(新增逐曲探活可选控制):
- 搜索性能优化(毫秒级直出):解决第三方音源在搜索阶段因并发解析直链与网络探活导致 12s 超时(
search deadline exceeded)以及频繁触发熔断导致全平台搜不出歌曲的问题。新增逐曲探活(beta)开关(默认关闭),关闭时搜索候选曲目跳过直链解析与 Range 探活,单次搜索耗时从 12 秒降至 30 毫秒,并在播放时按需解析真实音频流; - 代理层放行收费曲目:逐曲探活关闭时,代理层对来自第三方音源的搜索候选曲目豁免 VIP/收费元数据拦截(同时严格保留试听、坏链接与无音频流等真不可播防御),使 VIP/版权曲目能够正常展示并在点播时交由用户源解析;
- WebUI 体验优化:新增「搜索」独立菜单页(置于播放与推荐下方),移入搜索超时设置并提供逐曲探活开关及作用说明;清理「音乐源」页面过期的切换描述文案。
- 搜索性能优化(毫秒级直出):解决第三方音源在搜索阶段因并发解析直链与网络探活导致 12s 超时(
- 转码下载文件接口报 500(
UnicodeEncodeError):下载曲库歌曲或透传官方转码任务时,官方后端在Content-Disposition响应头中携带原始非 ASCII(中文)文件名;代理拦截层依赖的 Starlette 框架在处理 HTTP 响应头时无条件使用 Latin-1 编码,触发UnicodeEncodeError导致代理对外直接报错500;http error。现增加响应头安全规范化处理(_sanitize_content_disposition),将中文文件名规范化为标准 RFC 6266/5987 格式(ASCII 安全回退 +filename*=UTF-8''),并确保代理自发文件交付时同样附带标准格式,彻底杜绝响应头非 Latin-1 导致的 500 异常。 - 音源无损档交付损坏数据导致"转码下载失败":飞牛音乐 App 在转码或下载时,若曲库中对应歌曲文件损坏,官方后端解码器会报
errno 68157441 transcoding error导致下载进度卡在 0% 或直接失败。经排查,部分音源(如酷我官方 CDN)无损档(FLAC)近期交付了文件头正常但正文含坏帧的不可解码数据,此前代理只校验 HTTP 状态码与文件大小便写入曲库,导致官方转码器无法处理。现建立三层防护机制:- 音源服务头探针与自动降级:音源服务在输出无损音频直链时,取前 3MB 数据流做 ffmpeg 解码探针,探针失败判定为损坏流,自动走官方接口强制降级为干净的 MP3(320kbps)音频流。
- 代理入库前全量解码校验与回退:代理后台完整抓取(
_full_fetch_download)或边听边存(_tee_finalize)无损文件落盘前,使用 ffmpeg 进行全量解码校验,校验失败立即拦截入库并自动重试拉取 MP3 档位,确保曲库中绝不写入坏文件。 - 坏流曲目拉黑机制:被判定为损坏的在线曲目加入内存黑名单(6 小时有效),后续直接使用 MP3 档位请求,避免死循环。
- App 音质偏好选"标准"后在线歌曲无法播放:飞牛音乐 App 把音质偏好设为"标准"后,播放器不再直拉歌曲原文件,改向服务端要转码后的低码率 HLS 流(fMP4/AAC 分片);代理此前只回一个"假"的转码应答——播放列表里唯一的分片仍指向原始大文件,既不省流量,音源关闭(如只启用 musicdl 时播网易歌曲)还会直接 404 跳歌。现由宿主机 ffmpeg 把在线曲目实时转成真正的 AAC/fMP4 分片流(默认 128kbps、10 秒/片,可经
FNMUSIC_TRANSCODE_*环境变量调整、改.env热生效),同一首歌转码完成后缓存复用(配额 512MB、最久未用先清),并支持 App 的心跳保活与停止转码;边听边存照常在后台保存原文件。ffmpeg 不可用或音源临时失效时自动回落旧行为,不影响播放。 - App 音质偏好选"标准"后下载失败:App 的下载同样走转码协议(先建任务、轮询进度、再取文件),官方后端不认识代理的在线歌曲 id,请求透传官方必然失败。现代理对在线歌曲按官方协议的实测形状仿真(任务号
downloadId、状态waiting/transcoding/ready、进度percent):标准档交付 MP3 320kbps 转码文件(与官方"标准"档一致;源已是 MP3 时直接供原文件不做有损重编码),原始档直接交付已下载的原文件,均支持断点续传;下载本地歌曲、或任何代理不认识的下载任务,一律原样透传官方,行为零变化。 - 已下载的在线歌曲偶发重新出网:边听边存完成后会在缓存里记一条指向曲库文件的引用,个别情况下该引用丢失,再次播放同一首歌时会重新从源站下载、曲库出现重复文件。现引用写入后立即回读校验;即便引用丢失,也会按"歌名+歌手(+专辑)"在飞牛曲库反查并自动补回——音源已关闭也能直接播已落库的本地文件,不再出网、不产生重复文件。
- 偶发上游连接失败导致请求报错:官方服务重启窗口内的陈旧连接会让紧接着的 GET/HEAD 透传瞬时失败(表现为封面、歌曲信息偶发加载出错)。现此类"还没换来任何响应"的连接级失败对幂等请求自动重试一次;已经开始输出内容的请求不重试,避免重复扣减。
变更
FNMUSIC_TRACE_FORWARD抓包日志恢复可见:开启trace_forward后子进程会打印download/*双向报文([dl-capture]前缀),用于 App 下载协议对齐取证;但守护层(takeover)的日志白名单未放行该前缀,日志实际到不了系统日志。现白名单放行[dl-capture]固定格式(限 600 可打印字符),远程排查 App 下载问题时抓包日志可正常留存。
安全
- 数据目录与配置备份权限收紧:存放网易登录凭据的
sources-data数据目录此前安装/升级后被统一放开为 0755,本机其他用户可直接读取网易云音乐登录 Cookie;现安装与升级统一将其收紧为仅运行账户可访问(目录 0700、文件 0600,属主对齐容器运行账户,不影响容器读写)。管理页保存配置时生成的.env.webui.bak备份(含 API Key)此前按默认权限 0644 落盘,现与.env本体一致收紧为 0600。
fnmusic-ext 2.6.2
修复
- 搜索偶发零结果(歌曲/歌手搜不到):连续搜索或紧接着重搜时,上一个关键词的搜索任务还占着音源的单线程通道(库层搜索 + 每首歌逐条串行探活直链,全程可达十几秒),新搜索对酷我/咪咕直接拿到"源忙"、25 毫秒就交回 0 条,代理把这当成"搜索完成"立即响应——而真正的结果几秒后才在容器里搜出来,无人接收;且带错误的结果不落缓存,每次重搜都重复同样的竞态。现音源忙时在自身超时预算内排队等通道释放后照常执行;直链探活改为共享线程池并行探测、凑够条数即停,单次搜索占坑时间大幅缩短;代理侧对"快速交回的 0 条 + 错误"追加一次延迟重试兜底。搜索结果交付顺序、超时部分结果(partial)语义与之前一致。
fnmusic-ext 2.6.1
修复
- musicdl 平台选择保存后不再弹回默认(#31):管理页保存平台白名单后
.env已正确写入,但supervisorctl restart拉起的 musicdl 进程继承的是容器启动时刻的环境变量,拿不到新值,重开页面平台又显示默认的酷我 + 咪咕。现 musicdl 进程每次启动直接解析/repo/.env的MUSICDL_SOURCES(.env> 环境变量 > 内置默认),WebUI 保存 → 重启进程 → 白名单即时一致,容器重启后同样保持。附带修复 WebUI 写.env前的备份文件名(此前会生成.env.env.webui.bak畸形名)。
fnmusic-ext 2.6.0
自 2.5.0 以来的变更收拢为本次正式版。2.6.0a–2.6.0e 仅为测试构建,未单独发版。
修复
- 搜索分页跨页重复:飞牛官方 2026-09-25 更新后搜索接口忽略
size参数全量返回结果集(total=11、size=10时第 1/2 页返回同样 11 条),代理此前只透传官方页内容,导致本地歌曲在每个分页整段重复出现(第 2 页起每页都带全部 11 首本地结果)。现检测到"返回条数超过单页窗口"时按请求窗口对本地段切片:第 1 页恰好size条、第 2 页为余量本地歌曲接在线结果,跨页零重复、total稳定,官方正常分页时行为不变。 - 网易账号歌单点开能看到歌曲:账号歌单与热门推荐一样标为虚拟歌单,曲目列表按每日推荐补齐时间与歌手/专辑字段后再下发。
- 推荐歌单落盘不再变成 unknown:每日推荐、热门推荐和网易账号歌单的曲目不进搜索缓存。边听边存、后台整轨下载和断点续传落盘时,按曲目 id 回查这些歌单缓存,再回查播放历史、收藏和自建歌单;本地仍没有标题时,后台下载再向源站要一次歌曲信息。文件名用歌手和歌名,不再写成
unknown (n)。 - 专辑标签不再写入对象文本:前端曲目的专辑是
{name, guid, ...}。落盘、写音频标签和播放历史上报都先取出专辑名、歌名和歌手的纯字符串,已有的专辑名不会被另一份缓存覆盖。
新增
- 网易账号歌单(
FNMUSIC_NETEASE_MY_PLAYLISTS,默认关闭,热重载):「网易云音乐盒子」音源启用并扫码登录后,网易账号里自己创建的歌单(含"我喜欢的音乐")以只读歌单出现在音乐页——「热门推荐」下方、官方歌单上方,点开即听;收藏的他人歌单不显示。曲目经可播过滤(VIP/试听片段自动剔除),播放、取链、歌词与封面沿用既有网易链路。歌单为只读:在音乐页往里加歌、移歌或删除均不回写网易(请求被静默吸收,不报错)。开关在管理台「音乐源」页「搜索超时时间」下方。摘要 5 分钟缓存、拉取失败 2 分钟冷却并回落 24 小时磁盘缓存(musicbox 重启窗口不塌列表);列表注入后串行后台预取各歌单曲目,大歌单首开不等待批量详情;代理重启后从磁盘缓存恢复伪装 id 反查,旧会话卡片仍可打开。歌单上限 100 个、每歌单曲目上限 1000 首。 - 自动下载歌词(
FNMUSIC_LYRIC_AUTO_DL,默认关闭,热重载):边听边存与「收藏自动绑定本地」后台下载的歌曲在完整落库后,自动下载同名.lrc歌词文件放到歌曲同一文件夹,官方 App 扫描入库后播放即显示歌词;歌曲下载成功后才去下歌词,不产生"只有歌词没有歌"的残留文件。酷我源歌词接口已失效,该源暂无歌词。开关在管理台「边听边存」页。 - 自动下载封面(
FNMUSIC_AUTO_COVER,默认开启,热重载):边听边存与「收藏自动绑定本地」后台下载的歌曲在完整落库后,自动从源站下载封面并内嵌进音频文件(MP3 APIC / FLAC Picture / MP4 covr / OGG),官方音乐 App 里下载的歌曲即显示封面图。封面在歌曲保存成功后才处理、直接嵌进音频文件本身——不产生独立封面文件,不存在"歌曲下载失败、封面文件残留"的垃圾文件;源站文件自带内嵌封面时自动跳过不重复下载。已实证飞牛官方扫描器只读音频内嵌标签(不支持 cover.jpg 等外置封面文件),内嵌是官方 App 显示封面的唯一途径。
音源
- musicdl 跟随上游升级到 2.14.0:带入酷狗歌词获取修复与 QQ 第三方接口更新。平台注册表仍为 57 个,编号表不变。网易云音乐盒子维持 0.5.3。
安全
- 管理页使用飞牛管理员身份:在已登录的飞牛管理员页面打开,安装不再询问或保存单独密码。管理接口只接受网关注入的管理员身份。8774 只监听本机。
- 音源端口只留在本机:musicbox 宿主机发布为
127.0.0.1:8770。网易扫码走已登录管理页里的反代。 - 洛雪源来源提醒:导入 URL 或
.js前必须自行确认来源安全,不要导入来历不明的脚本。脚本在容器内执行。
fnmusic-ext 2.5.0
自 2.3.0 以来的全部变更收拢为本次正式版发布(期间的 2.4.x / 2.5.x 迭代版本仅作为测试构建分发,未正式发版)。
兼容适配(官方 2026-09-25 更新)
- 适配飞牛官方音乐 2026-09-25 更新(SQLite 升级 v4、底层接入 bleve 全文检索):新增未拦截
/music/api/端点探测与采样日志(FNMUSIC_TRACE_FORWARD=detail),未拦截新端点可靠透传,官方后续更新可即时审计。 - 边听边存不再误删刚完成的音频(#28):客户端在下载结束瞬间快速断开时,已拉取完成的音频临时文件此前会被清理逻辑误删;现落盘、写标签与曲库重扫通知全程护航执行。
- 彻底避免 Unknown 文件落盘(#28):首次解析慢产生的残缺元数据不再永久占位,完整信息随时覆盖;落盘缺元数据时自动从在线播放历史/收藏快照回查命名。另附存量修复脚本
scripts/repair_unknown_library.py(默认 dry-run 预览)。
收藏与歌单
- 「收藏自动绑定本地」开关(默认关闭):收藏在线歌曲或加入自建歌单先立即生效,后台自动下载到本地曲库并绑定,换源或原音源下线后依然可以播放。
- 下载完成后自动写入官方收藏/歌单:官方曲库收录文件后自动把这次收藏/加歌单写进官方列表,同一首歌不再"官方 + 本地映射"重复显示两次;官方未收录前保留本地映射兜底,收藏永不丢失;代理重启、下载中断等场景自愈重试,取消收藏/移出歌单自动翻译转发官方接口。
- 边听边存切歌不中断下载:切歌/退出时未写完的部分自动转后台任务断点续传(
Range从断点续拉),源不支持续传时回退整轨重下。
每日推荐
- 按账户隔离,各账户内容不同:引入"音源名额"机制——每天第一个打开每日推荐的用户使用网易日推,其余账户由大模型按各自播放历史与收藏生成,或从本地曲库随机补齐(按各账户"最近没听过"挑选),三层兜底保证推荐永不为空。
- 逐首可播校验与渐进式上架(#23/#29):候选歌曲入选前实时探活,失效条目不入列;推荐增量流式生成,有 1 首即刻展示、后续重进递增,不再整块等待;大模型层超时不再拖垮兜底层导致空列表。
- 切源立即失效当日推荐缓存(#22);音源全挂导致空结果后 5 分钟冷却,不再每次打开列表都空转重试。
在线专辑(#22)
- 专辑搜索多源支持:拦截官方专辑搜索端点,网易云走真实专辑检索,musicdl 与洛雪源按「专辑名 + 源」自动聚合合成,与官方本地专辑无缝合并返回。
- 专辑详情页不再空白:合成专辑曲目列表接口(支持分页与音频规格注入);搜索注入的在线专辑锚点落盘持久化,代理重启后仍可正常进入详情。
洛雪自定义源
- 沙箱 CPU 治理(#29):第三方脚本的短周期定时器强制钳制至 500ms、数量与触发频率设限,根治部分脚本死循环空转导致 Node.js 常驻进程空烧 50% CPU;服务异常终止遗留的孤儿 bridge 进程启动时定向清扫。
- 社区脚本集兼容性(pdone/lx-music-source 全矩阵实测):脚本初始化超时 10s→30s,"慢而活"的服务端中转型脚本不再被掐死在激活环节;网络错误透传底层原因(如
fetch failed (EHOSTUNREACH));「测试源」失败新增server_unreachable归类,明确说明"上游 API 服务器已停摆、换源即可",不再误导向本扩展的兼容性问题。 - 源校验按平台细分(#22):不再因单一平台搜索波动误判整源;酷狗搜索时长单位修正(此前时长全部显示为 0:00)。
安装与升级
- 安装网络加速与进度可见(#24/#27):基础镜像拉取并发测速择优、长耗时阶段 30 秒心跳日志,进度透明不卡死;新增
scripts/collect_support_info.sh一键采集无敏环境信息,便于 issue 反馈。 - 应用中心安装/升级健壮性:FPK 回调自动接管(
--adopt)宿主机老部署,Git 手工部署/旧卷迁移不再报冲突死锁;首次安装自动平滑继承老部署的收藏、播放历史与音源凭据;卸载彻底清理全局部署记录。 - 升级/切源后「等待 musicdl healthz 超时」根因修复:
.env换源重装时容器仍跑旧进程集导致新音源端口无人监听——现等待前自动对齐容器进程集;升级失败不再遗留孤儿容器;等待超时自动采集容器内进程状态与日志尾部随安装日志落盘,一眼可辨。 - 在线搜索"全源失败 0 条"不再污染缓存:连续快速搜索(如回车瞬间歌曲与专辑搜索并发)时音源占线返回的空结果不再缓存 10 秒,同词重搜立即重新聚合。
FNMUSIC_LIBRARY_SCAN_PATH补全文档并在管理台「边听边存」页暴露为选填项(官方通常自动扫描入库,填入抓包路径可加速官方收录)。
fnmusic-ext 2.3.0
新增
- 在线曲目加入/移出自建歌单闭环:拦截官方
add-track/remove-track接口,在线曲目记入本地持久化存储(按用户/按歌单隔离),自建歌单曲目列表透传官方后自动合并下发在线条目(带收藏状态、分页翻页不重不漏),playlist/detail与batch-detail歌单曲目总数实时并入在线曲目数;删除歌单时自动级联清理本地关联数据,代理重启后支持自愈重建伪装映射。 - 全链路 e2e 冒烟测试脚本 (
scripts/e2e_check.sh):一键自动化覆盖代理接管、多源搜索、边界分页、在线取流播放、收藏增删联动、播放上报与历史、歌单增删歌曲闭环全链路。 - 曲库自动重扫通知钩子:新增
FNMUSIC_LIBRARY_SCAN_PATH环境变量,边听边存落盘后支持按凭证合并触发官方媒体库重新扫描(3 秒合并窗口 + 90 秒节流)。
修复
- 构建与安装镜像源加速:针对阿里云镜像 CDN 在 HTTP/1.1 连接下单连接限速(~350KB/s)导致构建/安装耗时过长问题,默认 apt/pip 镜像源全面切换至腾讯云镜像(实测 20MB/s+),全新安装与无缓存构建时间从十几分钟大幅缩减至约 2 分钟;存量
.env默认镜像自动平滑迁移。 - 搜索翻页跨页重复与截断修复:官方搜索接口越界页回声导致多页重复拼接问题修复;全局起点越过官方段时正确丢弃官方回声;支持推荐歌单
size=-1返回全量。 - 网易云多项稳定性与体验修复:
- 扫码登录态更新迟滞:扫码成功立即重建常驻客户端实例,增加登录态探测缓存失效与过期自动重读。
- 点播取链超时优化:由每次起 CLI 子进程改为服务进程内直调(毫秒级响应并带 10 分钟短缓存),代理层解析超时放宽至 6 秒。
- 流媒体播放与边听边存稳定性:
- 在线流读取超时从 10 秒放宽至 60 秒,避免 CDN 限速抖动掐断流;流中断加入审计日志便于取证。
- 曲目结束时的文件落盘与标签写入移入后台异步线程,避免阻塞代理其它请求。
- 分段拉流(Range 请求)客户端边听边存失效修复:针对此类客户端在首次取流时由后台整轨异步拉取完整曲目落盘曲库。
- 本地歌曲播放响应透传精确
Content-Length,消除分块传输带来的起播卡顿或播放器内核时长计算异常。
- 播放历史与数据维护:拦截
play-history/delete,支持在线条目从本地播放历史彻底删除;官方条目正常转发。 - 安装、升级与部署边界鲁棒性:
- 完善代理 systemd unit 归属校验,旧路径失效或跨卷迁移时提供自动接管与自愈指引。
- fpk 升级与卸载失败时降级兜底处理,确保应用管理不卡死。
fnmusic-ext 2.2.8
修复
- 安装时拉不到依赖:清华镜像源近期对部分网络返回 403:pip 与 apt 的默认源
从清华换成阿里云(mirrors.aliyun.com),安装与升级不再依赖单一镜像。
宿主机 pip 的回退链同时调整为 阿里云 → 清华 → 官方 PyPI,一家不可用时自动换下
一家重试。已装机用户升级时,配置里仍是历史默认清华源的会自动迁移到阿里云;
手动改过源地址的不受影响。
fnmusic-ext 2.2.7
修复
- 搜索在音源回包前就交出空列表:在线搜索只留一个超时,默认 15 秒。有在线结果立刻返回,本地歌曲在前;到时还没有就放弃这次还没回来的结果,只返回本地歌曲。管理页「音乐源」下方可改「搜索超时时间」,保存后立即生效。
- 搜索在停手 1 秒后才发给音源:1 秒内继续输入就换成最新关键词并重新计时,窗口过去才真正搜索。
- 输入过程中搜索先空白、过一会儿再搜才有结果:每个音源同时只搜一个关键词。同一用户继续输入时只保留最后那个词;洛雪会取消上一轮,musicdl 和网易等当前请求结束后丢掉旧结果再搜。被换掉的空结果不再缓存。
- 洛雪源 URL 测试显示 502:桌面网关连接 WebUI 时把 5 秒建连超时留在了套接字上,校验要几十秒才返回,连接被中途拆掉,页面只看到 502。转发超时改为 180 秒。
- 电脑上传和 NAS 选择 .js 都失败:管理页把脚本当 JSON
{filename, script}提交,接口却只接受 multipart,于是提示「请用 multipart/form-data 上传文件」。现两种格式都接受。
新增
- 搜索结果本地优先:接管后官方搜索把本地曲库与在线音源结果按页交错混排,
在线条目还会挡住后续页的本地结果。现改为全局统一布局——本地条目占满前
本地总数位、在线条目(网易 > musicdl > 洛雪)紧随其后,翻页顺序严格
「先本地、后在线」,total= 本地 + 在线。 - 洛雪源支持文件方式配置(重要):管理页「音乐源 → 洛雪自定义源」新增三种
配置方式——粘贴http(s)URL(原有)、上传电脑上的.js文件(multipart →
容器sources-data/lxmusic/uploads/落盘,持久化随数据卷)、从 NAS 选择
.js(飞牛桌面内经开放 APIpickUserFile文件选择器选中,由宿主侧网关代读
内容后同样落盘)。上传脚本以file:///data/lxmusic/uploads/<名字>.js形态
参与统一的「测试 → 保存 → 激活」链路;manifest 声明micro_app=true并申请
trim.file.userAccessscope。 install.sh --lx-source-url支持本机路径:传入宿主机上存在的.js文件
路径时自动复制进sources-data/lxmusic/uploads/并转为file://挂载地址,
校验/激活链路复用不变。
变更
- 安装向导不再索要洛雪源 URL:fpk 向导移除
wizard_lx_url输入框与
wizard_lx_skip_verify开关(平台向导无文件上传组件),选 lxmusic 直接完成
安装(无源状态),源脚本装好后在管理页配置;CLI--lx-source-url变为可选。
升级流程兼容.env中LX_SOURCE_URL为空的部署。
fnmusic-ext 2.2.6
修复
- 飞牛桌面里的管理窗口一片空白(重要):桌面页面是 HTTPS,管理入口却把
http://主机:8774嵌进 iframe,浏览器丢弃混合内容,窗口只有标题栏。改为走桌面网关的同源路径/app/fnmusic-ext/,由本机 socket 转到 WebUI。直连 8774 仍然可用。 - 应用中心安装在启用扩展时静默失败(重要):
extend.sh用read重读VERSION。该文件没有末尾换行时read返回 1,set -e在打出任何日志前退出。安装脚本已经印完成功提示,弹窗却只剩一份即将被回滚删掉的日志路径。改为head读取。 - 安装/升级日志在回滚后仍保留:过程输出追加到
/var/log/apps/fnmusic-ext-install.log(写不了则落到/tmp/fnmusic-ext-install.log)。失败弹窗带上该路径;没有[ERROR]行时附上日志末尾。 - musicdl 搜索连续几次都是 0 首歌:一次搜索向每个平台要 60 首(6 页),平台还要逐首确认直链。等不及就记一次失败,下次等待被压到 3 秒,短到一页都回不来,界面就是空的;上一轮还占着平台时,新的搜索会立刻被拒绝。现改为每个平台只取一页(10 首),超时下限放到 8 秒,已经交出歌曲就不再把等待往下压。空结果只缓存 10 秒。
文档
- README 标明 Gitee / GitHub 仓库地址,并说明 musicdl 部分平台歌曲少或不可播放、洛雪源能否搜索和播放取决于所填 URL,需自行选用可靠源。
fnmusic-ext 2.2.4
修复
-
管理页在手机上的保存条与输入框:保存条按底部导航的实际高度上移(含安全区),不再压住导航;表单输入拉满卡片宽度,长错误文案换行,手机聚焦输入框不再把页面放大。
-
洛雪源 QQ/酷狗歌曲信息缺字段:搜索结果补上 QQ 的
strMediaMid(与 songmid 不是同一个值)和酷狗/QQ 的albumId,再交给自定义源脚本。六音等源的酷狗解析和依赖媒体 mid 的 QQ 解析此前拿不到这些字段。 -
应用中心卸载备份路径:存储卷路径解析失败时归档落到
/vol1/,避免拼成缺少斜杠的根目录文件名导致卸载备份失败。 -
WebUI 网易扫码登录"扫码后没有反应"(重要):musicbox CLI 的
auth login/check返回{ok, data:{code}}信封结构(与
netease_login.sh、musicbox 服务契约一致),而static/app.js的
pollQr读的是顶层st.code——恒为undefined,801/802/803/800
全部分支失配,界面永远停在"等待扫码…"。现改为st?.data?.code ?? st?.code
(信封优先、扁平兼容),并把轮询主体拆成checkQrStatus便于测试。
同时补齐登录成功后的状态同步:803 后经/api/netease/auth/status
(带重试)取昵称写入#qr-check(此前该元素从未被写入),生成二维码
前也先同步一次当前账号态。新增test_app_js.js/.py(node 原生
assert + 最小 DOM/fetch 桩)锁信封解析行为,test_webui.py反代
mock 由失真的扁平结构改为真实信封并补上游异常用例。