Skip to content

Releases

音笺 MusicMeta v1.72

Choose a tag to compare

@github-actions github-actions released this 29 Oct 11:30
911feda

音笺 MusicMeta v1.72 正式版

  • 补齐 hi.cn 业务错误诊断: 当 HTTP 请求成功但 JSON 返回非零 API code 时,错误信息明确标出 HTTP 层为 2xx、API code 与操作阶段,避免把 HTTP 传输失败和服务端业务拒绝混为一谈。
  • 加强 GD Studio 错误文本脱敏: 在保留短错误原因的同时,额外过滤独立出现的 token、签名和 API key 字段,避免错误正文意外泄露敏感值。
  • 问题状态如实说明: GD Studio 的 HTTP 401 / Invalid request 和 hi.cn 的 API -1 属于第三方服务响应;本版改进诊断与隐私处理,不宣称已绕过或修复第三方服务端故障。请以正式构建后的真实设备复测结果为准。
  • 验证范围: GitHub Actions 单元测试、Release APK 构建、APK 签名及包信息检查。
  • 版本号: 1.72,versionCode = 76。

正式版发布不等于第三方音源已恢复;如仍出现 401 或 -1,新报告将明确区分 HTTP 层与 API 业务层,便于继续定位。

音笺 MusicMeta v1.71 正式候选版

  • 加强 hi.cn 错误诊断: 搜索 / 下载接口返回错误时,汇总 JSON 中可用的 msg、message、error、detail 字段,避免只读取单一字段而丢失服务端给出的线索。
  • 保留访问边界: 不自动绕过 SafeLine / 网页验证,不将 Cookie 发送到其他域名,不自动切换用户选择的 API 服务或音乐平台。
  • GD Studio 401: 保留动态读取播放器版本、读取服务端时间与签名拒绝后有限重试;本次不凭客户端日志臆测修改签名算法。仍需用新构建在真实网络环境复测两个主机的响应。
  • 验证范围: 待 GitHub Actions 执行单元测试、Release 构建、APK 签名与包信息检查后确认;第三方接口可用性仍需设备端实测。
  • 版本号: 1.71,versionCode = 75。

本次是针对错误诊断与正式构建的候选修订,不宣称 GD Studio 401 或 hi.cn -1 已在线修复。只有 CI 通过并完成必要的设备验证后,才应作为正式版发布。

音笺 MusicMeta v1.70 正式版

  • 改进 GD Studio 401 诊断: 错误报告加入签名时间桶、编码后 payload 长度、签名算法标识,以及请求主机和实际响应主机是否一致;不记录搜索词、签名值或完整请求 URL。
  • 避免重复发送相同签名: 收到 401 后重新读取播放器版本和服务器时间;若版本与时间桶都没有变化,不再对同一主机重发完全相同的签名请求,以减少无效请求和可能的临时限流。
  • 新增重试判断测试: 覆盖签名版本改变、时间桶改变及二者都不变的情况。
  • 音源选择规则不变: 不自动切换 GD Studio / hi.cn,也不自动切换网易云 / 酷我。
  • 验证范围: 单元测试、Release APK 构建和签名以本次 CI 为准。上一版在真实设备上仍出现 GD Studio 401,因此本版增加诊断信息,不能预先宣称第三方接口已恢复;hi.cn 的曲目 -1 也尚未解决。
  • 版本号: 1.70,versionCode = 74。

若 401 继续出现,新报告能帮助区分请求被重定向到不同主机、服务器时间桶问题,以及同一签名被服务端拒绝;服务端仍需实测确认。

音笺 MusicMeta v1.69 正式版

  • 修复 GD Studio 401 后未刷新版本的问题: 之前的 401 重试虽然重新读取了服务器时间,但版本读取函数始终返回固定的 2026.09.25,并没有真正读取 js/player.js。现在从网页播放器的 mkPlayer.version 读取签名版本,缓存 10 分钟;遇到 HTTP 401 / Invalid request 时强制重新读取版本与服务器时间后再重试一次。
  • 增加播放器版本解析回归测试: 覆盖 mkPlayer.version 的不同脚本写法,降低站点换版本后因旧签名被拒绝的风险。
  • 关于 hi.cn 的 -1: 这次报告中的曲目在刷新搜索并重试同平台候选后,服务端仍未返回试听地址。应用继续把它报告为 hi.cn 候选/接口解析失败;尚不能据此确定是该曲目不可用还是服务端暂时异常,也不会绕过网站验证。
  • 保持手动选源: 不自动切换 GD Studio / hi.cn,也不自动切换网易云 / 酷我。
  • 验证范围: 本次 CI 单元测试、Release APK 构建与签名结果以正式工作流为准;GD Studio 线上接口仍需在真实设备上复测。
  • 版本号: 1.69,versionCode = 73。

本版修复 401 重试流程没有真正刷新签名版本的缺陷;不把 CI 成功等同于第三方接口端到端恢复。

音笺 MusicMeta v1.67 正式版

  • 修正 hi.cn 曲目 ID 选择: 按接口文档优先使用搜索结果的 id 字段,只有缺失时才兼容旧字段 rid / songid,避免把非主曲目标识提交给 getUrl。
  • 增强 hi.cn 故障诊断: getUrl 返回错误时记录所选平台、曲目 ID、格式、码率,以及 time/sign 是否存在;不记录 time/sign 的具体值。
  • 对齐 GD Studio 请求头: 在签名 GET 请求中补齐与维护中的上游客户端一致的表单 Content-Type 请求头;签名算法、固定版本和 GET 查询参数保持不变。
  • 保持手动选源: 不会自动切换 GD Studio / hi.cn,也不会自动切换网易云 / 酷我。
  • 验证范围: v1.67 的 68 项单元测试与 Release APK 构建已通过 CI;第三方接口是否恢复仍需真实设备验证。
  • 版本号: 1.67,versionCode = 71。

本版针对报告中的 hi.cn 曲目 ID 兼容问题和 GD Studio 请求头差异做了修正;不把 CI 构建成功等同于线上接口已验证恢复。

  • GD Studio 签名修正: 对齐维护中的 musicdl 客户端,固定使用其公开签名版本 2026.09.25,避免从 player.js 误读其他版本字段导致重复 HTTP 401。
  • 错误报告更有诊断价值: GD Studio 错误会包含失败主机、接口类型、所选平台和签名版本;不会把签名或完整请求 URL直接写入诊断上下文。hi.cn 同平台候选重试会附上候选歌曲与曲目 ID,便于定位失效候选。
  • hi.cn 候选重试可追踪: 复制的错误报告会记录同一平台内失败候选的歌曲名、候选 ID 和具体失败原因,便于区分失效候选与接口整体异常。
  • 保持手动选源: 不会自动切换 GD Studio / hi.cn,也不会自动切换网易云 / 酷我。仅在当前所选服务和平台内执行有限重试。
  • 验证范围: CI 单元测试和 APK 构建会在本次提交后运行;第三方接口的真实在线可用性仍需通过新 APK 实测确认。
  • 版本号: 1.66,versionCode = 70。

本次重点修正签名版本选择并增强可复制诊断信息;不宣称在没有真实设备复测前已彻底解决所有在线音源故障。

音笺 MusicMeta v1.65 正式版

  • 错误报告增强:复制内容包含更完整的异常链、抑制异常与调用栈,并隐藏敏感请求字段。

  • 修正 GD Studio 请求协议: 根据维护中的 musicdl 实现与 GD Studio API 文档,签名后的搜索、歌曲地址、封面与歌词请求使用 GET 查询参数;签名仍基于 URI 编码后的歌曲名或 ID、主机、版本与服务器时间。此前改为 POST 表单与当前上游实现不一致,可能导致 HTTP 401。

  • 修正 GD Studio 缓存键: 缓存键包含请求方法及查询参数(排除动态签名字段),避免不同搜索词或歌曲 ID 误用同一个缓存响应。

  • 尊重用户选择: 移除 GD Studio 与 hi.cn 之间的自动切换,以及网易云 / 酷我之间的自动跨平台回退。失败时只在当前已选服务与平台内做有限重试;如需更换音源,由用户在设置中手动选择。

  • 保留 GD Studio 内部恢复: 保留读取 player.js 版本、刷新服务器时间、401 后重新签名一次,以及 GD Studio 自身主机重试。

  • 回归测试: 覆盖 GD Studio GET 查询参数、签名字段与不同搜索词生成不同签名的测试。

  • 版本号: 1.65,versionCode = 69。

自动化测试与 APK 构建通过不等于真实设备上第三方接口的端到端验证;线上服务可能继续变更协议。

音笺 MusicMeta v1.64 正式版

  • 修复 GD Studio 签名时间边界问题: 参考维护中的 musicdl GD Studio 客户端,每次实际发出未命中缓存的签名请求前重新读取服务端 /time,不再依赖可能误判秒 / 毫秒单位的本地时间桶缓存;保留动态读取 player.js 版本与 401 后刷新版本、重新签名重试。
  • GD Studio 搜索故障有限回退: 网易云 / 酷我在收到 HTTP 401、Invalid request 或 HTTP 5xx 时,可以尝试 hi.cn 的同平台目录。此回退不用于 JOOX / Bilibili,避免把不同平台的结果伪装成同一音源。
  • 修复试听地址恢复策略: hi.cn 的 -1 失败仍优先刷新当前目录的搜索元数据并匹配最多三个曲名精确、歌手兼容的候选;候选仍失效时,再有限尝试网易云与酷我之间的同曲回退。
  • 避免误播与错误验证提示: 回退候选必须通过曲名和歌手兼容校验;只有错误链明确指向网页验证挑战时才提示打开网页完成验证,不绕过网站访问控制。
  • 回归测试: 新增 GD Studio 401 / 5xx 回退范围及 hi.cn 双目录切换顺序测试。
  • 版本号: 1.64,versionCode = 68。

自动化测试与 APK 构建通过不等于真实设备上所有第三方音源均已端到端验证;线上服务仍可能变更协议或返回不可用曲目。

音笺 MusicMeta v1.63 正式版

  • 修复 GD Studio 401: 签名版本串改为上游协议要求的纯数字版本(例如 2026.09.25 → 20260925),新增固定签名向量测试,避免所有请求因版本分隔符错误被拒绝。
  • 跟随上游版本变化: 从对应主机的 js/player.js 读取当前 API 版本并短期缓存;遇到 HTTP 401 / Invalid request 时刷新脚本版本和服务端时间,重新签名重试一次,再按 GD Studio 主机列表回退。
  • 降低签名时间请求抖动: 缓存时长按当前 10 秒签名时间桶精确计算,避免落在桶起点时过早失效并产生多余 /time 请求。
  • 改进 hi.cn -1 恢复: 将通用 -1 接口失败也纳入有限恢复流程;强制刷新同一 API 服务的搜索结果,优先尝试更新元数据,再尝试其他曲名精确、歌手兼容的候选,最多三个候选。
  • 修正验证提示: 候选重试失败后不再默认要求先访问验证网页;只有网页明确显示验证要求时才提示用户完成验证,不绕过网站访问控制。
  • 回归测试: 固定 GD Studio 签名向量、动态版本解析、hi.cn -1 错误恢复分类。
  • 版本号: 1.63,versionCode = 67。

CI 通过表示单元测试和 APK 构建完成;第三方音源的实际可用性仍需真实设备联网复测。

音笺 MusicMeta v1.62 正式版

  • 修复 GD Studio 请求协议: 搜索、下载地址、封面和歌词调用统一添加服务端时间签名,切换到近期维护客户端正在使用的 music.gdstudio.xyz/api.php 协议,并支持同服务的 music.gdstudio.org 主机回退。
  • 修正缓存键: 签名参数不再进入 GD Studio 响应缓存键,避免每次签名变化导致缓存失效;带错误码的响应不会被缓存。
  • 修复 hi.cn 错误分类: 优先识别 Song not found / invalid response,避免将无效候选误报为必须打开网页验证。
  • 刷新候选后重试: hi.cn 明确表示当前下载候选无效时,强制重新搜索同一 API 服务;仅在曲名精确匹配、歌手兼容且返回元数据更新时重试,不自动切换到其他 API。
  • 保留 GD Studio 源错误: 主机回退会沿 cause 与 suppressed 异常链识别明确的 source 不支持错误,避免备用主机连接失败把平台回退逻辑误转成普通网络错误。
  • 兼容最新 GD Studio 搜索结果: 分开保存曲目 id 和 url_id,解析试听地址优先采用仍被维护客户端使用的 url_id;hi.cn 搜索响应兼容 data.list、顶层 list 和数组响应,并支持 rid 歌曲 ID。
  • 回归测试: 覆盖 GD Studio 请求参数与签名、编码以及 hi.cn 的 -1 错误分类。
  • 版本号: 1.62,versionCode = 66。

验收以 GitHub Actions 的单元测试、Release APK 构建与正式 Release 资产为准。第三方 API 仍可能随服务端规则变化;本次自动化构建不等于已在真实设备上完成所有音源端到端播放测试。

音笺 MusicMeta v1.61 正式版

  • 错误报告改为一次复制最近最多 20 条报错,方便完整反馈多个问题。
  • 报告增加设备型号,并保留更多调用栈信息;敏感网址仍会隐藏。
  • 此版本仍需构建验证,不能据此认定在线搜索、播放或下载问题已修复。

音笺 MusicMeta v1.60 候选修复版

  • 补齐 GD Studio 稳定音源列表: 按公开 API 文档将酷我(kuwo)加入稳定音源和备用顺序。此前应用漏掉了文档列出的酷我,导致网易云 source 被拒绝时少尝试一个可用候选。
  • 版本号: 1.60,versionCode = 64。

这次修正了音源列表并更新了回归测试;真实在线搜索与播放仍需在可访问 GD Studio API 的环境中验证。

音笺 MusicMeta v1.59 正式版

  • 修复 API 服务串用: 在设置中选择 GD Studio 后,搜索、试听和下载不会再悄悄改走 flac.music.hi.cn;选择 flac.music.hi.cn 时也不会自动改走 GD Studio。
  • 同服务内有限回退: 仅当 GD Studio 明确返回所选 source 不受支持时,才尝试其他当前标记稳定的 GD Studio 音乐平台。候选会保留实际来源标签,试听和下载继续请求 GD Studio。
  • 下载错误提示更明确: FLAC 网站返回 -1 时说明其网页验证或服务问题,并提示用户手动切换 API;GD Studio 故障时不再把它包装成另一个网站的失败。
  • 设置说明: 明确所选 API 服务适用于搜索、试听与下载。
  • 版本号: 1.59,versionCode = 63。

自动化构建成功不等于完成所有真实设备端到端验收;试听可用性仍受第三方 API 与网站状态影响。

  • 试听备用源更稳健: 下载站解析网易云曲目失败时,GD Studio 会优先尝试网易云;如果接口明确拒绝该 source,再按当前稳定列表尝试 JOOX、Bilibili。
  • 防止误播: 每个备用源都必须通过曲名精确匹配、歌手兼容校验,才会请求并使用对应下载地址。
  • 错误处理: 保留下载站网页验证失败提示;GD Studio 返回不支持的 source 时不会直接终止整条回退链,而是继续检查其他稳定源。
  • 版本号: 1.58,versionCode = 62。

自动化构建成功不等于完成所有真实设备端到端验收;试听可用性仍受第三方 API 与下载站状态影响。

音笺 MusicMeta v1.57 正式版

  • 取消客户端本地请求限流: 移除每 5 分钟 50 次的本地预算、持久化时间戳和限流专用提示;服务端自己的频率限制仍然适用,缓存继续生效。
  • 统一 GD Studio API 主机: MetadataProvider 的歌词、搜索与封面回退全部改为官方文档中的 music-api.gdstudio.xyz/api.php。
  • 修正平台标签: 酷我等 FLAC 网站平台使用对应的中文标签,不再显示原始平台 ID。
  • 文档纠错: 区分两个后端各自支持的平台,移除无法确认存在的 v1.56、v1.55、v1.52、v1.51 Release APK 直链;正式 APK 链接以 GitHub Releases 实际资产为准。
  • 回归测试: 删除客户端限流测试,增加双后端平台名称映射测试。
  • 版本号: 1.57,versionCode = 61。

v1.56 历史构建记录(正式 Release 状态未确认)

  • 修复 GD Studio 参数不兼容: 搜索、封面和歌词回退统一按所选后端校验音乐平台,避免把旧设置中的不支持平台值发送给 GD Studio。
  • 修复 GD Studio API 地址: 按官方文档请求 music-api.gdstudio.xyz/api.php,不再使用错误的 API 主机名,也不添加文档未要求的网页端签名参数。
  • 限制音源参数: GD Studio 选项与请求参数按官方动态可用列表限定为 netease、joox、bilibili;旧配置中的不支持平台值会先归一化,避免直接发出无效 source。
  • 双向备用音源: 网易云搜索遇到 GD Studio HTTP 400/403、限流、服务故障或无候选时,自动尝试 flac.music.hi.cn;网站搜索或下载地址解析失败时,反向尝试 GD Studio。
  • 避免误换歌曲: 跨接口回退要求歌名匹配,并在双方都有歌手信息时核对歌手。
  • 减少无效请求: GD Studio 的歌词与搜索回退不再发送当前不支持的平台值,降低无意义的 HTTP 400 请求。
  • 请求头与实际音源一致: 根据最终提供下载地址的服务选择 Referer,并且只向备用网站请求发送该网站 Cookie。
  • 版本号: 1.56,versionCode = 60。

v1.55 历史构建说明(正式 Release 状态未确认)

  • 统一歌词背景透明度: 系统悬浮歌词与应用内备用播放器的歌词文字背景均使用 70% 不透明度的黑色底。
  • 保持歌词布局: 保留当前歌词自动折为最多两行、顶部与封面对齐,以及独立进度条布局。
  • 版本号: 1.55,versionCode = 59。

音笺 MusicMeta v1.51 正式版

  • 恢复紧凑的双行歌词栏: 默认面板高度为 70dp,正文区域约 48dp,长句可在当前一句内自动换为最多两行,保留独立的底部进度区。
  • 修复系统悬浮窗高度被压缩: 窗口创建和位置更新现在都使用当前字号对应的实际面板高度,不再把面板意外改回 64dp。
  • 修复无权限备用播放器布局: 面板顶部与封面顶部对齐;播放模式、时间与播放按钮随封面一起移动,不再叠到歌词进度线上。
  • 大字号按需增高: 默认视觉保持紧凑,仅当用户调大字号后才增加容纳两行文字所需的高度。
  • 保持既有样式: 保留 1.587 歌词宽度比例、封面对齐、半透明暗底、薄荷绿文字和独立进度线。
  • 版本号: 1.51,versionCode = 55。

音笺 MusicMeta v1.50 正式版

  • 长歌词自动换成两行: 系统悬浮窗与应用内备用播放器同步明确启用自动换行,单句歌词过长时可上下两行显示,不改成同时显示两句歌词。
  • 给两行文字留足高度: 歌词卡片高度由 70dp 调整为 104dp,歌词文字区从约 48dp 增至约 82dp,可为当前字号范围内的两行文字留出空间,并保留底部进度线区域。
  • 封面对齐保持不变: 仅向下增加歌词卡片高度,顶部锚点与封面对齐逻辑、当前宽度、底色、薄荷绿文字和进度线样式不变。
  • 版本号: 1.50,versionCode = 54。

v1.49 正式版

  • 歌词栏再次加宽 1.15 倍: 在 v1.48 的宽度基础上再扩大 15%,系统悬浮窗与应用内备用播放器同步调整;封面位置和歌词栏顶部对齐逻辑不变,屏幕边缘仍会按可用空间自适应收窄。
  • 内部歌词显示区域同步加宽: 内部文字区域随歌词栏整体同步扩展,保留两行布局、当前底色、文字颜色与进度线样式。
  • 版本号: 1.49,versionCode = 53。

v1.48 正式版

  • 歌词栏宽度放大 1.15 倍: 系统悬浮窗与应用内备用播放器同步调整歌词栏目标宽度,保留封面作为锚点、左右自动布局及屏幕边缘空间约束;屏幕空间不足时仍会自适应收窄。歌词区域顶部位置和封面对齐逻辑不变。
  • 歌词内容区同步加宽: 减小外层与文字区的水平内边距,让实际承载歌词的区域也更宽;字号、两行布局、进度线位置和薄荷绿文字颜色保持不变。
  • 歌词底色略微加深: 黑色半透明底由 28% 调整至 33%,仅影响歌词文字区域,外层卡片仍保持透明。
  • 版本号: 1.48,versionCode = 52。

音笺 MusicMeta v1.47 正式版

  • 歌词更清楚,原有颜色不变: 系统悬浮窗和应用内备用播放器只在歌词文字区域加约 28% 不透明度的黑色半透明底,并为文字添加轻微阴影;继续使用原有 #9FF0C9 歌词颜色。
  • 默认字号上调一档: 默认歌词字号从 15.04sp 调整为 17.28sp;旧默认字号升级时迁移到新默认,自定义字号尽可能保留。
  • 歌词栏容纳两行: 展开歌词栏由 64dp 调整为 70dp,文字区域约 48dp,按默认行高可完整容纳两行,同时保留独立的已播放进度线区域。
  • 透明感保持: 外层歌词卡片依旧透明且无阴影,未播放进度轨道继续不绘制;封面、侧键和已播放进度线颜色不变。
  • 版本号: 1.47,versionCode = 51。

v1.46 正式版

  • 无权限备用播放器拖动一致: 展开状态以封面为锚点,按封面在屏幕上的位置动态将歌词栏放到左侧或右侧...
Read more

音笺 MusicMeta v1.70

Choose a tag to compare

@github-actions github-actions released this 29 Oct 10:34

音笺 MusicMeta v1.70 正式版

  • 改进 GD Studio 401 诊断: 错误报告加入签名时间桶、编码后 payload 长度、签名算法标识,以及请求主机和实际响应主机是否一致;不记录搜索词、签名值或完整请求 URL。
  • 避免重复发送相同签名: 收到 401 后重新读取播放器版本和服务器时间;若版本与时间桶都没有变化,不再对同一主机重发完全相同的签名请求,以减少无效请求和可能的临时限流。
  • 新增重试判断测试: 覆盖签名版本改变、时间桶改变及二者都不变的情况。
  • 音源选择规则不变: 不自动切换 GD Studio / hi.cn,也不自动切换网易云 / 酷我。
  • 验证范围: 单元测试、Release APK 构建和签名以本次 CI 为准。上一版在真实设备上仍出现 GD Studio 401,因此本版增加诊断信息,不能预先宣称第三方接口已恢复;hi.cn 的曲目 -1 也尚未解决。
  • 版本号: 1.70,versionCode = 74。

若 401 继续出现,新报告能帮助区分请求被重定向到不同主机、服务器时间桶问题,以及同一签名被服务端拒绝;服务端仍需实测确认。

音笺 MusicMeta v1.69 正式版

  • 修复 GD Studio 401 后未刷新版本的问题: 之前的 401 重试虽然重新读取了服务器时间,但版本读取函数始终返回固定的 2026.09.25,并没有真正读取 js/player.js。现在从网页播放器的 mkPlayer.version 读取签名版本,缓存 10 分钟;遇到 HTTP 401 / Invalid request 时强制重新读取版本与服务器时间后再重试一次。
  • 增加播放器版本解析回归测试: 覆盖 mkPlayer.version 的不同脚本写法,降低站点换版本后因旧签名被拒绝的风险。
  • 关于 hi.cn 的 -1: 这次报告中的曲目在刷新搜索并重试同平台候选后,服务端仍未返回试听地址。应用继续把它报告为 hi.cn 候选/接口解析失败;尚不能据此确定是该曲目不可用还是服务端暂时异常,也不会绕过网站验证。
  • 保持手动选源: 不自动切换 GD Studio / hi.cn,也不自动切换网易云 / 酷我。
  • 验证范围: 本次 CI 单元测试、Release APK 构建与签名结果以正式工作流为准;GD Studio 线上接口仍需在真实设备上复测。
  • 版本号: 1.69,versionCode = 73。

本版修复 401 重试流程没有真正刷新签名版本的缺陷;不把 CI 成功等同于第三方接口端到端恢复。

音笺 MusicMeta v1.67 正式版

  • 修正 hi.cn 曲目 ID 选择: 按接口文档优先使用搜索结果的 id 字段,只有缺失时才兼容旧字段 rid / songid,避免把非主曲目标识提交给 getUrl。
  • 增强 hi.cn 故障诊断: getUrl 返回错误时记录所选平台、曲目 ID、格式、码率,以及 time/sign 是否存在;不记录 time/sign 的具体值。
  • 对齐 GD Studio 请求头: 在签名 GET 请求中补齐与维护中的上游客户端一致的表单 Content-Type 请求头;签名算法、固定版本和 GET 查询参数保持不变。
  • 保持手动选源: 不会自动切换 GD Studio / hi.cn,也不会自动切换网易云 / 酷我。
  • 验证范围: v1.67 的 68 项单元测试与 Release APK 构建已通过 CI;第三方接口是否恢复仍需真实设备验证。
  • 版本号: 1.67,versionCode = 71。

本版针对报告中的 hi.cn 曲目 ID 兼容问题和 GD Studio 请求头差异做了修正;不把 CI 构建成功等同于线上接口已验证恢复。

  • GD Studio 签名修正: 对齐维护中的 musicdl 客户端,固定使用其公开签名版本 2026.09.25,避免从 player.js 误读其他版本字段导致重复 HTTP 401。
  • 错误报告更有诊断价值: GD Studio 错误会包含失败主机、接口类型、所选平台和签名版本;不会把签名或完整请求 URL直接写入诊断上下文。hi.cn 同平台候选重试会附上候选歌曲与曲目 ID,便于定位失效候选。
  • hi.cn 候选重试可追踪: 复制的错误报告会记录同一平台内失败候选的歌曲名、候选 ID 和具体失败原因,便于区分失效候选与接口整体异常。
  • 保持手动选源: 不会自动切换 GD Studio / hi.cn,也不会自动切换网易云 / 酷我。仅在当前所选服务和平台内执行有限重试。
  • 验证范围: CI 单元测试和 APK 构建会在本次提交后运行;第三方接口的真实在线可用性仍需通过新 APK 实测确认。
  • 版本号: 1.66,versionCode = 70。

本次重点修正签名版本选择并增强可复制诊断信息;不宣称在没有真实设备复测前已彻底解决所有在线音源故障。

音笺 MusicMeta v1.65 正式版

  • 错误报告增强:复制内容包含更完整的异常链、抑制异常与调用栈,并隐藏敏感请求字段。

  • 修正 GD Studio 请求协议: 根据维护中的 musicdl 实现与 GD Studio API 文档,签名后的搜索、歌曲地址、封面与歌词请求使用 GET 查询参数;签名仍基于 URI 编码后的歌曲名或 ID、主机、版本与服务器时间。此前改为 POST 表单与当前上游实现不一致,可能导致 HTTP 401。

  • 修正 GD Studio 缓存键: 缓存键包含请求方法及查询参数(排除动态签名字段),避免不同搜索词或歌曲 ID 误用同一个缓存响应。

  • 尊重用户选择: 移除 GD Studio 与 hi.cn 之间的自动切换,以及网易云 / 酷我之间的自动跨平台回退。失败时只在当前已选服务与平台内做有限重试;如需更换音源,由用户在设置中手动选择。

  • 保留 GD Studio 内部恢复: 保留读取 player.js 版本、刷新服务器时间、401 后重新签名一次,以及 GD Studio 自身主机重试。

  • 回归测试: 覆盖 GD Studio GET 查询参数、签名字段与不同搜索词生成不同签名的测试。

  • 版本号: 1.65,versionCode = 69。

自动化测试与 APK 构建通过不等于真实设备上第三方接口的端到端验证;线上服务可能继续变更协议。

音笺 MusicMeta v1.64 正式版

  • 修复 GD Studio 签名时间边界问题: 参考维护中的 musicdl GD Studio 客户端,每次实际发出未命中缓存的签名请求前重新读取服务端 /time,不再依赖可能误判秒 / 毫秒单位的本地时间桶缓存;保留动态读取 player.js 版本与 401 后刷新版本、重新签名重试。
  • GD Studio 搜索故障有限回退: 网易云 / 酷我在收到 HTTP 401、Invalid request 或 HTTP 5xx 时,可以尝试 hi.cn 的同平台目录。此回退不用于 JOOX / Bilibili,避免把不同平台的结果伪装成同一音源。
  • 修复试听地址恢复策略: hi.cn 的 -1 失败仍优先刷新当前目录的搜索元数据并匹配最多三个曲名精确、歌手兼容的候选;候选仍失效时,再有限尝试网易云与酷我之间的同曲回退。
  • 避免误播与错误验证提示: 回退候选必须通过曲名和歌手兼容校验;只有错误链明确指向网页验证挑战时才提示打开网页完成验证,不绕过网站访问控制。
  • 回归测试: 新增 GD Studio 401 / 5xx 回退范围及 hi.cn 双目录切换顺序测试。
  • 版本号: 1.64,versionCode = 68。

自动化测试与 APK 构建通过不等于真实设备上所有第三方音源均已端到端验证;线上服务仍可能变更协议或返回不可用曲目。

音笺 MusicMeta v1.63 正式版

  • 修复 GD Studio 401: 签名版本串改为上游协议要求的纯数字版本(例如 2026.09.25 → 20260925),新增固定签名向量测试,避免所有请求因版本分隔符错误被拒绝。
  • 跟随上游版本变化: 从对应主机的 js/player.js 读取当前 API 版本并短期缓存;遇到 HTTP 401 / Invalid request 时刷新脚本版本和服务端时间,重新签名重试一次,再按 GD Studio 主机列表回退。
  • 降低签名时间请求抖动: 缓存时长按当前 10 秒签名时间桶精确计算,避免落在桶起点时过早失效并产生多余 /time 请求。
  • 改进 hi.cn -1 恢复: 将通用 -1 接口失败也纳入有限恢复流程;强制刷新同一 API 服务的搜索结果,优先尝试更新元数据,再尝试其他曲名精确、歌手兼容的候选,最多三个候选。
  • 修正验证提示: 候选重试失败后不再默认要求先访问验证网页;只有网页明确显示验证要求时才提示用户完成验证,不绕过网站访问控制。
  • 回归测试: 固定 GD Studio 签名向量、动态版本解析、hi.cn -1 错误恢复分类。
  • 版本号: 1.63,versionCode = 67。

CI 通过表示单元测试和 APK 构建完成;第三方音源的实际可用性仍需真实设备联网复测。

音笺 MusicMeta v1.62 正式版

  • 修复 GD Studio 请求协议: 搜索、下载地址、封面和歌词调用统一添加服务端时间签名,切换到近期维护客户端正在使用的 music.gdstudio.xyz/api.php 协议,并支持同服务的 music.gdstudio.org 主机回退。
  • 修正缓存键: 签名参数不再进入 GD Studio 响应缓存键,避免每次签名变化导致缓存失效;带错误码的响应不会被缓存。
  • 修复 hi.cn 错误分类: 优先识别 Song not found / invalid response,避免将无效候选误报为必须打开网页验证。
  • 刷新候选后重试: hi.cn 明确表示当前下载候选无效时,强制重新搜索同一 API 服务;仅在曲名精确匹配、歌手兼容且返回元数据更新时重试,不自动切换到其他 API。
  • 保留 GD Studio 源错误: 主机回退会沿 cause 与 suppressed 异常链识别明确的 source 不支持错误,避免备用主机连接失败把平台回退逻辑误转成普通网络错误。
  • 兼容最新 GD Studio 搜索结果: 分开保存曲目 id 和 url_id,解析试听地址优先采用仍被维护客户端使用的 url_id;hi.cn 搜索响应兼容 data.list、顶层 list 和数组响应,并支持 rid 歌曲 ID。
  • 回归测试: 覆盖 GD Studio 请求参数与签名、编码以及 hi.cn 的 -1 错误分类。
  • 版本号: 1.62,versionCode = 66。

验收以 GitHub Actions 的单元测试、Release APK 构建与正式 Release 资产为准。第三方 API 仍可能随服务端规则变化;本次自动化构建不等于已在真实设备上完成所有音源端到端播放测试。

音笺 MusicMeta v1.61 正式版

  • 错误报告改为一次复制最近最多 20 条报错,方便完整反馈多个问题。
  • 报告增加设备型号,并保留更多调用栈信息;敏感网址仍会隐藏。
  • 此版本仍需构建验证,不能据此认定在线搜索、播放或下载问题已修复。

音笺 MusicMeta v1.60 候选修复版

  • 补齐 GD Studio 稳定音源列表: 按公开 API 文档将酷我(kuwo)加入稳定音源和备用顺序。此前应用漏掉了文档列出的酷我,导致网易云 source 被拒绝时少尝试一个可用候选。
  • 版本号: 1.60,versionCode = 64。

这次修正了音源列表并更新了回归测试;真实在线搜索与播放仍需在可访问 GD Studio API 的环境中验证。

音笺 MusicMeta v1.59 正式版

  • 修复 API 服务串用: 在设置中选择 GD Studio 后,搜索、试听和下载不会再悄悄改走 flac.music.hi.cn;选择 flac.music.hi.cn 时也不会自动改走 GD Studio。
  • 同服务内有限回退: 仅当 GD Studio 明确返回所选 source 不受支持时,才尝试其他当前标记稳定的 GD Studio 音乐平台。候选会保留实际来源标签,试听和下载继续请求 GD Studio。
  • 下载错误提示更明确: FLAC 网站返回 -1 时说明其网页验证或服务问题,并提示用户手动切换 API;GD Studio 故障时不再把它包装成另一个网站的失败。
  • 设置说明: 明确所选 API 服务适用于搜索、试听与下载。
  • 版本号: 1.59,versionCode = 63。

自动化构建成功不等于完成所有真实设备端到端验收;试听可用性仍受第三方 API 与网站状态影响。

  • 试听备用源更稳健: 下载站解析网易云曲目失败时,GD Studio 会优先尝试网易云;如果接口明确拒绝该 source,再按当前稳定列表尝试 JOOX、Bilibili。
  • 防止误播: 每个备用源都必须通过曲名精确匹配、歌手兼容校验,才会请求并使用对应下载地址。
  • 错误处理: 保留下载站网页验证失败提示;GD Studio 返回不支持的 source 时不会直接终止整条回退链,而是继续检查其他稳定源。
  • 版本号: 1.58,versionCode = 62。

自动化构建成功不等于完成所有真实设备端到端验收;试听可用性仍受第三方 API 与下载站状态影响。

音笺 MusicMeta v1.57 正式版

  • 取消客户端本地请求限流: 移除每 5 分钟 50 次的本地预算、持久化时间戳和限流专用提示;服务端自己的频率限制仍然适用,缓存继续生效。
  • 统一 GD Studio API 主机: MetadataProvider 的歌词、搜索与封面回退全部改为官方文档中的 music-api.gdstudio.xyz/api.php。
  • 修正平台标签: 酷我等 FLAC 网站平台使用对应的中文标签,不再显示原始平台 ID。
  • 文档纠错: 区分两个后端各自支持的平台,移除无法确认存在的 v1.56、v1.55、v1.52、v1.51 Release APK 直链;正式 APK 链接以 GitHub Releases 实际资产为准。
  • 回归测试: 删除客户端限流测试,增加双后端平台名称映射测试。
  • 版本号: 1.57,versionCode = 61。

v1.56 历史构建记录(正式 Release 状态未确认)

  • 修复 GD Studio 参数不兼容: 搜索、封面和歌词回退统一按所选后端校验音乐平台,避免把旧设置中的不支持平台值发送给 GD Studio。
  • 修复 GD Studio API 地址: 按官方文档请求 music-api.gdstudio.xyz/api.php,不再使用错误的 API 主机名,也不添加文档未要求的网页端签名参数。
  • 限制音源参数: GD Studio 选项与请求参数按官方动态可用列表限定为 netease、joox、bilibili;旧配置中的不支持平台值会先归一化,避免直接发出无效 source。
  • 双向备用音源: 网易云搜索遇到 GD Studio HTTP 400/403、限流、服务故障或无候选时,自动尝试 flac.music.hi.cn;网站搜索或下载地址解析失败时,反向尝试 GD Studio。
  • 避免误换歌曲: 跨接口回退要求歌名匹配,并在双方都有歌手信息时核对歌手。
  • 减少无效请求: GD Studio 的歌词与搜索回退不再发送当前不支持的平台值,降低无意义的 HTTP 400 请求。
  • 请求头与实际音源一致: 根据最终提供下载地址的服务选择 Referer,并且只向备用网站请求发送该网站 Cookie。
  • 版本号: 1.56,versionCode = 60。

v1.55 历史构建说明(正式 Release 状态未确认)

  • 统一歌词背景透明度: 系统悬浮歌词与应用内备用播放器的歌词文字背景均使用 70% 不透明度的黑色底。
  • 保持歌词布局: 保留当前歌词自动折为最多两行、顶部与封面对齐,以及独立进度条布局。
  • 版本号: 1.55,versionCode = 59。

音笺 MusicMeta v1.51 正式版

  • 恢复紧凑的双行歌词栏: 默认面板高度为 70dp,正文区域约 48dp,长句可在当前一句内自动换为最多两行,保留独立的底部进度区。
  • 修复系统悬浮窗高度被压缩: 窗口创建和位置更新现在都使用当前字号对应的实际面板高度,不再把面板意外改回 64dp。
  • 修复无权限备用播放器布局: 面板顶部与封面顶部对齐;播放模式、时间与播放按钮随封面一起移动,不再叠到歌词进度线上。
  • 大字号按需增高: 默认视觉保持紧凑,仅当用户调大字号后才增加容纳两行文字所需的高度。
  • 保持既有样式: 保留 1.587 歌词宽度比例、封面对齐、半透明暗底、薄荷绿文字和独立进度线。
  • 版本号: 1.51,versionCode = 55。

音笺 MusicMeta v1.50 正式版

  • 长歌词自动换成两行: 系统悬浮窗与应用内备用播放器同步明确启用自动换行,单句歌词过长时可上下两行显示,不改成同时显示两句歌词。
  • 给两行文字留足高度: 歌词卡片高度由 70dp 调整为 104dp,歌词文字区从约 48dp 增至约 82dp,可为当前字号范围内的两行文字留出空间,并保留底部进度线区域。
  • 封面对齐保持不变: 仅向下增加歌词卡片高度,顶部锚点与封面对齐逻辑、当前宽度、底色、薄荷绿文字和进度线样式不变。
  • 版本号: 1.50,versionCode = 54。

v1.49 正式版

  • 歌词栏再次加宽 1.15 倍: 在 v1.48 的宽度基础上再扩大 15%,系统悬浮窗与应用内备用播放器同步调整;封面位置和歌词栏顶部对齐逻辑不变,屏幕边缘仍会按可用空间自适应收窄。
  • 内部歌词显示区域同步加宽: 内部文字区域随歌词栏整体同步扩展,保留两行布局、当前底色、文字颜色与进度线样式。
  • 版本号: 1.49,versionCode = 53。

v1.48 正式版

  • 歌词栏宽度放大 1.15 倍: 系统悬浮窗与应用内备用播放器同步调整歌词栏目标宽度,保留封面作为锚点、左右自动布局及屏幕边缘空间约束;屏幕空间不足时仍会自适应收窄。歌词区域顶部位置和封面对齐逻辑不变。
  • 歌词内容区同步加宽: 减小外层与文字区的水平内边距,让实际承载歌词的区域也更宽;字号、两行布局、进度线位置和薄荷绿文字颜色保持不变。
  • 歌词底色略微加深: 黑色半透明底由 28% 调整至 33%,仅影响歌词文字区域,外层卡片仍保持透明。
  • 版本号: 1.48,versionCode = 52。

音笺 MusicMeta v1.47 正式版

  • 歌词更清楚,原有颜色不变: 系统悬浮窗和应用内备用播放器只在歌词文字区域加约 28% 不透明度的黑色半透明底,并为文字添加轻微阴影;继续使用原有 #9FF0C9 歌词颜色。
  • 默认字号上调一档: 默认歌词字号从 15.04sp 调整为 17.28sp;旧默认字号升级时迁移到新默认,自定义字号尽可能保留。
  • 歌词栏容纳两行: 展开歌词栏由 64dp 调整为 70dp,文字区域约 48dp,按默认行高可完整容纳两行,同时保留独立的已播放进度线区域。
  • 透明感保持: 外层歌词卡片依旧透明且无阴影,未播放进度轨道继续不绘制;封面、侧键和已播放进度线颜色不变。
  • 版本号: 1.47,versionCode = 51。

v1.46 正式版

  • 无权限备用播放器拖动一致: 展开状态以封面为锚点,按封面在屏幕上的位置动态将歌词栏放到左侧或右侧;左右拖动范围、边缘留白及歌词栏可用宽度复用系统悬浮窗计算逻辑。
  • 歌词栏完全透明: 移除面板底色、歌词内层底色和阴影;进度条未播放部分不再绘制,只保留歌词文字与已播放进度线。
  • 修复上一首 / 下一首队列归属: 导航根据当前歌曲所属的已同步公开 / 红心歌单选择相邻曲目,即使用户切换了主界面标签,也不再把原歌单导航误回退成直接搜歌的音源候选队列。新增回归测试覆盖当前 UI 位于直接搜歌时仍识别原歌单。
  • 版本号: 1.46,versionCode = 50。

v1.45 正式版

  • 封面与歌词手势: 单击仍为播放 / 暂停,双击仍为展开 / 收起歌词栏;长按封面或歌词正文满 5 秒后彻底关闭音笺,停止播放并从最近任务移除应用。
  • 彻底清理播放器后台: 释放当前 MediaPlayer、清空当前曲目和播放队列、停止悬浮播放器服务与媒体播放前台服务,并移除系统媒体通知 / 会话。此操作只清理音笺自身,不会关闭其他应用;Android 对进程的最终回收仍由系统管理。
  • 画圈改为定位: 拖动封面或歌词卡片时连续画圈,会打开音笺并尝试定位到当前播放曲目;应用内备用播放器使用相同映射。
  • 版本号: 1.45,versionCode = 49。

v1.44 正式版

  • 时间轴歌词优先: 当前句从有效时间轴行中选择;明确标注的作曲、编曲、翻译者等资料行(不论是否带时间戳)不会抢占悬浮歌词。只影响显示,不改写原始歌词;无法识别的内容仍保留。
  • 本地内嵌歌词回退更稳妥: 只有重复时间戳等结构足以确认原文 / 译文配对时才拆分;不能可靠识别时保留原始文本,不强行删除或重新分组。无时间戳译文无法借助原文同步时,先显示译文第一行。
  • 更新悬浮窗手势: 单击封面播放 / 暂停;双击展开 / 收起歌词;长按打开音笺并尝试定位当前歌曲;拖动时画圈关闭悬浮层,但不停止播放。系统浮窗和应用内备用播放器同步更新。
  • 更新 Local Music / Playlist 教程: 帮助按钮说明本地扫描与排序、公开/红心歌单、音源候选、悬浮窗手势、歌词切换及收起后的触摸穿透。
  • 清理过时代码: 移除没有实际调用的旧版组合悬浮播放器 Compose 实现,减少与当前独立窗口架构不一致的旧逻辑。
  • 回归测试: 覆盖无时间轴资料行不会覆盖时间...
Read more

音笺 MusicMeta v1.50

Choose a tag to compare

@github-actions github-actions released this 28 Oct 17:24

音笺 MusicMeta v1.50 正式版

  • 长歌词自动换成两行: 系统悬浮窗与应用内备用播放器同步明确启用自动换行,单句歌词过长时可上下两行显示,不改成同时显示两句歌词。
  • 给两行文字留足高度: 歌词卡片高度由 70dp 调整为 104dp,歌词文字区从约 48dp 增至约 82dp,可为当前字号范围内的两行文字留出空间,并保留底部进度线区域。
  • 封面对齐保持不变: 仅向下增加歌词卡片高度,顶部锚点与封面对齐逻辑、当前宽度、底色、薄荷绿文字和进度线样式不变。
  • 版本号: 1.50,versionCode = 54。

v1.49 正式版

  • 歌词栏再次加宽 1.15 倍: 在 v1.48 的宽度基础上再扩大 15%,系统悬浮窗与应用内备用播放器同步调整;封面位置和歌词栏顶部对齐逻辑不变,屏幕边缘仍会按可用空间自适应收窄。
  • 内部歌词显示区域同步加宽: 内部文字区域随歌词栏整体同步扩展,保留两行布局、当前底色、文字颜色与进度线样式。
  • 版本号: 1.49,versionCode = 53。

v1.48 正式版

  • 歌词栏宽度放大 1.15 倍: 系统悬浮窗与应用内备用播放器同步调整歌词栏目标宽度,保留封面作为锚点、左右自动布局及屏幕边缘空间约束;屏幕空间不足时仍会自适应收窄。歌词区域顶部位置和封面对齐逻辑不变。
  • 歌词内容区同步加宽: 减小外层与文字区的水平内边距,让实际承载歌词的区域也更宽;字号、两行布局、进度线位置和薄荷绿文字颜色保持不变。
  • 歌词底色略微加深: 黑色半透明底由 28% 调整至 33%,仅影响歌词文字区域,外层卡片仍保持透明。
  • 版本号: 1.48,versionCode = 52。

音笺 MusicMeta v1.47 正式版

  • 歌词更清楚,原有颜色不变: 系统悬浮窗和应用内备用播放器只在歌词文字区域加约 28% 不透明度的黑色半透明底,并为文字添加轻微阴影;继续使用原有 #9FF0C9 歌词颜色。
  • 默认字号上调一档: 默认歌词字号从 15.04sp 调整为 17.28sp;旧默认字号升级时迁移到新默认,自定义字号尽可能保留。
  • 歌词栏容纳两行: 展开歌词栏由 64dp 调整为 70dp,文字区域约 48dp,按默认行高可完整容纳两行,同时保留独立的已播放进度线区域。
  • 透明感保持: 外层歌词卡片依旧透明且无阴影,未播放进度轨道继续不绘制;封面、侧键和已播放进度线颜色不变。
  • 版本号: 1.47,versionCode = 51。

v1.46 正式版

  • 无权限备用播放器拖动一致: 展开状态以封面为锚点,按封面在屏幕上的位置动态将歌词栏放到左侧或右侧;左右拖动范围、边缘留白及歌词栏可用宽度复用系统悬浮窗计算逻辑。
  • 歌词栏完全透明: 移除面板底色、歌词内层底色和阴影;进度条未播放部分不再绘制,只保留歌词文字与已播放进度线。
  • 修复上一首 / 下一首队列归属: 导航根据当前歌曲所属的已同步公开 / 红心歌单选择相邻曲目,即使用户切换了主界面标签,也不再把原歌单导航误回退成直接搜歌的音源候选队列。新增回归测试覆盖当前 UI 位于直接搜歌时仍识别原歌单。
  • 版本号: 1.46,versionCode = 50。

v1.45 正式版

  • 封面与歌词手势: 单击仍为播放 / 暂停,双击仍为展开 / 收起歌词栏;长按封面或歌词正文满 5 秒后彻底关闭音笺,停止播放并从最近任务移除应用。
  • 彻底清理播放器后台: 释放当前 MediaPlayer、清空当前曲目和播放队列、停止悬浮播放器服务与媒体播放前台服务,并移除系统媒体通知 / 会话。此操作只清理音笺自身,不会关闭其他应用;Android 对进程的最终回收仍由系统管理。
  • 画圈改为定位: 拖动封面或歌词卡片时连续画圈,会打开音笺并尝试定位到当前播放曲目;应用内备用播放器使用相同映射。
  • 版本号: 1.45,versionCode = 49。

v1.44 正式版

  • 时间轴歌词优先: 当前句从有效时间轴行中选择;明确标注的作曲、编曲、翻译者等资料行(不论是否带时间戳)不会抢占悬浮歌词。只影响显示,不改写原始歌词;无法识别的内容仍保留。
  • 本地内嵌歌词回退更稳妥: 只有重复时间戳等结构足以确认原文 / 译文配对时才拆分;不能可靠识别时保留原始文本,不强行删除或重新分组。无时间戳译文无法借助原文同步时,先显示译文第一行。
  • 更新悬浮窗手势: 单击封面播放 / 暂停;双击展开 / 收起歌词;长按打开音笺并尝试定位当前歌曲;拖动时画圈关闭悬浮层,但不停止播放。系统浮窗和应用内备用播放器同步更新。
  • 更新 Local Music / Playlist 教程: 帮助按钮说明本地扫描与排序、公开/红心歌单、音源候选、悬浮窗手势、歌词切换及收起后的触摸穿透。
  • 清理过时代码: 移除没有实际调用的旧版组合悬浮播放器 Compose 实现,减少与当前独立窗口架构不一致的旧逻辑。
  • 回归测试: 覆盖无时间轴资料行不会覆盖时间轴歌词、无法同步时回退第一行,以及无法配对的本地双语歌词保留原样。
  • 版本号: 1.44,versionCode = 48。

v1.43 历史版本

  • 修复右侧封面时侧键闪烁: 侧键使用固定尺寸/位置的独立窗口,歌词卡片单独成窗;展开和收起只对歌词卡片做动画,不再在收起时同时改变侧键窗口的宽度和横坐标。
  • 触摸行为保持: 收起动画结束后移除歌词卡片窗口,后方应用仍可滑动;侧键保持独立点击,封面保持可拖动。
  • 左右布局一致: 歌词卡片在封面与侧键之外按 4dp 间距独立定位;展开/收起不改变侧键锚点。
  • 回归测试: 覆盖左右布局的固定侧键坐标及歌词卡片窗口坐标。
  • 版本号: 1.43,versionCode = 47.

v1.42 历史版本

  • 收起后不再拦截后方触摸: 收起动画结束后,系统歌词悬浮窗缩到侧键所在的 28×64dp 区域;透明歌词区域不再覆盖其他应用,因此后方画面可继续滑动。
  • 保留侧键与动画: 上下侧键收起时仍可点击;展开时窗口先扩展,收起时等动画结束再缩小,左右布局都贴着封面。
  • 布局回归测试: 覆盖收起窗口宽高及左右镜像时的控制区坐标。
  • 原有功能保持: 封面圆角与无底色箭头、歌词栏独立圆角、15.04sp 默认字号、本地歌曲定位、收起后只有封面可拖动。
  • 版本号: 1.42,versionCode = 46。

v1.41 历史版本

  • 收起歌词栏不再拖动: 移除系统悬浮窗和 App 内备用播放器中,收起后歌词栏透明区域上的拖动手势;收起时只有封面可以拖动,切歌侧键仍可点击。
  • 外观保持: 封面恢复原始四角圆角;两个独立上下侧键仅显示居中的箭头,不铺深绿色底;歌词栏保留完整圆角与侧键区域分隔。
  • 布局回归测试: 保留组合窗口宽度、镜像定位、窄屏和屏幕边缘约束测试。
  • 原有功能保持: 默认歌词字号 15.04sp、本地歌曲定位与滚动、展开歌词栏拖动、无悬浮窗权限时的 App 内备用播放器。
  • 版本号: 1.41,versionCode = 45。

v1.40 历史版本

  • 还原封面外观: 封面恢复四角 18dp 圆角,不因侧键位置改变封面形状。
  • 侧键改为简洁图标: 上一首、下一首保留独立点击区域,各自 31dp 高、中间 2dp 分界;仅绘制箭头,不再铺深绿色按钮底,箭头位于各自触控区域中央。
  • 歌词栏保持独立: 歌词卡片保留完整圆角;与透明侧键触控区之间保留 4dp 间隔,左右布局镜像一致。
  • 布局回归测试: 新增组合窗口宽度、镜像定位、窄屏和屏幕边缘约束测试。
  • 原有行为保留: 默认歌词字号 15.04sp、本地歌曲定位与滚动、折叠歌词区域拖动、无悬浮窗权限时的 App 内备用播放器。
  • 版本号: 1.40,versionCode = 44。

v1.39 历史版本

  • 两个独立按键: 上一首、下一首分别绘制独立按钮,各自有背景和圆角,中间留 2dp 间隔,不再显示为一整条控制栏。
  • 封面边缘对齐: 按键组贴合封面一侧,上键顶边、下键底边分别与封面上下边缘齐平;歌词栏独立并保留间距。

v1.38 历史版本

  • 按键归属修正: 上下两个独立按钮分别与封面边缘贴合,按钮之间留 2dp 间隔;封面与按钮相接的一边为平边,歌词栏保留独立圆角并与按钮组留 4dp 间距。
  • 上下边缘对齐: 上按钮顶边、下按钮底边分别与封面上下边缘齐平;两个按钮各 31dp 高,中间 2dp 间隔,总高 64dp,随左右布局切换。
  • 版本号: 1.38,versionCode = 42。

1.37 历史版本

  • 侧键与封面连体: 控制区与封面之间不留缝,两个空心箭头分别占据上、下 32dp,顶边与封面顶边齐平、底边与封面底边齐平;歌词栏贴在侧键另一侧,不额外留空隙。
  • 默认歌词字号: 设为 15.04sp;升级时仅将旧默认 17.28sp 自动迁移到 15.04sp,其他用户自定义字号不变。
  • 本地转圈定位: 滚动位置按界面实际展示的排序列表计算,修复歌曲高亮但列表未滚动到目标行的问题。
  • 收起区域可拖动: 保留隐藏歌词面板的透明触控热区,可拖动整组悬浮播放器;有权限与无权限的播放器共用同一视觉布局。
  • 回归测试: 覆盖字号迁移、自定义字号保留和按排序列表定位本地歌曲。
  • 版本号: 1.37,versionCode = 41。

v1.36 历史改进

  • 常驻侧键: 改为更醒目的空心上/下箭头,28dp 触控区、1dp 间隔;侧键栏缩至 28dp,并将封面与侧栏的间距缩小到 2dp。侧键仍位于封面与歌词栏之间,左右布局保持一致。
  • 歌词与进度条位置: 歌词栏整体下移 4dp,进度条在栏内再下移 2dp;侧键与歌词栏保持垂直对齐。
  • 回归测试: 更新组合布局宽度测试,补充侧键间距验证。
  • 版本号: 1.36,versionCode = 40。

v1.35 历史改进

  • 歌词栏宽度与组合布局: 改为按封面、切歌控制区和歌词栏的整体宽度计算默认位置,歌词栏尽可能使用可用空间;旧版默认居中的保存位置会迁移一次,手动摆放在其他位置的坐标保持不变。
  • 侧边切歌键: 去除圆形背景与边框,改为上下排列的纯三角;控制区放在封面和歌词栏之间,随歌词栏左右方向同步切换,不遮挡歌词。
  • 回归测试: 新增全组合居中、宽度和屏幕边界测试。
  • 版本号: 1.35,versionCode = 39。

v1.34 历史改进

  • 歌词翻译同步: 对无时间戳译文,依据原文当前时间轴行将译文行按比例映射,即使两者行数不同也不会一直停在第一句;原文中的“作曲”“编曲”等内容仍作为正常歌词保留。
  • 本地排序按钮: 将扫描按钮右侧的文字排序按钮改为 Material 3 图标按钮,循环顺序仍为“由新到旧 → 由旧到新 → A–Z”。
  • 悬浮窗侧边切歌: 增加常驻的上一首/下一首竖排三角图标,始终与歌词栏位于同一侧并预留独立宽度;歌词栏收起时切歌按钮仍可用,展开后歌词内容占满歌词栏,不再在歌词栏内部重复显示切歌键。
  • 进度条: 触控区域加高至 18dp、轨道宽度约为歌词栏的 94%,视觉轨道下移;支持按住拖动连续定位,不只响应点击,同时避免拖动进度时移动悬浮窗。
  • 版本号: 1.34,versionCode = 38。

自动化构建成功不替代真实 Android 设备验收。请以 GitHub Actions 的实际构建结果和 Release 附件为准。

v1.33 历史改进

  • 主界面、应用内迷你歌词和悬浮歌词统一使用歌词时间轴解析;有时间戳的译文按自己的时间轴定位。
  • 本地分页增加文件修改时间排序与缓存迁移,循环“新→旧”“旧→新”“A–Z”。
  • 原始歌词内容保留,不按“作曲”“编曲”等关键词过滤。
  • 版本号:1.33,versionCode = 37。

v1.32 历史修复

  • 系统媒体卡片恢复显示正常歌曲标题和艺人,不再把当前歌词作为标题。
  • 版本号:1.32,versionCode = 36。

v1.31 历史修复

  • 悬浮窗封面、歌词栏布局、展开 / 收起、左右侧定位与手势恢复到 v1.29 已发布实现。
  • 系统媒体卡片仍使用 MediaSession / MediaStyle,并保留全局悬浮窗开关;此历史版本将当前歌词作为媒体标题。

v1.30 历史改进

  • 悬浮歌词跑马灯: 当前歌词使用 Compose basicMarquee 以 24dp/s 缓慢横向滚动,起始延迟 700ms、循环间隔 900ms,不再用省略号截断;长歌词保留在文本内容中。
  • 半透明层次: 展开栏底层约 72% 不透明,配细绿色描边与柔和阴影;歌词内层使用更亮的半透明绿灰底,与外层形成清晰层次,前后切歌按钮带独立的低对比底色,进度轨道和进度线仍清楚区分。
  • 展开悬浮窗整体对齐: 歌词面板宽度比例由 1.2 增至 1.35,高度固定为 88dp,与 64dp 封面加下方 2dp 间隔和 22dp 三合一控制行的整体范围一致;面板上沿对齐封面顶部,下沿对齐播放模式 / 时间 / 播放暂停控制行的底部。首次显示时按整个组合宽度计算初始位置,窄屏尽量利用可用宽度;旧版默认居中的保存位置会迁移到新布局,明显手动拖动的位置保持不变。歌词行与进度条增加 4dp 间隔,进度条触控高度增至 16dp,可见轨道仍保持纤细样式。
  • 系统媒体卡片切换悬浮窗: 原关闭按钮变为 Lucide 开关图标,图形在 24dp 图标画布中缩至约一半。切换直接读写 floating_overlay_enabled 全局偏好,图标随状态更新,关闭时试听继续。
  • 系统标题限制说明: 始终向 Android MediaSession 提供完整当前歌词及显示标题。Android / OEM 决定系统媒体卡片中文字是否滚动或显示省略号,应用无法对系统自有的锁屏与下拉栏 TextView 强制设置 Compose 跑马灯,因此不采用高频替换标题来模拟滚动。
  • 代码 / 文档清理: 移除 v1.29 的临时会话级悬浮窗隐藏状态,避免它与用户全局设置冲突;补充媒体标题和开关标签测试,更新 README 和图标许可声明。
  • 版本号: 1.30,versionCode = 34。

v1.29 历史改进

  • 只保留系统媒体通知: 悬浮窗服务不再发布第二条“正在播放试听 / 悬浮播放器已开启”常驻通知;通知栏与锁屏只显示系统媒体播放卡片。
  • 当前歌词作为媒体标题: MediaSessionCompat 显示标题优先取当前活动歌词,并遵循全局“优先显示翻译歌词”设置;无歌词时回退到歌曲名,歌曲名与艺人信息保留在其他描述字段。
  • 媒体卡片关闭悬浮窗: 将静音按钮改为“关闭悬浮窗”。只关闭悬浮窗口,不暂停或销毁当前试听,播放进度和系统媒体控制继续工作。
  • 统一全局设置: 翻译歌词优先级仍读取现有设置;用户关闭悬浮窗后,本次会话不会因进度同步或播放状态变化自动重新出现。通过设置关闭再开启悬浮窗可以恢复显示。
  • 旧代码与文档清理: 移除未再使用的静音状态与命令、媒体服务闲置的控制 helper、悬浮服务重复通知和过时 README 声明;增加媒体标题回归测试。
  • 版本号: 1.29,versionCode = 33。

系统媒体卡片使用 AndroidX MediaSessionCompat 与 MediaStyle,锁屏布局仍由 Android 版本及设备厂商决定。自动化构建成功不等于完成所有设备上的实机验证。

v1.28 历史改进

  • 锁屏和下拉通知栏媒体卡片: 新增 Android MediaSession + MediaStyle 媒体通知,显示歌曲名、艺人、封面、当前歌词和上一首 / 播放暂停 / 下一首控制;可用系统媒体键及兼容的蓝牙耳机、车机媒体按钮操作同一试听播放器。
  • 统一控制状态: 通知栏、锁屏和悬浮窗都控制同一播放器队列、播放状态、进度和静音状态。保留现有悬浮窗按钮布局;静音切换只放在系统媒体通知控制里,不往悬浮歌词窗增加按钮。
  • GD Studio HTTP 5xx 回退: 网易云来源搜索遇到临时服务端错误时,自动尝试 flac.music.hi.cn 的同平台搜索;不会把 JOOX / Bilibili 等不支持的来源静默改成别的平台。
  • 失效候选自动跳过: 在当前搜索结果队列内,某个候选的下载地址失效或返回 HTTP 503 时,自动尝试后续候选;若队列没有其他版本,仍会显示可恢复的错误。
  • 通知权限: Android 13 及以上首次播放时申请通知权限;未授予时,部分手机可能不在下拉栏显示播放卡片,可在系统设置里开启音笺通知。
  • 版本号: 1.28,versionCode 32。

媒体卡片使用 AndroidX MediaSessionCompat 与 MediaStyle;参考 AndroidX Media3 的官方 DemoPlaybackService 与后台播放指南。系统会按设备厂商和 Android 版本决定锁屏卡片的具体排版,应用不对系统锁屏 UI 做任意自定义布局。

GD Studio API 的使用须注明来源“GD音乐台 (music.gdstudio.xyz)”并遵守 CC BY-NC 4.0 非商业使用限制。请遵守服务条款及适用版权规则。

自动化验收包括 :app:testDebugUnitTest、:app:assembleRelease、APK 对齐、签名与包名检查。CI 成功不代表已完成真实设备端到端测试;尤其锁屏展示、不同蓝牙设备的媒体键兼容性与第三方音源行为仍需在实际设备上验证。

签名提醒: 若仓库没有配置由维护者保管的持久化 Release 签名密钥,CI 会使用临时签名;不同版本可能无法覆盖安装。安装前请备份数据,不要将签名密钥提交到源码仓库。

音笺 MusicMeta v1.32

Choose a tag to compare

@github-actions github-actions released this 27 Oct 12:48

音笺 MusicMeta v1.32 正式版

  • 恢复系统媒体卡片正常标题: 下拉通知栏与锁屏媒体卡片显示正常歌曲标题和艺人,不再把当前歌词作为标题或副标题。
  • 清理歌词元数据传递: 移除系统媒体服务的当前歌词 extra / 状态;歌词行刷新不再触发系统媒体卡片反复更新。
  • 保持现有播放器行为: 悬浮迷你播放器、歌词面板、布局、手势及歌词显示均不变;系统媒体卡片的封面、播放控制和全局悬浮窗开关继续保留。
  • 版本号: 1.32,versionCode = 36。

本次只调整系统下拉栏 / 锁屏媒体卡片的标题元数据与相关冗余代码。CI 成功不代表已在所有厂商设备上完成实机验收,锁屏呈现仍由 Android System UI 与设备厂商决定。

v1.31 历史修复

  • 悬浮窗封面、歌词栏布局、展开 / 收起、左右侧定位与手势恢复到 v1.29 已发布实现。
  • 系统媒体卡片仍使用 MediaSession / MediaStyle,并保留全局悬浮窗开关;此历史版本将当前歌词作为媒体标题。

v1.30 历史改进

  • 悬浮歌词跑马灯: 当前歌词使用 Compose basicMarquee 以 24dp/s 缓慢横向滚动,起始延迟 700ms、循环间隔 900ms,不再用省略号截断;长歌词保留在文本内容中。
  • 半透明层次: 展开栏底层约 72% 不透明,配细绿色描边与柔和阴影;歌词内层使用更亮的半透明绿灰底,与外层形成清晰层次,前后切歌按钮带独立的低对比底色,进度轨道和进度线仍清楚区分。
  • 展开悬浮窗整体对齐: 歌词面板宽度比例由 1.2 增至 1.35,高度固定为 88dp,与 64dp 封面加下方 2dp 间隔和 22dp 三合一控制行的整体范围一致;面板上沿对齐封面顶部,下沿对齐播放模式 / 时间 / 播放暂停控制行的底部。首次显示时按整个组合宽度计算初始位置,窄屏尽量利用可用宽度;旧版默认居中的保存位置会迁移到新布局,明显手动拖动的位置保持不变。歌词行与进度条增加 4dp 间隔,进度条触控高度增至 16dp,可见轨道仍保持纤细样式。
  • 系统媒体卡片切换悬浮窗: 原关闭按钮变为 Lucide 开关图标,图形在 24dp 图标画布中缩至约一半。切换直接读写 floating_overlay_enabled 全局偏好,图标随状态更新,关闭时试听继续。
  • 系统标题限制说明: 始终向 Android MediaSession 提供完整当前歌词及显示标题。Android / OEM 决定系统媒体卡片中文字是否滚动或显示省略号,应用无法对系统自有的锁屏与下拉栏 TextView 强制设置 Compose 跑马灯,因此不采用高频替换标题来模拟滚动。
  • 代码 / 文档清理: 移除 v1.29 的临时会话级悬浮窗隐藏状态,避免它与用户全局设置冲突;补充媒体标题和开关标签测试,更新 README 和图标许可声明。
  • 版本号: 1.30,versionCode = 34。

v1.29 历史改进

  • 只保留系统媒体通知: 悬浮窗服务不再发布第二条“正在播放试听 / 悬浮播放器已开启”常驻通知;通知栏与锁屏只显示系统媒体播放卡片。
  • 当前歌词作为媒体标题: MediaSessionCompat 显示标题优先取当前活动歌词,并遵循全局“优先显示翻译歌词”设置;无歌词时回退到歌曲名,歌曲名与艺人信息保留在其他描述字段。
  • 媒体卡片关闭悬浮窗: 将静音按钮改为“关闭悬浮窗”。只关闭悬浮窗口,不暂停或销毁当前试听,播放进度和系统媒体控制继续工作。
  • 统一全局设置: 翻译歌词优先级仍读取现有设置;用户关闭悬浮窗后,本次会话不会因进度同步或播放状态变化自动重新出现。通过设置关闭再开启悬浮窗可以恢复显示。
  • 旧代码与文档清理: 移除未再使用的静音状态与命令、媒体服务闲置的控制 helper、悬浮服务重复通知和过时 README 声明;增加媒体标题回归测试。
  • 版本号: 1.29,versionCode = 33。

系统媒体卡片使用 AndroidX MediaSessionCompat 与 MediaStyle,锁屏布局仍由 Android 版本及设备厂商决定。自动化构建成功不等于完成所有设备上的实机验证。

v1.28 历史改进

  • 锁屏和下拉通知栏媒体卡片: 新增 Android MediaSession + MediaStyle 媒体通知,显示歌曲名、艺人、封面、当前歌词和上一首 / 播放暂停 / 下一首控制;可用系统媒体键及兼容的蓝牙耳机、车机媒体按钮操作同一试听播放器。
  • 统一控制状态: 通知栏、锁屏和悬浮窗都控制同一播放器队列、播放状态、进度和静音状态。保留现有悬浮窗按钮布局;静音切换只放在系统媒体通知控制里,不往悬浮歌词窗增加按钮。
  • GD Studio HTTP 5xx 回退: 网易云来源搜索遇到临时服务端错误时,自动尝试 flac.music.hi.cn 的同平台搜索;不会把 JOOX / Bilibili 等不支持的来源静默改成别的平台。
  • 失效候选自动跳过: 在当前搜索结果队列内,某个候选的下载地址失效或返回 HTTP 503 时,自动尝试后续候选;若队列没有其他版本,仍会显示可恢复的错误。
  • 通知权限: Android 13 及以上首次播放时申请通知权限;未授予时,部分手机可能不在下拉栏显示播放卡片,可在系统设置里开启音笺通知。
  • 版本号: 1.28,versionCode 32。

媒体卡片使用 AndroidX MediaSessionCompat 与 MediaStyle;参考 AndroidX Media3 的官方 DemoPlaybackService 与后台播放指南。系统会按设备厂商和 Android 版本决定锁屏卡片的具体排版,应用不对系统锁屏 UI 做任意自定义布局。

GD Studio API 的使用须注明来源“GD音乐台 (music.gdstudio.xyz)”并遵守 CC BY-NC 4.0 非商业使用限制。请遵守服务条款及适用版权规则。

自动化验收包括 :app:testDebugUnitTest、:app:assembleRelease、APK 对齐、签名与包名检查。CI 成功不代表已完成真实设备端到端测试;尤其锁屏展示、不同蓝牙设备的媒体键兼容性与第三方音源行为仍需在实际设备上验证。

签名提醒: 若仓库没有配置由维护者保管的持久化 Release 签名密钥,CI 会使用临时签名;不同版本可能无法覆盖安装。安装前请备份数据,不要将签名密钥提交到源码仓库。

音笺 MusicMeta v1.30

Choose a tag to compare

@github-actions github-actions released this 27 Oct 09:00
df6c3f5

音笺 MusicMeta v1.30 正式版

  • 悬浮歌词跑马灯: 当前歌词使用 Compose basicMarquee 以 24dp/s 缓慢横向滚动,起始延迟 700ms、循环间隔 900ms,不再用省略号截断;长歌词保留在文本内容中。
  • 半透明层次: 展开栏底层约 72% 不透明,配细绿色描边与柔和阴影;歌词内层使用更亮的半透明绿灰底,与外层形成清晰层次,前后切歌按钮带独立的低对比底色,进度轨道和进度线仍清楚区分。
  • 展开悬浮窗整体对齐: 歌词面板宽度比例由 1.2 增至 1.35,高度固定为 88dp,与 64dp 封面加下方 2dp 间隔和 22dp 三合一控制行的整体范围一致;面板上沿对齐封面顶部,下沿对齐播放模式 / 时间 / 播放暂停控制行的底部。首次显示时按整个组合宽度计算初始位置,窄屏尽量利用可用宽度;旧版默认居中的保存位置会迁移到新布局,明显手动拖动的位置保持不变。歌词行与进度条增加 4dp 间隔,进度条触控高度增至 16dp,可见轨道仍保持纤细样式。
  • 系统媒体卡片切换悬浮窗: 原关闭按钮变为 Lucide 开关图标,图形在 24dp 图标画布中缩至约一半。切换直接读写 floating_overlay_enabled 全局偏好,图标随状态更新,关闭时试听继续。
  • 系统标题限制说明: 始终向 Android MediaSession 提供完整当前歌词及显示标题。Android / OEM 决定系统媒体卡片中文字是否滚动或显示省略号,应用无法对系统自有的锁屏与下拉栏 TextView 强制设置 Compose 跑马灯,因此不采用高频替换标题来模拟滚动。
  • 代码 / 文档清理: 移除 v1.29 的临时会话级悬浮窗隐藏状态,避免它与用户全局设置冲突;补充媒体标题和开关标签测试,更新 README 和图标许可声明。
  • 版本号: 1.30,versionCode = 34。

v1.29 历史改进

  • 只保留系统媒体通知: 悬浮窗服务不再发布第二条“正在播放试听 / 悬浮播放器已开启”常驻通知;通知栏与锁屏只显示系统媒体播放卡片。
  • 当前歌词作为媒体标题: MediaSessionCompat 显示标题优先取当前活动歌词,并遵循全局“优先显示翻译歌词”设置;无歌词时回退到歌曲名,歌曲名与艺人信息保留在其他描述字段。
  • 媒体卡片关闭悬浮窗: 将静音按钮改为“关闭悬浮窗”。只关闭悬浮窗口,不暂停或销毁当前试听,播放进度和系统媒体控制继续工作。
  • 统一全局设置: 翻译歌词优先级仍读取现有设置;用户关闭悬浮窗后,本次会话不会因进度同步或播放状态变化自动重新出现。通过设置关闭再开启悬浮窗可以恢复显示。
  • 旧代码与文档清理: 移除未再使用的静音状态与命令、媒体服务闲置的控制 helper、悬浮服务重复通知和过时 README 声明;增加媒体标题回归测试。
  • 版本号: 1.29,versionCode = 33。

系统媒体卡片使用 AndroidX MediaSessionCompat 与 MediaStyle,锁屏布局仍由 Android 版本及设备厂商决定。自动化构建成功不等于完成所有设备上的实机验证。

v1.28 历史改进

  • 锁屏和下拉通知栏媒体卡片: 新增 Android MediaSession + MediaStyle 媒体通知,显示歌曲名、艺人、封面、当前歌词和上一首 / 播放暂停 / 下一首控制;可用系统媒体键及兼容的蓝牙耳机、车机媒体按钮操作同一试听播放器。
  • 统一控制状态: 通知栏、锁屏和悬浮窗都控制同一播放器队列、播放状态、进度和静音状态。保留现有悬浮窗按钮布局;静音切换只放在系统媒体通知控制里,不往悬浮歌词窗增加按钮。
  • GD Studio HTTP 5xx 回退: 网易云来源搜索遇到临时服务端错误时,自动尝试 flac.music.hi.cn 的同平台搜索;不会把 JOOX / Bilibili 等不支持的来源静默改成别的平台。
  • 失效候选自动跳过: 在当前搜索结果队列内,某个候选的下载地址失效或返回 HTTP 503 时,自动尝试后续候选;若队列没有其他版本,仍会显示可恢复的错误。
  • 通知权限: Android 13 及以上首次播放时申请通知权限;未授予时,部分手机可能不在下拉栏显示播放卡片,可在系统设置里开启音笺通知。
  • 版本号: 1.28,versionCode 32。

媒体卡片使用 AndroidX MediaSessionCompat 与 MediaStyle;参考 AndroidX Media3 的官方 DemoPlaybackService 与后台播放指南。系统会按设备厂商和 Android 版本决定锁屏卡片的具体排版,应用不对系统锁屏 UI 做任意自定义布局。

GD Studio API 的使用须注明来源“GD音乐台 (music.gdstudio.xyz)”并遵守 CC BY-NC 4.0 非商业使用限制。请遵守服务条款及适用版权规则。

自动化验收包括 :app:testDebugUnitTest、:app:assembleRelease、APK 对齐、签名与包名检查。CI 成功不代表已完成真实设备端到端测试;尤其锁屏展示、不同蓝牙设备的媒体键兼容性与第三方音源行为仍需在实际设备上验证。

签名提醒: 若仓库没有配置由维护者保管的持久化 Release 签名密钥,CI 会使用临时签名;不同版本可能无法覆盖安装。安装前请备份数据,不要将签名密钥提交到源码仓库。

音笺 MusicMeta v1.29

Choose a tag to compare

@github-actions github-actions released this 27 Oct 08:24

音笺 MusicMeta v1.29 正式版

  • 只保留系统媒体通知: 悬浮窗服务不再发布第二条“正在播放试听 / 悬浮播放器已开启”常驻通知;通知栏与锁屏只显示系统媒体播放卡片。
  • 当前歌词作为媒体标题: MediaSessionCompat 显示标题优先取当前活动歌词,并遵循全局“优先显示翻译歌词”设置;无歌词时回退到歌曲名,歌曲名与艺人信息保留在其他描述字段。
  • 媒体卡片关闭悬浮窗: 将静音按钮改为“关闭悬浮窗”。只关闭悬浮窗口,不暂停或销毁当前试听,播放进度和系统媒体控制继续工作。
  • 统一全局设置: 翻译歌词优先级仍读取现有设置;用户关闭悬浮窗后,本次会话不会因进度同步或播放状态变化自动重新出现。通过设置关闭再开启悬浮窗可以恢复显示。
  • 旧代码与文档清理: 移除未再使用的静音状态与命令、媒体服务闲置的控制 helper、悬浮服务重复通知和过时 README 声明;增加媒体标题回归测试。
  • 版本号: 1.29,versionCode = 33。

系统媒体卡片使用 AndroidX MediaSessionCompat 与 MediaStyle,锁屏布局仍由 Android 版本及设备厂商决定。自动化构建成功不等于完成所有设备上的实机验证。

v1.28 历史改进

  • 锁屏和下拉通知栏媒体卡片: 新增 Android MediaSession + MediaStyle 媒体通知,显示歌曲名、艺人、封面、当前歌词和上一首 / 播放暂停 / 下一首控制;可用系统媒体键及兼容的蓝牙耳机、车机媒体按钮操作同一试听播放器。
  • 统一控制状态: 通知栏、锁屏和悬浮窗都控制同一播放器队列、播放状态、进度和静音状态。保留现有悬浮窗按钮布局;静音切换只放在系统媒体通知控制里,不往悬浮歌词窗增加按钮。
  • GD Studio HTTP 5xx 回退: 网易云来源搜索遇到临时服务端错误时,自动尝试 flac.music.hi.cn 的同平台搜索;不会把 JOOX / Bilibili 等不支持的来源静默改成别的平台。
  • 失效候选自动跳过: 在当前搜索结果队列内,某个候选的下载地址失效或返回 HTTP 503 时,自动尝试后续候选;若队列没有其他版本,仍会显示可恢复的错误。
  • 通知权限: Android 13 及以上首次播放时申请通知权限;未授予时,部分手机可能不在下拉栏显示播放卡片,可在系统设置里开启音笺通知。
  • 版本号: 1.28,versionCode 32。

媒体卡片使用 AndroidX MediaSessionCompat 与 MediaStyle;参考 AndroidX Media3 的官方 DemoPlaybackService 与后台播放指南。系统会按设备厂商和 Android 版本决定锁屏卡片的具体排版,应用不对系统锁屏 UI 做任意自定义布局。

GD Studio API 的使用须注明来源“GD音乐台 (music.gdstudio.xyz)”并遵守 CC BY-NC 4.0 非商业使用限制。请遵守服务条款及适用版权规则。

自动化验收包括 :app:testDebugUnitTest、:app:assembleRelease、APK 对齐、签名与包名检查。CI 成功不代表已完成真实设备端到端测试;尤其锁屏展示、不同蓝牙设备的媒体键兼容性与第三方音源行为仍需在实际设备上验证。

签名提醒: 若仓库没有配置由维护者保管的持久化 Release 签名密钥,CI 会使用临时签名;不同版本可能无法覆盖安装。安装前请备份数据,不要将签名密钥提交到源码仓库。

音笺 MusicMeta v1.28

Choose a tag to compare

@github-actions github-actions released this 27 Oct 07:57

音笺 MusicMeta v1.28 正式版

  • 锁屏和下拉通知栏媒体卡片: 新增 Android MediaSession + MediaStyle 媒体通知,显示歌曲名、艺人、封面、当前歌词和上一首 / 播放暂停 / 下一首控制;可用系统媒体键及兼容的蓝牙耳机、车机媒体按钮操作同一试听播放器。
  • 统一控制状态: 通知栏、锁屏和悬浮窗都控制同一播放器队列、播放状态、进度和静音状态。保留现有悬浮窗按钮布局;静音切换只放在系统媒体通知控制里,不往悬浮歌词窗增加按钮。
  • GD Studio HTTP 5xx 回退: 网易云来源搜索遇到临时服务端错误时,自动尝试 flac.music.hi.cn 的同平台搜索;不会把 JOOX / Bilibili 等不支持的来源静默改成别的平台。
  • 失效候选自动跳过: 在当前搜索结果队列内,某个候选的下载地址失效或返回 HTTP 503 时,自动尝试后续候选;若队列没有其他版本,仍会显示可恢复的错误。
  • 通知权限: Android 13 及以上首次播放时申请通知权限;未授予时,部分手机可能不在下拉栏显示播放卡片,可在系统设置里开启音笺通知。
  • 版本号: 1.28,versionCode 32。

媒体卡片使用 AndroidX MediaSessionCompat 与 MediaStyle;参考 AndroidX Media3 的官方 DemoPlaybackService 与后台播放指南。系统会按设备厂商和 Android 版本决定锁屏卡片的具体排版,应用不对系统锁屏 UI 做任意自定义布局。

GD Studio API 的使用须注明来源“GD音乐台 (music.gdstudio.xyz)”并遵守 CC BY-NC 4.0 非商业使用限制。请遵守服务条款及适用版权规则。

自动化验收包括 :app:testDebugUnitTest、:app:assembleRelease、APK 对齐、签名与包名检查。CI 成功不代表已完成真实设备端到端测试;尤其锁屏展示、不同蓝牙设备的媒体键兼容性与第三方音源行为仍需在实际设备上验证。

签名提醒: 若仓库没有配置由维护者保管的持久化 Release 签名密钥,CI 会使用临时签名;不同版本可能无法覆盖安装。安装前请备份数据,不要将签名密钥提交到源码仓库。

音笺 MusicMeta v1.27

Choose a tag to compare

@github-actions github-actions released this 27 Oct 05:48

音笺 MusicMeta v1.27 正式版

  • 修复右侧悬浮窗闪动: 封面与歌词栏改为独立 WindowManager 窗口;展开 / 收起时不再移动或缩放封面窗口,歌词窗收起动画结束后移除,避免透明大窗口拦截其他应用操作。
  • 歌词自动双行: 缩小歌词栏内边距与底部进度条高度,默认字号及更小字号优先完整显示两行;字体过大或可用宽度不足时才省略。
  • 本地歌词可切换原文 / 译文: 读取文件内多个 LYRICS 标签字段;如果两种语言已合并成同时间戳的 LRC 行,则自动拆分并支持点击歌词切换。
  • 全局翻译优先设置: 设置项更名为“优先显示翻译歌词”,是本地音乐、公开歌单、红心歌单和其他在线音源共用的默认显示偏好,不局限于某个分页或仅限在线音源;点击歌词可手动切换,若没有译文则继续显示原文。
  • 版本号: 1.27,versionCode 31。

GD Studio API 的使用须注明来源“GD音乐台 (music.gdstudio.xyz)”并遵守 CC BY-NC 4.0 非商业使用限制。请遵守服务条款及适用版权规则。

自动化验收包括 :app:testDebugUnitTest、:app:assembleRelease、APK 对齐、签名与包名检查。CI 成功不代表已完成真实设备端到端测试;尤其系统悬浮窗手势与第三方音源行为仍需在实际设备上验证。

签名提醒: 若仓库没有配置由维护者保管的持久化 Release 签名密钥,CI 会使用临时签名;不同版本可能无法覆盖安装。安装前请备份数据,不要将签名密钥提交到源码仓库。

音笺 MusicMeta v1.26

Choose a tag to compare

@github-actions github-actions released this 27 Oct 04:57

音笺 MusicMeta v1.26 正式版

  • 本地封面离线显示: 扫描 MediaStore 或所选本地音乐文件夹时读取音频内嵌封面,存到应用本地私有目录;优先显示内嵌封面,没有时回退系统专辑封面或默认图。
  • 本地歌词离线显示: 本地曲目读取音频内嵌 LYRICS 标签并缓存,不调用在线歌词 API;有内嵌歌词即可离线显示。没有内嵌歌词的音频无法凭空生成歌词。
  • 悬浮窗防闪动: 展开时一次性预留完整窗口边界,期间只动画歌词面板透明度/缩放;收起动画完成后才缩回窗口。WindowManager 的 X 坐标不再随每帧动画左右移动。
  • 歌词字体大小: 默认从 v1.25 的 14.4sp 放大 1.2 倍为 17.28sp。在「设置与维护」加入可保存的滑块;正中央为默认值,左右端分别为默认值的一半和两倍,拖动会立即应用。
  • 封面点击排入下一首: 本地、公开歌单、红心歌单的封面点击都加入下一首;当前曲目结束后才切换。没有当前播放曲目时直接启动所选曲目。公开/红心歌曲排队前会查找第一个匹配音源。原有「找音源」和右侧播放按钮功能不变;本地卡片封面以外区域仍立即播放。
  • 交互教程: 仅在小标题「PLAYLIST」或「LOCAL MUSIC」右侧增加 Lucide 帮助图标,弹出简明交互教程,不放在大标题或下方说明文字旁。
  • 版本号: 1.26,versionCode 30。

GD Studio API 的使用须注明来源“GD音乐台 (music.gdstudio.xyz)”并遵守 CC BY-NC 4.0 非商业使用限制。请遵守服务条款及适用版权规则。

自动化验收包括 :app:testDebugUnitTest、:app:assembleRelease、APK 对齐、签名与包名检查。CI 成功不代表第三方音源仍可用,也不代表悬浮动画已经在真实设备端到端验证。

签名提醒: 若仓库没有配置由维护者保管的持久化 Release 签名密钥,CI 会使用临时签名;不同版本可能无法覆盖安装。安装前请备份数据,不要将签名密钥提交到源码仓库。

音笺 MusicMeta v1.23

Choose a tag to compare

@github-actions github-actions released this 26 Oct 15:41

音笺 MusicMeta v1.23 正式版

  • 降低 API 请求放大: 搜索候选列表不再为每一行自动请求 GD Studio 封面地址。没有直链封面的候选使用应用默认封面;真正试听时再解析当前歌曲封面。
  • 减轻客户端限流: 将本地保护预算调整为每安装实例最多 50 次 / 5 分钟,与 GD Studio 文档中标注的上限一致,不再额外扣掉 5 次。达到本地预算时显示剩余冷却时间,不作为异常报告上传。
  • 减少不必要的歌词请求: 网易云已返回原文歌词但没有翻译时,不再额外请求 GD Studio 只为补翻译;原文缺失时才尝试 GD Studio 补全。
  • 切歌保护: 上一首 / 下一首遇到本地冷却时,保留当前音频并显示可重试时间;不会把正常的冷却事件记录成崩溃/异常报告。
  • 修正服务边界与旧文案: 将 DEFAULT_SOURCE 改为更准确的 FLAC_SITE_HOME;仅在请求 flac.music.hi.cn 时读取该站 Cookie;下载地址解析方法改名,去除已经不再执行的“兜底”描述。
  • 版本号: 1.23,versionCode 27。

GD Studio API 文档要求注明出处“GD音乐台 (music.gdstudio.xyz)”,并声明 CC BY-NC 4.0 / 非商业使用限制。请遵守服务条款与适用版权规则。

自动化验收包括 :app:testDebugUnitTest、:app:assembleRelease、APK 对齐、签名与包名检查。CI 成功不代表所有服务端音源均可用或已经完成真实设备的完整端到端测试。

安装提醒:若本次 APK 的签名与已安装版本不同,Android 会拒绝覆盖安装;以该次 Actions 日志中的证书指纹为准。