` + `TabsTrigger` + `TabsContent class="mt-4 min-h-0 flex-1 ... tab-animate"`,根节点恢复为 `h-full p-6 overflow-hidden flex flex-col`。
-22. 三级 tab 压成「模块 tab → 曲库内左侧来源树」两级。左栏由 `w-[210px]` 收窄到 `w-[168px]`,来源项的选中态对齐顶部 Tabs(`rounded-lg bg-muted` 容器 + `bg-background shadow-sm` 胶囊),歌单子树用 `border-l` 缩进 + 展开动画;右栏内容切换加 `tab-animate`(`:key="view"` 重挂载触发),不再生硬。
-23. 首屏工具栏:搜索框回到首行,下载目标 / 来源筛选 / 音质筛选收到筛选条,歌单解析收进 Popover。
-24. 列表改 44px 紧凑行:无独立边框、hover 高亮、双击整行播放、序号列悬停原位切换为播放按钮(不再出现 40px 空白列);播放中行用 `music-eq` 跳动均衡器 + 主色文字。
-25. 音质徽标由 5 色降为单枚中性 outline 徽标 + Popover 详情。
-26. `Empty` 全部改为组件既定结构(`EmptyMedia` / `EmptyTitle` / `EmptyDescription`)。
-27. 歌单:删除语义奇怪的「移除最后一首」,改为行内「⋯」菜单的支持上移 / 下移 / 移除;新增重命名;左侧歌单列表可独立滚动。
-28. **歌单页新增「编辑音乐」**(`components/PlaylistEditorDialog.vue`):双 Tab 编辑器——「全部音乐」按来源(全部 / 飞牛 / 本地)勾选加入,已在歌单的曲目置灰标记「已加入」不可重复勾选;「已在歌单」批量勾选移出。含搜索、全选当前列表、增量渲染(每批 120)、飞牛曲库续拉、本地未扫描时的内联扫描入口。
-29. 源分组头去掉 `sticky` 与白色底色(原 `bg-background/95 backdrop-blur` 会在浅色背景上形成白色横条)。
-30. **发现音乐每行新增「下载到飞牛」**(试听 / 下载右侧):走新增的 Rust 命令 `feiniu_upload_from_url`,由后端边拉音源边传给 NAS,**本地不落地文件**;懒解析歌曲会先按默认音质解析真实链接,并合并 `defaultDownloadHeaders` + `defaultDownloadCookies`(过滤非 ASCII 头,避免 reqwest panic)。
-31. 设置页从「5 张卡片」改为「连接 / 存储与上传 / 播放 / 搜索与下载 / 环境与诊断(折叠)」分组,并把「NAS 文件服务登录」并入存储分组。
-32. 主题一致性:删除 `border-white/10`、`bg-white` 等硬编码;滑块、均衡器、进度条全部走 `--primary` / `--muted` / `--background` token。
-33. 连接管理图标语义修正(激活用 `CircleCheck`、登出用 `LogOut`),全部 icon-only 按钮补齐 `title` + `aria-label`。
-34. 搜索历史下拉改为 `focusin/focusout` 容器判定,Tab 键可以进入历史项。
-
-### 9.2.1 飞牛上传链路:fnOS 文件服务 → WebDAV(最终形态)
-
-> 演进:multipart over WS 的 fnOS 文件服务存在会话易失、握手/登录协议联调困难等问题(三轮修复:
-> WS 读写分离与 Origin → 加密登录体补 `req`/`reqid` → 登录结果双通道等待),最终整体替换为 **WebDAV**。
-
-| 结论 | 说明 |
-|---|---|
-| **协议选型** | fnOS 提供的 SMB / WebDAV / FTP / NFS 中选 **WebDAV**:纯 HTTP 语义、reqwest 即可实现、Basic 认证随请求携带**无会话**(重启免登录);SMB 的 Rust 客户端生态差、FTP 明文且被动模式易出问题、NFS 无 Windows 客户端方案 |
-| 后端实现 | `src-tauri/src/music/feiniu/webdav.rs`(`fnos.rs` 已删除):`test`(PROPFIND Depth 0)/ `upload_file`(本地文件 128KB 分块流式 PUT)/ `delete`;上传前逐级 MKCOL 补目录 |
-| 「下载到飞牛」机制 | **与自动上传同链路**:正常走 musicdl 下载(引擎侧解析/代理/音质)→ 任务完成后扫描下载目录(下界=任务创建时刻)→ WebDAV 上传 → 删除本地音频及同名歌词/封面(`feiniu_delete_local`,扩展名白名单)→ 移除任务记录。失败时保留本地文件与任务记录供排查。早期的「URL 拉流直传」(`webdav_upload_from_url`)因可靠性不足已移除 |
-| 前端配置 | `feiniuStore.webdav = { url, username, password, dir }` 持久化 localStorage(`thing.music.feiniu.webdav`);`webdavReady` 四项齐备才放行上传;设置页「存储与上传」分组内配置 + 「测试连接」 |
-| fnOS 侧设置 | 系统设置 → 文件服务 → WebDAV 开启(HTTP 5005 / HTTPS 5006);目标文件夹在「可见文件夹范围」内;团队文件夹需勾选「允许通过文件共享协议挂载」;账号需读写权限(已写成设置页折叠提示) |
-| 路径语义 | 目标目录是 **WebDAV 根下的相对路径**(不是 NAS 内部绝对路径),URL 逐段百分号编码 |
-| 错误可读化 | 401 认证失败 / 403 无权限 / 404 目录不存在或不在可见范围 / 409 父目录不存在,均带上下文 |
-
-### 9.3 校验
-
-```
-vue-tsc --noEmit → exit 0(0 error)
-vite build → exit 0(11.5s)
-cargo check → exit 0
-```
-
-### 9.4 仍未做的部分(建议后续)
-
-- 键盘全局快捷键(空格播放/暂停、↑↓ 选行)——需接入项目既有快捷键体系,避免与输入框冲突。
-- 列表虚拟滚动(当前为增量渲染,千级以上仍有优化空间)。
-- 歌单拖拽排序(`vue-draggable-plus` 已在依赖中,可直接接入)。
-- 本地文件的时长 / 内嵌封面解析(当前时长列退化为文件大小)。
-- 缓存模式改为「边下边播」的双源策略(当前 `cache` 模式首播仍需等整首下完)。
-