alger
61797494cb
fix(lyric): 点击歌词跳转不再跳到歌曲末尾触发切歌
...
根因:MusicHook.parseLyricsString 的 lrcTimeArray 直接使用 yrcParser 的
毫秒时间戳,而 seek/nowTime 全链路以秒为单位。合并播放重构(#712 )后
'先播放、歌词后到'使 ensureLyricsLoaded 的 API 兜底分支成为在线歌曲
常规路径,点击歌词 seek(毫秒值) 被钳到音频末尾直接触发 ended 切歌,
歌词高亮同步也一并失效。
修复:
- parseLyricsString 时间数组统一换算为秒,与 usePlayerHooks.parseLyrics 一致
- 完整歌词对象(yrc 逐字/翻译)异步送达时强制重新解析,替换先行的兜底纯 lrc
测试:以真实 LRC/YRC 样本驱动真实 yrcParser 验证 7 项断言全过,
含修复前行为回归复现(seek(28910) 钳到末尾触发切歌)与修复后
全行点击不触发切歌、两解析路径单位一致性。
2026-07-05 16:05:03 +08:00
alger
ee98eb0266
fix(player): 私人 FM 模式下点击下一首按钮可正常切歌
...
FM 播放列表只保留 1 首,原 _nextPlay 走到"顺序模式 + 最后一首"
分支只弹"列表已播完"提示,仅 audioService end 事件中拉取下一首
FM 的逻辑生效,导致用户手动点击下一首无效(issue #666)。
抽出 _nextFmPlay,_nextPlay 入口检测 isFmPlaying 直接路由到 FM
分支;MusicHook end 事件去掉重复的 FM 处理,统一走 nextPlayOnEnd。
2026-05-10 13:00:55 +08:00
alger
97220761cf
fix(lyric): 重启后桌面歌词显示无歌词
...
playerCore.playMusic 整体替换 (id 不变) 时, lyric watcher 的响应式追踪不可靠
点击播放走 playTrack 流程也未必能可靠触发解析
- 提取 ensureLyricsLoaded 到 module 级别, 直接读 playMusic.value 解析
- openLyric 入口主动调用 (重启首次打开桌面歌词场景)
- onLyricWindowReady 兜底 (窗口异步就绪时 lyric 字段可能刚到位)
- audioService.on('play') 兜底 (重启后首次点击播放场景)
- 在线歌曲 lyric 字段缺失时, 主动调 getMusicLrc API 兜底
2026-04-19 16:15:09 +08:00
alger
030a1f1c85
fix(mpris): 修复 MPRIS 模块多项安全和性能问题
...
- 将 fix-sandbox.js 从 postinstall 移除,避免 npm install 时执行 sudo
- 修复 play/pause/stop 事件语义错误,不再全部映射到 togglePlay
- 缓存平台信息避免 sendSync 阻塞渲染进程
- 修复 cleanupAppShortcuts 中缺少 MPRIS 监听器清理导致的事件泄漏
- destroyMpris 中添加 IPC 监听器清理
- 清理冗余调试日志,安全加载 dbus-native 模块
- 添加 mpris-service 类型声明解决跨平台类型检查问题
2026-04-11 22:37:26 +08:00
alger
33fc4f768c
1. 实现linux下的mpris和gnome状态栏歌词功能
2026-04-11 15:45:14 +08:00
alger
ad2df12957
fix(core): 修复事件监听器泄漏
...
- App.vue: offline 监听器添加 onUnmounted 清理,移除冗余 console.log
- MusicHook.ts: document.onkeyup 直接赋值改为 addEventListener + 防重复
- MusicHook.ts: audio-ready 监听器提取为命名函数,先移除再注册防堆叠
2026-04-10 23:26:33 +08:00
alger
0cfec3dd82
refactor(player): 重构播放控制系统,移除 Howler.js 改用原生 HTMLAudioElement
...
- 新建 playbackController.ts,使用 generation-based 取消替代 playbackRequestManager 状态机
- audioService 重写:单一持久 HTMLAudioElement + Web Audio API,createMediaElementSource 只调一次
- playerCore 瘦身为纯状态管理,移除 handlePlayMusic/playAudio/checkPlaybackState
- playlist next/prev 简化,区分用户手动切歌和歌曲自然播完
- MusicHook 适配 HTMLAudioElement API(.currentTime/.duration/.paused)
- preloadService 从 Howl 实例缓存改为 URL 可用性验证
- 所有 view/component 调用者迁移到 playbackController.playTrack()
修复:快速切歌竞态、seek 到未缓冲位置失败、重启后自动播放循环提示、EQ 重建崩溃
2026-03-29 13:18:05 +08:00
alger
bc46024499
refactor(download): 重构下载系统,支持暂停/恢复/取消,修复歌词加载
...
- 新建 DownloadManager 类(主进程),每个任务独立 AbortController 控制
- 新建 Pinia useDownloadStore 作为渲染进程单一数据源
- 支持暂停/恢复/取消下载,支持断点续传(Range header)
- 批量下载全部完成后发送汇总系统通知,单首不重复通知
- 并发数可配置(1-5),队列持久化(重启后恢复)
- 修复下载列表不全、封面加载失败、通知重复等 bug
- 修复本地/下载歌曲歌词加载:优先从 ID3/FLAC 元数据提取,API 作为 fallback
- 删除 useDownloadStatus.ts,统一状态管理
- DownloadDrawer/DownloadPage 全面重写,移除 @apply 违规
- 新增 5 语言 i18n 键值(暂停/恢复/取消/排队中等)
2026-03-27 23:02:08 +08:00
alger
2b8378bbae
✨ feat: 重构心动模式与私人FM播放逻辑
...
- 心动模式从播放模式循环中独立,移至 SearchBar 作为独立按钮
- 新增私人FM自动续播:播放结束后自动获取下一首
- 播放列表设置时自动清除FM模式标志
- 顺序播放模式播放到最后一首后正确停止
- 新增获取关注歌手新歌 API
- 补充心动模式相关 i18n 翻译
2026-03-22 16:49:00 +08:00
alger
479db66eb0
fix(lyric): 修复桌面歌词窗口首次打开无歌词问题
...
歌词窗口 Vue 加载完成后发送 lyric-ready 信号,主窗口收到后
发送完整歌词数据,替代不可靠的延迟猜测方案
2026-03-12 18:31:16 +08:00
alger
1c222971d5
refactor: 统一进度追踪机制,移除重复的rAF更新循环 (H-007/H-008)
...
- 移除 Mechanism A (rAF + setTimeout 混用),消除定时器泄漏 bug
- 将逐字歌词进度计算和 localStorage 保存迁移到 Mechanism B (setInterval 50ms)
- 消除 nowTime 竞争写入,从 ~30次/秒 seek 调用降到 20次/秒
- 修复 timer ID 类型 (any -> number)
2026-03-12 18:09:20 +08:00
alger
ec8a07576f
fix: 修复播放并发控制死代码、shallowRef响应式、歌词IPC高频调用 (H-005/H-006/H-009)
...
- H-005: 删除 playerCore.ts 中无效的 playInProgress 局部变量
- H-006: fetchSongs 修改 shallowRef 元素后添加 triggerRef 触发更新
- H-009: sendLyricToWin 从每秒20次全量发送改为每秒5次轻量更新
2026-03-12 18:07:20 +08:00
alger
36917a979d
feat: 优化音乐播放逻辑
2026-03-04 19:53:50 +08:00
alger
b955e95edc
feat: 优化播放逻辑
2026-02-06 20:34:07 +08:00
algerkong
999cd6526b
feat: 优化播放检测逻辑
2025-12-20 14:16:32 +08:00
alger
3527da17da
feat: 添加心动模式播放
2025-10-22 22:48:52 +08:00
alger
a5d3ff359c
feat: 优化逐字歌词效果,桌面歌词添加逐字歌词效果
2025-10-12 17:11:48 +08:00
alger
cb2baeadf5
feat: 逐字歌词
2025-10-11 20:23:54 +08:00
Leko
56922caa40
feat: 新增歌詞翻譯模組和 OpenCC 翻譯引擎
2025-09-14 17:16:53 +08:00
alger
659c9f9a4c
feat: 优化解析功能,添加缓存
2025-09-14 01:03:29 +08:00
alger
ad51f57bd7
🦄 refactor: 重构播放列表逻辑 优化随机播放功能
...
feated: #368 #353
2025-08-12 19:51:29 +08:00
alger
3ba85f34ed
feat: 优化类型处理
2025-08-07 22:57:17 +08:00
alger
c08c2cbf19
refactor: 更新 eslint 和 prettier 配置 格式化代码
2025-07-23 23:54:35 +08:00
algerkong
b9c38d257a
✨ feat: 重构播放控制逻辑,添加播放进度恢复功能并清理无用代码
2025-06-11 20:12:52 +08:00
alger
c975344dd0
feat: 添加歌词矫正功能,支持增加和减少矫正时间
2025-05-26 22:58:42 +08:00
alger
2e96161bd0
✨ feat: 修改播放列表展示形式,优化播放逻辑,添加清空播放列表功能
2025-05-17 13:27:50 +08:00
algerkong
c7d586407e
🐞 fix: 移除不必要的 i18n 导入,优化 MusicHook 逻辑
2025-05-02 19:35:32 +08:00
algerkong
c5af89e51f
🐞 fix: 移除不必要的监听器,优化音频播放逻辑,添加音频就绪事件处理,改进操作锁机制以防止并发操作
2025-05-02 19:25:12 +08:00
alger
b9b52f4d9f
✨ feat:确保仅在 Electron 中调用 API 发送歌曲数据
2025-04-12 13:05:08 +08:00
alger
0f55795ca9
✨ feat: 添加迷你模式功能,支持迷你窗口的显示与隐藏,更新设置项以控制迷你播放栏和歌词显示,优化路由管理以适应迷你模式
2025-04-01 23:22:26 +08:00
alger
374a7a837d
✨ feat: mac添加音乐控制图标 , 托盘菜单项,更新播放状态和当前歌曲信息的逻辑
...
feat #105
2025-03-31 23:05:19 +08:00
alger
cfe197c805
✨ feat: 优化音频播放进度更新逻辑,添加拖动滑块时的状态管理和节流处理
2025-03-31 22:57:00 +08:00
alger
ee6e9d43fd
✨ feat: 添加音频URL过期事件监听,自动重新获取B站和网易云音乐音频URL并恢复播放
2025-03-30 12:40:39 +08:00
alger
1a440fad09
✨ feat: 添加B站音频URL获取功能,优化播放器逻辑,删除不再使用的BilibiliPlayer和MusicBar组件
2025-03-30 01:20:28 +08:00
alger
8a414d0c25
✨ feat: 增加音频服务的上一曲和下一曲功能
2025-03-22 10:37:57 +08:00
alger
fa39d4ca55
✨ feat: 优化音频监听器初始化和设置保存逻辑
...
- 在 App.vue 中引入 initAudioListeners 函数,确保在播放音乐时初始化音频监听器。
- 在 MusicHook.ts 中重构音频监听器的初始化逻辑,增加音频加载的超时处理。
- 在设置页面中实现防抖保存功能,避免频繁更新设置,提高性能和用户体验。
这些更改旨在提升音频播放的稳定性和设置管理的效率。
2025-03-21 00:19:15 +08:00
alger
e355341596
🦄 refactor: 重构代码将 Vuex替换为 Pinia
...
集成 Pinia 状态管理
2025-03-19 22:48:28 +08:00
alger
f9878ed88a
✨ feat: 优化歌词窗口交互和同步机制
...
- 增强歌词窗口数据同步逻辑,支持实时更新和状态管理
- 添加歌词窗口关闭事件监听和状态处理
- 优化无歌词时的默认提示和窗口行为
- 实现歌词窗口定时同步机制,提升用户体验
- 修复歌词窗口打开和关闭时的状态控制
- 国际化支持无歌曲播放时的提示文案
2025-03-08 19:00:50 +08:00
alger
e43e85480d
✨ feat: 增强音频播放状态管理和进度恢复功能
...
- 实现全局进度动画管理,优化歌词进度更新机制
- 新增音频播放进度本地存储和恢复功能
- 优化音频服务初始化和播放状态控制
- 改进音频上下文和 Howler 初始化逻辑
- 增加播放状态和进度的本地持久化支持
2025-03-08 18:31:46 +08:00
alger
ead017e4b1
✨ feat: 国际化 (i18n) 功能实现
2025-02-19 01:01:43 +08:00
alger
914e043502
✨ feat: 去除歌曲缓存 优化播放下一首
2025-01-17 22:35:42 +08:00
alger
a94e0efba5
✨ feat: 优化播放
2025-01-17 22:34:49 +08:00
alger
f652932d71
✨ feat: 优化播放体验 优化代码 优化歌词缓存
2025-01-16 23:19:16 +08:00
alger
87ca0836b1
🐞 fix: 修复单曲循环后点击歌词快进会有重复的声音播放
2025-01-16 00:40:44 +08:00
alger
3c64473dbb
✨ feat: 优化音乐播放 控制 系统控制功能 (#36,#16)
...
fixed #36,#16
2025-01-12 19:14:25 +08:00
alger
62e26cae7d
🌈 style: 优化代码格式化
2025-01-10 22:49:55 +08:00
alger
17d20fa299
🦄 refactor: 重构整个项目 优化打包 修改后台服务为本地运行 添加更新版本检测功能
2025-01-01 02:25:18 +08:00