Skip to content

Releases: jayfunc/BetterLyrics

v1.3.462.0

19 Jun 08:20

Choose a tag to compare

An English version follows the Chinese

ℹ️ 更新日志

⭐ 新增

  • 歌词导出功能:新增支持将歌词导出为 .lrc.ttml 格式文件的功能。

  • 双向排版支持(横排/竖排):重构歌词布局逻辑(引入 LyricsLineRendererBase 分支体系),全面支持垂直竖排歌词显示,并统一了两种排版方向的滚动、可见性判定与动画管线。

  • 图层拖拽与动态排序:引入 LyricsLayerTypeLyricsLayerConfig,支持在横排或竖排布局下通过鼠标拖拽调整图层顺序,并提供完整的本地化配置文本。

  • 原生对齐与歌手识别:新增“保持原生对齐”设置。支持根据 TTML 内的 agentId 自动为不同角色分配对齐方式(如:主唱靠左、和声靠右、合唱居中)。

  • 3D 视差倾斜特效(Parallax Tilt)

    • 引入 ParallaxTiltControlParallaxTiltEffectEffectRendererBase
    • 为播放页(NowPlayingPage)的专辑封面及相关控件添加了精美的 3D 倾斜与悬停视差特效,支持多图层联动与单层控制开关。
  • 静态流体背景:为流体背景渲染器新增了“静态模式”可选配置。

  • 全新侧边弹窗组件:引入通用组件 FloatSidePanelSidePanelPlacement 枚举,统一了设置页面中的各类弹窗面板,全面支持多方向弹出及点击遮罩层自动关闭。

🪄 调整

  • 异步架构现代化重构:引入 DebouncerAsyncPollerAppUIThread,统一了全套防抖逻辑与 UI 线程调度方案,彻底移除了老旧的定时器相关实现。
  • TTML 规格升级:深度适配 amll-ttml-db 技术规范,大幅提升了 TTML 歌词解析、导出、逐字逐素(Syllables)、翻译、正音(Transliterations)及元数据的处理精度。
  • 异步加载与容错体验:优化了歌词、字体以及音乐库的异步加载流程,增加了明确的加载状态提示与多重复试机制
  • UI 交互细节优化
    • 为歌词增加了边缘羽化(Edge-feathering)效果独立开关。
    • ExternalLinkButton 增加了鼠标悬停动画。
    • 优化了“关于”页面中的 QQ 群与赞助按钮的交互体验,并增强了鼠标事件处理结构。

🔧 修复

  • 流体背景切歌逻辑修正:修复了在切换曲目时,静态模式下的流体背景不会跟随歌曲色彩同步更新的问题。
  • TTML 歌曲名解析优化:优化了 musicName 标签解析,优先采用第一个非空值作为歌曲标题,防止后续空标签或重复标签覆盖已有数据。
  • 核心解析与动画修正:重构了 LyricsContentParser 中的 EnsureSyllablesEndMs 判定逻辑,提升了长音节歌词在 NowPlayingCanvas 中的动画丝滑度与导出精确度。
  • 清理与稳定性增强:移除了代码中冗余的 using 引用与命名空间,精简了控制层 ViewModel 中的弹窗状态属性与方法,并修正了部分资源文件及应用清单(Manifest)的配置错误。

⬇️ 下载


ℹ️ Update Log

⭐ New Features

  • Lyric Export Support: Added support for exporting lyrics as .lrc and .ttml format files.

  • Vertical Layout Strategy: Decoupled layout structures by replacing LyricsLayoutManager with LyricsLineRendererBase. The application now fully supports vertical lyric orientation alongside traditional horizontal displays, aligning scrolling, visibility, and animation pipelines for both modes.

  • Drag-and-Drop Layer Reordering: Introduced LyricsLayerType and LyricsLayerConfig, allowing users to reorder presentation layers dynamically via drag-and-drop for both horizontal and vertical layouts.

  • Native Alignment via TTML Agent: Added a "Keep Native Alignment" setting to automatically assign line alignments (e.g., primary vocalist left, secondary vocalist right, chorus center) determined by the TTML agentId.

  • 3D Parallax Tilt Effects:

    • Implemented ParallaxTiltControl, ParallaxTiltEffect, and EffectRendererBase.
    • Brought beautiful 3D tilt and hover parallax effects to the NowPlayingPage album art container with customizable multi-layer interaction toggles.
  • Static Fluid Background: Added a static configuration mode option to the fluid background renderer.

  • FloatSidePanel Component: Replaced SwitchPresenter with the new FloatSidePanel control and SidePanelPlacement infrastructure, unifying settings popup panels with multi-directional animations and dismiss-on-mask-click behaviors.

🪄 Adjustments

  • Modernized Async Architecture: Introduced Debouncer, AsyncPoller, and AppUIThread to unify debounce logic and UI thread scheduling codebase-wide; officially cleaned up legacy timer-related code.
  • TTML Specification Upgrade: Fully adapted to the amll-ttml-db specification, significantly improving TTML lyric parsing, metadata extraction, and export routines for per-word syllables, translations, and transliterations.
  • Async Loading Experience: Refined asynchronous loading pipelines for lyrics, fonts, and the local music library by adding explicit loading states, optimized retry mechanisms, and supplemental localization assets.
  • UI & Interaction Polish:
    • Added an independent configuration toggle for lyrics layout edge-feathering effects.
    • Added smooth hover animation states to ExternalLinkButton.
    • Refined mouse event handling layouts and optimized QQ group and donation button click flows on the About page.

🔧 Fixes

  • Static Fluid Background Switch: Fixed a bug where the static fluid background failed to refresh its palette colors when switching tracks.
  • TTML musicName Parsing: Optimized musicName tag parsing to prioritize the first non-empty value, preventing subsequent empty or duplicate tags from erroneously overwriting the active song title.
  • Parser Animation Smoothness: Refactored EnsureSyllables and EndMs processing inside LyricsContentParser, correcting long-syllable lyric animations in NowPlayingCanvas and enhancing export precision.
  • Maintenance & Code Cleanup: Purged redundant namespace imports and using directives, stripped obsolete panel visibility bindings from ViewModels, and resolved minor resource entry and app manifest configuration anomalies.

⬇️ Download

v1.3.452.0

06 Jun 02:46

Choose a tag to compare

v1.3.452.0

An English version follows the Chinese

ℹ️ 更新日志

⭐ 新增

  • 数据统计仪表盘与热力图:在数据统计面板(StatsDashboardControl)中新增了类似 GitHub 的贡献热力图,包含完整的数据模型、UI 布局及本地化语言支持。
  • 独立统计窗口支持:支持通过菜单项和特定协议(Protocol)将数据统计窗口作为独立窗口打开。
  • GIF 播放动态控制:引入 GifHelper.cs 并实现 IsPlaying 附加属性,支持通过数据绑定动态控制 GIF 的播放与暂停。
  • 启动与媒体控制选项:新增了在启动时显示或隐藏欢迎屏幕(Splash Screen)的配置选项;新增了当媒体会话为空时自动隐藏窗口的功能。
  • 关于页面重构与动态加载:重构了“关于”页面,改为从 CSV 文件动态加载贡献者和赞助者列表,大幅提升可维护性。
  • 全新通用组件与转换器
  • 新增 ExternalLinkButton 控件,完美适配 Fluent 设计体系并统一了外部链接样式。
  • 新增 SafeNumberBox 以优雅处理整数与 NaN,替换了原有的布局相关数字输入框。
  • 扩展了 IntToVisibilityConverter 以支持阈值判定,并新增了 NaNToZeroConverter

🪄 调整

  • 统计面板与常规 UI 样式统一:统一了数据统计卡片的次要文本颜色以提升视觉呈现效果;重构了设置页面的导航结构,移除了设置页侧边栏中旧版的统计入口;同时统一了卡片控件的样式。
  • 歌词检索与界面体验优化:优化了歌词检索过程中的状态提示文本信息;对多个核心场景的 UI 布局和样式进行了微调与改进。
  • 精简依赖与模块清理:清理了 AI 插件的相关依赖,并同步更新了子模块(Submodules)、赞助者列表及相关的文档(README/CONTRIBUTING)。
  • 应用名称与本地化处理:支持通过包名区分应用名称(AppName);精简并修正了多语言资源文件,新增了“帮助”相关的本地化文本并修复了微小的翻译错误。

🔧 修复

  • 调色板异常处理:修复了在获取主题主色调(Accent Colors)时因输入超出范围而导致崩溃的问题,现已支持自动回退至 PaletteGeneratorType.Auto
  • 任务栏挂钩兼容性增强:优化并缓存了任务栏的 AutomationElement,增强了任务栏 Hook 的兼容性。
  • 歌词渲染与布局修复:优化了歌词渲染逻辑,修复了在切换时界面布局重新排列(抖动)的问题。
  • 稳定性与异常保护:为媒体管理模块引入了异常保护机制,提升了软件运行时的稳定性;修复了曲目年份缺失时的缺省回退值。

⬇️ 下载


ℹ️ Update Log

⭐ New Features

  • Contribution Heatmap & Stats Dashboard: Added a GitHub-style contribution heatmap to the StatsDashboardControl, complete with underlying data models, UI layouts, and localization support.
  • Independent Statistics Window: Added support for launching the statistics dashboard as a standalone window via menus and protocol activations.
  • Dynamic GIF Playback Control: Introduced GifHelper.cs with an IsPlaying attached property to dynamically control GIF animation playback via data binding.
  • Startup & Window Management Options: Added a configuration option to toggle the visibility of the splash screen on startup, and an option to automatically hide the window when the media session is empty.
  • Dynamic About Page Restructuring: Refactored the About page to load contributor and donor lists dynamically from CSV files, greatly improving maintainability.
  • New Controls & Converters:
  • Added ExternalLinkButton with fluent theme adaptation for unified link styles.
  • Added SafeNumberBox to gracefully handle integers and NaN values, replacing layout-related NumberBoxes.
  • Added threshold support in IntToVisibilityConverter and introduced NaNToZeroConverter.

🪄 Adjustments

  • Stats Dashboard & General UI Refinement: Unified the secondary text color across statistics cards to improve data visualization, streamlined the navigation by removing the legacy statistics entry from the settings sidebar, and unified card control styles.
  • UX & Layout Optimizations: Improved the status prompt text during lyrics lookup, and optimized UI layouts and styling across several scenes.
  • Dependency & Submodule Cleanup: Cleaned up AI plugin dependencies, updated submodules and sponsors, and removed the status table and contributor links from documentation (CONTRIBUTING.md/README.md).
  • Application Branding & i18n: Supported package name differentiation for AppName. Streamlined and corrected multi-language resource files, adding "Help" localization entries and fixing minor translation bugs.

🔧 Fixes

  • Palette Helper Fallback: Fixed an issue where retrieving accent colors with an out-of-range input would cause errors; now safely falls back to PaletteGeneratorType.Auto.
  • Taskbar Hook & Compatibility: Enhanced taskbar hook compatibility by caching the taskbar AutomationElement.
  • Lyrics Rendering & Layouts: Optimized lyrics rendering logic and fixed an issue causing layout rearrangement upon switching.
  • Stability & Robustness: Added exception protection for media management to prevent unexpected crashes, and corrected the track year fallback behavior for missing metadata values.

⬇️ Download

v1.3.443.0

21 May 06:05

Choose a tag to compare

v1.3.443.0

An English version follows the Chinese

ℹ️ 更新日志

⭐ 新增

  • 系统托盘图标颜色切换:支持系统托盘图标在彩色与单色(黑白)之间手动切换,并支持跟随系统主题自动切换。
  • 本地化语言支持:新增了意大利语(it)的国际化翻译支持。

🪄 调整

  • 调色板算法与代码重构:优化了调色板算法,将相关参数从 bool 重构为 bool? 以提供更灵活的业务逻辑控制;同时替换并新增了多套图标资源,优化了链接导航与代码结构。
  • 文件扩展名与 MIME 类型处理优化:引入 MimeMapping 依赖库,支持通过 MimeUtility.GetMimeMapping 动态获取 MIME 类型,移除了冗余的自定义方法;同时强制转换文件扩展名为小写,彻底避免因大小写不一致导致的识别问题。

🔧 修复

  • 歌词窗口多项问题修正:修复了切换窗口时歌词窗口内容的闪烁问题,以及靠边停靠(Docked 模式)时歌词窗口位置错乱的问题。
  • 崩溃与稳定性修复:修复了在开启多壁纸模式时可能导致应用程序崩溃的严重问题。
  • 细节体验优化:修复了主题主色调(Accent Color)的计算器逻辑;修复了专辑封面缓存可能产生空文件名的问题;为曲目年份显示添加了缺省回退值(Fallback)。

⬇️ 下载


ℹ️ Update Log

⭐ New Features

  • System Tray Icon Toggle: Added a toggle for color/monochrome system tray icons with support for automatic switching based on the system theme.
  • Localization Support: Added i18n support for the Italian (it) language.

🪄 Adjustments

  • Palette Algorithm & Refactoring: Optimized the palette algorithm parameters by refactoring from bool to bool? for improved flexibility. Replaced and added multiple sets of icon resources, optimized link navigation, and refined code structure.
  • File Handling & MIME Resolution: Optimized file extension handling and MIME type resolution by adding the MimeMapping package dependency to dynamically fetch MIME types using MimeUtility.GetMimeMapping. Enforced lowercase file extensions to eliminate case-sensitivity bugs and removed the redundant custom GetMimeType method.

🔧 Fixes

  • Lyrics Window Issues: Fixed lyrics window content flashing when switching windows, and resolved the incorrect lyrics window positioning when in docked mode.
  • Crash Fix: Fixed a critical bug where opening multiple wallpaper mode led to an application crash.
  • General Enhancements: Fixed the accent color calculator, resolved an issue where the album art cache could generate empty file names, and added a fallback value for the track year display.

⬇️ Download

v1.3.436.0

06 May 20:00

Choose a tag to compare

v1.3.436.0

An English version follows the Chinese

ℹ️ 更新日志

⭐ 新增

🪄 调整

  • 专辑封面淡出方向改用开始结束坐标设置
  • 调整 Logo

🔧 修复

⬇️ 下载


ℹ️ Update Log

⭐ New Features

  • None

🪄 Adjustments

  • Album cover fade-out direction changed to start and end coordinate settings
  • Logo adjusted

🔧 Fixes

  • None

⬇️ Download

v1.3.432.0

05 May 21:02

Choose a tag to compare

v1.3.432.0

An English version follows the Chinese

ℹ️ 更新日志

⭐ 新增

  • 专辑封面淡出可选项

🪄 调整

🔧 修复

  • 尝试修复本地封面匹配逻辑不完整的问题
  • 修复播放源页面配置删除按钮显示不完整的问题
  • 修复布局编辑器撤销重做功能无法成功应用的问题

⬇️ 下载


ℹ️ Update Log

⭐ New Features

  • Album cover fade-out option

🪄 Adjustments

  • None

🔧 Fixes

  • Attempted to fix incomplete local cover matching logic
  • Fixed incomplete display of the delete button in the playback source page configuration
  • Fixed inability to successfully apply the undo/redo function in the layout editor

⬇️ Download

v1.3.430.0

04 May 16:09

Choose a tag to compare

v1.3.430.0

An English version follows the Chinese

ℹ️ 更新日志

⭐ 新增

🪄 调整

🔧 修复

  • 修复歌词切换窗口内容被裁切无法滚动的问题
  • 修复布局编辑器画布行间距、列间距最小值未设限的问题

⬇️ 下载


ℹ️ Update Log

⭐ New Features

  • None

🪄 Adjustments

  • None

🔧 Fixes

  • Fixed the issue where the lyrics switching window content was cropped and could not scroll.
  • Fixed the issue where the minimum values ​​for row and column spacing on the layout editor canvas were not set.

⬇️ Download

v1.3.428.0

04 May 12:51

Choose a tag to compare

v1.3.428.0

An English version follows the Chinese

ℹ️ 更新日志

⭐ 新增

  • 自定义布局编辑器:全新的可视化编辑工具,支持通过拖拽、调整网格等方式自由排版歌词、专辑封面及歌曲信息
  • 布局预设系统:引入布局配置机制,支持多种预设模式的快速切换、导入与导出
  • 多显示器管理:新增 “移动至显示器” 菜单,支持在多屏环境下快速迁移窗口

🪄 调整

  • 任务栏模式重构:优化任务栏挂载逻辑,增强适配,提升稳定性
  • UI/UX 改进:重排设置面板,整合专辑封面与歌词样式控制卡片

🔧 修复

⬇️ 下载


ℹ️ Update Log

⭐ New Features

  • Custom Layout Editor: A brand-new visual editing tool that allows you to freely arrange lyrics, album art, and track information through drag-and-drop and grid adjustments.
  • Layout Preset System: Introduces a layout configuration mechanism, supporting quick switching, importing, and exporting of multiple preset modes.
  • Multi-Monitor Management: Added a "Move to Monitor" menu for quickly migrating windows across multi-screen setups.

🪄 Adjustments

  • Taskbar Mode Refactoring: Optimized taskbar docking logic and enhanced compatibility for improved stability.
  • UI/UX Improvements: Reorganized the settings panel, consolidating album art and lyric style control cards.

🔧 Fixes

  • Fixed an issue where lyric export timestamps were abnormal (@PiYuanZhouLv).

⬇️ Download

v1.2.398.0

03 Apr 12:25

Choose a tag to compare

v1.2.398.0

An English version follows the Chinese

ℹ️ 更新日志

⭐ 新增

  • 雨滴背景效果
  • 可选歌词是否自动换行(禁用自动换行将启用横向滚动功能)

🪄 调整

  • 缩小选中歌词行鼠标需要悬浮的矩形区域的大小

🔧 修复

  • Windows 10 系统中标题栏边界异常的问题(感谢 @YUZU384 提供的思路及参考实现)
  • 双击标题栏后未正确记忆窗口状态的问题
  • 播放源名称、图标匹配条件有误的问题
  • 歌词行中线部分情况未对齐的问题

⬇️ 下载


ℹ️ Update Log

⭐ New Features

  • Raindrop background effect
  • Option to enable or disable automatic line wrapping for lyrics (disabling automatic line wrapping will enable horizontal scrolling)

🪄 Adjustments

  • Reduced the size of the rectangle where the mouse hovers over the selected lyrics line

🔧 Fixes

  • Issue with abnormal title bar boundaries in Windows 10 (thanks to @YUZU384 for the idea and reference implementation)
  • Issue with not correctly remembering the window state after double-clicking the title bar
  • Issue with incorrect matching conditions for playback source name and icon
  • Issue with misalignment of the lyrics line center line in some cases

⬇️ Download

v1.2.385.0

28 Mar 20:38

Choose a tag to compare

ℹ️ 更新日志 / Update Log

An English version follows the Chinese

⭐ 新增

  • 歌词卡片现可支持固定在歌词窗口

🪄 调整

  • 优化音乐库播放体验

🔧 修复

  • 媒体库变更时歌曲进度重置为 0 的问题
  • 壁纸模式下改变桌面壁纸时歌词窗口消失的问题
  • 检查更新进度条未显示的问题

⭐ New Features

  • Lyric cards can now be pinned to the lyrics window.

🪄 Adjustments

  • Optimized music library playback experience.

🔧 Fixes

  • Issue where song progress resets to 0 when changing media library settings.
  • Issue where the lyrics window disappears when changing desktop wallpaper in wallpaper mode.
  • Issue where the update check progress bar is not displayed.

⬇️ 下载 / Download

v1.2.384.0

28 Mar 13:49

Choose a tag to compare

ℹ️ 更新日志 / Update Log

An English version follows the Chinese

⭐ 新增

  • 歌词卡片现可支持固定在歌词窗口

🪄 调整

🔧 修复

  • 壁纸模式多屏幕下位置变动的问题
  • 内置播放器/音乐库相关问题
  • 应用名检测匹配问题

⭐ New Features

  • Lyric cards can now be pinned to the lyrics window.

🪄 Adjustments

  • None

🔧 Fixes

  • Fixed an issue with wallpaper position changing in multi-screen mode.
  • Fixed issues related to the built-in player/music library.
  • Fixed application name matching issue.

⬇️ 下载 / Download