Commit Graph

750 Commits

Author SHA1 Message Date
alger
167f081ee6 fix(download): 下载中列表封面使用缩略图加速加载 2026-03-27 23:06:38 +08:00
alger
c28368f783 fix(local-music): 扫描自动清理已删除文件,修复双滚动条
- scanFolders() 扫描时收集磁盘文件路径,完成后自动移除 IndexedDB 中已删除的条目
- 移除外层 n-scrollbar,改用 flex 布局,n-virtual-list 作为唯一滚动容器
2026-03-27 23:02:09 +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
59f71148af fix: 修复打包后白屏问题(createDiscreteApi 循环依赖)
playlist.ts 被 Vite 拆分为独立 chunk 后与主 chunk 形成循环依赖,
顶层调用 createDiscreteApi 导致 NMessageProvider 组件 TDZ 错误。
改为延迟初始化解决。同时移除调试代码。
v5.1.0
2026-03-22 22:46:59 +08:00
alger
c5417a12ec fix: CI 升级 Node.js 至 24,移除 lock 文件缓存依赖 2026-03-22 19:18:36 +08:00
alger
b6d08b9660 fix: 扫码登录改为默认首选 & 更新 CHANGELOG v5.1.0 2026-03-22 19:13:34 +08:00
alger
3fd8bff7b4 chore: 版本号更新至 5.1.0 2026-03-22 19:09:55 +08:00
alger
2ef08412cf fix: 替换 NeteaseCloudMusicApi 为 netease-cloud-music-api-alger 2026-03-22 19:08:50 +08:00
alger
8e1dcd5c06 fix: 修复移动端全屏歌词前奏阶段第一句歌词不可见
getLrcStyle 在当前行无条件设置 color: transparent,
但前奏阶段 originalStyle 无 backgroundImage,导致文字透明不可见
2026-03-22 18:31:58 +08:00
alger
91ecad7f3d docs: 更新 CHANGELOG v5.1.0 2026-03-22 16:49:11 +08:00
alger
2b8378bbae feat: 重构心动模式与私人FM播放逻辑
- 心动模式从播放模式循环中独立,移至 SearchBar 作为独立按钮
- 新增私人FM自动续播:播放结束后自动获取下一首
- 播放列表设置时自动清除FM模式标志
- 顺序播放模式播放到最后一首后正确停止
- 新增获取关注歌手新歌 API
- 补充心动模式相关 i18n 翻译
2026-03-22 16:49:00 +08:00
alger
7f0b3c6469 fix: 设置桌面端最小窗口尺寸为 900x640 防止内容截断 2026-03-22 16:48:01 +08:00
alger
2f05663093 fix: 优化音乐列表页移动端按钮尺寸 2026-03-22 16:47:48 +08:00
alger
0ea3ac5b60 fix: 移除首页顶部多余 padding 2026-03-22 16:47:38 +08:00
alger
bf3155b80a fix: HomeHero 快捷导航仅在移动端显示 2026-03-22 16:47:28 +08:00
alger
8a83281d1b fix: 修复 NeteaseCloudMusicApi anonymous_token 文件不存在导致启动崩溃
将 NeteaseCloudMusicApi/server 从静态 import 改为动态 require(),
确保 anonymous_token 文件在模块加载前创建
2026-03-22 16:47:15 +08:00
alger
a3f91c45f0 feat: 重构首页Hero、导航菜单与页面布局统一
HomeHero:
- 重建每日推荐(左)+私人FM(右)双栏布局
- FM播放/暂停切换、不喜欢/下一首、背景流动动画、均衡器特效
- 修复FM数据获取(res.data.data双层结构)
- 歌单预加载改为hover懒加载避免502

导航优化:
- SearchBar顶部菜单: 首页/歌单/专辑/排行榜/MV/本地音乐
- 侧边栏隐藏MV和本地音乐(hideInSidebar)
- 修复搜索类型切换时失焦收起(@mousedown.prevent)

页面统一:
- 新建StickyTabPage通用布局组件(标题+吸顶tabs+内容slot)
- 歌单/专辑/MV/播客页面统一使用StickyTabPage重构
- CategorySelector第一项添加ml-0.5防scale裁切

播客优化:
- RadioCard简化去除订阅按钮、容忍radio为undefined
- 去除最近播放section、loadDashboard包含loadSubscribedRadios

i18n: 新碟上架→专辑(5语言)、新增fmTrash/fmNext(5语言)
2026-03-16 23:22:35 +08:00
alger
68b3700f3f feat: 歌曲右键菜单添加下载歌词功能及下载设置中保存歌词文件选项
- 右键菜单新增"下载歌词"选项,支持获取歌词并保存为 .lrc 文件
- 如有翻译歌词会自动合并到 LRC 文件中
- 下载设置面板新增"单独保存歌词文件"开关
- 开启后下载歌曲时自动在同目录生成同名 .lrc 歌词文件
- 主进程新增 save-lyric-file IPC handler
- 完成 5 种语言的国际化翻译
2026-03-16 23:22:17 +08:00
alger
b86661ca11 feat: 替换 netease-cloud-music-api-alger 为官方 NeteaseCloudMusicApi
- 依赖从 netease-cloud-music-api-alger@4.26 升级为 NeteaseCloudMusicApi@4.29
- 新增 fmTrash API 支持私人FM不喜欢功能
- getPersonalFM 移除重复 timestamp(拦截器已自动添加)
2026-03-16 23:11:25 +08:00
alger
51910011c8 fix: 隐藏 Web 端本地音乐菜单项 2026-03-15 16:41:47 +08:00
alger
24aa574176 fix(i18n): 补全 MV/排行榜/歌单/搜索/专辑页面缺失的国际化
- 新增 comp.pages 命名空间,包含页面描述、地区分类、加载状态等 i18n 键
- toplist: 标题和描述文本国际化
- mv: 描述、加载状态、6 个地区分类标签国际化
- list: 描述、加载/无更多状态国际化,提取每日推荐常量
- search: 描述文本国际化
- album: 5 个地区分类标签国际化
- 覆盖全部 5 种语言 (zh-CN/en-US/ja-JP/ko-KR/zh-Hant)
2026-03-15 15:57:17 +08:00
alger
239229a60c fix: 修复自动播放循环与暂停失效问题 (H-UI-05/H-UI-07)
- fix(player): 修复 checkPlaybackState 无限重试循环,添加最大重试次数限制 (3次)
- fix(player): 修复 handlePlayMusic 参数 isPlay 遮蔽同名 ref 导致 play/isPlay/userPlayIntent 状态不同步
- fix(player): 播放成功后清除 isFirstPlay 标记,避免暂停时被 setPlay 误判为新歌从头播放
- fix(ui): 移除 AppMenu z-index 重复声明 (H-UI-05)
- perf(ui): MiniPlayBar 进度条 hover 改用 transform: scaleY() 替代 height 变化 (H-UI-07)
2026-03-15 15:49:59 +08:00
alger
2182c295c1 style: 统一 MiniSongItem/ListSongItem hover 背景色并清理 @apply (M-UI-02) 2026-03-15 15:15:23 +08:00
alger
66b5aac224 style: 清理 CategorySelector 和 TitleBar 中的 @apply 违规 (M-UI-10/M-UI-12) 2026-03-15 15:13:56 +08:00
alger
a7b05e6d02 fix(ui): 播放列表抽屉关闭动画改用 animationend 替代 setTimeout (M-UI-08) 2026-03-15 15:13:44 +08:00
alger
915f4f8965 fix(ui): 优化搜索结果滚动加载触发距离 150px → 100px (M-UI-06) 2026-03-15 15:13:33 +08:00
alger
292706a821 fix(ui): 修复 AppMenu 错误主题色 #10B981 → #22c55e (M-UI-05) 2026-03-15 15:13:21 +08:00
alger
baabb0c273 feat(lyric): 新增 single/double 模式 CSS 样式 2026-03-15 15:08:50 +08:00
alger
87a4773ece feat(lyric): 重构歌词渲染区域为 scroll/single/double 三路分支 2026-03-15 15:07:57 +08:00
alger
c8ba6cbd44 feat(lyric): 控制栏新增翻译开关和显示模式切换按钮 2026-03-15 15:05:24 +08:00
alger
c4b178f925 fix(lyric): 组件卸载时清理 groupFadeTimer 防止内存泄漏 2026-03-15 15:04:19 +08:00
alger
345da7d9e8 feat(lyric): 新增双行分组 computed、淡出动画和 wrapperStyle 守卫 2026-03-15 14:59:53 +08:00
alger
f36f777e65 feat(lyric): 扩展 lyricSetting 支持 showTranslation 和 displayMode 2026-03-15 14:55:08 +08:00
alger
3e6f981379 refactor(ui): 统一 SongItem 圆角、抽象 HistoryItem、新增 EmptyState、修复主题色
- SongItem 5 变体容器/图片圆角统一为 rounded-xl(12px):
  BaseSongItem(rounded-3xl→xl) / Standard(img rounded-2xl→xl) /
  Compact(rounded-lg→xl) / List(rounded-lg→xl) / Mini(rounded-2xl→xl)
- 抽象 HistoryItem.vue:AlbumItem 和 PlaylistItem 提取共享 UI 组件,
  消除 ~80 行重复样式代码,同时迁移至内联 Tailwind class
- 新增 EmptyState.vue:统一空状态组件(icon + text,暗色模式完整适配)
- 动画时长:SearchItem 图片 hover duration-700→duration-500
- MobilePlayBar:进度条颜色 Spotify #1ed760→项目主色 #22c55e
2026-03-15 14:14:52 +08:00
alger
57a441312f feat(ui): 重构 SearchBar、集成 useScrollTitle 标题滚动显示、修复专辑搜索跳转
- 重新设计 SearchBar:左侧 Tab(播放列表/MV/排行榜)+ 滑动指示器 + 搜索框自动展开收缩
- 新增 navTitle store 和 useScrollTitle hook,支持页面滚动后在 SearchBar 显示标题
- 集成 useScrollTitle 到 MusicListPage、歌手详情、关注/粉丝列表、搜索结果页
- 修复搜索结果页专辑点击跳转失败(缺失 type 字段)
- 新增 5 种语言 searchBar tab i18n 键值
2026-03-15 14:11:59 +08:00
alger
067868f786 perf: 优化播放列表持久化,精简序列化字段并添加防抖写入 (H-010)
自定义序列化器仅保留必要字段,排除 lyric/song/playMusicUrl 等大体积数据
添加防抖 localStorage 包装降低写入频率,beforeunload 时刷新未写入数据
2026-03-12 18:31:29 +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
72fabc6d12 refactor(ui): 优化骨架屏加载效果,修复用户页左侧黑色背景
- 关键布局组件(AppMenu/TitleBar/SearchBar)改为同步导入,消除加载闪烁
- 新增全局 skeleton-shimmer 流光动画替代 animate-pulse 闪烁效果
- 用户页 loading 骨架屏避免使用 .left scoped 样式导致的深色背景
- 全部 n-skeleton 组件替换为原生 div + shimmer,统一圆角风格
- 菜单容器添加背景色防止加载穿透
2026-03-11 23:02:04 +08:00
alger
b5bac30258 refactor(settings): 拆分设置页面为独立Tab组件,优化捐赠列表性能
- 将设置页面拆分为7个独立Tab组件(Basic/Playback/Application/Network/System/About/Donation)
- 抽取自定义SBtn/SSelect/SInput组件替代naive-ui原生组件
- 使用provide/inject共享setData/message/dialog
- 捐赠列表:去除dicebear外部头像改用首字母头像,去除n-popover改用title属性
- 捐赠列表:IntersectionObserver自动分页加载,首字母跳过*号等符号字符
- SInput:有suffix时增大右侧padding防止数值遮挡单位
2026-03-11 22:30:42 +08:00
alger
bf341fa7c8 feat(update): 重构自动更新系统,使用 electron-updater 替代手动下载
- CI 构建 macOS 拆分为 x64/arm64 分别构建,合并 latest-mac.yml
- 主进程使用 electron-updater 管理检查、下载、安装全流程
- 渲染进程 UpdateModal 改为响应式同步主进程更新状态
- IPC 通道统一为 app-update:* 系列
- 窗口拦截外部链接在系统浏览器打开
- 新增 5 语言更新相关国际化文案
2026-03-11 22:30:35 +08:00
alger
a62e6d256e refactor: 重构音乐和歌词缓存逻辑 可配置缓存目录 2026-03-06 19:56:01 +08:00
alger
b02ca859de fix(i18n): 重构键值检查并增加引用告警模式 2026-03-04 21:12:49 +08:00
alger
958549dfb9 fix(本地音乐): 元数据解析改为并发限流并限制封面体积 2026-03-04 21:12:49 +08:00
alger
c714860c96 fix(本地音乐): 扫描阶段直接使用mtime做增量判断 2026-03-04 21:12:48 +08:00
alger
92877d86e9 fix(preload): 修复ipc.on解绑监听器失效问题 2026-03-04 21:12:48 +08:00
alger
e64e97c7bf fix(缓存): 修复歌词缓存IPC通道并接入初始化 2026-03-04 21:12:48 +08:00
alger
15f7e10609 fix(安全): 本地音乐 API 仅监听回环地址 2026-03-04 21:12:48 +08:00
alger
e77e0ce62b fix(安全): 将 LX 脚本执行隔离到 Worker 沙箱 2026-03-04 21:08:58 +08:00