# 验收记录(v0.1) 对应 `docs/acceptance.md` 的 14 条。**本文件只记录手里真有的证据**:单测、harness 截图、用户口头确认。 没有在真实 dsh Web GUI(`http://127.0.0.1:3080`)里逐条复验的条目一律写「待验证」,不拿 harness 截图冒充真实 GUI。 记录时间:2026-10-24。 ## 证据类型 | 代号 | 证据 | 位置 / 说明 | | --- | --- | --- | | T | 单元测试 | `pnpm test`:45 项全部通过(2026-10-24,本机 Node + `node:test`) | | H | harness 截图 | `design/shots/*.png`,由 `design/visual-check.html` 用假 `Audio` / `AnalyserNode` 渲染**真实插件 bundle**;**不是真实 GUI** | | U | 用户口头确认 | 用户在与主 agent 的对话中确认,无截图/录屏留存 | ## 逐条状态 | # | 条目 | 状态 | 证据 | 备注 | | --- | --- | --- | --- | --- | | 1 | 入口可见 | 部分通过 | U:状态行胶囊可见 | 24px 同高、与 `activity`/`usage` 胶囊对齐、不挤压聊天区:**待验证**(真实 GUI 未量测) | | 2 | 一次点击出声 | 待验证 | — | 真实 GUI 出声与耗时未记录;无「连接中…」到出声的截图 | | 3 | 预缓冲有效 | 待验证 | — | 预缓冲逻辑有单测路径,但冷启动/热启动对比未做 | | 4 | 七个电台 | 待验证 | — | 七个台的流地址由 `test/stations.test.ts` 校验;真实出声未逐台验证 | | 5 | 暂停/恢复 | 部分通过 | U:播放/暂停可用 | 「恢复不重新缓冲整段」未测量 | | 6 | 音量与静音 | 待验证 | — | 面板底部控制行本身经 U 确认存在;滑杆/静音的实际效果与刷新保持未验证 | | 7 | 记忆 | 待验证 | — | 单测覆盖设置解析与持久化键;真实刷新后的表现未验证 | | 8 | 失败处理 | 待验证 | T:宿主路由失败返回 502、12 秒超时有单测覆盖(`test/host.test.ts`、`test/player.test.ts`) | 断网/错地址下的真实失败态与重试未验证 | | 9 | 下一台 | 部分通过 | U:底部播放控制行(左侧播放/暂停 + 下一台)经用户确认;T:顺序 +1、末尾回绕、先停旧流 | 代码层面设置里已无「投放位置」(`src/client/settings.ts`);真实 GUI 切台与不叠音未验证 | | 10 | 媒体键 | 待验证 | — | 未在真实系统媒体面板/键盘上验证 | | 11 | 主题 | 待验证 | H:仅深色 harness 截图 | 明暗两套主题的真实 GUI 对比未做 | | 12 | 不干扰 | 待验证 | — | 切会话、轨迹面板、滚动、文件预览均未在真实 GUI 操作 | | 13 | 控制台 | 待验证 | — | 未采集真实 GUI 控制台输出 | | 14 | 移动端(附加) | 待验证 | — | iPad Safari / Tailscale 未测试 | ## 已确认事实(非逐条验收,供参考) - 状态行胶囊可见;播放/暂停与面板可用;面板底部控制行为「左侧播放/暂停 + 下一台,右侧喇叭 + 112px 滑杆 + 百分比」——均为用户口头确认(U)。 - `design/shots/` 现有截图(`dock-idle.png`、`dock-playing.png`、`bar-zoom.png`、`panel-zoom.png`、`panel-list.png`、`panel-settings.png`、`panel-track.png`、`panel-track-zoom.png`)全部是 H 类 harness 截图。 - 单元测试覆盖:电台数据、设置解析、Icecast/RP 解析与缓存、宿主路由(GET/HEAD/405/400/502/10 秒缓存)、播放器状态机、store 切台与曲目拉取、i18n、渲染。 - 2026-10-24:重启后从真实 dsh 直接请求宿主路由,全部符合预期——`GET /plugins/dsh-plugin-radio/now-playing?station=main-mix` → 200 JSON(R.E.M. / All the Right Friends)、`station=mellow-mix` → 200 JSON、未知 station → 400、POST → 405。说明宿主半侧已在真实进程里注册并生效。 ## 真机证据(2026-10-25,浅色主题) 用户提供的真实 dsh Web GUI 截图(`design/screenshots/`): - `status-bar.png`:状态行胶囊可见,与「轮次·速度」「tokens·缓存命中」两个胶囊并排(对应第 1 条)。 - `panel.png`:面板展开,7 条电台、频谱带、当前曲目 `Voyage — Glow`、底部播放控制与音量行(对应第 6、9 条与曲目显示)。 - `settings.png`:设置页三项(系统媒体键 / 频谱样式 / 记住上次电台)与开关状态。 由此第 1、6、9、11(浅色)条从「待验证」升级为「已通过(截图)」;其余条目仍待补。 ## 待办 1. 在真实 dsh Web GUI 里补 1–14 条,逐条留截图/录屏 + 浏览器版本 + 时间。 2. 第 1 条需要量胶囊高度(24px)与相邻胶囊对齐。 3. 第 2、3 条需要记录出声耗时(冷启动 vs 预缓冲)。 4. 第 11 条需要明暗两套主题各一张真实截图。