Files
Nekosonic-Music/src/views/RecentPlays.vue
T
atdunbg dcfada6940 feat: 皮肤系统重构、seek暂停修复、本地音乐优化、外观一体化
- 重构皮肤系统:提取 skins.ts 管理预设皮肤,CSS 变量由 JS 动态设置

- 提取公共 color.ts 工具函数(hexToRgba/toHex),消除重复定义

- 修复 seek 时暂停状态丢失的 bug(后端 audio_paused 状态保留)

- 本地音乐页面:循环排序切换、三点菜单、打开所在文件夹

- 本地音乐文件夹管理:支持启用/禁用切换,兼容旧数据迁移

- 新增 show_item_in_folder 命令(Windows/macOS/Linux 跨平台)

- 外观一体化:有壁纸时 TitleBar/Sidebar 透明,PlayerBar 统一透明度+backdrop-blur

- 进度条外层直角、内层填充圆角

- 滚动条默认透明,悬停时显示

- 移除 PageHeader 粘性栏

- 内存优化:keep-alive TTL 5min、pageCache TTL 30min/上限30条、colorCache 上限200

- recentLocal 防抖写入、播放器 tick interval 500ms
2026-06-07 07:45:41 +08:00

29 lines
826 B
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div class="p-8 text-content">
<PageHeader>
<h1 class="text-2xl font-bold">最近播放</h1>
</PageHeader>
<div v-if="player.recentLocal.length === 0" class="text-content-3">还没有播放记录去听首歌吧</div>
<VirtualSongList
v-else
:songs="player.recentLocal"
:current-song-id="player.currentSong?.id"
show-index
show-like
show-download
show-menu
show-duration
show-playing-overlay
@song-click="(_s, i) => player.playFromList(player.recentLocal, i)"
/>
</div>
</template>
<script setup lang="ts">
import { usePlayerStore } from '../stores/player';
import VirtualSongList from '../components/VirtualSongList.vue';
import PageHeader from '../components/PageHeader.vue';
const player = usePlayerStore();
</script>