v0.2.0-rc5
Pre-release
Pre-release
Added
- 进度条歌词预览:新增
progressLyricPreview播放器设置项(默认关闭),设置面板新增「进度条歌词预览」开关;桌面进度条悬停/拖拽时可在浮层中显示对应时间点的歌词原文与翻译,并通过LyricsPanel的previewTime/previewActive临时驱动主歌词面板预览目标行;预览采样根据指针移动速度自适应节流,触摸输入默认不显示浮层也不驱动主歌词预览,避免移动端拖拽时遮挡 - 自定义滑杆控件:
SettingRange从原生 range 输入升级为自定义role="slider"控件,统一支持 pointer 拖拽、window pointerup fallback、键盘方向键/PageUp/PageDown/Home/End、aria-valuetext和粗指针触控高度;SleepTimerControl、EqualizerPanel、设置面板的音量/歌词字号/背景/节奏亮度滑杆均复用该控件 - 歌词小窗加载状态:
LyricStatus新增loading,歌词小窗和歌词面板同步显示「正在载入歌词」状态,不再把加载中和空歌词混在一起;useLyricsWindow增强 Safari/弹窗关闭检测,使用固定窗口名复用歌词小窗,并在窗口关闭、切换、卸载时清理轮询、ready 检测和事件监听 - 歌词解析增强:
parseLyrics支持清除逐字歌词<mm:ss.xx>增强时间戳;splitLyricTranslation支持全角中文括号;相同时间点的双行歌词会合并为原文 + 翻译,减少重复行展示
Changed
- 播放器进度条改为自定义 slider:
PlayerControls的播放进度从<input type="range">改为自定义 slider,补齐aria-valuemin/aria-valuemax/aria-valuenow/aria-valuetext,支持键盘 seek 和全局 pointerup 提交,并保持页面版、底部 dock 进度条和移动共享控制区布局一致 - 歌词 Provider 缓存升级:
loadTrackLyrics现在按 providercacheKey对曲目级歌词做 LRU 缓存并去重 in-flight 请求;共享请求保留多消费者语义,单个调用方 abort 只取消自身等待,当所有活跃调用方都 abort 时才中止底层 provider 请求,避免快速切歌时旧歌词请求无意义跑到超时 - 单曲循环播放行为:
useAudioPlayer在playMode === 'single'且音频结束时直接重播当前曲目,重置automaticCrossfadeStarted和 pending seek 状态,不再走下一首预测流程 - 设置与全屏可用性:
SettingsPanel仅在当前平台支持全屏且非便携设备时展示「全屏模式」开关;useFullscreen补充 resize/visualViewport/fullscreenchange 状态同步,让退出全屏或浏览器 UI 尺寸变化后的状态更可靠 - 歌词面板预览和动画细节:
LyricsPanel的活跃歌词时间可在预览模式下切换到进度条 hover 时间;歌词状态快照改为携带LyricStatus;翻译开关、字号变化、面板激活状态和预览时间变化都会触发更精确的 snapshot 与重对齐
Fixed
- 多指拖拽误提交:
SettingRange和PlayerControls进度条现在校验当前pointerId;拖拽期间来自其他手指/鼠标指针的pointermove、pointerup、pointercancel会被忽略,避免触屏场景中音量、均衡器、定时关闭或播放进度跳到错误坐标 - 自定义 slider 可访问值不一致:
SettingRange的视觉进度和aria-valuenow统一使用归一化后的步进值,外部恢复出越界值或非法小数时不会出现视觉/读屏值不一致 - 歌词预览状态泄漏:切歌、关闭 chrome、关闭歌词预览开关、取消拖拽、组件卸载时都会清理进度条歌词浮层和主歌词预览 driver,避免旧预览时间残留到下一首歌
- 播放器测试覆盖缺口:新增
player-controls-lyric-preview.test.ts与use-lyrics-window.test.ts,并扩展settings-controls-a11y、track-lyrics-service、lyrics-panel、lyrics、use-audio-player等测试,覆盖歌词预览、provider 缓存、单曲循环、滑杆键盘/触摸行为和歌词小窗状态同步