Skip to content

Releases

v1.0.31

Choose a tag to compare

@ChissaQAQ ChissaQAQ released this 27 Oct 03:51

新增

  • 听歌统计里的「新发现的歌」换成「越听越多的歌手」:近 7 天比前 7 天、近 30 天比前 30 天、今年比去年同期,
    看谁听得比之前多,按次数或时长排
    • 「新发现」只能从开始记录那天算起,以前早听熟了的歌也被当成新歌;年度报告里的「新发现」一格也一起去掉
  • 趣味发现多了几张卡片:一口气听最久、最早的一次早起、最爱星期几、连听同一位歌手、久别重逢、听完率、
    听过几位歌手、累计时长能看几部电影;「听歌最多的一天」写上那天听了几首。年度报告的亮点也加了其中几张

修复

  • 从微信收到、直接在聊天文件夹里运行的,一键更新时报「拒绝访问」、换不上新版:
    微信会把收到的文件设成只读,现在替换前先去掉只读

说明

  • 「越听越多」要上一段时间至少一半的日子有记录才比,不够时先显示一句提示:
    近 30 天要记满一个半月左右,今年要从去年就开始记

v1.0.30

Choose a tag to compare

@ChissaQAQ ChissaQAQ released this 16 Oct 09:42

这一版新增听歌统计:记下听了哪些歌、听了多久,只存在本机。从托盘菜单「听歌统计…」或设置里打开。

新增

  • 听歌统计:累计时长、每天 / 周 / 月的时长、最常听的歌 / 歌手 / 专辑(按次数或时长排)、新发现的歌、
    一天里和一周里什么时候听,还有几张趣味小卡片;可以只看某个播放器
    • 网页里没有歌手的视频(如微信里的小红书、视频号)不算歌,不进统计
  • 年度听歌报告;统计页和年报都能存成图片或复制去分享,图里没有文件路径
  • 榜单配专辑封面和歌手头像:播放时顺带存到本机,打开统计页不联网
  • 托盘「歌词偏移」新增「仅这首歌」一组:只调当前这首,切歌后自动回正
  • 首次运行、还没放歌时,歌词条的位置上显示一句使用说明,托盘通知也交代菜单在哪

修复

  • 网易云搜索被限流(「操作频繁」)的那几分钟里,新歌全都没有译文:现在换另一个搜索接口接着搜
  • 歌词条偶尔整个看不见、切歌也不回来:被别的程序藏掉后,现在 1.5 秒内自己恢复
  • 任务栏图标增减时歌词在左右两半边之间来回跳:现在固定停在设置的那半边,空间不够就缩短显示
    (那半边被图标占满时除外)
  • 带译文和不带译文的行穿插时,切行动画把译文形变成另一句,或同一句叠着出现两遍
  • 前奏的歌名 / 歌手切到第一句时,歌手名形变成了首句歌词

优化

  • 悬停展开播放按钮的动画重做:只做平移和淡变,按钮像抽屉一样从封面右边拉出来,
    歌词不再跟着每帧重排、抖动

说明

  • 听歌记录、封面和头像存在 config.json 旁边的 stats、art-cache 文件夹,不上传;
    设置里可以关掉记录、关掉配图,或一键清空
  • 歌词缓存会自动失效,听过的歌首次播放要重新抓一次

v1.0.29

Choose a tag to compare

@ChissaQAQ ChissaQAQ released this 05 Oct 08:35

修复

  • 部分歌曲的译文与原文错开一句,对不上
  • 部分歌曲的后半首整段没有译文
  • 两句歌词合成一行时词粘在一起(如「feeling私は」)
  • 网易云搜不到的个别曲目(如「fish in the pool」)退到了无译文的歌词
  • 淡色封面被误当成占位图,显示不出来

说明

  • 歌词缓存会自动失效,听过的歌首次播放要重新抓一次

v1.0.28

Choose a tag to compare

@ChissaQAQ ChissaQAQ released this 03 Oct 07:06

这一版专治切行:两行歌词切换时的动画不够丝滑。不带译文时(第二行显示下一句),
「下一句」原先是在首行原地淡入、看起来凭空出现,现在改成小灰字一边往上走一边长大,
接到首行的位置上。顺带查出一处每切一行都要等 30~45ms 的隐藏卡顿。

修复

  • 不带译文时「下一句」在首行原地浮现,而不是走上去:旧上行、旧下行各自淡出淡入,
    中间没有任何东西在移动,观感就是大字突然出现在第一行。现在改成共享句形变:
    切行时量出旧「下一句」(小号灰字)和新「当前句」(大号白字)各自的实际排版位置,
    让新句从小灰字的位置与尺寸起步,随动画长到自己的位置和大小,两块包围盒全程严丝合缝地重合
    ——看起来就是同一句话边往上走边变大
    • 位置取实际排版结果而不是按对齐方式推算:大字溢出切了左对齐、小字没溢出还居中,
      或者从滚动到一半的地方接上播放,推算都会错位
    • 灰变白的换色压在前 45% 的时间里做完(新字在上层先淡入盖住旧字,盖严了再撤旧字):
      两层交叉淡变摊在整段动画上会出现重影
    • 量不到排版结果时(窗口隐藏、布局没出来)退回淡入淡出,照样能切

优化

  • 切行动画整体重做:位移从「走 0.6 个行高 + 旧行 120ms 抢着退场」改成首尾相接的整块传送带
    ——两行永不重叠,旧行陪新行走完全程,缓动改为两头速度为零的正弦缓入缓出,
    淡变跟着位移的进度走、集中在贴着窗口边缘的那半程
    • 旧行不再是「闪没」而是「滑上去」;两行相加的亮度中途不再塌陷(原先会掉到 0.6 上下,
      整条一暗一亮)
    • 旧上行贴边淡出,不再被窗口裁剪边缘一刀切掉;两端速度为零,丢一帧也看不出位移跳变
  • 每切一行都有 30~45ms 的隐藏卡顿:浮动模式下判断「窗口还挂没挂在任务栏下面」
    用的是 GetParent,而它对弹出窗口返回的是所有者,WPF 给 ShowInTaskbar=False 的窗口
    配了个隐藏所有者、永远非空——于是每次切行都白跑一遍 SetParent。这对可见窗口是
    「先藏、换父、再显示」的一整套,UI 线程全程被按住,而且正好压在切行动画开头。
    改为看窗口样式里的 WS_CHILD 位
  • 切行时重新断言窗口层级:那是一次跨进程的 SetWindowPos(实测 1~8ms),也压在动画第 0 帧上。
    切行这一路不再断言,交给 1.5s 周期贴合和前台切换钩子兜着;位置尺寸没变就什么都不做
  • 动画改在贴合窗口之后才启动:变宽那一下会同步卡住几十毫秒,先启动的话时钟在卡顿里照走、
    解冻后第一帧直接跳到半路。放在后面,卡顿落在画面还静止的时候,动画从第 0 帧完整走起
  • 歌词窗口改走软件渲染:分层(透明)窗口走 GPU 时每帧都要把画面从显存读回系统内存
    再交给 UpdateLayeredWindow,窗口就这么一小条,回读和驱动往返比光栅化本身还贵。
    逐字扫光的常态下渲染线程 CPU 从 1720% 降到 811%,改窗口宽度那一下的卡顿也短了一截,
    帧率不变。只影响歌词窗口,设置窗口照旧走 GPU
  • 旧行滚动的跟随解订阅:切行时旧行已在上移淡出,没人再看它滚到哪,
    但它还在每帧唤醒 UI 线程做低通滤波,和新行的滚动、光栅化挤同一个 16.7ms 预算
  • 密集切行时不再先瞬移回原位:上一次动画没跑完就又切行(密集说唱段落)时,
    旧块从它当前的位置接着走,新块的起点跟着让同样的量,两块的路程相等、间距全程不变

说明

  • 已知问题:上一次动画还没走完就切下一行时,两块会先停顿约 60ms 再走(缓动从零速重新起步),
    带译文与不带译文两种模式都一样。不影响正确性,尚未处理

v1.0.27

Choose a tag to compare

@ChissaQAQ ChissaQAQ released this 28 Sep 09:34

这一版是一轮全面排查的结果:安装更新、播放器同步、歌词抓取、自动避让四块一共修了二十几处,外加三个抓歌词的老毛病——作词作曲这类制作信息总漏一两行出来、网易云没有原唱时抓成同名翻唱(「告白氣球」)、抓成 acoustic 等重新编曲的版本(「晩餐歌」)。

修复

歌词

  • 作词/作曲等制作信息偶尔漏一两行上屏:原先只靠一张职务词表逐行认,词表外的写法(日文片假名职务、「原唱」「原曲」、各种乐器名)、主歌词开头的「歌名 - 歌手」标题行、译文行尾的「译:某某」署名都会漏过去。改为按位置放宽:歌词开头、结尾那一整块「键:值」形状的行都算制作信息,夹在中间的仍按严格词表认,免得误删「他说:……」这种真歌词;译文行尾的译者署名单独剪掉
    • 键像在说话(带人称代词、以「说/问」结尾)的不算制作信息;「电吉他」「其他乐器」里的他/它不当人称
    • 「滤掉六成以上就判为误伤、整份原样保留」这道保险不变
  • 网易云没有原唱时抓成同名翻唱:实测「告白氣球 / 周杰倫」,网易云上没有周杰伦的版本,歌手对得上的只有一段 48 秒的片段。用 QQ 音乐、Spotify 这类会上报时长的播放器听时,时长闸一过,剩下的候选歌手全对不上,程序放开歌手限制挑中了 228 秒的翻唱,还当成完整结果写进缓存冻结 30 天——而 QQ 音乐上明明就有原唱。现在歌手对不上的结果只当备胎:先问完 QQ 音乐和 LRCLIB,都没有歌手对得上的版本才用它
    • 这条退路是给「Jay Chou」对「周杰伦」这类写法不一致留的,各家都对不上时照样有歌词;几个备胎之间默认留网易云的(带译文),别家的时长明显更贴近播放器上报的才换
    • 自愈重试时备胎排在备选源之下:宁可没有译文,也要原唱的时间轴
  • 抓成 acoustic / 弹唱等重新编曲的版本:实测「晩餐歌 / tuki.」,网易云搜索排在前面的是 acoustic 版和弾き語り版,跟录音室版同为「歌名包含」一档,原先按搜索顺序挑中了 acoustic 版。版本标签补上 acoustic / unplugged / 弾き語り / 弹唱 / piano / 钢琴版 / sped up / slowed / nightcore / 加速版 / 降速版;播放的歌名里本来就带这些词时照样认它
  • 歌手名写法一变就抓错版本:「周杰倫」对不上「周杰伦」、「A/B」对不上「B A」时歌手闸失灵,程序会放开到同名翻唱里去挑。现在拆开多歌手、做繁简 / 全角归一后再逐个比,三家曲库共用一套规则
  • Live / 伴奏 / 翻唱版排到原版前面:歌名分数认出这类版本标签,同一档里往后排(不跨档,不打乱「歌名优先」的挑选规则);播放的歌名自己带着同类标签时不罚
  • 曲库限流被当成「没有这首歌」:网易云、酷狗限流时照样回 HTTP 200,只是错误码不对,原先和真搜不到混在一起——网易云这边就此不再重试,酷狗这边更是把「没有逐字歌词」写进缓存放 30 天。现在一律按请求失败处理;QQ 音乐搜索的错误码、LRCLIB 的非 404 错误同理
  • 一次网络抖动把残缺结果冻结 30 天:首选候选请求失败落到次选、或逐字请求失败时,结果标成降级、不写缓存
  • 重试把已经在显示的歌词顶掉:自愈重试原先无条件覆盖,网易云依旧失败时会把正在显示的 QQ 歌词换成「只显示歌名」。现在一首歌首次抓取总是接受,之后只接受严格更好的;网易云明确答复「没有这首歌」时也不再每次播放白跑满三轮重试
  • 逐字歌词对到同名的 Live / remix 版上:网易云客户端不上报时长,酷狗那边「时长差 ≤ 20s」的过滤在它身上整个短路。现在播放器没报时长时改用主歌词曲库登记的时长

播放器同步

  • 合盖睡一晚醒来,歌词直接跳到末尾:推算进度用的计时器把睡眠、休眠的时间也算了进去,主程序还会据此误判成单曲循环去归位。改用不含睡眠时长的系统计时
  • 切换播放器后进度串台:进度基准原先全局只有一份,读失败一次、会话瞬断、auto 模式临时切去别的播放器都会丢,网易云这种不报进度的就从头算。现在按播放器分别保存,换走时停着的那个把基准冻结住
  • 系统媒体接口出错一次就再也不工作:开机自启时系统媒体服务还没就绪之类,抛一次异常整个监听就此结束。现在失败会退避重试,接口本身失效时重新获取
  • 单曲循环第二遍整首慢一截:重播归位改为「已经进入这一遍多少」而不是一律归零;超出不止一遍时按歌长取模,不会卡在最后一句

自动避让

  • 后台测量持续漏内存:任务栏 UIA 枚举每一轮都会漏一点原生内存,原先每次切前台窗口都要重新测一遍。现在先算「任务栏按钮集合」的指纹(纯 user32,微秒级),真有增减才测;歌词隐藏时停止测量
  • 切虚拟桌面、打开设置 / 计算器后歌词压住图标:这些窗口处在 cloak 状态,指纹原先认不出按钮整批变了,最长要等 60 秒才纠正
  • explorer 抽风一次之后避让永久失灵:1.0.25 加的「换线程接手」额度是终身的,实测 3 分钟内就能烧光。改为正常完成一轮就复原;测量失败的重试间隔改为 1s 起逐次翻倍、封顶 60s
  • 装了 ExplorerPatcher / StartAllBack 的 Win11 上歌词盖住图标:原先按系统版本号判断任务栏类型,恢复经典任务栏后照样当 Win11 处理,把包着按钮的容器整个跳过了。改为按窗口结构判断
  • 混合 DPI 多屏下尺寸、位置算错:从 150% 的主屏挂进 100% 的副屏任务栏后 WPF 仍按旧 DPI 换算。换父窗口后补发 DPI 刷新消息

安装、更新与设置

  • 可以同时开出两份:两个歌词条、两个托盘图标,后台请求也跟着翻倍。现在只允许运行一份(按用户会话隔离,远程桌面的另一个会话照样能开)
  • 更新失败时毫无退路:替换 exe 原先直接原地覆盖,写到一半失败旧版也没了;另存新版的路径拼成了 updates\updates、必然失败;替换不了时还会装作成功。现在先写临时文件再原子改名、另留一份 .old 备份,失败时明确告知新版存在哪
  • 托盘点「更新」后毫无动静:下载要几秒到几十秒,原先期间没有任何提示、失败也一声不吭。现在开始和失败各弹一条托盘气泡,下载中菜单项置灰,不会重复下载
  • 屏蔽的播放器解除不了:被屏蔽的播放器当不上「当前播放器」,设置页那个按钮对它无能为力(浏览器默认就在名单里)。设置页新增「已屏蔽的播放器」列表,逐条取消屏蔽
  • 设置页「应用」覆盖掉托盘里刚改的设置;两处同时存盘互相撞车(撞一次配置就可能转存到 %AppData%):存盘改为串行,临时文件名带进程号
  • 日志写不进程序目录时直接丢掉:装在 C:\Program Files 下时改写到 %AppData%\TaskbarLyrics\error.log,设置页「打开日志目录」跟着走

优化

  • 设置页新增「清空歌词缓存」:抓错了版本可以清空后重新获取,正在放的这首随即重抓
  • 诊断命令 --lyrics-test 加了第 5 个参数「时长秒」,可以模拟 QQ 音乐、Spotify 这类会上报时长的播放器(省略即网易云客户端的情形)

说明

  • 歌词缓存的格式版本随之递增:旧缓存里可能躺着漏网的制作信息行、同名翻唱或 acoustic 版,升级后这些条目自然失联,听过一遍就会重新抓到正确的结果

v1.0.26

Choose a tag to compare

@ChissaQAQ ChissaQAQ released this 14 Sep 06:21

这一版修一句歌词被切成上下两行显示、译文只挂在其中一行(或者整句都没译文)。

修复

  • 明明是一句话的歌词,原文却被切到上下两句、译文只跟着其中一句:两个曲库的断句粒度本来就不同,跨源配对原先只认「一个主歌词行 ↔ 相邻两个 KRC 行」。酷狗遇上「A(A)」这种括注重复句常拆到四行,此时两道门槛同时失效——单行比整句连文本相似度下限都摸不到(实测「KICK BACK」一句 38 字被拆成四行,其中一行 9 字,相似度上限只有 0.38),两行拼起来也够不到合并所需的 0.8,于是整句一行都配不上。改为放宽到一对多(最多四行)
    • 实测「夜に駆ける」57 行 → 56 行(=主歌词行数),无译文行 1 → 0;「KICK BACK」51 行 → 46 行,无译文行 7 → 0
    • 合并配对按「吃掉几行」记几份分:这样当那些多出来的行另有各自的好归宿时,「各配各的」总分更高,合并只在它们本来无处可去时才发生——不会把旁边那句无关的短句顺手吞进来
  • 两句毫不相干的歌词被粘成一行(连带损伤,逐字字表也跟着串):上面那些配不上的行会变成「孤儿」,而找回被拆走那半句的「向后吸附」原先只看时间。实测「KICK BACK」有个孤儿到隔壁那句的行首只差 10ms、比到它自己那句的 320ms 还近,三道时间闸全过。现在补一道文本闸:拼起来必须比原先那行更像主歌词这一句才吸
    • 比大小时用真实相似度而非带门槛的值:吸附本就是给「文本相似度失手」兜底的,两边都够不到门槛是常态,按门槛算会双双归零、比不出高下

说明

  • 歌词缓存的格式版本随之递增:旧缓存里可能正躺着被切开、且只有一行带译文的句子,升级后这些条目自然失联,听过一遍就会重新抓到正确的结果

v1.0.25

Choose a tag to compare

@ChissaQAQ ChissaQAQ released this 24 Aug 02:57

这一版修三个看起来像随机、其实都有确定成因的问题。

修复

  • 设置一重启电脑就变回去(反馈集中在「避让停靠侧」和「停靠对齐」,实际所有设置项都会中):配置的读与写各有一套路径选择逻辑,两套不对称 —— 存盘在 exe 同目录写不进去时会转存 %AppData%,而读取只在 exe 同目录「不存在」文件时才看退路,于是存进去的和读回来的根本不是同一个文件。全程静默,用户能看到的只有「改完当场生效、重启后变回旧值」
    • 触发它不需要权限长期不足:OneDrive 同步、杀软扫描、备份工具短暂锁住 config.json 就够了
    • 现在读写对称:两处都有内容时取较新的那份,它坏了再退到另一份
    • 存盘同时改成原子写(先写 .tmp 再改名):直接覆写的话,写一半遇上关机就留下半截 JSON,而解析失败的代价原先是整份设置回默认且不可恢复。现在这种文件会被隔离成 config.json.bad 留证,不再被默认值覆盖掉
  • 同一首歌抓到 Live 版的歌词:候选择优原先只比「有译文的行数」,长一倍的 Live 版光靠行数多就能赢过录音室版(实测有一首录音室版 45 行 / Live 版 102 行,抓回来整首都是 Live 的即兴口白)。改为歌名精确度优先,译文覆盖率改用比率
  • 自动避让把窗口停在旧位置、和图标之间空一块:「拿不到新的任务栏布局就沿用上次」原先没有任何年龄上限,而后台枚举有几条静默停产的路子(其中一条是 UIA 调用挂在 explorer 上出不来,没有超时)。踩上之后窗口就无限期停在几天前那份布局算出来的位置上,既不自愈也不留痕迹。现在加了看护:卡住会换一条线程接手,持续拿不到结果则留日志并等恢复
  • 上一版那道任务栏遗留窗口过滤有个绕过口子:它排在「接近全宽的容器继续往下拆」之后,而遗留窗口报的矩形本来就跟现实无关,完全可以报出接近全宽从而绕过过滤(实测副屏那个报了 1872px 宽,真实只有 445px)

优化

  • 静默降级现在留得下痕迹:日志原先只能写异常,而这类故障(后台查询从此不产出、配置被转存到别处)根本不抛异常,用户看到的只是「位置不对」或「设置没了」。现在 error.log 里查得到

用法:下载 TaskbarLyrics.exe 双击即用,需要 .NET 10 Desktop Runtime。
播放器必须打开「系统媒体控件(SMTC)」上报,否则收不到曲目信息 —— 自查方法见 README。

完整改动见 CHANGELOG.md。

v1.0.24

Choose a tag to compare

@ChissaQAQ ChissaQAQ released this 06 Aug 09:59

这一版解决两件在浅色任务栏和多显示器上很明显的问题。

修复

  • 浅色任务栏上白字几乎看不见:新增「文字颜色」选项,默认跟随系统明暗 —— 深色任务栏白字、浅色任务栏近黑字,系统换主题(含日落自动切换)时自动跟上。想固定颜色的仍可切「自定义」,设置页备有常用预设色块
    • 阴影同步反色:深字配白影、浅字配黑影(阴影是给笔画描反差的,深字配黑影只会更糊)
    • 悬停遮罩与封面占位原先写死了半透明白,压在浅底上等于什么都没画、占位的音符直接消失,现在也跟着明暗走
  • 自动避让把窗口停到错位置:Win11 的任务栏是 XAML 画的,但 Win10 时代的容器窗口还挂在树上,报着一个跟实际布局毫无关系的旧矩形 —— 它会凭空吃掉几百像素可用区,窗口因此停偏。现已识别并跳过(主屏 ReBarWindow32,副屏 WorkerW)
  • 窗口硬挤在窄的那半边被切字:「避让停靠侧」原先是硬约束,指定的半边只要有一条缝就往里挤,哪怕对面宽出一大截(实测右边 255px、左边 337px 时窗口硬缩到 247px,长歌名当场被裁掉)。现在放不下时会跨到明显更宽的那边

优化

  • 空档太窄时先收起封面,把地方全让给文字(只剩几个字在滚就读不成句子了)
  • 与两侧图标的间距 4px → 8px:原先长歌词滚动的裁切边缘正好压在图标边上,看着像被图标遮住

用法:下载 TaskbarLyrics.exe 双击即用,需要 .NET 10 Desktop Runtime。
播放器必须打开「系统媒体控件(SMTC)」上报,否则收不到曲目信息 —— 自查方法见 README。

完整改动见 CHANGELOG.md。

v1.0.23

Choose a tag to compare

@ChissaQAQ ChissaQAQ released this 06 Aug 08:36

这一版只做一件事:「检查更新」失败时把原因讲清楚。

修复

  • 原先不管什么原因都只显示「检查失败,请稍后重试」,异常还被就地吞掉、error.log 里一个字都不留 —— 看不出是限流、断网还是真故障。现在按原因分开讲:
    • 撞上 GitHub 接口限流 → 明说「每小时 60 次、与同一网络下的其他人共享,约 X 分钟后恢复」。这个配额是按出口 IP 算的,公司 / 学校 / 宿舍共用出口时几个人分摊同一份,撞上属于正常现象,不是程序坏了
    • 连不上 → 「连不上 GitHub(网络不通或被拦截)」
    • 404 / 服务端错误 / 其他 → 各自的说法,意料之外的异常记入 error.log

优化

  • 启动检查加节流:距上次成功检查不足 6 小时就跳过,免得频繁开关机白耗那 60 次配额。手动点「检查更新」不受限制,想查随时能查
  • 新增 --update-test:再遇到「检查失败」,命令行跑一下就知道是限流、断网还是真故障
TaskbarLyrics.exe --update-test

用法:下载 TaskbarLyrics.exe 双击即用,需要 .NET 10 Desktop Runtime。
播放器必须打开「系统媒体控件(SMTC)」上报,否则收不到曲目信息 —— 自查方法见 README。

完整改动见 CHANGELOG.md。

v1.0.22

Choose a tag to compare

@ChissaQAQ ChissaQAQ released this 06 Aug 07:59

这一版的重点是歌词内容的正确性和切行动画的观感。

修复

  • 有些歌只有中文译文、没有原文:这类投稿把翻译直接填进了主歌词字段、译文轨留空,原文只在酷狗 KRC 那侧,文本比对必然对不上。现在改用语言构成 + 时间轴逐行贴合度来认这种情形,认出后原文上行、译文下行、全曲逐字(实测 7co「ハツコイノウタ」:修复前 52 行全中文 / 6% 逐字,修复后 45 行原文 + 44 行译文 / 100% 逐字)
  • 歌词抓错:候选筛选要求歌名命中,并按译文覆盖率择优
  • 一句译文对着两句原文:KRC 把一行拆成两行时,后半句下面不再空着
  • 首句没有译文、切到罗马音后第二行全空、中间几句突然丢译文
  • 快结束时又跳回开头第一句:长尾奏不再被误判成单曲循环
  • 长时间运行后任务栏卡死、程序自行退出:任务栏元素枚举搬到后台线程并修掉原生内存泄漏
  • 设置窗口始终置顶
  • 非歌词行漏过滤:作词/作曲/编曲等 credits 行

优化

  • 切行动画重做:位移换正弦缓出、幅度压到行高的 0.6,新旧两行共用同一条曲线与幅度,看起来是一条传送带在动;动画期间不再收窄窗口
  • 歌词磁盘缓存:切歌瞬间出词,断网时听过的歌照样有歌词(30 天 / 400 首,设置页可清空)
  • 全曲逐字:有逐字数据的歌,不再出现「有的句子有、有的没有」
  • 托盘菜单加歌词偏移快捷调整
  • 繁简与别名归一化,歌名歌手的变体写法不再漏歌

变更

  • 自动更新源换成 GitHub Releases(原先是作者内网地址,外网必然失败)

用法:下载 TaskbarLyrics.exe 双击即用,需要 .NET 10 Desktop Runtime。
播放器必须打开「系统媒体控件(SMTC)」上报,否则收不到曲目信息 —— 自查方法见 README。

完整改动见 CHANGELOG.md。