# 剩余项与完成情况 build `2026-10-25.99`。每项分「改了什么 / 拿什么证明 / 还差什么」,验证一律标清楚是**自检**(脚本、真接口)还是**待窗口实测**。 ## 一览 | # | 项 | 状态 | 谁验过 | |---|---|---|---| | 1 | 拖进度条不跳转 | 已改,等实测 | 待你在窗口点 | | 4 | 长播中断(30s/几分钟停) | 根因已定位并修,等长播实测 | 待你放完整一集 | | 5 | 合流文件占磁盘 | 已修(含一个真 bug)+ 清空按钮 | 自检通过 | | 6 | 在线流章节画不出来 | 路由重写,数据实测通过 | 真接口实测 + 待看 UI | | 7 | 字幕样式 UI | 已被「整体移除字幕」取代 | — | | 8 | 手动指定其它 cid 的字幕 | 同上,字幕面板现在只说明没有字幕 | 自检通过 | | 9 | 内嵌 mpv 死代码 | 宿主路由已删,客户端加守卫 | 路由表实测 | | 10 | 设置页「播放引擎」只读 | 按设计保留 | — | | — | 优化 PrismFlow(m00173) | 喂流/seek/看门狗重做 | 自检 + 待长播 | | — | bilibili 插件化(m00173) | 设置 + 数据 + 常量都进扩展;扩展系统加了 `choice`/`text` | 自检通过 | | — | 账号系统搬进扩展(m01865) | 三个 provider 各自持有登录;宿主只存凭据、只路由 | 自检 21 项 + 真接口 | | — | FQDM 在线插件 + 通用在线页面(m02213 / m02508) | 新增 `fqdm` 扩展;页面按 `online` 契约渲染,不再写死 bilibili | 真接口 + 渲染台 | | — | Anime4K 真实现(m04359 / m04949) | WebGPU 走 anime4k-webgpu;没有 WebGPU 时走 monyone/Anime4K.js 的 WebGL 实现(本地 2×);两个 UMD 包都已 vendor 并修好路由 | 真接口 + 待窗口实测 | | — | 声明式动漫源插件(m05815 / m05963) | AnimeFlow 源规则(api 1 XPath / api 2 JSON)驱动 3 个 `online` 扩展;不可用的源已删除;弹幕与评论不做 | 真接口:3/3 可播 | | — | AniCh 在线源播不出来(.85) | 根因是 resolve 回的线路 URL 是广告、或地址没有扩展名却被当 mp4 直通;现在按首字节判断 + 广告线路在源头过滤 | 真接口:200 `video/mp4`、30.7 MB/5s、`accept-ranges: bytes`、`Range` → 206 | | — | AniCh 线路表是假的(.85) | `servers` 原来写死「线路1…线路8」;现在按集解析真实线路并带 caption,且按 (番剧,集) 缓存 3 分钟 | 真接口:11 条真实线路,`线路N · ` | | — | 在线 fMP4 总长 `--:--` / 拖不动(.85) | `online/duration` 修好(首字节判 m3u8/mp4,mp4 走 ffprobe 读 moov)+ 播放器虚拟时间轴重开流 | 真接口:5600 s;拖拽逻辑待窗口点 | | — | 进度条没有预加载线条(.86) | 滑块轨道改成三段:蓝=已播、白=已预加载(`video.buffered`)、灰=未下 | 自检(语法 + 搭载);待窗口看 | | — | Bangumi 的 `apiBase` 只对一半请求生效(.87) | 日历/搜索/季度原来写死 `BANGUMI_ENDPOINT`,镜像设置只改了 lib 那一半 | 本地桩:搜索/季度/详情/日历全部 200 | | — | 搜索与季度的评分恒为空(.87) | v0 把分数放在 `rating.score`,代码只读 `subject.score` | 本地桩:`score=7.9`(修前 `null`) | | — | 注册失败只说「HTTP 200」(.87) | `/register` 失败回 JSON,代码却按 protobuf 解 | 真接口:现显示站点原文「验证码不正确」 | | — | 详情页 / 追番卡片没接 `anich/detail`(.86) | 详情页对 AniCh 条目补发 detail 取简介/类型/年份/别名/集数;追番卡片对缺集数的 AniCh 条目补问一次 | 真接口:`episodes 1`、`seasonYear 2026`、`genres 4`、`aliases 2` | | — | Bangumi「只能等代理」(.87 → .89) | 找到并接上可用镜像 `https://bgmapi.anibt.net`:留空即镜像、填官方才是官方;`calendar` 超时 15 s → 45 s(镜像冷启动实测 19–27 s) | 真接口:`/bangumi/calendar` → `200 {"ok":true,…"星期一"…}`,冷启 27.6 s | | — | Bangumi 登录(OAuth)仍不可用(.88) | 授权/换 token 仍写死在 `bgm.tv`;镜像的 `/oauth/access_token` 实测连接失败 | 已知边界,等代理或镜像补端点 | | — | AniCh 登录/注册没放进数据源(.90) | 账号卡片从在线源搬到「AniCh 索引」数据源:`anich-data` 声明 `account`,`scoped: true` 让它不再重复出现在设置 → 账号;顺带修好扩展面板把 `password`/`oauth` 折成 `token`(注册表单因此从不出现)的旧问题 | 自检 13/13:宿主 `/accounts` 报 `kind=password scoped=true extension=anich-data`,登录态保留 | | — | FQDM 切到番茄2线是黑屏(.91) | 那条线路的 CDN `v6.ppqrrs.com` 已解析不出来;而换线逻辑只对 AniCh 生效(候选表只认带 `type` 的条目)。新增可选 handler `alternates()` 让源自己报「还能在哪条线播 + 那条线的集数 id」,FQDM 按 `anime\|sid\|nid` 重写 id | 真接口:同一集同一线路改前 `{ok:false}` 357 字节,改后 `200 video/mp4`,`curl` 拉完 53 794 008 字节、首字节 `ftypiso5` | | — | 下载界面一直是坏的(.88) | 真因在 ffmpeg:产物先写 `<名字>.mp4.part`,`.part` 不是它认识的扩展名,**每次**流下载都在「Unable to find a suitable output format」上秒退;现在显式给 `-f mp4/matroska/flv/mpegts`,界面改成 Motrix 那种下载管理器 | 自检:`dev/probe-download-stream.mjs` ALL PASS(8.0 MB、497 KB/s);渲染台 `downloads` 分支通过 | | — | 换清晰度会“跳回片头”(.92) | `start > 0` 时还走字节直通,`passthroughOnline()` 没法跳;现在 `start > 0` 一律转码走 `-ss`,客户端也不再按 `type==='m3u8'` 猜,一律带当前位置。顺带修掉无 caption 的源把线路名退成「线路 3」 | 真接口:mp4 线路 `start=2600`(全片 2611 s)9.47 s 自收尾、599 304 字节;`start=0` 30 s 吐 7 603 588 字节仍未结束 | | — | 通用下载器不只有哔哩哔哩(.88) | `/downloads/stream` 接 `source+episode+server`,自己 resolve 真地址;候选表=点的那条→后面最多六条 | 真接口:AniCh 11 条线路里挑出一条下到 8 MB | | — | 死线路让下载卡在 0 B(.88) | 三道闸:`sniffMedia` 先要字节(HLS 连首片一起要)、ffprobe 认视频流、起任务后 `waitForFirstBytes` 25 s 内不见字节就取消换下一条;ffmpeg 加 `-rw_timeout 20s` 与 45 s 无进展看门狗 | 自检:TLS 死线路 8 s 内报错换线,不再挂死 | | — | 搜索页不像 AniList(.93) | 浏览页照 AniList 的筛选栏重做:左栏 208px(标题、排序、类型、标签、格式、季度、状态、评分、成人、清空)+ 右侧 2:3 海报密网格;筛选条件直接翻成 AniList 的 `genre/sort/season/format/status/adult/tag` 参数,改一项重发一次 | 真接口:`dev/probe-anilist-browse.mjs` 4 组查询全部命中(Action 出鬼灭/咒术,`genre=Action&sort=POPULARITY_DESC` 排序正确);视觉由 `dev/preview-browse.mjs` 用真 CSS + 真接口生成后截图核对 | | — | 番剧页没有观看顺序(.94) | 新路由 `anilist/watchorder`:从当前条目沿 `PREQUEL` 往回走到最早一部,再沿 `SEQUEL` 往后走,最多 8+12 步,返回整条链(含中文名);客户端把它做成与「在线流/种子/角色」平级的独立标签页 | 真接口:`id=16498` 返回 9 部(前作 OVA `No Regrets` → 第四季最终章),`position` 指向当前作 | | — | 番剧页没有 OP/ED(.94 → .98) | 独立标签页,里面是**来源切换**(animethemes / 哔哩哔哩 segmented,选中哪个才查哪个):① `animethemes/themes` 按 AniList id 取官方 OP/ED 片段(`filter[has][]=resources` 这类数组写法是必须的,标量会被判 `The filter.resource must be an array`);② 哔哩哔哩走现成的 `bili/videos` 搜索 + `bili/video` 取 cid + `bili/stream` 代取字节(宿主代取字节、补 Referer/cookie,页面用自研 Player 播),封面加 `referrerPolicy=no-referrer` 才不会被图床当成盗链 | ① 本机仍不通:`api.animethemes.moe` 回 403 挑战页 / 422 / 500,页面把真实原因原文显示,并提供一键跳到哔哩哔哩。② 真接口:`/bili/videos?keyword=進撃の巨人 OP` 返回 20 条真结果(EVK塔克 114 万播放),`/bili/video?bvid=BV1nZ421z7t1` → cid 1425611404,`/bili/stream?bvid=…&cid=…&qn=80` → `200 video/mp4` **43 944 542 字节**,首 8 字节 `ftypiso5` ;③ 播放器不再用浏览器原生 `