Skip to content

feat(lyric/setting): 新增全局歌词时间轴偏移功能#45

Open
Shomi-FJS wants to merge 1 commit into
SPlayer-Dev:devfrom
Shomi-FJS:Webview-FIX
Open

feat(lyric/setting): 新增全局歌词时间轴偏移功能#45
Shomi-FJS wants to merge 1 commit into
SPlayer-Dev:devfrom
Shomi-FJS:Webview-FIX

Conversation

@Shomi-FJS

Copy link
Copy Markdown
  • 新增全局歌词偏移相关的状态配置到设置存储
  • 在设置页面添加全局歌词偏移的完整配置选项
  • 在播放器快捷菜单中集成全局歌词偏移的快速调节控件
  • 为桌面端与移动端播放器封面添加双击应用全局偏移的交互
  • 优化移动端歌词页封面的手势交互避免冲突

📌 变更类型

  • ✨ feat — 新功能
  • 🐞 fix — Bug 修复
  • 🎨 style — 仅样式 / 格式,不影响逻辑
  • ♻️ refactor — 重构,不改变外部行为
  • ⚡ perf — 性能优化
  • 📝 docs — 仅文档
  • 🧪 test — 新增 / 修改测试
  • 🔧 chore — 构建 / 脚本 / 依赖
  • 🚀 ci — 仅 CI 配置
  • ⏪ revert — 回滚

📝 变更说明

改了什么:

  1. 状态与设置:在 settingStore 中新增了全局歌词偏移相关的状态(开关、数值、快捷预设符号、双击应用、始终应用等),并在全局设置页面中添加了对应的配置选项。
  2. 快捷控件:在播放器快捷动作菜单(PlayerQuickActionsMenu)中集成了全局歌词偏移的快速调节面板与快捷预设按钮。
  3. 交互扩展:在桌面端和移动端播放器封面(PlayerCover)及歌词页封面中加入了双击手势逻辑,用于快速开启或临时关闭单曲/全局偏移,并伴有全局的提示消息(Message)。
  4. 状态计算:重构了 statusStore 中的时间轴偏移获取和设置逻辑,将全局偏移与单曲偏移的计算结合在一起。
  5. 手势优化:自定义了基于 pointerup 的双击判断逻辑(通过计算延迟与距离判断 isDoubleTap),以避免与移动端歌词页面的原生下拉滑动事件产生冲突。

为什么改:

  • 提升了在遇到多首歌曲歌词时间轴不准时的调节效率,用户无需再逐首调整。
  • 引入双击封面应用偏移的快捷操作,进一步增强了听歌时的沉浸感与交互便捷度。
  • 解决移动端封面双击事件和原生滑动事件之间的冲突问题,保证交互流畅性。

🔗 关联 Issue

Closes #

📱 影响范围

  • 🎵 播放引擎 / 音频
  • 📝 歌词 / 桌面歌词
  • 🔔 通知栏 / MediaSession
  • 🌐 在线音乐 (网易云 / Jellyfin / Navidrome / Emby / Subsonic / Last.fm)
  • 🧩 内置 API (nodejs-mobile)
  • 🎨 UI / 主题 / 布局
  • 📦 构建 / 打包 / 签名
  • 📱 Capacitor / 原生 Android 代码
  • 📄 文档 / README

✅ 自检清单

  • 本 PR 目标分支为 dev
  • 本地已执行 pnpm lint 且无 warning
  • 本地已执行 pnpm typecheck 且无报错
  • 已在 至少一台真机 上构建并验证关键路径
  • UI 改动已兼顾 手机竖屏 + 平板横屏 两种布局
  • 新增 / 修改的文案使用中文,与项目整体风格一致
  • 未引入不必要的依赖 / 大体积资源
  • 未修改签名密钥 / CI Secrets 相关文件

🧪 测试方式

  1. 在“设置-歌词”或播放器快捷菜单中,开启“全局歌词偏移”并调整偏移数值。
  2. 播放一首歌曲,双击播放器封面或移动端歌词页封面,观察是否成功应用或关闭当前歌曲的偏移(应有 Message 提示)。
  3. 检查移动端歌词页面,测试页面的下拉滑动是否正常工作,且双击封面不会引发滑动冲突。
  4. 开启“始终启用偏移”选项,切换下一首歌曲,验证全局偏移量是否默认生效。

- 新增全局歌词偏移相关的状态配置到设置存储
- 在设置页面添加全局歌词偏移的完整配置选项
- 在播放器快捷菜单中集成全局歌词偏移的快速调节控件
- 为桌面端与移动端播放器封面添加双击应用全局偏移的交互
- 优化移动端歌词页封面的手势交互避免冲突
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant