mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-09 03:46:16 -08:00
5682 lines
196 KiB
JSON
5682 lines
196 KiB
JSON
{
|
||
"schemaVersion": 1,
|
||
"date": "2026-09-10",
|
||
"baselineCommit": "40fcda6a37d0049d42e49c1e64e70d4fd9ba5f7f",
|
||
"branch": "codex/compatible-modernization",
|
||
"qualityContract": "quality-contract.md",
|
||
"tasks": [
|
||
{
|
||
"id": "DOC-01",
|
||
"phase": "0 规划",
|
||
"title": "创建兼容重构分支",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [],
|
||
"status": "done",
|
||
"risk": "L",
|
||
"deliverable": "独立本地分支和起点 SHA",
|
||
"acceptance": "分支由干净 master 创建,起点可追溯",
|
||
"evidence": [
|
||
"progress.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "DOC-02",
|
||
"phase": "0 规划",
|
||
"title": "清点全部包与消费者",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"DOC-01"
|
||
],
|
||
"status": "done",
|
||
"risk": "L",
|
||
"deliverable": "package-inventory.json",
|
||
"acceptance": "22 包及 React/Vue/demo 有明确清单",
|
||
"evidence": [
|
||
"progress.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "DOC-03",
|
||
"phase": "0 规划",
|
||
"title": "建立计划、契约、决策和协作记录",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"DOC-02"
|
||
],
|
||
"status": "done",
|
||
"risk": "L",
|
||
"deliverable": "refactor 文档集与任务数据",
|
||
"acceptance": "每包有独立步骤、依赖、交付物和验收条件",
|
||
"evidence": [
|
||
"progress.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "DOC-04",
|
||
"phase": "0 规划",
|
||
"title": "验证文档完整性与生成表",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"DOC-03"
|
||
],
|
||
"status": "done",
|
||
"risk": "L",
|
||
"deliverable": "计划生成校验工具、AGENTS 入口",
|
||
"acceptance": "依赖无环、包覆盖、生成同步、文档链接通过",
|
||
"evidence": [
|
||
"progress.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "DOC-05",
|
||
"phase": "0 规划",
|
||
"title": "建立每任务提交规则并提交文档基线",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"DOC-04"
|
||
],
|
||
"status": "done",
|
||
"risk": "L",
|
||
"deliverable": "根指令、质量要求、AI 流程、变更记录与初始文档提交",
|
||
"acceptance": "文档与计划检查通过,独立 DOC-05 commit 保存本次交付;提交后核实 SHA 和工作区",
|
||
"evidence": [
|
||
"changes/2026-09-10-DOC-05-task-commits.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "DOC-06",
|
||
"phase": "0 规划",
|
||
"title": "记录自主安装依赖与添加脚本授权",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"DOC-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "L",
|
||
"deliverable": "根指令、工具链规范、AI 流程、决策及变更记录",
|
||
"acceptance": "授权、依赖归属、脚本文档和兼容验证要求明确,计划校验通过并独立提交 DOC-06",
|
||
"evidence": [
|
||
"changes/2026-09-10-DOC-06-dependencies-and-scripts.md"
|
||
]
|
||
},
|
||
{
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"status": "done",
|
||
"risk": "L",
|
||
"evidence": [
|
||
"changes/2026-09-10-DOC-07-plan-review.md"
|
||
],
|
||
"id": "DOC-07",
|
||
"phase": "0 规划",
|
||
"title": "复审并优化计划顺序和执行门槛",
|
||
"dependsOn": [
|
||
"DOC-06"
|
||
],
|
||
"deliverable": "依赖优化、执行门槛规范、测试/发布补充和审查记录",
|
||
"acceptance": "依赖与覆盖校验、专项执行顺序断言通过;任务范围完整并独立提交"
|
||
},
|
||
{
|
||
"id": "DOC-08",
|
||
"phase": "0 规划",
|
||
"title": "记录 Chrome 验证及多轮 npm 发布复盘",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"DOC-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "L",
|
||
"deliverable": "浏览器分工、三轮复盘规范、发布依赖与接续文档",
|
||
"acceptance": "计划和发布依赖检查通过;独立提交 DOC-08,连接可用不冒充测试通过",
|
||
"evidence": [
|
||
"changes/2026-09-10-DOC-08-browser-and-release-reviews.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "DOC-09",
|
||
"phase": "0 规划",
|
||
"title": "记录 docs HTML 与在线编辑器测试入口",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"DOC-08"
|
||
],
|
||
"status": "done",
|
||
"risk": "L",
|
||
"deliverable": "页面/加载方式、状态隔离、行为断言与既有任务映射",
|
||
"acceptance": "源码清点和计划检查通过,独立提交 DOC-09;不把页面存在当作测试通过",
|
||
"evidence": [
|
||
"changes/2026-09-10-DOC-09-docs-test-surfaces.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "DOC-10",
|
||
"phase": "0 规划",
|
||
"title": "记录 GitHub CI/CD 增强范围与验收",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"DOC-09"
|
||
],
|
||
"status": "done",
|
||
"risk": "L",
|
||
"deliverable": "CI/CD 规范、四项实施任务与发布依赖",
|
||
"acceptance": "现有 workflow 核对、计划检查通过并独立提交;不冒充远端执行完成",
|
||
"evidence": [
|
||
"changes/2026-09-10-DOC-10-github-ci-cd.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "DOC-11",
|
||
"phase": "0 规划",
|
||
"title": "记录全部包各自升级一个大版本",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"DOC-10"
|
||
],
|
||
"status": "done",
|
||
"risk": "L",
|
||
"deliverable": "22 包目标版本清单、决策和发布/CI/复盘规则同步",
|
||
"acceptance": "版本表与 manifest 对照、计划检查通过并独立提交;不修改旧 API 兼容要求",
|
||
"evidence": [
|
||
"changes/2026-09-10-DOC-11-major-version-policy.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "DOC-12",
|
||
"phase": "0 规划",
|
||
"title": "复审开发启动、验收覆盖及发布依赖",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"DOC-11"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "语义依赖修正、版本实施任务、基线/分发分类及契约映射要求、校验器保护",
|
||
"acceptance": "原范围状态保持,计划检查和故障负例通过,独立提交 DOC-12",
|
||
"evidence": [
|
||
"changes/2026-09-10-DOC-12-execution-readiness-review.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "DOC-13",
|
||
"phase": "0 规划",
|
||
"title": "记录并验证内置浏览器回退规则",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"DOC-08"
|
||
],
|
||
"status": "done",
|
||
"risk": "L",
|
||
"deliverable": "根指令、复盘和夹具文档中的浏览器回退及实际环境证据",
|
||
"acceptance": "内置浏览器打开真实页面,报告基础检查结果及未覆盖项;独立提交",
|
||
"evidence": [
|
||
"changes/2026-09-10-DOC-13-browser-fallback.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "BASE-01",
|
||
"phase": "1 基线",
|
||
"title": "固定核心与试点的最小发布基线",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"DOC-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "核心及 chapter 的 npm tarball/integrity、源码 SHA、已知支持窗口;其他包标待核对",
|
||
"acceptance": "核心/试点来源可重跑;不虚构全生态已验证,各包 01 步负责补齐自身历史发布基线",
|
||
"evidence": [
|
||
"changes/2026-09-10-BASE-01-published-baseline.md",
|
||
"baselines/releases.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "BASE-HARNESS-01",
|
||
"phase": "1 基线",
|
||
"title": "建立最小发布包浏览器采集夹具与服务",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-01"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "固定 tarball 静态服务、本地媒体 Range、公开 API 采集页面及受控报告路径",
|
||
"acceptance": "HTTP 精确内容/范围和路由隔离测试、夹具语法通过;浏览器采集仍由 BASE-02 负责",
|
||
"evidence": [
|
||
"changes/2026-09-10-BASE-HARNESS-01-browser-fixture.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "BASE-02",
|
||
"phase": "1 基线",
|
||
"title": "捕获公共 API 和属性描述符",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-01",
|
||
"BASE-HARNESS-01"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "核心与试点的构造/默认值/静态和实例 API 快照,其余包由 01/02 步补齐;登记契约/版本/固定测试 ID/命令/报告与负责任务",
|
||
"acceptance": "真实发布包反射与旧用户调用可重跑,未验证项明确",
|
||
"evidence": [
|
||
"changes/2026-09-10-BASE-02-public-api.md",
|
||
"baselines/public-api.json",
|
||
"baselines/api-coverage.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "BASE-03",
|
||
"phase": "1 基线",
|
||
"title": "捕获事件、异步和生命周期",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-02"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "ready/restart/destroy、Promise、切源/插件事件 trace;登记契约/版本/固定测试 ID/命令/报告与负责任务",
|
||
"acceptance": "成功、失败、重入和多实例有断言,历史缺陷有标记;使用已发布包和最小可重跑探针启动,不等待后续 ENG 服务",
|
||
"evidence": [
|
||
"changes/2026-09-10-BASE-03-lifecycle.md",
|
||
"baselines/lifecycle.json",
|
||
"baselines/lifecycle-coverage.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "BASE-04",
|
||
"phase": "1 基线",
|
||
"title": "捕获 DOM、CSS 和官方 demo",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-02"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "核心模板/类名/变量、键盘/焦点/可访问名称基线及全 demo 路径映射;docs-browser-testing.md 中 HTML/编辑器的脚本来源与存储状态;登记契约/版本/固定测试 ID/命令/报告与负责任务",
|
||
"acceptance": "核心/试点用户样式和输入用法已记录,其他 demo 运行状态与未知项明确;使用已发布包和最小可重跑探针启动,不等待后续 ENG 服务",
|
||
"evidence": [
|
||
"changes/2026-09-10-BASE-04-dom.md",
|
||
"baselines/dom.json",
|
||
"baselines/dom-coverage.md",
|
||
"baselines/demo-inventory.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "BASE-05",
|
||
"phase": "1 基线",
|
||
"title": "捕获包入口、资源和类型消费",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-01"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "全包 manifest/资源路径清单;核心/试点的 UMD/AMD/ESM/CJS/legacy/i18n 和类型消费者基线;登记契约/版本/固定测试 ID/命令/报告与负责任务;区分库/npm 与站点实际分发类别,SSR import/模板/非浏览器构造错误分别捕获",
|
||
"acceptance": "核心/试点隔离消费可运行,其他包由各自契约任务验证,thumbnail tool 差异已登记",
|
||
"evidence": [
|
||
"changes/2026-09-10-BASE-05-consumers.md",
|
||
"baselines/consumer-coverage.md",
|
||
"baselines/consumers.json",
|
||
"baselines/ssr.json",
|
||
"baselines/distribution.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "BASE-06",
|
||
"phase": "1 基线",
|
||
"title": "记录性能与资源基线",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-03",
|
||
"BASE-04"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "固定媒体/设备测量、包体积、反复装卸资源报告",
|
||
"acceptance": "多次采样可重跑,指标和审查阈值确定,不承诺未经测量的收益;使用已发布包和最小可重跑探针启动,不等待后续 ENG 服务",
|
||
"evidence": [
|
||
"changes/2026-09-10-BASE-06-performance.md",
|
||
"baselines/performance-coverage.md",
|
||
"baselines/performance.json",
|
||
"baselines/sizes.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "BASE-07",
|
||
"phase": "1 基线",
|
||
"title": "建立差异和风险台账",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-03",
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "销毁/切源/类型差异、vendored 许可和外部 SDK 清单",
|
||
"acceptance": "已确认与待复现分开,每项有负责任务及兼容处理路线;纳入 BASE-TYPE-01/02/03/04 和 BASE-DIST-01 的发布/声明/工作区证据;纳入 BASE-PERF-01 销毁后 resize/notice 延迟工作",
|
||
"evidence": [
|
||
"changes/2026-09-10-BASE-07-risk-register.md",
|
||
"risk-guide.md",
|
||
"risk-table.md",
|
||
"risks.json",
|
||
"third-party.json"
|
||
]
|
||
},
|
||
{
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"evidence": [
|
||
"environment-matrix.md",
|
||
"changes/2026-09-10-BASE-08-environment-matrix.md"
|
||
],
|
||
"id": "BASE-08",
|
||
"phase": "1 基线",
|
||
"title": "建立消费者与真实环境验证矩阵",
|
||
"dependsOn": [
|
||
"BASE-01",
|
||
"BASE-05"
|
||
],
|
||
"deliverable": "每包版本/浏览器/codec/SDK/设备/样本、证据和负责验证任务的矩阵",
|
||
"acceptance": "格式兼容与运行能力分开,未知/缺环境不算通过,明确哪些检查阻止哪些批次发布"
|
||
},
|
||
{
|
||
"id": "ENG-01",
|
||
"phase": "2 工程保障",
|
||
"title": "固定 Node、包管理器与依赖",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-01"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "版本 pin、唯一锁文件、安装说明",
|
||
"acceptance": "干净环境可复现,最低 Node 与构建依赖一致,未夹带全量升级",
|
||
"evidence": [
|
||
"changes/2026-09-10-ENG-01-reproducible-toolchain.md",
|
||
"baselines/toolchain-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "ENG-PM-01",
|
||
"phase": "2 工程保障",
|
||
"title": "按用户选择切换固定 Yarn 包管理器",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"ENG-01"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "Yarn 固定版本、唯一 yarn.lock、工具检查与安装维护文档",
|
||
"acceptance": "干净冻结安装、Node 测试和全部构建通过;记录解析差异和依赖用途,独立提交",
|
||
"evidence": [
|
||
"changes/2026-09-10-ENG-PM-01-yarn-toolchain.md",
|
||
"baselines/yarn-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "ENG-02",
|
||
"phase": "2 工程保障",
|
||
"title": "拆分只读检查并建立 PR CI",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"ENG-01",
|
||
"ENG-PM-01"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "lint/lint:fix、PR 与主线检查、独立部署任务;遵循 github-ci-cd.md,PR/重构分支触发、最小权限及 workflow 静态检查",
|
||
"acceptance": "仓库内检查可执行且不改源码、不发布;required checks 的外部设置状态列入发布台账,不阻塞本地框架建设",
|
||
"evidence": [
|
||
"changes/2026-09-10-ENG-02-readonly-ci.md",
|
||
"baselines/ci-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "ENG-03",
|
||
"phase": "2 工程保障",
|
||
"title": "建立公共行为与单元测试入口",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"ENG-02",
|
||
"BASE-03"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "保留现有 node:test,测试目录/夹具/统一入口",
|
||
"acceptance": "已有 19 项回归保留,旧版与候选可用同一夹具运行",
|
||
"evidence": [
|
||
"changes/2026-09-10-ENG-03-unit-entry.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "ENG-04",
|
||
"phase": "2 工程保障",
|
||
"title": "建立类型测试基础",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"ENG-02",
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "根与分包 tsconfig、显式 TS 依赖、正反例测试",
|
||
"acceptance": "核心/试点与迁移模块严格检查,未迁移第三方/包历史问题独立台账;明确最低/当前 TS 和各环境类型;复用 BASE-05 的四种消费模式,不以 skipLibCheck 掩盖 BASE-TYPE-01/03",
|
||
"evidence": [
|
||
"changes/2026-09-10-ENG-04-typechecking.md",
|
||
"typechecking.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "ENG-05",
|
||
"phase": "2 工程保障",
|
||
"title": "建立真实浏览器测试服务",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"ENG-03",
|
||
"BASE-04",
|
||
"BASE-08"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "Playwright projects、本地 Range/失败媒体服务;复用 docs 页面/样本的状态隔离、错误采集与候选资源映射",
|
||
"acceptance": "Chromium/Firefox/WebKit 的基础播放 smoke 和报告可执行;以媒体状态断言判定通过,区分轻量用例与真实编辑器交互",
|
||
"evidence": [
|
||
"changes/2026-09-10-ENG-05-browser-tests.md",
|
||
"baselines/browser-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "ENG-06",
|
||
"phase": "2 工程保障",
|
||
"title": "支持按包非交互与 JS/TS 构建",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"ENG-02",
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "build/dev 入口解析、指定包参数、原交互保留",
|
||
"acceptance": "三种产物、Less/SVG/worker 和本地 8082 demo 正常;保持 BASE-05 的 AMD 同时写入全局行为及 i18n/legacy 入口",
|
||
"evidence": [
|
||
"changes/2026-09-10-ENG-06-build-development.md",
|
||
"build-development.md",
|
||
"baselines/build-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "ENG-07",
|
||
"phase": "2 工程保障",
|
||
"title": "建立 tarball 消费与产物检查",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"ENG-04",
|
||
"ENG-06"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "隔离 npm 消费 fixtures、API/声明/入口差分",
|
||
"acceptance": "不借 workspace 源码通过,能识别缺文件与默认导出变化",
|
||
"evidence": [
|
||
"changes/2026-09-10-ENG-07-package-consumers.md",
|
||
"baselines/package-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "ENG-08",
|
||
"phase": "2 工程保障",
|
||
"title": "增加覆盖率、资源与性能报告",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"ENG-03",
|
||
"ENG-05",
|
||
"BASE-06"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "覆盖率基线、资源清理断言、性能报告与阈值",
|
||
"acceptance": "关键生命周期分支有门槛,报告不靠无意义断言堆数量;将 BASE-06 的同环境多组配对、计时/压缩审查阈值与资源异常分开接入候选,不把历史现象冻结成正常要求",
|
||
"evidence": [
|
||
"coverage-performance.md",
|
||
"baselines/quality-validation.json",
|
||
"changes/2026-09-11-ENG-08-quality-reports.md"
|
||
]
|
||
},
|
||
{
|
||
"phase": "2 工程保障",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"risk": "M",
|
||
"id": "ENG-AUDIT-01",
|
||
"title": "核对每任务完成提交的真实Git历史",
|
||
"status": "done",
|
||
"dependsOn": [
|
||
"ENG-07",
|
||
"DOC-04"
|
||
],
|
||
"deliverable": "独立完成提交、初始DOC例外、父分支合并和证据共提交审计;CI完整历史与报告",
|
||
"acceptance": "真实仓库及隔离Git反例通过,done任务不允许缺独立commit,固定DOC-01~04例外可追溯;提交后验证自身",
|
||
"evidence": [
|
||
"commit-audit.md",
|
||
"changes/2026-09-12-ENG-AUDIT-01-commits.md",
|
||
"baselines/commit-audit-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"phase": "2 工程保障",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"risk": "M",
|
||
"id": "ENG-IMPACT-01",
|
||
"title": "建立全包依赖与共享变更影响映射",
|
||
"status": "done",
|
||
"dependsOn": [
|
||
"ENG-07",
|
||
"DOC-04"
|
||
],
|
||
"deliverable": "核心/构建/类型/锁文件到受影响包和必需生态检查的映射及CI接入",
|
||
"acceptance": "核心变化触发必需生态检查;新增包、未知共享文件或失配依赖不能静默漏检;解释受影响路径和测试命令",
|
||
"evidence": [
|
||
"impact-analysis.md",
|
||
"changes/2026-09-12-ENG-IMPACT-01-mapping.md",
|
||
"baselines/impact-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"phase": "2 工程保障",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"risk": "M",
|
||
"id": "ENG-COVERAGE-01",
|
||
"title": "建立公开契约与版本测试证据覆盖索引",
|
||
"status": "done",
|
||
"dependsOn": [
|
||
"BASE-08",
|
||
"CORE-22",
|
||
"ENG-07"
|
||
],
|
||
"deliverable": "契约-包-支持版本-固定测试ID-命令-候选/报告-责任任务索引和文档检查",
|
||
"acceptance": "计划、已执行和缺证据状态分开,所有公开契约都有验证归属;无效路径、版本依据或报告对应不明确会被识别",
|
||
"evidence": [
|
||
"contract-coverage.md",
|
||
"contract-index.md",
|
||
"changes/2026-09-12-ENG-COVERAGE-01-index.md",
|
||
"baselines/contracts-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "ENG-09",
|
||
"phase": "2 工程保障",
|
||
"title": "建立全包依赖影响和文档检查",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"ENG-07",
|
||
"DOC-04",
|
||
"ENG-AUDIT-01",
|
||
"ENG-IMPACT-01",
|
||
"ENG-COVERAGE-01"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "共享核心/构建影响映射、文档及每任务完成提交的 Git 审计接入;契约-支持版本-测试 ID-命令-候选/报告-任务的覆盖索引",
|
||
"acceptance": "核心变化触发必需生态检查;原有 DOC-01 至 04 基线例外明确,后续 done 任务不能缺失独立 commit;计划/已执行/缺证据分开,识别缺少验证归属的公开契约",
|
||
"evidence": [
|
||
"changes/2026-09-12-ENG-09-integration.md",
|
||
"baselines/engineering-integration.json"
|
||
]
|
||
},
|
||
{
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"evidence": [
|
||
"changes/2026-09-10-ENG-10-test-reliability.md",
|
||
"test-reliability.md"
|
||
],
|
||
"id": "ENG-10",
|
||
"phase": "2 工程保障",
|
||
"title": "建立历史失败分级和测试可靠性规则",
|
||
"dependsOn": [
|
||
"ENG-03",
|
||
"ENG-04",
|
||
"ENG-05",
|
||
"ENG-07",
|
||
"BASE-07"
|
||
],
|
||
"deliverable": "历史失败 ID/环境/旧版复现/负责修复任务、逐模块门槛、受控等待与 trace/retry 规则",
|
||
"acceptance": "不靠全局忽略或无理由 skip 隐藏问题,新增回归阻止交付,设备缺口和偶发失败单独可见;以 risks.json 为统一差异索引;关闭必须有 resolutionEvidence/rationale,已复现、源码事实、未验证分开,登记不等于豁免"
|
||
},
|
||
{
|
||
"id": "ENG-11",
|
||
"phase": "2 工程保障",
|
||
"title": "增加不改变产物的模块构建分析",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"ENG-03",
|
||
"ENG-08"
|
||
],
|
||
"status": "done",
|
||
"risk": "L",
|
||
"deliverable": "正式构建的可选模块归因报告及源码/产物指纹",
|
||
"acceptance": "相同构建开关前后三格式字节一致,报告不进入分发包;区分 Rollup 渲染字节与压缩体积,并保留真实工作区/发布来源",
|
||
"evidence": [
|
||
"build-analysis.md",
|
||
"baselines/bundle-attribution.json",
|
||
"changes/2026-09-11-ENG-11-build-analysis.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "CI-01",
|
||
"phase": "2.2 GitHub CI/CD",
|
||
"title": "增强兼容矩阵、并发缓存与 CI 报告",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"DOC-10",
|
||
"ENG-08",
|
||
"ENG-09",
|
||
"ENG-10"
|
||
],
|
||
"status": "doing",
|
||
"risk": "H",
|
||
"deliverable": "OS/Node/TS/浏览器与影响范围矩阵、缓存、超时、汇总检查和 artifact 报告",
|
||
"acceptance": "固定安装、失败/取消不误报、核心影响全生态;检查只读,失败证据可追溯",
|
||
"evidence": [
|
||
"ci-setup.md",
|
||
"changes/2026-09-13-CI-01-matrix-summary.md",
|
||
"baselines/ci-matrix-validation.json",
|
||
"changes/2026-09-13-CI-01-node-consumers.md",
|
||
"baselines/node-consumer-validation.json",
|
||
"changes/2026-09-14-CI-01-installed-full.md",
|
||
"baselines/ci-installed-full-validation.json",
|
||
"changes/2026-09-14-CI-01-source-chromium.md",
|
||
"baselines/ci-source-chromium-validation.json",
|
||
"changes/2026-09-15-CI-01-ads-installed.md",
|
||
"baselines/ci-ads-installed-validation.json",
|
||
"changes/2026-09-15-CI-01-subtitles-installed.md",
|
||
"baselines/ci-subtitles-installed-validation.json",
|
||
"changes/2026-09-15-CI-01-adaptive-installed.md",
|
||
"baselines/ci-adaptive-installed-validation.json",
|
||
"changes/2026-09-15-CI-01-asr-cast-installed.md",
|
||
"baselines/ci-asr-cast-installed-validation.json",
|
||
"changes/2026-09-15-CI-01-mediabunny-installed.md",
|
||
"baselines/ci-mediabunny-installed-validation.json",
|
||
"changes/2026-09-15-CI-01-jassub-installed.md",
|
||
"baselines/ci-jassub-installed-validation.json",
|
||
"changes/2026-09-15-CI-01-danmuku-installed.md",
|
||
"baselines/ci-danmuku-installed-validation.json",
|
||
"changes/2026-09-15-CI-01-browser-matrix.md",
|
||
"baselines/ci-browser-matrix-validation.json",
|
||
"changes/2026-09-15-CI-01-iframe-installed.md",
|
||
"baselines/ci-iframe-installed-validation.json",
|
||
"changes/2026-09-15-CI-01-vast-installed.md",
|
||
"baselines/ci-vast-installed-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CI-02",
|
||
"phase": "2.2 GitHub CI/CD",
|
||
"title": "分离并改进 GitHub Pages 部署",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"DOC-10",
|
||
"ENG-02",
|
||
"SITE-03"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "Pages artifact 部署配置、旧路径/域名核对、预检和迁移恢复指南",
|
||
"acceptance": "部署只取受信任已验证产物;本地实现可验收,远端 source/环境和实际部署状态单独登记",
|
||
"evidence": [
|
||
"changes/2026-09-14-CI-02-pages-artifact.md",
|
||
"baselines/pages-artifact-validation.json",
|
||
"pages-deployment.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "CI-03",
|
||
"phase": "2.2 GitHub CI/CD",
|
||
"title": "建立 npm 分包候选与发布工作流",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"DOC-10",
|
||
"CI-01",
|
||
"REL-08",
|
||
"REL-04"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "候选准备、精确 artifact 发布配置、OIDC 评估、版本/tag/registry 预检和部分失败恢复",
|
||
"acceptance": "不自动发布;明确逐包信任前置和 dry run 限制,不能重建未验证内容或重发冲突版本;按版本清单校验各包下一 major 和预发布/正式 tag,保留旧核心支持范围",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "CI-04",
|
||
"phase": "2.2 GitHub CI/CD",
|
||
"title": "验收 GitHub 流水线与远端发布准入",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"CI-01",
|
||
"CI-02",
|
||
"CI-03",
|
||
"SITE-06",
|
||
"CI-BROWSER-01"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "静态/干净环境检查、真实 PR 正反例、候选 dry run、required checks/Pages/npm 必需配置状态及运维指南",
|
||
"acceptance": "必要 Actions 证据和远端配置核对齐全;缺失保持未完成,真实 publish/deploy 仍在授权发布步骤执行",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"scope": [
|
||
"artplayer-plugin-chapter"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"evidence": [
|
||
"changes/2026-09-10-PILOT-01-chapter.md",
|
||
"baselines/pilot-validation.json"
|
||
],
|
||
"id": "PILOT-01",
|
||
"phase": "2.1 早期试点",
|
||
"title": "在旧核心上完成小插件迁移闭环",
|
||
"dependsOn": [
|
||
"PKG-CHAPTER-04",
|
||
"ENG-07",
|
||
"ENG-05",
|
||
"ENG-10"
|
||
],
|
||
"deliverable": "chapter 的 TS、旧核心消费、真实浏览器、tarball、包内维护地图及粒度/成本反馈",
|
||
"acceptance": "不依赖 CORE 重构即可通过整个试点;最终核心仍由 chapter 05/06 重新验收"
|
||
},
|
||
{
|
||
"id": "CORE-01",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "迁移纯工具并冻结导出",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"ENG-03",
|
||
"ENG-04",
|
||
"ENG-06",
|
||
"PILOT-01"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "utils/time/property/format/file/error/subtitle 的分批 TS 迁移",
|
||
"acceptance": "Artplayer.utils 导出/参数/绑定保持,纯逻辑与类型测试通过",
|
||
"evidence": [
|
||
"changes/2026-09-10-CORE-01-typed-utils.md",
|
||
"baselines/core-utils-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-02",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "迁移内部 Emitter",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-01",
|
||
"BASE-03"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "带类型事件映射的原 Emitter 实现",
|
||
"acceptance": "ctx、once/off、重入/异常和链式返回保持",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-02-typed-emitter.md",
|
||
"baselines/emitter-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-03",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "建立内部资源作用域",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-02"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "监听/订阅/定时器/RAF/请求/URL 的资源登记",
|
||
"acceptance": "实例与操作作用域分离,单项清理失败不阻断其他资源",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-03-resource-scope.md",
|
||
"baselines/resource-scope-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-04",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "修复初始化与销毁生命周期",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-03",
|
||
"ENG-05",
|
||
"BASE-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "构造失败回收、重复/重入 destroy、instances 修复",
|
||
"acceptance": "事件顺序、removeHtml、多实例和销毁中异步有真实回归;处理 baselines/lifecycle-coverage.md 的 BASE-LIFE-04/05 并增加候选正向回归;协调 BASE-PERF-01 销毁后定时器与回调归属",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-04-instance-lifecycle.md",
|
||
"baselines/instance-lifecycle-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-05",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "区分输入配置和内部配置",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-01",
|
||
"ENG-04"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "Option/ResolvedOption、默认值与校验整理",
|
||
"acceptance": "配置合并/错误时机不变,JS 输入仍运行时校验",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-05-resolved-options.md",
|
||
"baselines/options-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-06",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "建立内部媒体与宿主类型",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "原生 video、canvas shim、UI host 类型",
|
||
"acceptance": "不更改公开 art.video 用法,不以 HTMLVideoElement 断言掩盖 shim",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-06-media-hosts.md",
|
||
"baselines/media-hosts-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-07",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "逐项协调公开声明差异",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-02",
|
||
"CORE-06",
|
||
"BASE-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "plugins/toggle/cue/setting/static 的旧新类型对照",
|
||
"acceptance": "每项有兼容重载/扩展或待决结论,不能删除旧类型样例;处理 BASE-TYPE-01/04,分别保留旧合法声明消费并验证真实返回;协调 BASE-TYPE-05 的 Utils 导出、descriptor 和 timer 旧声明差异",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-07-declarations.md",
|
||
"baselines/declarations-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-08",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "整理插件管理器与扩展类型",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-03",
|
||
"CORE-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "注册流程、同步/异步结果、插件/事件扩展接口",
|
||
"acceptance": "旧插件同步可见性、重名与命名、销毁中异步插件保持明确语义;处理 baselines/lifecycle-coverage.md 的 BASE-LIFE-03 并增加候选正向回归;接续 CORE-07 / BASE-TYPE-04 的同步/异步注册返回声明冲突,内部返回类型精确,保留历史消费者",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-08-plugin-manager.md",
|
||
"baselines/plugins-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-09",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "整理 URL 与切源操作",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-04",
|
||
"CORE-06",
|
||
"CORE-08"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "url/switch/customType 的操作身份及取消方案",
|
||
"acceptance": "并发切源、错误、同 URL、销毁和 Promise 结算有契约;处理 baselines/lifecycle-coverage.md 的 BASE-LIFE-01/02/06 并增加候选正向回归",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-09-source-operations.md",
|
||
"baselines/source-operations-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-10",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "迁移播放与时间/状态属性",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-09"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "play/pause/toggle/seek/volume/rate/duration 等模块",
|
||
"acceptance": "旧返回值、拒绝、mutex、位置恢复、属性描述符与事件通过;接续 CORE-07 / BASE-TYPE-04 的 toggle void 与实际 Promise 分支冲突,不吞拒绝",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-10-playback-properties.md",
|
||
"baselines/playback-properties-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-11",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "整理媒体事件、ready 与重连",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-10"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "媒体转发、重连、UI 响应职责分离",
|
||
"acceptance": "readiness 次数/顺序、过期重连、原错误参数有回归",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-11-media-events.md",
|
||
"baselines/media-events-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-12",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "迁移模板及公开资源入口",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-06",
|
||
"CORE-04",
|
||
"BASE-04"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "template/icons/i18n/style、SSR 与 proxy 挂载",
|
||
"acceptance": "DOM/CSS/global/样式注入、i18n 子路径及 SSR import 保持;不把 SSR import/useSSR 保持扩大为服务端构造播放器;复跑 BASE-05 的 SSR import/模板、浏览器 useSSR 节点复用和非浏览器构造错误;接续 VENDOR-01/02,核对 screenfull/hint 复制版本、修改与分发通知,保留 DOM/CSS/fullscreen 行为",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-12-template-resources.md",
|
||
"baselines/template-resources-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-13",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "迁移组件注册与控件",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-12",
|
||
"CORE-08"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "Component/control/layer/contextmenu 的资源与 TS 边界",
|
||
"acceptance": "add/update/remove、name、selector、mounted/beforeUnmount 通过;处理 BASE-DOM-02 窄容器控件裁切,保留 controls.update 的旧 undefined 返回值",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-13-components.md",
|
||
"baselines/components-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-14",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "拆分设置树、渲染和布局",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-13"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "setting model/selection/render/layout 的分批实现",
|
||
"acceptance": "不强行统一控件返回值,嵌套选择、默认高亮、更新清理通过;结合 BASE-DOM-02 验证窄容器设置定位;接续 BASE-TYPE-07 的 find null、add/update item、remove undefined 声明冲突",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-14-setting.md",
|
||
"baselines/setting-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-15",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "迁移字幕获取、解析和渲染",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-11",
|
||
"CORE-13"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "subtitle 请求/track/DOM/URL 生命周期与类型",
|
||
"acceptance": "过期结果、偏移、cue 数组、原生全屏及错误路径通过;接续 BASE-TYPE-07 的真实 cue 数组与旧隐式 scalar 回调声明兼容",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-15-subtitle.md",
|
||
"baselines/subtitle-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-16",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "迁移全屏、PiP、mini 与尺寸模式",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-11",
|
||
"CORE-12"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "显示模式服务和原公开属性门面",
|
||
"acceptance": "模式互斥/恢复位置、手势权限、移动方向和退出失败通过",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-16-display.md",
|
||
"baselines/display-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-17",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "迁移键盘、手势、焦点和全局事件",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-13",
|
||
"CORE-16"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "events/hotkey 的明确 document 与资源归属",
|
||
"acceptance": "跨 document 重绑、触摸/键盘、快捷键及销毁无重复响应;修复 BASE-PERF-01 pending resize debounce 销毁后执行,并验证正常 resize 不变",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-17-input.md",
|
||
"baselines/input-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-18",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "迁移内置插件和提示模块",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-14",
|
||
"CORE-16",
|
||
"CORE-17"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "autoPlayback/autoOrientation/fastForward/lock/miniProgressBar 及 info/notice/loading/mask",
|
||
"acceptance": "默认启用条件、storage 格式、定时器/动画清理通过;结合 BASE-PERF-01 防止销毁后重新安排 notice timer;接续 BASE-TYPE-07 的 notice.show boolean getter 与历史读类型冲突",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-18-builtins-prompts.md",
|
||
"baselines/builtins-prompts-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-19",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "整理进度、质量、缩略图和截图",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-10",
|
||
"CORE-13",
|
||
"CORE-16"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "相关 player/control 功能与纯计算分离",
|
||
"acceptance": "截图跨域失败、缩略图布局、quality/进度边界保持",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-19-capture-thumbnails.md",
|
||
"baselines/capture-progress-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-20",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "收敛核心入口与依赖方向",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-14",
|
||
"CORE-15",
|
||
"CORE-18",
|
||
"CORE-19"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "Artplayer 门面、初始化依赖与最终目录",
|
||
"acceptance": "所有核心自有源码迁移,公开描述符/静态接口/事件差分通过",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-20-entry.md",
|
||
"baselines/entry-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-21",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "生成核心声明并校验包内容",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-20",
|
||
"ENG-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "由 TS 生成的既有入口声明与三种发布产物",
|
||
"acceptance": "内部类型不泄漏,旧 JS/TS 消费者与 i18n 通过;逐项完成 CORE-07 留下的 BASE-TYPE-04/05/07 声明方案,旧合法消费者与实际返回分别留证;不能以虚假的交叉返回类型或改变运行时来掩盖冲突,未决项阻止核心声明出口;处理 CORE-10 / BASE-TYPE-08 的 setter-only 属性虚构 getter 声明,并复核 PlaybackControls 精确视图与旧 toggle 声明共存策略",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-21-public-declarations.md",
|
||
"baselines/core-declarations-validation.json",
|
||
"core-public-types.md",
|
||
"typechecking.md"
|
||
]
|
||
},
|
||
{
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-23-keyboard-focus.md",
|
||
"baselines/keyboard-validation.json"
|
||
],
|
||
"id": "CORE-23",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "检查并补齐键盘、焦点与可访问名称",
|
||
"dependsOn": [
|
||
"CORE-13",
|
||
"CORE-14",
|
||
"CORE-17",
|
||
"ENG-05",
|
||
"BASE-04"
|
||
],
|
||
"deliverable": "主要控件/设置/模式退出的键盘与焦点回归、名称和字幕可用性检查及必要兼容修正",
|
||
"acceptance": "保持旧快捷键和 DOM/CSS 钩子;真实浏览器验证,不以静态属性检查代替交互;处理 BASE-DOM-01 的主要控件 Tab 不可达,保留既有名称与快捷键"
|
||
},
|
||
{
|
||
"id": "CORE-22",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "核心阶段完整验收",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-21",
|
||
"CORE-23",
|
||
"PILOT-01",
|
||
"ENG-08",
|
||
"ENG-10",
|
||
"ENG-11"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "核心与旧插件的可自动化完整回归、资源/性能及明确外部验证缺口",
|
||
"acceptance": "核心自动化和公开差异处置通过;真实环境缺口链接包集成/REL 门槛,阶段完成不代表可公开发布",
|
||
"evidence": [
|
||
"changes/2026-09-11-CORE-22-core-acceptance.md",
|
||
"baselines/core-setting-navigation-partial.json",
|
||
"core-acceptance.md",
|
||
"baselines/core-acceptance-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-24",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "修复连续切源的播放意图继承",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-22",
|
||
"PKG-AUDIO-04"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "连续切源保留原播放意图,同时尊重显式暂停与最新来源,回归旧/新 audio",
|
||
"acceptance": "真实暂停状态的受控测试、重入/取消/失败/销毁、三引擎和 main/legacy 产物验证通过;不恢复过期来源的公开副作用",
|
||
"evidence": [
|
||
"baselines/audio-combinations-first.json",
|
||
"changes/2026-09-12-CORE-24-source-intent.md",
|
||
"baselines/core-source-intent-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-CHAPTER-01",
|
||
"phase": "5 包迁移:artplayer-plugin-chapter",
|
||
"title": "核对包契约与历史用法",
|
||
"scope": [
|
||
"artplayer-plugin-chapter"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "chapters 时间区间、update、name 和进度 DOM 清单",
|
||
"acceptance": "源码/声明/README/demo/发布包差异已登记;公开形状和版本范围冻结",
|
||
"evidence": [
|
||
"changes/2026-09-10-PKG-CHAPTER-01-contract.md",
|
||
"baselines/chapter-contract.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-CHAPTER-02",
|
||
"phase": "5 包迁移:artplayer-plugin-chapter",
|
||
"title": "建立特有行为与错误测试",
|
||
"scope": [
|
||
"artplayer-plugin-chapter"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-CHAPTER-01",
|
||
"ENG-03",
|
||
"ENG-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "区间重叠/空列表/边界 seek、hover 标题和 update 用例",
|
||
"acceptance": "旧版本行为可重跑,成功/失败/切源/销毁有必要断言;修正 BASE-TYPE-02 的可选参数声明并补正反例",
|
||
"evidence": [
|
||
"changes/2026-09-10-PKG-CHAPTER-02-tests.md",
|
||
"baselines/chapter-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-CHAPTER-03",
|
||
"phase": "5 包迁移:artplayer-plugin-chapter",
|
||
"title": "以 TypeScript 拆分内部职责与资源",
|
||
"scope": [
|
||
"artplayer-plugin-chapter"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-CHAPTER-02",
|
||
"ENG-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "以严格 TS 拆分区间计算、进度 DOM、事件生命周期与样式注入;公开声明消费在 04 闭环",
|
||
"acceptance": "不依赖新核心方法或大范围设置重构;旧 API/事件和资源通过,必要适配限包内",
|
||
"evidence": [
|
||
"changes/2026-09-10-PKG-CHAPTER-03-typescript-modules.md",
|
||
"baselines/chapter-migration-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-CHAPTER-04",
|
||
"phase": "5 包迁移:artplayer-plugin-chapter",
|
||
"title": "迁移自有源码和公开类型",
|
||
"scope": [
|
||
"artplayer-plugin-chapter"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-CHAPTER-03",
|
||
"ENG-04",
|
||
"ENG-06"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "承接 03 的自有源码 TS 化,完善公开 Chapters/Option/Result 与 update 推导,关闭声明模块解析和旧消费差异",
|
||
"acceptance": "严格类型检查、旧消费样例通过;声明路径/导出和同步异步兼容;处理 BASE-TYPE-01/03,保持运行时和新旧 TS 模块解析消费",
|
||
"evidence": [
|
||
"changes/2026-09-10-PKG-CHAPTER-04-public-types.md",
|
||
"baselines/chapter-types-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-CHAPTER-05",
|
||
"phase": "5 包迁移:artplayer-plugin-chapter",
|
||
"title": "验证新旧核心和组合",
|
||
"scope": [
|
||
"artplayer-plugin-chapter"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-CHAPTER-04",
|
||
"CORE-22"
|
||
],
|
||
"status": "doing",
|
||
"risk": "M",
|
||
"deliverable": "chapter + quality/thumbnail、移动和全屏进度场景",
|
||
"acceptance": "最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-CHAPTER-05-combinations.md",
|
||
"baselines/chapter-combinations-checkpoint.json",
|
||
"changes/2026-09-14-PKG-CHAPTER-05-timing.md",
|
||
"baselines/chapter-timing-observations.json",
|
||
"changes/2026-09-15-PKG-CHAPTER-05-native-timing.md",
|
||
"baselines/chapter-native-timing-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-CHAPTER-06",
|
||
"phase": "5 包迁移:artplayer-plugin-chapter",
|
||
"title": "验证分发并同步文档",
|
||
"scope": [
|
||
"artplayer-plugin-chapter"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-CHAPTER-05",
|
||
"ENG-07",
|
||
"PKG-CHAPTER-HOVER-01"
|
||
],
|
||
"status": "todo",
|
||
"risk": "M",
|
||
"deliverable": "chapter.js 示例、产物和变更记录",
|
||
"acceptance": "tarball 入口/资源、类型、8082 demo 和 README 一致,有回退记录",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-AMBILIGHT-01",
|
||
"phase": "5 包迁移:artplayer-plugin-ambilight",
|
||
"title": "核对包契约与历史用法",
|
||
"scope": [
|
||
"artplayer-plugin-ambilight"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "blur/opacity/frequency/duration、start/stop 与挂载样式",
|
||
"acceptance": "源码/声明/README/demo/发布包差异已登记;公开形状和版本范围冻结",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-AMBILIGHT-01-contract.md",
|
||
"baselines/ambilight-contract.md",
|
||
"baselines/ambilight-release.json",
|
||
"baselines/ambilight-contract-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-AMBILIGHT-02",
|
||
"phase": "5 包迁移:artplayer-plugin-ambilight",
|
||
"title": "建立特有行为与错误测试",
|
||
"scope": [
|
||
"artplayer-plugin-ambilight"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-AMBILIGHT-01",
|
||
"ENG-03",
|
||
"ENG-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "跨域 canvas 失败、零尺寸、暂停、重复 start/stop 和 destroy",
|
||
"acceptance": "旧版本行为可重跑,成功/失败/切源/销毁有必要断言",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-AMBILIGHT-02-tests.md",
|
||
"baselines/ambilight-behavior-validation.json",
|
||
"ambilight-validation.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-AMBILIGHT-03",
|
||
"phase": "5 包迁移:artplayer-plugin-ambilight",
|
||
"title": "整理内部职责与资源",
|
||
"scope": [
|
||
"artplayer-plugin-ambilight"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-AMBILIGHT-02",
|
||
"CORE-03",
|
||
"CORE-12"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "取色计算与绘帧分离,统一 RAF 和 DOM 清理",
|
||
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-AMBILIGHT-03-lifecycle.md",
|
||
"ambilight-validation.md",
|
||
"baselines/ambilight-lifecycle-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-AMBILIGHT-04",
|
||
"phase": "5 包迁移:artplayer-plugin-ambilight",
|
||
"title": "迁移自有源码和公开类型",
|
||
"scope": [
|
||
"artplayer-plugin-ambilight"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-AMBILIGHT-03",
|
||
"ENG-04",
|
||
"ENG-06",
|
||
"CORE-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "canvas 上下文、参数及 start/stop 的明确类型",
|
||
"acceptance": "严格类型检查、旧消费样例通过;声明路径/导出和同步异步兼容",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-AMBILIGHT-04-types.md",
|
||
"ambilight-validation.md",
|
||
"baselines/ambilight-types-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-AMBILIGHT-PROXY-01",
|
||
"phase": "5 包迁移:artplayer-plugin-ambilight",
|
||
"title": "修复Canvas代理输出尺寸与取色区域",
|
||
"scope": [
|
||
"artplayer-plugin-ambilight",
|
||
"artplayer-proxy-canvas"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-AMBILIGHT-04",
|
||
"CORE-22"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "按Canvas实际输出buffer取色,原生video保留intrinsic尺寸,明确5.1.7没有proxy配置",
|
||
"acceptance": "旧错误复现、三引擎实际代理九色区域对照及原生视频回归通过;不把本子项当作最终代理/设备验收",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-AMBILIGHT-PROXY-01-sampling.md",
|
||
"ambilight-validation.md",
|
||
"baselines/ambilight-proxy-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-AMBILIGHT-05",
|
||
"phase": "5 包迁移:artplayer-plugin-ambilight",
|
||
"title": "验证新旧核心和组合",
|
||
"scope": [
|
||
"artplayer-plugin-ambilight"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-AMBILIGHT-04",
|
||
"CORE-22",
|
||
"PKG-AMBILIGHT-PROXY-01",
|
||
"PKG-CANVAS-04",
|
||
"PKG-FACTORY-01"
|
||
],
|
||
"status": "doing",
|
||
"risk": "M",
|
||
"deliverable": "原生 video、canvas proxy 的能力边界及销毁无帧循环",
|
||
"acceptance": "最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-AMBILIGHT-PROXY-01-sampling.md",
|
||
"ambilight-validation.md",
|
||
"changes/2026-09-14-PKG-AMBILIGHT-05-installed-combination.md",
|
||
"baselines/ambilight-installed-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-AMBILIGHT-06",
|
||
"phase": "5 包迁移:artplayer-plugin-ambilight",
|
||
"title": "验证分发并同步文档",
|
||
"scope": [
|
||
"artplayer-plugin-ambilight"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-AMBILIGHT-05",
|
||
"ENG-07"
|
||
],
|
||
"status": "todo",
|
||
"risk": "M",
|
||
"deliverable": "ambilight.js 示例及样式/分发验证",
|
||
"acceptance": "tarball 入口/资源、类型、8082 demo 和 README 一致,有回退记录",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-AUDIO-01",
|
||
"phase": "5 包迁移:artplayer-plugin-audio-track",
|
||
"title": "核对包契约与历史用法",
|
||
"scope": [
|
||
"artplayer-plugin-audio-track"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "url/offset/sync、audio 实例暴露、update 与音量语义",
|
||
"acceptance": "源码/声明/README/demo/发布包差异已登记;公开形状和版本范围冻结",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-AUDIO-01-contract.md",
|
||
"baselines/audio-track-contract.md",
|
||
"baselines/audio-track-release.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-AUDIO-02",
|
||
"phase": "5 包迁移:artplayer-plugin-audio-track",
|
||
"title": "建立特有行为与错误测试",
|
||
"scope": [
|
||
"artplayer-plugin-audio-track"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-AUDIO-01",
|
||
"ENG-03",
|
||
"ENG-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "偏移、倍率、seek、waiting/playing、加载错误和 autoplay 拒绝",
|
||
"acceptance": "旧版本行为可重跑,成功/失败/切源/销毁有必要断言",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-AUDIO-02-tests.md",
|
||
"audio-validation.md",
|
||
"baselines/audio-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-AUDIO-03",
|
||
"phase": "5 包迁移:artplayer-plugin-audio-track",
|
||
"title": "整理内部职责与资源",
|
||
"scope": [
|
||
"artplayer-plugin-audio-track"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-AUDIO-02",
|
||
"CORE-10"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "外部 audio 的同步策略、监听与源更新生命周期",
|
||
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-AUDIO-03-lifecycle.md",
|
||
"baselines/audio-lifecycle-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-AUDIO-04",
|
||
"phase": "5 包迁移:artplayer-plugin-audio-track",
|
||
"title": "迁移自有源码和公开类型",
|
||
"scope": [
|
||
"artplayer-plugin-audio-track"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-AUDIO-03",
|
||
"ENG-04",
|
||
"ENG-06",
|
||
"CORE-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "Option/Result/audio、update 输入和事件类型",
|
||
"acceptance": "严格类型检查、旧消费样例通过;声明路径/导出和同步异步兼容",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-AUDIO-04-types.md",
|
||
"baselines/audio-types-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-AUDIO-05",
|
||
"phase": "5 包迁移:artplayer-plugin-audio-track",
|
||
"title": "验证新旧核心和组合",
|
||
"scope": [
|
||
"artplayer-plugin-audio-track"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-AUDIO-04",
|
||
"CORE-22",
|
||
"CORE-24"
|
||
],
|
||
"status": "doing",
|
||
"risk": "H",
|
||
"deliverable": "主视频切源和缓冲恢复,多实例独立音频、旧核心",
|
||
"acceptance": "最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-AUDIO-05-combinations.md",
|
||
"baselines/audio-combinations-first.json",
|
||
"baselines/audio-combinations-checkpoint.json",
|
||
"audio-validation.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-AUDIO-06",
|
||
"phase": "5 包迁移:artplayer-plugin-audio-track",
|
||
"title": "验证分发并同步文档",
|
||
"scope": [
|
||
"artplayer-plugin-audio-track"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-AUDIO-05",
|
||
"ENG-07"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "audio.track.js 示例与运行返回值一致的声明",
|
||
"acceptance": "tarball 入口/资源、类型、8082 demo 和 README 一致,有回退记录",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-AUTO-THUMB-01",
|
||
"phase": "5 包迁移:artplayer-plugin-auto-thumbnail",
|
||
"title": "核对包契约与历史用法",
|
||
"scope": [
|
||
"artplayer-plugin-auto-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "url/width/number/scale、异步工厂和渐进缩略图更新",
|
||
"acceptance": "源码/声明/README/demo/发布包差异已登记;公开形状和版本范围冻结",
|
||
"evidence": [
|
||
"baselines/auto-thumbnail-release.json",
|
||
"baselines/auto-thumbnail-contract.md",
|
||
"changes/2026-09-13-PKG-AUTO-THUMB-01-contract.md",
|
||
"baselines/auto-thumbnail-contract-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-AUTO-THUMB-02",
|
||
"phase": "5 包迁移:artplayer-plugin-auto-thumbnail",
|
||
"title": "建立特有行为与错误测试",
|
||
"scope": [
|
||
"artplayer-plugin-auto-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-AUTO-THUMB-01",
|
||
"ENG-03",
|
||
"ENG-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "抽帧边界、短视频、失败、连续来源和销毁中的抽帧",
|
||
"acceptance": "旧版本行为可重跑,成功/失败/切源/销毁有必要断言",
|
||
"evidence": [
|
||
"baselines/auto-thumbnail-failures.md",
|
||
"baselines/auto-thumbnail-failures-validation.json",
|
||
"changes/2026-09-13-PKG-AUTO-THUMB-02-failures.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-AUTO-THUMB-03",
|
||
"phase": "5 包迁移:artplayer-plugin-auto-thumbnail",
|
||
"title": "整理内部职责与资源",
|
||
"scope": [
|
||
"artplayer-plugin-auto-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-AUTO-THUMB-02",
|
||
"CORE-09",
|
||
"CORE-19",
|
||
"PKG-AUTO-THUMB-07"
|
||
],
|
||
"status": "doing",
|
||
"risk": "H",
|
||
"deliverable": "隐藏 video、seek 队列、canvas 编码与 Blob URL 清理",
|
||
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-AUTO-THUMB-03-lifecycle-checkpoint.md",
|
||
"baselines/auto-thumbnail-lifecycle-checkpoint.json",
|
||
"changes/2026-09-13-PKG-AUTO-THUMB-03-hidden-renderer.md",
|
||
"baselines/auto-thumbnail-hidden-renderer.json",
|
||
"baselines/auto-thumbnail-timeline-media.json",
|
||
"changes/2026-09-13-PKG-AUTO-THUMB-03-frame-presentation.md",
|
||
"baselines/auto-thumbnail-frame-presentation.json",
|
||
"changes/2026-09-14-PKG-AUTO-THUMB-03-rendering-readiness.md",
|
||
"baselines/auto-thumbnail-rendering-readiness.json",
|
||
"changes/2026-09-14-PKG-AUTO-THUMB-03-first-seek.md",
|
||
"baselines/auto-thumbnail-first-seek.json",
|
||
"changes/2026-09-14-PKG-AUTO-THUMB-03-native-decoder.md",
|
||
"baselines/auto-thumbnail-native-decoder.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-AUTO-THUMB-04",
|
||
"phase": "5 包迁移:artplayer-plugin-auto-thumbnail",
|
||
"title": "迁移自有源码和公开类型",
|
||
"scope": [
|
||
"artplayer-plugin-auto-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-AUTO-THUMB-03",
|
||
"ENG-04",
|
||
"ENG-06",
|
||
"CORE-07",
|
||
"PKG-AUTO-THUMB-08",
|
||
"PKG-AUTO-THUMB-09",
|
||
"PKG-AUTO-THUMB-10",
|
||
"PKG-AUTO-THUMB-11"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "抽帧结果和真实异步插件返回类型兼容",
|
||
"acceptance": "严格类型检查、旧消费样例通过;声明路径/导出和同步异步兼容",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-AUTO-THUMB-05",
|
||
"phase": "5 包迁移:artplayer-plugin-auto-thumbnail",
|
||
"title": "验证新旧核心和组合",
|
||
"scope": [
|
||
"artplayer-plugin-auto-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-AUTO-THUMB-04",
|
||
"CORE-22"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "旧核心/候选核心预览、多次加载无过期缩略图覆盖",
|
||
"acceptance": "最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-AUTO-THUMB-06",
|
||
"phase": "5 包迁移:artplayer-plugin-auto-thumbnail",
|
||
"title": "验证分发并同步文档",
|
||
"scope": [
|
||
"artplayer-plugin-auto-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-AUTO-THUMB-05",
|
||
"ENG-07"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "auto.thumbnail.js、三种产物和内存/URL 证据",
|
||
"acceptance": "tarball 入口/资源、类型、8082 demo 和 README 一致,有回退记录",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-VTT-THUMB-01",
|
||
"phase": "5 包迁移:artplayer-plugin-vtt-thumbnail",
|
||
"title": "核对包契约与历史用法",
|
||
"scope": [
|
||
"artplayer-plugin-vtt-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "vtt/style、异步返回、预览控件名与样式契约",
|
||
"acceptance": "源码/声明/README/demo/发布包差异已登记;公开形状和版本范围冻结",
|
||
"evidence": [
|
||
"baselines/vtt-thumbnail-release.json",
|
||
"baselines/vtt-thumbnail-contract.md",
|
||
"changes/2026-09-13-PKG-VTT-THUMB-01-contract.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-VTT-THUMB-02",
|
||
"phase": "5 包迁移:artplayer-plugin-vtt-thumbnail",
|
||
"title": "建立特有行为与错误测试",
|
||
"scope": [
|
||
"artplayer-plugin-vtt-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-VTT-THUMB-01",
|
||
"ENG-03",
|
||
"ENG-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "VTT 解析、xywh、相对 URL、时间边界、请求失败和定位",
|
||
"acceptance": "旧版本行为可重跑,成功/失败/切源/销毁有必要断言",
|
||
"evidence": [
|
||
"baselines/vtt-thumbnail-failures.json",
|
||
"changes/2026-09-13-PKG-VTT-THUMB-02-failures.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-VTT-THUMB-03",
|
||
"phase": "5 包迁移:artplayer-plugin-vtt-thumbnail",
|
||
"title": "整理内部职责与资源",
|
||
"scope": [
|
||
"artplayer-plugin-vtt-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-VTT-THUMB-02",
|
||
"CORE-09",
|
||
"CORE-19"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "纯解析/区间查找与 DOM、请求/定时器生命周期分离",
|
||
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-VTT-THUMB-03-resources.md",
|
||
"baselines/vtt-thumbnail-resources.json",
|
||
"changes/2026-09-13-PKG-VTT-THUMB-03-parser.md",
|
||
"baselines/vtt-thumbnail-parser.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-VTT-THUMB-04",
|
||
"phase": "5 包迁移:artplayer-plugin-vtt-thumbnail",
|
||
"title": "迁移自有源码和公开类型",
|
||
"scope": [
|
||
"artplayer-plugin-vtt-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-VTT-THUMB-03",
|
||
"ENG-04",
|
||
"ENG-06",
|
||
"CORE-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "cue/rect/result 和参数可选性保持兼容",
|
||
"acceptance": "严格类型检查、旧消费样例通过;声明路径/导出和同步异步兼容",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-VTT-THUMB-04-runtime-types.md",
|
||
"baselines/vtt-thumbnail-runtime-types.json",
|
||
"changes/2026-09-13-PKG-VTT-THUMB-04-public-types.md",
|
||
"baselines/vtt-thumbnail-public-types.json",
|
||
"changes/2026-09-13-PKG-VTT-THUMB-04-module-forms.md",
|
||
"baselines/vtt-thumbnail-module-forms.json",
|
||
"type-compatibility-policy.md",
|
||
"baselines/vtt-thumbnail-approved-types.json",
|
||
"changes/2026-09-13-PKG-VTT-THUMB-04-approved-types.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-VTT-THUMB-05",
|
||
"phase": "5 包迁移:artplayer-plugin-vtt-thumbnail",
|
||
"title": "验证新旧核心和组合",
|
||
"scope": [
|
||
"artplayer-plugin-vtt-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-VTT-THUMB-04",
|
||
"CORE-22"
|
||
],
|
||
"status": "doing",
|
||
"risk": "M",
|
||
"deliverable": "鼠标和移动进度、全屏、切源、chapter 组合",
|
||
"acceptance": "最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-VTT-THUMB-05-combinations.md",
|
||
"baselines/vtt-thumbnail-combinations.json",
|
||
"baselines/vtt-thumbnail-core.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-VTT-THUMB-06",
|
||
"phase": "5 包迁移:artplayer-plugin-vtt-thumbnail",
|
||
"title": "验证分发并同步文档",
|
||
"scope": [
|
||
"artplayer-plugin-vtt-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-VTT-THUMB-05",
|
||
"ENG-07"
|
||
],
|
||
"status": "todo",
|
||
"risk": "M",
|
||
"deliverable": "vtt.thumbnail.js、VTT/图片资源解析和产物验证",
|
||
"acceptance": "tarball 入口/资源、类型、8082 demo 和 README 一致,有回退记录",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-HLS-01",
|
||
"phase": "5 包迁移:artplayer-plugin-hls-control",
|
||
"title": "核对包契约与历史用法",
|
||
"scope": [
|
||
"artplayer-plugin-hls-control"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "quality/audio 配置、getName、update、控件名及 Hls 实例绑定",
|
||
"acceptance": "源码/声明/README/demo/发布包差异已登记;公开形状和版本范围冻结",
|
||
"evidence": [
|
||
"baselines/hls-control-contract.md",
|
||
"baselines/hls-control-release.json",
|
||
"changes/2026-09-11-PKG-HLS-01-contract.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-HLS-02",
|
||
"phase": "5 包迁移:artplayer-plugin-hls-control",
|
||
"title": "建立特有行为与错误测试",
|
||
"scope": [
|
||
"artplayer-plugin-hls-control"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-HLS-01",
|
||
"ENG-03",
|
||
"ENG-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "Auto/手动实际 level、音轨、去重/过滤和拓扑变化",
|
||
"acceptance": "旧版本行为可重跑,成功/失败/切源/销毁有必要断言",
|
||
"evidence": [
|
||
"hls-validation.md",
|
||
"baselines/hls-sdk.json",
|
||
"baselines/hls-validation.json",
|
||
"changes/2026-09-11-PKG-HLS-02-tests.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-HLS-03",
|
||
"phase": "5 包迁移:artplayer-plugin-hls-control",
|
||
"title": "整理内部职责与资源",
|
||
"scope": [
|
||
"artplayer-plugin-hls-control"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-HLS-02",
|
||
"CORE-11",
|
||
"CORE-14"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "映射计算与 selector 更新/删除、Hls 事件订阅分离",
|
||
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-HLS-03-modules.md",
|
||
"baselines/hls-modules-validation.json",
|
||
"hls-validation.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-HLS-04",
|
||
"phase": "5 包迁移:artplayer-plugin-hls-control",
|
||
"title": "迁移自有源码和公开类型",
|
||
"scope": [
|
||
"artplayer-plugin-hls-control"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-HLS-03",
|
||
"ENG-04",
|
||
"ENG-06",
|
||
"CORE-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "HLS 能力适配类型、回调上下文和旧 getName 参数",
|
||
"acceptance": "严格类型检查、旧消费样例通过;声明路径/导出和同步异步兼容",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-HLS-04-types.md",
|
||
"baselines/hls-types-validation.json",
|
||
"hls-validation.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-HLS-SDK-01",
|
||
"phase": "5 包迁移:artplayer-plugin-hls-control",
|
||
"title": "验证真实 SDK worker 与分组轨道组合",
|
||
"scope": [
|
||
"artplayer-plugin-hls-control"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-HLS-04",
|
||
"CORE-22"
|
||
],
|
||
"status": "doing",
|
||
"risk": "H",
|
||
"deliverable": "固定历史及当前 SDK 归档、真实 worker/多音轨组、外部选择与重绑定浏览器证据",
|
||
"acceptance": "受支持桌面 MSE 引擎与新旧核心通过;无 worker 回退伪通过,设备缺口仍由 PKG-HLS-05 保持未完成",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-HLS-SDK-01-integration.md",
|
||
"baselines/hls-sdk-validation.json",
|
||
"baselines/hls-sdk-diagnostics.json",
|
||
"changes/2026-09-14-PKG-HLS-SDK-01-http-teardown.md",
|
||
"baselines/hls-http-teardown-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-HLS-05",
|
||
"phase": "5 包迁移:artplayer-plugin-hls-control",
|
||
"title": "验证新旧核心和组合",
|
||
"scope": [
|
||
"artplayer-plugin-hls-control"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-HLS-04",
|
||
"CORE-22",
|
||
"PKG-HLS-SDK-01"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "本地多码率 HLS、换成无轨道来源、旧核心和最终核心",
|
||
"acceptance": "最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-HLS-06",
|
||
"phase": "5 包迁移:artplayer-plugin-hls-control",
|
||
"title": "验证分发并同步文档",
|
||
"scope": [
|
||
"artplayer-plugin-hls-control"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-HLS-05",
|
||
"ENG-07",
|
||
"PKG-HLS-PACK-01"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "hls.control.js、依赖范围与回退记录",
|
||
"acceptance": "tarball 入口/资源、类型、8082 demo 和 README 一致,有回退记录",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-DASH-01",
|
||
"phase": "5 包迁移:artplayer-plugin-dash-control",
|
||
"title": "核对包契约与历史用法",
|
||
"scope": [
|
||
"artplayer-plugin-dash-control"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "quality/audio、representation ID/Auto、getName 和 update",
|
||
"acceptance": "源码/声明/README/demo/发布包差异已登记;公开形状和版本范围冻结",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-DASH-01-contract.md",
|
||
"baselines/dash-control-contract.md",
|
||
"baselines/dash-control-release.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DASH-02",
|
||
"phase": "5 包迁移:artplayer-plugin-dash-control",
|
||
"title": "建立特有行为与错误测试",
|
||
"scope": [
|
||
"artplayer-plugin-dash-control"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DASH-01",
|
||
"ENG-03",
|
||
"ENG-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "保留已有 5 项稳定 ID 回归,补发布版 SDK 4.x/当前 5.x、音轨/空列表/过滤/换源与关闭引用",
|
||
"acceptance": "旧版本行为可重跑,成功/失败/切源/销毁有必要断言",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-DASH-02-tests.md",
|
||
"dash-validation.md",
|
||
"baselines/dash-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DASH-03",
|
||
"phase": "5 包迁移:artplayer-plugin-dash-control",
|
||
"title": "整理内部职责与资源",
|
||
"scope": [
|
||
"artplayer-plugin-dash-control"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DASH-02",
|
||
"CORE-11",
|
||
"CORE-14"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "能力适配保留 SDK 4.x 与 5.x,稳定 ID 映射、ABR 状态、UI 清理和生命周期职责分离",
|
||
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-DASH-03-runtime.md",
|
||
"baselines/dash-runtime.json",
|
||
"dash-validation.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DASH-04",
|
||
"phase": "5 包迁移:artplayer-plugin-dash-control",
|
||
"title": "迁移自有源码和公开类型",
|
||
"scope": [
|
||
"artplayer-plugin-dash-control"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DASH-03",
|
||
"ENG-04",
|
||
"ENG-06",
|
||
"CORE-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "dash.js adapter、selector 和回调类型",
|
||
"acceptance": "严格类型检查、旧消费样例通过;声明路径/导出和同步异步兼容",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-DASH-04-types.md",
|
||
"baselines/dash-types-validation.json",
|
||
"dash-validation.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DASH-SEEK-01",
|
||
"phase": "5 包迁移:artplayer-plugin-dash-control",
|
||
"title": "修复 SDK 4.5.2 暂停跳转后的缓冲指标停滞",
|
||
"scope": [
|
||
"artplayer-plugin-dash-control"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DASH-04"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "按版本和实测空缓冲限定的指标同步、生命周期守卫及真实 SDK 旧红新绿",
|
||
"acceptance": "新插件在新旧核心及 Chromium/Firefox 原位置回归通过;不修改 SDK 方法/配置、媒体时间或删除缓冲;旧 SDK 原生缺陷与旧插件限制独立记录,不宣称第三方本体已修复",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-DASH-SEEK-01-buffer-metrics.md",
|
||
"baselines/dash-seek-recovery-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DASH-MENU-01",
|
||
"phase": "5 包迁移:artplayer-plugin-dash-control",
|
||
"title": "定位并修复 SDK 刷新期间设置选项不可见",
|
||
"scope": [
|
||
"artplayer-plugin-dash-control"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DASH-SEEK-01"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "真实 SDK 菜单点击失败根因、对应兼容修复及新旧核心回归",
|
||
"acceptance": "保留 legacy/旧核心/SDK5.2.1 的原失败;确定菜单在点击过程中不可见的原因;不靠 force 点击、扩大超时或重复运行覆盖问题;main/legacy 质量与音轨设置及 SDK 刷新组合通过",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-DASH-MENU-01-settings-navigation.md",
|
||
"baselines/dash-menu-validation.json",
|
||
"dash-validation.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DASH-05",
|
||
"phase": "5 包迁移:artplayer-plugin-dash-control",
|
||
"title": "验证新旧核心和组合",
|
||
"scope": [
|
||
"artplayer-plugin-dash-control"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DASH-04",
|
||
"CORE-22",
|
||
"PKG-DASH-SEEK-01"
|
||
],
|
||
"status": "doing",
|
||
"risk": "H",
|
||
"deliverable": "固定 dash.js 4.5.2/5.2.1 与本地 DASH 实际清晰度/音轨、高亮、Auto 和换源组合",
|
||
"acceptance": "最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-DASH-05-sdk-checkpoint.md",
|
||
"baselines/dash-sdk.json",
|
||
"baselines/dash-sdk-checkpoint.json",
|
||
"dash-validation.md",
|
||
"changes/2026-09-12-PKG-DASH-05-sdk-types.md",
|
||
"baselines/dash-sdk-types-validation.json",
|
||
"changes/2026-09-12-PKG-DASH-05-sdk-events.md",
|
||
"baselines/dash-sdk-events-validation.json",
|
||
"changes/2026-09-12-PKG-DASH-05-seek-diagnosis.md",
|
||
"baselines/dash-seek-diagnosis.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DASH-06",
|
||
"phase": "5 包迁移:artplayer-plugin-dash-control",
|
||
"title": "验证分发并同步文档",
|
||
"scope": [
|
||
"artplayer-plugin-dash-control"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DASH-05",
|
||
"ENG-07",
|
||
"PKG-DASH-MENU-01"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "dash.control.js、支持的 dash.js 版本与产物",
|
||
"acceptance": "tarball 入口/资源、类型、8082 demo 和 README 一致,有回退记录",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-MULTI-SUB-01",
|
||
"phase": "5 包迁移:artplayer-plugin-multiple-subtitles",
|
||
"title": "核对包契约与历史用法",
|
||
"scope": [
|
||
"artplayer-plugin-multiple-subtitles"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "subtitles/onParser、multipleSubtitles 名称及实际返回方法",
|
||
"acceptance": "源码/声明/README/demo/发布包差异已登记;公开形状和版本范围冻结;接续 VENDOR-03,定位 WebVTT parser 来源/修订及 CC0 头,保留解析/序列化行为",
|
||
"evidence": [
|
||
"baselines/multiple-subtitles-release.json",
|
||
"baselines/multiple-subtitles-contract.md",
|
||
"baselines/multiple-subtitles-contract-validation.json",
|
||
"changes/2026-09-13-PKG-MULTI-SUB-01-contract.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MULTI-SUB-02",
|
||
"phase": "5 包迁移:artplayer-plugin-multiple-subtitles",
|
||
"title": "建立特有行为与错误测试",
|
||
"scope": [
|
||
"artplayer-plugin-multiple-subtitles"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MULTI-SUB-01",
|
||
"ENG-03",
|
||
"ENG-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "VTT/SRT/ASS、编码/重叠 cue/排序/空轨/失败与切换",
|
||
"acceptance": "旧版本行为可重跑,成功/失败/切源/销毁有必要断言",
|
||
"evidence": [
|
||
"baselines/multiple-subtitles-failures.json",
|
||
"changes/2026-09-13-PKG-MULTI-SUB-02-failures.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MULTI-SUB-03",
|
||
"phase": "5 包迁移:artplayer-plugin-multiple-subtitles",
|
||
"title": "整理内部职责与资源",
|
||
"scope": [
|
||
"artplayer-plugin-multiple-subtitles"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MULTI-SUB-02",
|
||
"CORE-15"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "解析与合并/获取/渲染分离,过期请求及对象 URL 清理",
|
||
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
|
||
"evidence": [
|
||
"baselines/multiple-subtitles-resources.json",
|
||
"changes/2026-09-13-PKG-MULTI-SUB-03-resources.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MULTI-SUB-04",
|
||
"phase": "5 包迁移:artplayer-plugin-multiple-subtitles",
|
||
"title": "迁移自有源码和公开类型",
|
||
"scope": [
|
||
"artplayer-plugin-multiple-subtitles"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MULTI-SUB-03",
|
||
"ENG-04",
|
||
"ENG-06",
|
||
"CORE-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "准确 parser/cue/tree/result 类型与真实异步形状",
|
||
"acceptance": "严格类型检查、旧消费样例通过;声明路径/导出和同步异步兼容",
|
||
"evidence": [
|
||
"baselines/multiple-subtitles-runtime-types.json",
|
||
"changes/2026-09-13-PKG-MULTI-SUB-04-runtime-types.md",
|
||
"baselines/multiple-subtitles-public-types.json",
|
||
"changes/2026-09-13-PKG-MULTI-SUB-04-public-types.md",
|
||
"type-compatibility-policy.md",
|
||
"baselines/multiple-subtitles-approved-types.json",
|
||
"changes/2026-09-13-PKG-MULTI-SUB-04-approved-types.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MULTI-SUB-07",
|
||
"phase": "5 包迁移:artplayer-plugin-multiple-subtitles",
|
||
"title": "修复字幕内嵌时间戳序列化",
|
||
"scope": [
|
||
"artplayer-plugin-multiple-subtitles"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MULTI-SUB-03"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "保留数字时间戳节点、修正无效 NaN 输出、明确旧/新字幕输出差异",
|
||
"acceptance": "旧九份实现可复现,候选有效内嵌时间戳及文字/CSS/原生字幕通过,公开工厂与选择接口不变",
|
||
"evidence": [
|
||
"baselines/multiple-subtitles-timestamps.json",
|
||
"changes/2026-09-13-PKG-MULTI-SUB-07-timestamps.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MULTI-SUB-08",
|
||
"phase": "5 包迁移:artplayer-plugin-multiple-subtitles",
|
||
"title": "修复字幕实体解码与嵌套标签包装",
|
||
"scope": [
|
||
"artplayer-plugin-multiple-subtitles"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MULTI-SUB-04",
|
||
"PKG-MULTI-SUB-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "使用解析器既有实体表入口修复多余分号;保护字面文本并以兄弟节点包装标签,保留CSS钩子和时间戳",
|
||
"acceptance": "冻结旧实现复现、实体/双重编码/标签/选择重置回归、新旧核心真实字幕显示通过;vendor原文与来源校验不变,类型/分发兼容",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-MULTI-SUB-08-entities.md",
|
||
"baselines/multiple-subtitles-entities-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MULTI-SUB-05",
|
||
"phase": "5 包迁移:artplayer-plugin-multiple-subtitles",
|
||
"title": "验证新旧核心和组合",
|
||
"scope": [
|
||
"artplayer-plugin-multiple-subtitles"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MULTI-SUB-04",
|
||
"CORE-22",
|
||
"PKG-MULTI-SUB-07",
|
||
"PKG-MULTI-SUB-08"
|
||
],
|
||
"status": "doing",
|
||
"risk": "H",
|
||
"deliverable": "与核心字幕/偏移/全屏组合,旧名称调用不变",
|
||
"acceptance": "最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-MULTI-SUB-05-combinations.md",
|
||
"baselines/multiple-subtitles-combinations-validation.json",
|
||
"baselines/multiple-subtitles-cores.json",
|
||
"changes/2026-09-14-PKG-MULTI-SUB-05-seek-diagnostics.md",
|
||
"baselines/multiple-subtitles-seek-diagnostics.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MULTI-SUB-06",
|
||
"phase": "5 包迁移:artplayer-plugin-multiple-subtitles",
|
||
"title": "验证分发并同步文档",
|
||
"scope": [
|
||
"artplayer-plugin-multiple-subtitles"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MULTI-SUB-05",
|
||
"ENG-07",
|
||
"CORE-SUBTITLE-OFFSET-01",
|
||
"PKG-MULTI-SUB-09",
|
||
"PKG-MULTI-SUB-10",
|
||
"PKG-MULTI-SUB-11"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "multiple.subtitles.js、parser 来源许可及打包边界",
|
||
"acceptance": "tarball 入口/资源、类型、8082 demo 和 README 一致,有回退记录",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-JASSUB-01",
|
||
"phase": "5 包迁移:artplayer-plugin-jassub",
|
||
"title": "核对包契约与历史用法",
|
||
"scope": [
|
||
"artplayer-plugin-jassub"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "选项透传、result.instance、vendor 来源、worker/WASM/font 路径",
|
||
"acceptance": "源码/声明/README/demo/发布包差异已登记;公开形状和版本范围冻结;接续 VENDOR-04/05,核对 wrapper/worker/WASM/font 的独立来源与通知,保持资源路径和选项透传",
|
||
"evidence": [
|
||
"baselines/jassub-release.json",
|
||
"baselines/jassub-vendor.json",
|
||
"baselines/jassub-font-metadata.json",
|
||
"baselines/jassub-contract.md",
|
||
"baselines/jassub-contract-validation.json",
|
||
"changes/2026-09-13-PKG-JASSUB-01-baseline.md",
|
||
"baselines/jassub-provenance.json",
|
||
"baselines/jassub-provenance-validation.json",
|
||
"changes/2026-09-14-PKG-JASSUB-01-provenance.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-JASSUB-02",
|
||
"phase": "5 包迁移:artplayer-plugin-jassub",
|
||
"title": "建立特有行为与错误测试",
|
||
"scope": [
|
||
"artplayer-plugin-jassub"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-JASSUB-01",
|
||
"ENG-03",
|
||
"ENG-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "ASS 字体、时钟/seek/倍率/resize、加载失败和销毁",
|
||
"acceptance": "旧版本行为可重跑,成功/失败/切源/销毁有必要断言",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-JASSUB-02-failure-baseline.md",
|
||
"baselines/jassub-failures-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-JASSUB-03",
|
||
"phase": "5 包迁移:artplayer-plugin-jassub",
|
||
"title": "整理内部职责与资源",
|
||
"scope": [
|
||
"artplayer-plugin-jassub"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-JASSUB-02",
|
||
"CORE-15",
|
||
"CORE-16"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "仅整理自有 adapter/销毁;保留第三方文件及来源",
|
||
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-JASSUB-03-registration.md",
|
||
"baselines/jassub-registration-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-JASSUB-04",
|
||
"phase": "5 包迁移:artplayer-plugin-jassub",
|
||
"title": "迁移自有源码和公开类型",
|
||
"scope": [
|
||
"artplayer-plugin-jassub"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-JASSUB-03",
|
||
"ENG-04",
|
||
"ENG-06",
|
||
"CORE-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "JASSUB option/instance 的兼容类型包装,vendor JS 例外记录",
|
||
"acceptance": "严格类型检查、旧消费样例通过;声明路径/导出和同步异步兼容",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-JASSUB-04-types.md",
|
||
"baselines/jassub-types-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-JASSUB-05",
|
||
"phase": "5 包迁移:artplayer-plugin-jassub",
|
||
"title": "验证新旧核心和组合",
|
||
"scope": [
|
||
"artplayer-plugin-jassub"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-JASSUB-04",
|
||
"CORE-22",
|
||
"PKG-JASSUB-07",
|
||
"PKG-JASSUB-08",
|
||
"PKG-JASSUB-09",
|
||
"PKG-JASSUB-10"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "真实 worker/WASM 字幕渲染与全屏、旧核心测试",
|
||
"acceptance": "最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-JASSUB-06",
|
||
"phase": "5 包迁移:artplayer-plugin-jassub",
|
||
"title": "验证分发并同步文档",
|
||
"scope": [
|
||
"artplayer-plugin-jassub"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-JASSUB-05",
|
||
"ENG-07"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "jassub.js、外部资源路径、许可和离线失败记录;接续 VENDOR-04/05 完整组件/字体通知、LGPL 源码分发核对及六份未明确字体的分发处置",
|
||
"acceptance": "tarball 入口/资源、类型、8082 demo 和 README 一致,有回退记录;来源身份已由01冻结,完整通知和未明确字体的发布处理必须闭环,不能以来源相同替代许可结论",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-JASSUB-07",
|
||
"phase": "5 包迁移:artplayer-plugin-jassub",
|
||
"title": "修复 vendor 生命周期与字幕时钟",
|
||
"scope": [
|
||
"artplayer-plugin-jassub"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-JASSUB-03",
|
||
"PKG-JASSUB-02"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "独立记录 vendor 适配差异;幂等销毁、跨容器 setVideo、构造回滚、逐帧归属和倍率/能力边界;查询 timeout/Worker error 的缺失数据回调及每请求监听器/定时器清理(JASSUB-QUERY-01)",
|
||
"acceptance": "保持公开真实 instance、同步方法与资源路径;保留原 vendor 来源指纹并记录每项实际补丁;候选修复正例和真实字幕/失败/时钟验证通过,未证实设备不得冒充通过",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-JASSUB-07-vendor.md",
|
||
"baselines/jassub-vendor-validation.json",
|
||
"baselines/jassub-vendor-patch.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MASK-01",
|
||
"phase": "5 包迁移:artplayer-plugin-danmuku-mask",
|
||
"title": "核对包契约与历史用法",
|
||
"scope": [
|
||
"artplayer-plugin-danmuku-mask"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "模型参数、start/stop、默认下载路径及 mask 样式",
|
||
"acceptance": "源码/声明/README/demo/发布包差异已登记;公开形状和版本范围冻结;接续 SDK-08,分别核实 Yarn 解析版本、未固定版本的模型 solutionPath 和资源来源",
|
||
"evidence": [
|
||
"baselines/danmuku-mask-release.json",
|
||
"baselines/danmuku-mask-registry.json",
|
||
"baselines/danmuku-mask-contract.md",
|
||
"baselines/danmuku-mask-contract-validation.json",
|
||
"changes/2026-09-13-PKG-MASK-01-contract.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MASK-02",
|
||
"phase": "5 包迁移:artplayer-plugin-danmuku-mask",
|
||
"title": "建立特有行为与错误测试",
|
||
"scope": [
|
||
"artplayer-plugin-danmuku-mask"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MASK-01",
|
||
"ENG-03",
|
||
"ENG-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "加载期间停止/销毁、重复启动、推理失败、WebGL/CPU 边界",
|
||
"acceptance": "旧版本行为可重跑,成功/失败/切源/销毁有必要断言",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-MASK-02-failures.md",
|
||
"baselines/danmuku-mask-failures-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MASK-03",
|
||
"phase": "5 包迁移:artplayer-plugin-danmuku-mask",
|
||
"title": "整理内部职责与资源",
|
||
"scope": [
|
||
"artplayer-plugin-danmuku-mask"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MASK-02",
|
||
"CORE-18",
|
||
"PKG-DANMUKU-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "模型加载/推理/画布输出分离,阻止重叠推理与过期写入",
|
||
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-MASK-03-lifecycle.md",
|
||
"baselines/danmuku-mask-lifecycle-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MASK-04",
|
||
"phase": "5 包迁移:artplayer-plugin-danmuku-mask",
|
||
"title": "迁移自有源码和公开类型",
|
||
"scope": [
|
||
"artplayer-plugin-danmuku-mask"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MASK-03",
|
||
"ENG-04",
|
||
"ENG-06",
|
||
"CORE-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "模型 adapter、canvas 和选项的精确类型",
|
||
"acceptance": "严格类型检查、旧消费样例通过;声明路径/导出和同步异步兼容",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-MASK-04-types.md",
|
||
"baselines/danmuku-mask-types-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MASK-05",
|
||
"phase": "5 包迁移:artplayer-plugin-danmuku-mask",
|
||
"title": "验证新旧核心和组合",
|
||
"scope": [
|
||
"artplayer-plugin-danmuku-mask"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MASK-04",
|
||
"CORE-22"
|
||
],
|
||
"status": "doing",
|
||
"risk": "H",
|
||
"deliverable": "真实模型和 danmuku/seek/全屏组合,GPU 资源释放",
|
||
"acceptance": "最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-MASK-05-native-checkpoint.md",
|
||
"baselines/danmuku-mask-native-validation.json",
|
||
"baselines/danmuku-mask-historical-cores.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MASK-06",
|
||
"phase": "5 包迁移:artplayer-plugin-danmuku-mask",
|
||
"title": "验证分发并同步文档",
|
||
"scope": [
|
||
"artplayer-plugin-danmuku-mask"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MASK-05",
|
||
"ENG-07",
|
||
"PKG-DANMUKU-MASK-LOAD-01"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "danmuku.mask.js、资源版本/许可、CPU fallback 和包体积证据",
|
||
"acceptance": "tarball 入口/资源、类型、8082 demo 和 README 一致,有回退记录",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-ASR-01",
|
||
"phase": "5 包迁移:artplayer-plugin-asr",
|
||
"title": "核对包契约与历史用法",
|
||
"scope": [
|
||
"artplayer-plugin-asr"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "length/interval/sampleRate/onAudioChunk、append/hide/stop 的真实能力",
|
||
"acceptance": "源码/声明/README/demo/发布包差异已登记;公开形状和版本范围冻结",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-ASR-01-contracts.md",
|
||
"baselines/asr-contract.md",
|
||
"baselines/asr-release.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-ASR-02",
|
||
"phase": "5 包迁移:artplayer-plugin-asr",
|
||
"title": "建立特有行为与错误测试",
|
||
"scope": [
|
||
"artplayer-plugin-asr"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-ASR-01",
|
||
"ENG-03",
|
||
"ENG-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "PCM/WAV、chunk 时序、回调慢/拒绝、重复初始化与停止",
|
||
"acceptance": "旧版本行为可重跑,成功/失败/切源/销毁有必要断言",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-ASR-02-audio-baseline.md",
|
||
"baselines/asr-audio-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-ASR-03",
|
||
"phase": "5 包迁移:artplayer-plugin-asr",
|
||
"title": "整理内部职责与资源",
|
||
"scope": [
|
||
"artplayer-plugin-asr"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-ASR-02",
|
||
"CORE-10",
|
||
"CORE-18"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "AudioContext/Worklet/Stream 生命周期和背压分离",
|
||
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-ASR-03-audio-ownership.md",
|
||
"baselines/asr-ownership-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-ASR-04",
|
||
"phase": "5 包迁移:artplayer-plugin-asr",
|
||
"title": "迁移自有源码和公开类型",
|
||
"scope": [
|
||
"artplayer-plugin-asr"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-ASR-03",
|
||
"ENG-04",
|
||
"ENG-06",
|
||
"CORE-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "主线程/Worklet/音频 buffer 与异步回调类型",
|
||
"acceptance": "严格类型检查、旧消费样例通过;声明路径/导出和同步异步兼容",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-ASR-04-public-types.md",
|
||
"baselines/asr-types-validation.json",
|
||
"baselines/asr-type-diagnostics.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-ASR-05",
|
||
"phase": "5 包迁移:artplayer-plugin-asr",
|
||
"title": "验证新旧核心和组合",
|
||
"scope": [
|
||
"artplayer-plugin-asr"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-ASR-04",
|
||
"CORE-22",
|
||
"PKG-ASR-07",
|
||
"PKG-ASR-08",
|
||
"PKG-ASR-09"
|
||
],
|
||
"status": "doing",
|
||
"risk": "H",
|
||
"deliverable": "真实 WebAudio 分块、播放暂停/切源/销毁,不引入网络 ASR",
|
||
"acceptance": "最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成",
|
||
"evidence": [
|
||
"baselines/asr-volume-validation.json",
|
||
"baselines/asr-fallback-validation.json",
|
||
"baselines/asr-core.json",
|
||
"baselines/asr-local-core-validation.json",
|
||
"changes/2026-09-13-PKG-ASR-05-local-core-checkpoint.md",
|
||
"baselines/asr-combinations-validation.json",
|
||
"changes/2026-09-13-PKG-ASR-05-cors-combinations.md",
|
||
"baselines/asr-explicit-capture-validation.json",
|
||
"changes/2026-09-13-PKG-ASR-05-editor-generation.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-ASR-06",
|
||
"phase": "5 包迁移:artplayer-plugin-asr",
|
||
"title": "验证分发并同步文档",
|
||
"scope": [
|
||
"artplayer-plugin-asr"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-ASR-05",
|
||
"ENG-07"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "asr.js、Worklet 资源、输出格式与声明证据",
|
||
"acceptance": "tarball 入口/资源、类型、8082 demo 和 README 一致,有回退记录",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-ADS-01",
|
||
"phase": "5 包迁移:artplayer-plugin-ads",
|
||
"title": "核对包契约与历史用法",
|
||
"scope": [
|
||
"artplayer-plugin-ads"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "核对 npm 1.0.0~1.0.6 与未发布工作区 2.1.0 的真实参数、类型、结果、倒计时、分发和旧核心来源",
|
||
"acceptance": "源码/声明/README/demo/发布包差异已登记;公开形状和版本范围冻结",
|
||
"evidence": [
|
||
"baselines/ads-release.json",
|
||
"baselines/ads-contract.md",
|
||
"baselines/ads-contract-validation.json",
|
||
"changes/2026-09-12-PKG-ADS-01-contract.md",
|
||
"scripts/ads-contract.test.mjs"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-ADS-02",
|
||
"phase": "5 包迁移:artplayer-plugin-ads",
|
||
"title": "建立特有行为与错误测试",
|
||
"scope": [
|
||
"artplayer-plugin-ads"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-ADS-01",
|
||
"ENG-03",
|
||
"ENG-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "固定 npm 1.0.6 与工作区契约;HTML/视频/图片 HTML、跳过阈值、计时链、工厂复用、多实例、过早/重复方法、播放拒绝与销毁",
|
||
"acceptance": "旧版本行为可重跑,成功/失败/切源/销毁有必要断言",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-ADS-02-tests.md",
|
||
"ads-validation.md",
|
||
"baselines/ads-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-ADS-03",
|
||
"phase": "5 包迁移:artplayer-plugin-ads",
|
||
"title": "整理内部职责与资源",
|
||
"scope": [
|
||
"artplayer-plugin-ads"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-ADS-02",
|
||
"CORE-10",
|
||
"CORE-13"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "配置/广告状态/计时/视图/主视频恢复分离,保留产品规则;资源与版本检查改用经验证的旧核心能力边界",
|
||
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-ADS-03-lifecycle.md",
|
||
"ads-validation.md",
|
||
"baselines/ads-lifecycle-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-ADS-04",
|
||
"phase": "5 包迁移:artplayer-plugin-ads",
|
||
"title": "迁移自有源码和公开类型",
|
||
"scope": [
|
||
"artplayer-plugin-ads"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-ADS-03",
|
||
"ENG-04",
|
||
"ENG-06",
|
||
"CORE-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "兼容真实 html/video/url/i18n、旧 export= 与工作区 source/type 类型接受面;时长 string/number 漂移与未实现别名单独处置",
|
||
"acceptance": "严格类型检查、旧消费样例通过;声明路径/导出和同步异步兼容",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-ADS-04-types.md",
|
||
"baselines/ads-types-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-ADS-05",
|
||
"phase": "5 包迁移:artplayer-plugin-ads",
|
||
"title": "验证新旧核心和组合",
|
||
"scope": [
|
||
"artplayer-plugin-ads"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-ADS-04",
|
||
"CORE-22"
|
||
],
|
||
"status": "doing",
|
||
"risk": "H",
|
||
"deliverable": "本地广告 fixture、多实例、正常结束/跳过/销毁;核验历史关联核心 4.5.5、发布 5.4.1 与候选核心的实际归档/能力/媒体组合",
|
||
"acceptance": "最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-ADS-05-browser.md",
|
||
"baselines/ads-ui-visibility-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-ADS-06",
|
||
"phase": "5 包迁移:artplayer-plugin-ads",
|
||
"title": "验证分发并同步文档",
|
||
"scope": [
|
||
"artplayer-plugin-ads"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-ADS-05",
|
||
"ENG-07"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "ads.js/README/声明一致;旧 require(pkg).default、原 dist 路径、当前 callable/ESM/legacy 的隔离 tarball 及浏览器验收",
|
||
"acceptance": "tarball 入口/资源、类型、8082 demo 和 README 一致,有回退记录",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-VAST-01",
|
||
"phase": "5 包迁移:artplayer-plugin-vast",
|
||
"title": "核对包契约与历史用法",
|
||
"scope": [
|
||
"artplayer-plugin-vast"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "异步工厂、callback context、playUrl/playRes/init 与 SDK 版本;实际 npm 1.0.0 与未发布 1.2.0、SDK 1.21.0/1.21.2 的60成员归档和发布关联核心5.1.7",
|
||
"acceptance": "源码/声明/README/demo/发布包差异已登记;公开形状和版本范围冻结",
|
||
"evidence": [
|
||
"baselines/vast-contract.md",
|
||
"baselines/vast-release.json",
|
||
"changes/2026-09-12-PKG-VAST-01-contract.md",
|
||
"baselines/vast-contract-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-VAST-02",
|
||
"phase": "5 包迁移:artplayer-plugin-vast",
|
||
"title": "建立特有行为与错误测试",
|
||
"scope": [
|
||
"artplayer-plugin-vast"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-VAST-01",
|
||
"ENG-03",
|
||
"ENG-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "SDK 失败、重复初始化、广告事件、内容恢复和销毁竞态;发布 id/$container/eager 与工作区 lazy/config 覆盖、callback拒绝、加载中销毁、同毫秒多实例与晚到事件",
|
||
"acceptance": "旧版本行为可重跑,成功/失败/切源/销毁有必要断言",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-VAST-02-tests.md",
|
||
"baselines/vast-behavior-validation.json",
|
||
"baselines/vast-core.json",
|
||
"vast-validation.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-VAST-03",
|
||
"phase": "5 包迁移:artplayer-plugin-vast",
|
||
"title": "整理内部职责与资源",
|
||
"scope": [
|
||
"artplayer-plugin-vast"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-VAST-02",
|
||
"CORE-10",
|
||
"CORE-13"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "SDK loader、IMA adapter、广告状态和 DOM 清理分离;保持发布 callback 别名,明确初始化冲突;核心终止与显式 destroy 后重建区分",
|
||
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-VAST-03-lifecycle.md",
|
||
"baselines/vast-lifecycle-validation.json",
|
||
"vast-compatibility-decision.md",
|
||
"changes/2026-09-14-PKG-VAST-03-compatibility.md",
|
||
"baselines/vast-compatibility-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-VAST-04",
|
||
"phase": "5 包迁移:artplayer-plugin-vast",
|
||
"title": "迁移自有源码和公开类型",
|
||
"scope": [
|
||
"artplayer-plugin-vast"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-VAST-03",
|
||
"ENG-04",
|
||
"ENG-06",
|
||
"CORE-07",
|
||
"PKG-VAST-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "IMA/context/Promise 真实类型,外部 SDK 动态对象限定边界;修复 @alugha/ima 声明依赖链,保留 export= 和 require.default 消费;同步错误声明的兼容决策单列",
|
||
"acceptance": "严格类型检查、旧消费样例通过;声明路径/导出和同步异步兼容",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-VAST-04-types.md",
|
||
"baselines/vast-types-validation.json",
|
||
"vast-type-decision.md",
|
||
"vast-validation.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-VAST-05",
|
||
"phase": "5 包迁移:artplayer-plugin-vast",
|
||
"title": "验证新旧核心和组合",
|
||
"scope": [
|
||
"artplayer-plugin-vast"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-VAST-04",
|
||
"CORE-22"
|
||
],
|
||
"status": "doing",
|
||
"risk": "H",
|
||
"deliverable": "真实IMA广告播放、错误后主视频恢复、会话重建与销毁;核验npm5.1.7/npm5.4.0/候选5.4.1核心,VAST VPN外部脚本例外逐项记录,不将受控SDK当作实际IMA验收",
|
||
"acceptance": "最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-VAST-05-native-checkpoint.md",
|
||
"baselines/vast-native-validation.json",
|
||
"changes/2026-09-14-PKG-VAST-05-skip-checkpoint.md",
|
||
"baselines/vast-skip-validation.json",
|
||
"changes/2026-09-15-CI-01-vast-installed.md",
|
||
"baselines/ci-vast-installed-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-VAST-06",
|
||
"phase": "5 包迁移:artplayer-plugin-vast",
|
||
"title": "验证分发并同步文档",
|
||
"scope": [
|
||
"artplayer-plugin-vast"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-VAST-05",
|
||
"ENG-07"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "vast.js、SDK 资源、声明消费和独立版本记录;核验实际发布 namespace default、历史深路径、ESM和准确声明,版本按政策2.0.0由REL-09统一处理",
|
||
"acceptance": "tarball 入口/资源、类型、8082 demo 和 README 一致,有回退记录",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-CAST-01",
|
||
"phase": "5 包迁移:artplayer-plugin-chromecast",
|
||
"title": "核对包契约与历史用法",
|
||
"scope": [
|
||
"artplayer-plugin-chromecast"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "url/sdk/icon/mimeType、loader、会话、全局 SDK 与结果",
|
||
"acceptance": "源码/声明/README/demo/发布包差异已登记;公开形状和版本范围冻结",
|
||
"evidence": [
|
||
"baselines/chromecast-release.json",
|
||
"baselines/chromecast-contract.md",
|
||
"baselines/chromecast-contract-validation.json",
|
||
"changes/2026-09-13-PKG-CAST-01-contracts.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-CAST-02",
|
||
"phase": "5 包迁移:artplayer-plugin-chromecast",
|
||
"title": "建立特有行为与错误测试",
|
||
"scope": [
|
||
"artplayer-plugin-chromecast"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-CAST-01",
|
||
"ENG-03",
|
||
"ENG-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "SDK 脚本加载失败/重入、无设备/拒绝、重复实例与销毁",
|
||
"acceptance": "旧版本行为可重跑,成功/失败/切源/销毁有必要断言",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-CAST-02-failures.md",
|
||
"baselines/chromecast-failures-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-CAST-03",
|
||
"phase": "5 包迁移:artplayer-plugin-chromecast",
|
||
"title": "整理内部职责与资源",
|
||
"scope": [
|
||
"artplayer-plugin-chromecast"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-CAST-02",
|
||
"CORE-11",
|
||
"CORE-13"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "SDK singleton/实例订阅/会话与控件职责分离",
|
||
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-CAST-03-runtime.md",
|
||
"baselines/chromecast-runtime-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-CAST-04",
|
||
"phase": "5 包迁移:artplayer-plugin-chromecast",
|
||
"title": "迁移自有源码和公开类型",
|
||
"scope": [
|
||
"artplayer-plugin-chromecast"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-CAST-03",
|
||
"ENG-04",
|
||
"ENG-06",
|
||
"CORE-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "Cast 能力 adapter、全局对象和元数据类型",
|
||
"acceptance": "严格类型检查、旧消费样例通过;声明路径/导出和同步异步兼容",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-CAST-04-types.md",
|
||
"baselines/chromecast-types-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-CAST-05",
|
||
"phase": "5 包迁移:artplayer-plugin-chromecast",
|
||
"title": "验证新旧核心和组合",
|
||
"scope": [
|
||
"artplayer-plugin-chromecast"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-CAST-04",
|
||
"CORE-22"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "stub 测试之外记录实际 Cast 设备会话、源更新和断开",
|
||
"acceptance": "最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-CAST-06",
|
||
"phase": "5 包迁移:artplayer-plugin-chromecast",
|
||
"title": "验证分发并同步文档",
|
||
"scope": [
|
||
"artplayer-plugin-chromecast"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-CAST-05",
|
||
"ENG-07"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "chromecast.js、SDK URL/权限能力及待支持环境说明",
|
||
"acceptance": "tarball 入口/资源、类型、8082 demo 和 README 一致,有回退记录",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-DPIP-01",
|
||
"phase": "5 包迁移:artplayer-plugin-document-pip",
|
||
"title": "核对包契约与历史用法",
|
||
"scope": [
|
||
"artplayer-plugin-document-pip"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "width/height/placeholder/fallbackToVideoPiP、open/close/toggle 返回",
|
||
"acceptance": "源码/声明/README/demo/发布包差异已登记;公开形状和版本范围冻结",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-DPIP-01-contract.md",
|
||
"baselines/dpip-release.json",
|
||
"baselines/dpip-contract.md",
|
||
"baselines/dpip-contract-validation.json",
|
||
"dpip-validation.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DPIP-02",
|
||
"phase": "5 包迁移:artplayer-plugin-document-pip",
|
||
"title": "建立特有行为与错误测试",
|
||
"scope": [
|
||
"artplayer-plugin-document-pip"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DPIP-01",
|
||
"ENG-03",
|
||
"ENG-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "不支持/拒绝、重复打开、pagehide、核心销毁和视频 PiP fallback",
|
||
"acceptance": "旧版本行为可重跑,成功/失败/切源/销毁有必要断言",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-DPIP-02-tests.md",
|
||
"baselines/dpip-behavior-validation.json",
|
||
"dpip-validation.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DPIP-03",
|
||
"phase": "5 包迁移:artplayer-plugin-document-pip",
|
||
"title": "整理内部职责与资源",
|
||
"scope": [
|
||
"artplayer-plugin-document-pip"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DPIP-02",
|
||
"CORE-16",
|
||
"CORE-17"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "窗口生命周期、DOM 迁移、样式与事件 document 重绑分离",
|
||
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-DPIP-03-lifecycle.md",
|
||
"baselines/dpip-lifecycle-validation.json",
|
||
"dpip-validation.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DPIP-04",
|
||
"phase": "5 包迁移:artplayer-plugin-document-pip",
|
||
"title": "迁移自有源码和公开类型",
|
||
"scope": [
|
||
"artplayer-plugin-document-pip"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DPIP-03",
|
||
"ENG-04",
|
||
"ENG-06",
|
||
"CORE-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "Document PiP 可选能力和真实状态/返回类型",
|
||
"acceptance": "严格类型检查、旧消费样例通过;声明路径/导出和同步异步兼容",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-DPIP-04-types.md",
|
||
"baselines/dpip-types-validation.json",
|
||
"dpip-validation.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DPIP-05",
|
||
"phase": "5 包迁移:artplayer-plugin-document-pip",
|
||
"title": "验证新旧核心和组合",
|
||
"scope": [
|
||
"artplayer-plugin-document-pip"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DPIP-04",
|
||
"CORE-22",
|
||
"PKG-CANVAS-04",
|
||
"PKG-MB-04"
|
||
],
|
||
"status": "doing",
|
||
"risk": "H",
|
||
"deliverable": "原生视频及两个 proxy、键盘/焦点/全屏与关闭还原",
|
||
"acceptance": "最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-DPIP-05-native-checkpoint.md",
|
||
"baselines/dpip-native-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DPIP-06",
|
||
"phase": "5 包迁移:artplayer-plugin-document-pip",
|
||
"title": "验证分发并同步文档",
|
||
"scope": [
|
||
"artplayer-plugin-document-pip"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DPIP-05",
|
||
"ENG-07"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "document.pip.js、浏览器能力矩阵、旧接口与恢复证据",
|
||
"acceptance": "tarball 入口/资源、类型、8082 demo 和 README 一致,有回退记录",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-DANMUKU-01",
|
||
"phase": "5 包迁移:artplayer-plugin-danmuku",
|
||
"title": "核对弹幕全部公开契约",
|
||
"scope": [
|
||
"artplayer-plugin-danmuku"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "emit/load/config/hide/show/reset/mount、option/isHide/isStop/icons 与事件清单",
|
||
"acceptance": "源码、声明、发布包、Bilibili 输入和设置入口对照",
|
||
"evidence": [
|
||
"baselines/danmuku-release.json",
|
||
"baselines/danmuku-contract.md",
|
||
"baselines/danmuku-contract-validation.json",
|
||
"changes/2026-09-13-PKG-DANMUKU-01-contracts.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DANMUKU-02",
|
||
"phase": "5 包迁移:artplayer-plugin-danmuku",
|
||
"title": "建立弹幕算法与浏览器基线",
|
||
"scope": [
|
||
"artplayer-plugin-danmuku"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DANMUKU-01",
|
||
"ENG-05",
|
||
"ENG-08"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "密集/稀疏弹幕、过滤/异步输入、seek/倍率/重载测试",
|
||
"acceptance": "轨道选择、发射顺序、事件、内存和可视结果可重跑",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-DANMUKU-02-controlled-failures.md",
|
||
"baselines/danmuku-failures-validation.json",
|
||
"changes/2026-09-13-PKG-DANMUKU-02-browser-baseline.md",
|
||
"baselines/danmuku-browser-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DANMUKU-03",
|
||
"phase": "5 包迁移:artplayer-plugin-danmuku",
|
||
"title": "整理加载、解析与配置",
|
||
"scope": [
|
||
"artplayer-plugin-danmuku"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DANMUKU-02",
|
||
"CORE-08"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "bilibili/input/parser/config 的分层与取消",
|
||
"acceptance": "旧格式、回调、过滤、追加/替换语义保持",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-DANMUKU-03-input.md",
|
||
"baselines/danmuku-input-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DANMUKU-04",
|
||
"phase": "5 包迁移:artplayer-plugin-danmuku",
|
||
"title": "整理时钟、队列与轨道调度",
|
||
"scope": [
|
||
"artplayer-plugin-danmuku"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DANMUKU-03",
|
||
"CORE-10"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "danmuku 调度器和确定性时钟测试",
|
||
"acceptance": "seek/暂停/倍率/长时间运行无顺序和碰撞回归",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-DANMUKU-04-scheduler.md",
|
||
"baselines/danmuku-scheduler-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DANMUKU-05",
|
||
"phase": "5 包迁移:artplayer-plugin-danmuku",
|
||
"title": "整理 DOM 渲染、设置、热力图与 worker",
|
||
"scope": [
|
||
"artplayer-plugin-danmuku"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DANMUKU-04",
|
||
"CORE-14",
|
||
"CORE-18"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "renderer/setting/heatmap/worker 职责及资源归属",
|
||
"acceptance": "mount/icons/设置和 worker 协议保持,销毁无后台工作",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-DANMUKU-05-resources.md",
|
||
"baselines/danmuku-resources-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DANMUKU-06",
|
||
"phase": "5 包迁移:artplayer-plugin-danmuku",
|
||
"title": "迁移 TS 与公开声明",
|
||
"scope": [
|
||
"artplayer-plugin-danmuku"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DANMUKU-05",
|
||
"ENG-04",
|
||
"ENG-06"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "自有模块、worker 消息、option/item/result 类型",
|
||
"acceptance": "旧参数、扩展字段和事件消费通过,vendored 边界清楚",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-DANMUKU-06-types.md",
|
||
"baselines/danmuku-types-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DANMUKU-07",
|
||
"phase": "5 包迁移:artplayer-plugin-danmuku",
|
||
"title": "弹幕能力稳定性验收",
|
||
"scope": [
|
||
"artplayer-plugin-danmuku"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DANMUKU-06",
|
||
"PKG-DANMUKU-10",
|
||
"PKG-DANMUKU-11",
|
||
"PKG-DANMUKU-12"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "负载/渲染/资源对比及 mask 可依赖的稳定边界",
|
||
"acceptance": "在试点核心中旧插件 API 与关键帧路径通过",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-DANMUKU-07-stability.md",
|
||
"baselines/danmuku-stability-validation.json",
|
||
"danmuku-stability.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DANMUKU-08",
|
||
"phase": "5 包迁移:artplayer-plugin-danmuku",
|
||
"title": "完成新旧核心与组合验收",
|
||
"scope": [
|
||
"artplayer-plugin-danmuku"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DANMUKU-07",
|
||
"CORE-22"
|
||
],
|
||
"status": "doing",
|
||
"risk": "H",
|
||
"deliverable": "最终核心/旧核心、mask/fullscreen/PiP 组合报告",
|
||
"acceptance": "性能无未解释退化,反复装卸无累计资源",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-DANMUKU-08-native-combinations.md",
|
||
"baselines/danmuku-combination-checkpoint.json",
|
||
"changes/2026-09-14-PKG-DANMUKU-08-fullscreen-lifetimes.md",
|
||
"baselines/danmuku-fullscreen-validation.json",
|
||
"baselines/danmuku-old-core-load-validation.json",
|
||
"changes/2026-09-14-PKG-DANMUKU-08-combined-load.md",
|
||
"baselines/danmuku-combined-load-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DANMUKU-09",
|
||
"phase": "5 包迁移:artplayer-plugin-danmuku",
|
||
"title": "完成分发、示例与文档",
|
||
"scope": [
|
||
"artplayer-plugin-danmuku"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DANMUKU-08",
|
||
"ENG-07",
|
||
"PKG-DANMUKU-MASK-LOAD-01"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "danmuku.js、README、声明、worker 与产物",
|
||
"acceptance": "tarball 和静态 icons 等旧调用通过,有独立回退版本",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-CANVAS-01",
|
||
"phase": "5 包迁移:artplayer-proxy-canvas",
|
||
"title": "核对包契约与历史用法",
|
||
"scope": [
|
||
"artplayer-proxy-canvas"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "callback、canvas 原方法、转发 media 属性/方法/事件",
|
||
"acceptance": "源码/声明/README/demo/发布包差异已登记;公开形状和版本范围冻结",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-CANVAS-01-contract.md",
|
||
"baselines/canvas-contract.md",
|
||
"baselines/canvas-release.json",
|
||
"canvas-validation.md",
|
||
"baselines/canvas-contract-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-CANVAS-02",
|
||
"phase": "5 包迁移:artplayer-proxy-canvas",
|
||
"title": "建立特有行为与错误测试",
|
||
"scope": [
|
||
"artplayer-proxy-canvas"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-CANVAS-01",
|
||
"ENG-03",
|
||
"ENG-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "ready/loadeddata/canplay、play/seek、回调、resize 与销毁",
|
||
"acceptance": "旧版本行为可重跑,成功/失败/切源/销毁有必要断言",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-CANVAS-02-tests.md",
|
||
"baselines/canvas-behavior-validation.json",
|
||
"canvas-validation.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-CANVAS-03",
|
||
"phase": "5 包迁移:artplayer-proxy-canvas",
|
||
"title": "整理内部职责与资源",
|
||
"scope": [
|
||
"artplayer-proxy-canvas"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-CANVAS-02",
|
||
"CORE-06",
|
||
"CORE-11",
|
||
"CORE-16"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "video adapter/原 canvas 方法/RAF 绘制/事件订阅分离",
|
||
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-CANVAS-03-lifecycle.md",
|
||
"baselines/canvas-lifecycle-validation.json",
|
||
"canvas-validation.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-CANVAS-04",
|
||
"phase": "5 包迁移:artplayer-proxy-canvas",
|
||
"title": "迁移自有源码和公开类型",
|
||
"scope": [
|
||
"artplayer-proxy-canvas"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-CANVAS-03",
|
||
"ENG-04",
|
||
"ENG-06",
|
||
"CORE-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "canvas 与媒体能力的精确组合类型,保持 Result",
|
||
"acceptance": "严格类型检查、旧消费样例通过;声明路径/导出和同步异步兼容",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-CANVAS-04-types.md",
|
||
"baselines/canvas-types-validation.json",
|
||
"canvas-validation.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-CANVAS-05",
|
||
"phase": "5 包迁移:artplayer-proxy-canvas",
|
||
"title": "验证新旧核心和组合",
|
||
"scope": [
|
||
"artplayer-proxy-canvas"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-CANVAS-04",
|
||
"CORE-22",
|
||
"PKG-DPIP-04",
|
||
"PKG-FACTORY-01",
|
||
"PKG-CANVAS-SUBTITLE-01"
|
||
],
|
||
"status": "doing",
|
||
"risk": "H",
|
||
"deliverable": "真实 video/canvas 绘制、字幕和 document PiP 恢复",
|
||
"acceptance": "最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-CANVAS-05-native-pip.md",
|
||
"baselines/canvas-dpip-validation.json",
|
||
"baselines/canvas-subtitles-validation.json",
|
||
"baselines/ambilight-installed-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-CANVAS-06",
|
||
"phase": "5 包迁移:artplayer-proxy-canvas",
|
||
"title": "验证分发并同步文档",
|
||
"scope": [
|
||
"artplayer-proxy-canvas"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-CANVAS-05",
|
||
"ENG-07"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "canvas.js、三种产物、调用兼容与资源证据",
|
||
"acceptance": "tarball 入口/资源、类型、8082 demo 和 README 一致,有回退记录",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-MB-01",
|
||
"phase": "5 包迁移:artplayer-proxy-mediabunny",
|
||
"title": "核对 shim 与媒体契约",
|
||
"scope": [
|
||
"artplayer-proxy-mediabunny"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "全部 option、art.mediabunny、canvas/shim 属性及事件表",
|
||
"acceptance": "公开暴露成员和实际发布依赖/资源范围明确;核实 third-party.json 所记录依赖 MPL-2.0 元数据与实际 bundle 的许可/通知范围,不从根 MIT 推断",
|
||
"evidence": [
|
||
"baselines/mb-release.json",
|
||
"baselines/mb-surface.json",
|
||
"baselines/mb-contract.md",
|
||
"baselines/mb-contract-validation.json",
|
||
"mb-validation.md",
|
||
"changes/2026-09-12-PKG-MB-01-contract.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MB-02",
|
||
"phase": "5 包迁移:artplayer-proxy-mediabunny",
|
||
"title": "建立真实媒体与事件基线",
|
||
"scope": [
|
||
"artplayer-proxy-mediabunny"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MB-01",
|
||
"ENG-05",
|
||
"ENG-08"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "MP4/WebM/HLS/Blob/Stream、seek/错误/轨道切换样本",
|
||
"acceptance": "ready 事件顺序、音画同步、超时和释放可重跑",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-MB-02-checkpoint.md",
|
||
"baselines/mb-media-checkpoint.json",
|
||
"mb-validation.md",
|
||
"changes/2026-09-12-PKG-MB-02-baseline.md",
|
||
"baselines/mb-behavior-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MB-03",
|
||
"phase": "5 包迁移:artplayer-proxy-mediabunny",
|
||
"title": "整理 input 与加载取消",
|
||
"scope": [
|
||
"artplayer-proxy-mediabunny"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MB-02",
|
||
"CORE-09"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "input.js 源检测、输入资源、Range 与取消",
|
||
"acceptance": "HLS 检测在 input 边界,旧来源类型和超时保持",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-MB-03-input.md",
|
||
"baselines/mb-input-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MB-04",
|
||
"phase": "5 包迁移:artplayer-proxy-mediabunny",
|
||
"title": "整理 VideoShim/EventTarget/Engine 协调",
|
||
"scope": [
|
||
"artplayer-proxy-mediabunny"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MB-03",
|
||
"CORE-06",
|
||
"CORE-11"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "shim 描述符、事件桥、加载状态和操作隔离",
|
||
"acceptance": "公开属性/同步异步返回与事件重入顺序保持",
|
||
"evidence": [
|
||
"baselines/mb-coordination-source.json",
|
||
"changes/2026-09-12-PKG-MB-04-shim-checkpoint.md",
|
||
"baselines/mb-shim-checkpoint.json",
|
||
"changes/2026-09-12-PKG-MB-04-coordination.md",
|
||
"baselines/mb-coordination-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MB-05",
|
||
"phase": "5 包迁移:artplayer-proxy-mediabunny",
|
||
"title": "整理视频解码、seek 和帧释放",
|
||
"scope": [
|
||
"artplayer-proxy-mediabunny"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MB-04"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "VideoEngine 调度、队列、晚帧处理和资源释放",
|
||
"acceptance": "暂停/seek/切源无旧帧覆盖,默认丢帧策略不变",
|
||
"evidence": [
|
||
"baselines/mb-video-source.json",
|
||
"changes/2026-09-12-PKG-MB-05-video.md",
|
||
"baselines/mb-video-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MB-06",
|
||
"phase": "5 包迁移:artplayer-proxy-mediabunny",
|
||
"title": "整理音频解码、时钟与同步",
|
||
"scope": [
|
||
"artplayer-proxy-mediabunny"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MB-04"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "AudioEngine 时钟、缓冲和 AudioContext 归属",
|
||
"acceptance": "AV sync、倍速、无音轨、静音/音量和暂停恢复通过",
|
||
"evidence": [
|
||
"baselines/mb-audio-source.json",
|
||
"changes/2026-09-12-PKG-MB-06-audio.md",
|
||
"baselines/mb-audio-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MB-07",
|
||
"phase": "5 包迁移:artplayer-proxy-mediabunny",
|
||
"title": "整理 HLS 配对轨道与 selector",
|
||
"scope": [
|
||
"artplayer-proxy-mediabunny"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MB-05",
|
||
"PKG-MB-06",
|
||
"CORE-14"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "m3u8 配对、质量/音频选择及拓扑清理",
|
||
"acceptance": "实际选择高亮、切到无轨道来源清理、无重复 readiness",
|
||
"evidence": [
|
||
"baselines/mb-hls-source.json",
|
||
"changes/2026-09-12-PKG-MB-07-hls.md",
|
||
"baselines/mb-hls-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MB-08",
|
||
"phase": "5 包迁移:artplayer-proxy-mediabunny",
|
||
"title": "完成 TS 与媒体能力声明",
|
||
"scope": [
|
||
"artplayer-proxy-mediabunny"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MB-07",
|
||
"ENG-04",
|
||
"ENG-06"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "8 个自有 JS 模块迁移与 Result/shim 类型",
|
||
"acceptance": "解码器/Stream/DOM 类型清楚,旧 Option 和 art.mediabunny 使用保持",
|
||
"evidence": [
|
||
"baselines/mb-entry-source.json",
|
||
"changes/2026-09-12-PKG-MB-08-entry-checkpoint.md",
|
||
"baselines/mb-entry-checkpoint.json",
|
||
"baselines/mb-capability-source.json",
|
||
"changes/2026-09-12-PKG-MB-08-capability.md",
|
||
"baselines/mb-capability-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MB-09",
|
||
"phase": "5 包迁移:artplayer-proxy-mediabunny",
|
||
"title": "完成新旧核心和真实媒体组合",
|
||
"scope": [
|
||
"artplayer-proxy-mediabunny"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MB-08",
|
||
"CORE-22"
|
||
],
|
||
"status": "doing",
|
||
"risk": "H",
|
||
"deliverable": "跨浏览器能力、长播放、DPiP、HLS 音轨/质量报告",
|
||
"acceptance": "资源释放、事件顺序、AV sync 与支持范围满足基线",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-MB-09-native-pip-checkpoint.md",
|
||
"baselines/mb-native-pip-checkpoint.json",
|
||
"changes/2026-09-12-PKG-MB-09-sustained-playback-checkpoint.md",
|
||
"baselines/mb-sustained-validation.json",
|
||
"baselines/mb-sustained-media.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MB-10",
|
||
"phase": "5 包迁移:artplayer-proxy-mediabunny",
|
||
"title": "完成分发和文档",
|
||
"scope": [
|
||
"artplayer-proxy-mediabunny"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MB-09",
|
||
"ENG-07"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "mediabunny.js、README、依赖版本、三产物和许可; 拆分media声明后的独立编辑器生成/辅助文件过滤与语义检查(IFRAME-04全量生成时暴露)",
|
||
"acceptance": "tarball 可消费、无意外依赖升级、旧调用与回退可用",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-IFRAME-01",
|
||
"phase": "5 包迁移:artplayer-tool-iframe",
|
||
"title": "核对包契约与历史用法",
|
||
"scope": [
|
||
"artplayer-tool-iframe"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "constructor/commit/message/inject、postMessage 协议与历史公开拼写",
|
||
"acceptance": "源码/声明/README/demo/发布包差异已登记;公开形状和版本范围冻结",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-IFRAME-01-contract.md",
|
||
"baselines/iframe-release.json",
|
||
"baselines/iframe-contract.md",
|
||
"baselines/iframe-contract-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-IFRAME-02",
|
||
"phase": "5 包迁移:artplayer-tool-iframe",
|
||
"title": "建立特有行为与错误测试",
|
||
"scope": [
|
||
"artplayer-tool-iframe"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-IFRAME-01",
|
||
"ENG-03",
|
||
"ENG-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "跨窗口消息、ID 匹配、请求失败、重复 inject、销毁中请求",
|
||
"acceptance": "旧版本行为可重跑,成功/失败/切源/销毁有必要断言",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-IFRAME-02-behavior.md",
|
||
"baselines/iframe-behavior-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-IFRAME-03",
|
||
"phase": "5 包迁移:artplayer-tool-iframe",
|
||
"title": "整理内部职责与资源",
|
||
"scope": [
|
||
"artplayer-tool-iframe"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-IFRAME-02",
|
||
"CORE-02",
|
||
"BASE-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "请求注册/响应匹配/监听清理分离;origin/source 安全边界独立决策",
|
||
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
|
||
"evidence": [
|
||
"changes/2026-09-12-PKG-IFRAME-03-requests-checkpoint.md",
|
||
"baselines/iframe-requests-checkpoint.json",
|
||
"changes/2026-09-12-PKG-IFRAME-03-boundaries-checkpoint.md",
|
||
"baselines/iframe-boundaries-checkpoint.json",
|
||
"iframe-message-boundary.md",
|
||
"changes/2026-09-13-PKG-IFRAME-03-navigation.md",
|
||
"baselines/iframe-navigation-validation.json",
|
||
"iframe-document-protocol.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-IFRAME-04",
|
||
"phase": "5 包迁移:artplayer-tool-iframe",
|
||
"title": "迁移自有源码和公开类型",
|
||
"scope": [
|
||
"artplayer-tool-iframe"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-IFRAME-03",
|
||
"ENG-04",
|
||
"ENG-06",
|
||
"CORE-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "消息联合类型、回调/Promise 推导、旧公开字段兼容;旧npm export=与实际namespace、额外helper协议分别核验",
|
||
"acceptance": "严格类型检查、旧消费样例通过;声明路径/导出和同步异步兼容",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-IFRAME-04-types.md",
|
||
"baselines/iframe-types-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-IFRAME-05",
|
||
"phase": "5 包迁移:artplayer-tool-iframe",
|
||
"title": "验证新旧核心和组合",
|
||
"scope": [
|
||
"artplayer-tool-iframe"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-IFRAME-04",
|
||
"CORE-22"
|
||
],
|
||
"status": "doing",
|
||
"risk": "H",
|
||
"deliverable": "真实同源/跨源 iframe、既有 commit 协议;安全变化有独立结论;新旧核心/demo、实际 BFCache/设备和外部中断导航验收,旧端无文档标记的限制明确",
|
||
"acceptance": "最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-IFRAME-05-integration.md",
|
||
"baselines/iframe-integration-validation.json",
|
||
"changes/2026-09-13-PKG-IFRAME-05-history.md",
|
||
"baselines/iframe-history-validation.json",
|
||
"changes/2026-09-15-CI-01-iframe-installed.md",
|
||
"baselines/ci-iframe-installed-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-IFRAME-06",
|
||
"phase": "5 包迁移:artplayer-tool-iframe",
|
||
"title": "验证分发并同步文档",
|
||
"scope": [
|
||
"artplayer-tool-iframe"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-IFRAME-05",
|
||
"ENG-07"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "iframe.js、示例集成和原 script/class 导出验证;旧包名/额外helper深入口与新工具名的迁移结论; 保留旧npm Function回调及namespace/helper与工具类的区别,核验实际编译后消费而非仅声明通过",
|
||
"acceptance": "tarball 入口/资源、类型、8082 demo 和 README 一致,有回退记录",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-TOOL-THUMB-01",
|
||
"phase": "5 包迁移:artplayer-tool-thumbnail",
|
||
"title": "核对包契约与历史用法",
|
||
"scope": [
|
||
"artplayer-tool-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "构造/defaults/事件/方法/历史拼写、.esm.js 入口和缺失 types",
|
||
"acceptance": "源码/声明/README/demo/可恢复发布内容差异已登记;公开形状和版本范围冻结;区分旧 npm 的 main/CSS 与当前工作区无 main、.esm.js/类型缺失,不把工作区状态冒称旧 npm 发布事实",
|
||
"evidence": [
|
||
"baselines/thumbnail-release.json",
|
||
"baselines/thumbnail-contract.md",
|
||
"changes/2026-09-13-PKG-TOOL-THUMB-01-contract.md",
|
||
"baselines/thumbnail-contract-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-TOOL-THUMB-02",
|
||
"phase": "5 包迁移:artplayer-tool-thumbnail",
|
||
"title": "建立特有行为与错误测试",
|
||
"scope": [
|
||
"artplayer-tool-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-TOOL-THUMB-01",
|
||
"ENG-03",
|
||
"ENG-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "文件输入/拖放、抽帧网格、begin/end、进度/失败/重复任务",
|
||
"acceptance": "旧版本行为可重跑,成功/失败/切源/销毁有必要断言",
|
||
"evidence": [
|
||
"baselines/thumbnail-behavior-validation.json",
|
||
"changes/2026-09-13-PKG-TOOL-THUMB-02-behavior.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-TOOL-THUMB-03",
|
||
"phase": "5 包迁移:artplayer-tool-thumbnail",
|
||
"title": "整理内部职责与资源",
|
||
"scope": [
|
||
"artplayer-tool-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-TOOL-THUMB-02",
|
||
"CORE-01"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "输入、抽帧队列、网格导出、URL/监听清理分离",
|
||
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-TOOL-THUMB-03-input-checkpoint.md",
|
||
"baselines/thumbnail-input-checkpoint.json",
|
||
"changes/2026-09-13-PKG-TOOL-THUMB-03-lifecycle.md",
|
||
"baselines/thumbnail-lifecycle-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-TOOL-THUMB-04",
|
||
"phase": "5 包迁移:artplayer-tool-thumbnail",
|
||
"title": "迁移自有源码和公开类型",
|
||
"scope": [
|
||
"artplayer-tool-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-TOOL-THUMB-03",
|
||
"ENG-04",
|
||
"ENG-06",
|
||
"CORE-07"
|
||
],
|
||
"status": "doing",
|
||
"risk": "H",
|
||
"deliverable": "补齐真实 API 声明,自有 emitter/utils TS 化",
|
||
"acceptance": "严格类型检查、旧消费样例通过;声明路径/导出和同步异步兼容;为 BASE-DIST-01 提供兼容入口/声明及消费者验证",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-TOOL-THUMB-04-runtime-types.md",
|
||
"baselines/thumbnail-runtime-types-validation.json",
|
||
"changes/2026-09-13-PKG-TOOL-THUMB-04-public-types.md",
|
||
"baselines/thumbnail-public-types-validation.json",
|
||
"changes/2026-09-13-PKG-TOOL-THUMB-04-emitter.md",
|
||
"baselines/thumbnail-emitter-validation.json",
|
||
"thumbnail-compatibility-decision.md",
|
||
"changes/2026-09-15-PKG-TOOL-THUMB-04-policy-proposal.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-TOOL-THUMB-05",
|
||
"phase": "5 包迁移:artplayer-tool-thumbnail",
|
||
"title": "验证新旧核心和组合",
|
||
"scope": [
|
||
"artplayer-tool-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-TOOL-THUMB-04",
|
||
"CORE-22"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "工具独立浏览器使用,生成缩略图在核心中显示",
|
||
"acceptance": "最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-TOOL-THUMB-06",
|
||
"phase": "5 包迁移:artplayer-tool-thumbnail",
|
||
"title": "验证分发并同步文档",
|
||
"scope": [
|
||
"artplayer-tool-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-TOOL-THUMB-05",
|
||
"ENG-07"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "tool.thumbnail.js、历史 ESM 兼容文件、types 路径和 tarball",
|
||
"acceptance": "tarball 入口/资源、类型、8082 demo 和 README 一致,有回退记录",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "SITE-01",
|
||
"phase": "6 文档与消费者",
|
||
"title": "清点文档/示例/生成链",
|
||
"scope": [
|
||
"artplayer-vitepress",
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"BASE-04",
|
||
"BASE-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "中英文文档、插件页面、demo URL、编辑器声明与生成目录清单;六类 HTML 入口、prod/libs/code/example 加载行为及移动重定向",
|
||
"acceptance": "所有公开 API/插件有对应页面或明确补充任务;核实 BASE-DEMO-01 的历史 thumbnail 插件来源及 29 示例/36 HTML 路径;明确 BASE-05 所记录站点实际分发与未设 private 的 manifest 意图;接续 VENDOR-05/06/07/08 和 BASE-SITE-01/BASE-MEDIA-01,核对字体、Monaco、vConsole、console bundle 与样本来源及分发范围",
|
||
"evidence": [
|
||
"site-inventory.md",
|
||
"baselines/site-inventory.json",
|
||
"baselines/site-provenance.json",
|
||
"baselines/demo-additions.json",
|
||
"changes/2026-09-14-SITE-01-site-inventory.md",
|
||
"baselines/site-inventory-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "SITE-SMOKE-01",
|
||
"phase": "6 文档与消费者",
|
||
"title": "迁移示例生成器并验证真实就绪与清理",
|
||
"scope": [
|
||
"artplayer-vitepress",
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"SITE-01"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "TS Markdown 解析/生成与浏览器运行模块;旧命令和 URL、稳定实例就绪 smoke、错误与资源清理",
|
||
"acceptance": "复现旧 malformed 死循环并保证有限失败;保留全部既有示例内容、生成确定且 check 只读;不再以 100ms 作为成功,验证原生就绪、异常、取消与清理;三浏览器检查,明确延迟交互与全部 233 示例仍需 EX-03",
|
||
"evidence": [
|
||
"changes/2026-09-14-SITE-SMOKE-01-documentation-smoke.md",
|
||
"baselines/docs-smoke-validation.json",
|
||
"scripts/docs-smoke.test.mjs"
|
||
]
|
||
},
|
||
{
|
||
"id": "SITE-02",
|
||
"phase": "6 文档与消费者",
|
||
"title": "整理声明与示例生成器",
|
||
"scope": [
|
||
"artplayer-vitepress"
|
||
],
|
||
"dependsOn": [
|
||
"SITE-01",
|
||
"ENG-04",
|
||
"ENG-06",
|
||
"SITE-SMOKE-01"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "build-ts/build-test 生成链的可验证 TS 脚本",
|
||
"acceptance": "不靠字符串拼接掩盖声明错误,生成示例有真实断言或仅标 smoke;替换固定 100ms 成功判定,明确异步错误、清理和生成覆盖限制;坏代码块解析必须终止,覆盖 malformed 分支不推进 regexp 的回归",
|
||
"evidence": [
|
||
"changes/2026-09-14-SITE-02-editor-declarations.md",
|
||
"baselines/editor-declarations-validation.json",
|
||
"changes/2026-09-14-SITE-SMOKE-01-documentation-smoke.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "SITE-LOAD-01",
|
||
"phase": "6 文档与消费者",
|
||
"title": "修复文档示例加载顺序与导航边界",
|
||
"scope": [
|
||
"artplayer-vitepress",
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"SITE-02"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "共享 TS loader、移动入口与 Run Code/语言路由,保留 URL 和使用方式",
|
||
"acceptance": "旧版复现 define 丢失和依赖乱序;真实浏览器验证成功/失败恢复、顺序、去重、编码/优先级及 localhost/127 路由和语言跳转;不以此替代 SITE-03 构建/翻译流程",
|
||
"evidence": [
|
||
"changes/2026-09-14-SITE-LOAD-01-site-loading.md",
|
||
"baselines/site-loading-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "SITE-AI-DOCS-01",
|
||
"phase": "6 文档与消费者",
|
||
"title": "重构可复现 LLM 文档与安全翻译草稿流程",
|
||
"scope": [
|
||
"artplayer-vitepress",
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"SITE-LOAD-01",
|
||
"SITE-02"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "TS 离线文档聚合、显式远程翻译、草稿校验和可回退应用,保留命令与目标路径",
|
||
"acceptance": "默认不读密钥/调用网络;LLM 内容可复现并保留来源;旧翻译破坏性行为有复现;错误/限流/超时/结构损坏/过期/路径越界拒绝且英文文档不丢失;未执行付费翻译不计服务验收",
|
||
"evidence": [
|
||
"changes/2026-09-14-SITE-AI-DOCS-01-documentation-pipeline.md",
|
||
"baselines/documentation-pipeline-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "SITE-BUILD-01",
|
||
"phase": "6 文档与消费者",
|
||
"title": "重构 i18n 与文档构建的暂存、替换和 Yarn 编排",
|
||
"scope": [
|
||
"artplayer",
|
||
"artplayer-vitepress",
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"SITE-AI-DOCS-01"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "严格 TS 构建模块、编译后替换产物与失败回退,固定 Yarn 子进程和旧构建入口",
|
||
"acceptance": "旧 i18n 删除后失败有复现;失败不改变既有产物;语言集合、UMD/ESM/历史别名兼容;文档子进程退出码准确并完成真实 VitePress 构建;不隐式翻译、不修改播放器 API",
|
||
"evidence": [
|
||
"changes/2026-09-14-SITE-BUILD-01-staged-builds.md",
|
||
"baselines/site-build-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "SITE-03",
|
||
"phase": "6 文档与消费者",
|
||
"title": "整理 i18n/文档/LLM 生成流程",
|
||
"scope": [
|
||
"artplayer-vitepress"
|
||
],
|
||
"dependsOn": [
|
||
"SITE-02",
|
||
"SITE-LOAD-01",
|
||
"SITE-AI-DOCS-01",
|
||
"SITE-BUILD-01"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "build-i18n/build-docs/build-llm/trans-docs 的任务边界和错误处理;桌面 common.js 自有 UI 的 TS 迁移与模块拆分",
|
||
"acceptance": "原命令兼容、生成可复现,翻译步骤不隐式运行远程服务;覆盖移动 loader 失败恢复 define、脚本依赖顺序、localhost/127.0.0.1 Run Code 目标和语言重定向;桌面剩余 UI 完成 TS 职责拆分并回归运行、导入与持久设置",
|
||
"evidence": [
|
||
"changes/2026-09-14-SITE-03-desktop-editor.md",
|
||
"baselines/site-editor-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "SITE-04",
|
||
"phase": "6 文档与消费者",
|
||
"title": "交叉核对逐包持续维护的文档",
|
||
"scope": [
|
||
"artplayer-vitepress"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-21",
|
||
"SITE-03",
|
||
"PKG-CHAPTER-04",
|
||
"PKG-AMBILIGHT-04",
|
||
"PKG-AUDIO-04",
|
||
"PKG-AUTO-THUMB-04",
|
||
"PKG-VTT-THUMB-04",
|
||
"PKG-HLS-04",
|
||
"PKG-DASH-04",
|
||
"PKG-MULTI-SUB-04",
|
||
"PKG-JASSUB-04",
|
||
"PKG-MASK-04",
|
||
"PKG-ASR-04",
|
||
"PKG-ADS-04",
|
||
"PKG-VAST-04",
|
||
"PKG-CAST-04",
|
||
"PKG-DPIP-04",
|
||
"PKG-CANVAS-04",
|
||
"PKG-IFRAME-04",
|
||
"PKG-TOOL-THUMB-04",
|
||
"PKG-DANMUKU-06",
|
||
"PKG-MB-08"
|
||
],
|
||
"status": "todo",
|
||
"risk": "M",
|
||
"deliverable": "已随实现更新的中文/英文 API、包内实现地图、旧 JS 示例及已知能力限制的全包核对",
|
||
"acceptance": "未把缺环境的能力写成已验证,静态核对不等待设备任务;最终 demo 仍由 EX-03 验收;按 SITE-01 声明成员/候选标题清单逐项语义核对,补齐缺失的双语插件说明和 Danmuku 英文入口",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "SITE-05",
|
||
"phase": "6 文档与消费者",
|
||
"title": "构建文档站和验证链接/示例",
|
||
"scope": [
|
||
"artplayer-vitepress"
|
||
],
|
||
"dependsOn": [
|
||
"SITE-04",
|
||
"EX-01",
|
||
"EX-02",
|
||
"SITE-07",
|
||
"SITE-VCONSOLE-01",
|
||
"SITE-CONSOLE-01"
|
||
],
|
||
"status": "todo",
|
||
"risk": "M",
|
||
"deliverable": "VitePress 构建、链接与嵌入 demo 检查",
|
||
"acceptance": "文档构建、链接、嵌入路径与声明注入通过;真实完整 demo 保留 EX-03 独立门槛;核对 ENG-PM-01 登记的搜索 peer 范围和真实搜索行为",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "SITE-06",
|
||
"phase": "6 文档与消费者",
|
||
"title": "文档站交付验收",
|
||
"scope": [
|
||
"artplayer-vitepress"
|
||
],
|
||
"dependsOn": [
|
||
"SITE-05"
|
||
],
|
||
"status": "todo",
|
||
"risk": "M",
|
||
"deliverable": "维护指南和站点变更记录",
|
||
"acceptance": "未手改 generated 目录,旧 URL 可用、部署与检查分离",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "SITE-07",
|
||
"phase": "6 文档与消费者",
|
||
"title": "整理站点第三方资产与来源说明",
|
||
"scope": [
|
||
"artplayer-vitepress",
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"SITE-01"
|
||
],
|
||
"status": "doing",
|
||
"risk": "H",
|
||
"deliverable": "Monaco/vConsole/console bundle/字体和样本的冻结来源、可复现构建或替代与站点 notices",
|
||
"acceptance": "接续 SITE-01 的字节与换行差异证据;完整许可随实际分发,consoleLog/global/CSS/worker 与旧 URL 兼容;缺字体/媒体使用依据明确处置;资产变更后执行编辑器/移动/字幕/示例回归,不以来源指纹替代授权或运行证据",
|
||
"evidence": [
|
||
"site-inventory.md",
|
||
"baselines/site-provenance.json",
|
||
"changes/2026-09-14-SITE-07-vendor-notices.md",
|
||
"baselines/site-notices-checkpoint.json",
|
||
"baselines/site-codicons-provenance.json",
|
||
"baselines/site-codicons-validation.json",
|
||
"changes/2026-09-15-SITE-07-codicons.md",
|
||
"baselines/vconsole-notices-provenance.json",
|
||
"baselines/vconsole-notices-validation.json",
|
||
"changes/2026-09-15-SITE-07-vconsole-notices.md",
|
||
"console-modernization.md",
|
||
"baselines/site-console-inventory.json",
|
||
"baselines/site-console-validation.json",
|
||
"changes/2026-09-15-SITE-07-console-baseline.md",
|
||
"baselines/console-feed-provenance.json",
|
||
"changes/2026-09-15-SITE-07-console-feed-source.md",
|
||
"baselines/console-commonjs-provenance.json",
|
||
"changes/2026-09-15-SITE-07-console-commonjs.md",
|
||
"baselines/console-esm-provenance.json",
|
||
"changes/2026-09-15-SITE-07-console-esm.md",
|
||
"baselines/console-embedded-notices.json",
|
||
"baselines/console-notices-validation.json",
|
||
"changes/2026-09-15-SITE-07-console-notices.md",
|
||
"baselines/console-embedded-sources.json",
|
||
"baselines/console-embedded-validation.json",
|
||
"changes/2026-09-15-SITE-07-console-embedded-sources.md",
|
||
"baselines/console-derived-attribution.json",
|
||
"baselines/console-derived-validation.json",
|
||
"changes/2026-09-15-SITE-07-console-derived-attribution.md",
|
||
"baselines/console-stackoverflow-provenance.json",
|
||
"baselines/console-stackoverflow-validation.json",
|
||
"changes/2026-09-15-SITE-07-console-stackoverflow.md",
|
||
"baselines/console-shallowequal-validation.json",
|
||
"changes/2026-09-15-SITE-07-console-shallowequal.md",
|
||
"console-notice-review.md",
|
||
"baselines/console-notice-review-validation.json",
|
||
"changes/2026-09-15-SITE-07-console-notice-review.md",
|
||
"baselines/monaco-typescript-provenance.json",
|
||
"baselines/monaco-typescript-validation.json",
|
||
"changes/2026-09-15-SITE-07-monaco-typescript.md",
|
||
"baselines/monaco-languages-provenance.json",
|
||
"baselines/monaco-languages-validation.json",
|
||
"changes/2026-09-15-SITE-07-monaco-languages.md",
|
||
"baselines/monaco-language-notices.json",
|
||
"baselines/monaco-language-notices-validation.json",
|
||
"changes/2026-09-15-SITE-07-monaco-language-notices.md",
|
||
"baselines/monaco-modes-provenance.json",
|
||
"baselines/monaco-modes-validation.json",
|
||
"changes/2026-09-15-SITE-07-monaco-modes.md",
|
||
"baselines/monaco-basic-provenance.json",
|
||
"baselines/monaco-basic-validation.json",
|
||
"changes/2026-09-15-SITE-07-monaco-basic.md",
|
||
"baselines/monaco-core-origins-provenance.json",
|
||
"baselines/monaco-core-origins-validation.json",
|
||
"changes/2026-09-15-SITE-07-monaco-core-origins.md",
|
||
"baselines/monaco-core-build-provenance.json",
|
||
"baselines/monaco-core-build-validation.json",
|
||
"changes/2026-09-15-SITE-07-monaco-core-build.md",
|
||
"baselines/monaco-contributions-provenance.json",
|
||
"baselines/monaco-contributions-validation.json",
|
||
"changes/2026-09-15-SITE-07-monaco-contributions.md",
|
||
"baselines/monaco-css-build-provenance.json",
|
||
"baselines/monaco-css-build-validation.json",
|
||
"changes/2026-09-15-SITE-07-monaco-css.md",
|
||
"baselines/monaco-node-path-provenance.json",
|
||
"baselines/monaco-node-path-validation.json",
|
||
"changes/2026-09-15-SITE-07-monaco-node-path.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "EX-01",
|
||
"phase": "6 文档与消费者",
|
||
"title": "验证 React 消费者与 TS",
|
||
"scope": [
|
||
"example/react.js",
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-22",
|
||
"ENG-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "React 挂载/卸载/重挂载、引用和插件样例",
|
||
"acceptance": "真实 tarball + TS 消费通过,保留既有 React 集成 API",
|
||
"evidence": [
|
||
"changes/2026-09-14-EX-01-react-consumer.md",
|
||
"baselines/react-consumer-validation.json",
|
||
"scripts/react-consumer.mjs"
|
||
]
|
||
},
|
||
{
|
||
"id": "EX-02",
|
||
"phase": "6 文档与消费者",
|
||
"title": "验证 Vue 消费者与更新卸载",
|
||
"scope": [
|
||
"example/vue.js",
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-22",
|
||
"ENG-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "Vue 实例/ref、参数更新、卸载及插件样例",
|
||
"acceptance": "旧 JS 组件用法无需修改,重复挂载不泄漏",
|
||
"evidence": [
|
||
"changes/2026-09-14-EX-02-vue-consumer.md",
|
||
"baselines/vue-consumer-validation.json",
|
||
"scripts/vue-consumer.mjs"
|
||
]
|
||
},
|
||
{
|
||
"id": "EX-03",
|
||
"phase": "6 文档与消费者",
|
||
"title": "验证全部原生 demo 与外部播放集成",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"EX-01",
|
||
"EX-02",
|
||
"PKG-CHAPTER-06",
|
||
"PKG-AMBILIGHT-06",
|
||
"PKG-AUDIO-06",
|
||
"PKG-AUTO-THUMB-06",
|
||
"PKG-VTT-THUMB-06",
|
||
"PKG-HLS-06",
|
||
"PKG-DASH-06",
|
||
"PKG-MULTI-SUB-06",
|
||
"PKG-JASSUB-06",
|
||
"PKG-MASK-06",
|
||
"PKG-ASR-06",
|
||
"PKG-ADS-06",
|
||
"PKG-VAST-06",
|
||
"PKG-CAST-06",
|
||
"PKG-DPIP-06",
|
||
"PKG-DANMUKU-09",
|
||
"PKG-CANVAS-06",
|
||
"PKG-MB-10",
|
||
"PKG-IFRAME-06",
|
||
"PKG-TOOL-THUMB-06"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "8082 全 demo、HLS/DASH/FLV/MPEGTS/WebTorrent 集成记录",
|
||
"acceptance": "旧 URL/参数/脚本加载保持;网络/SDK 限制明确,不静默跳过;覆盖编辑器重复 Run 和 ESM/i18n/mobile/iframe,记录实际候选脚本及状态隔离证据;依据 BASE-04 路径台账逐项消除 not-run,处理 BASE-DEMO-01",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "MOD-01",
|
||
"phase": "7 工具链与性能",
|
||
"title": "Bun 固定版本干净安装试点",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"ENG-09"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "独立目录的 Bun 安装与 Yarn 冻结基线对比,默认仍为用户选定的 Yarn",
|
||
"acceptance": "Node 测试仍通过;安装与资源一致才决定采用;不改 bundler;不自动替换默认 packageManager 或维护锁文件",
|
||
"evidence": [
|
||
"changes/2026-09-15-MOD-01-bun-evaluation.md",
|
||
"baselines/bun-install-validation.json",
|
||
"bun-evaluation.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "MOD-PLUGIN-01",
|
||
"phase": "7 工具链与性能",
|
||
"title": "迁移插件生成器与类型化模板",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"ENG-06",
|
||
"SITE-03"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "保留 create:plugin CLI;纯渲染/文件发布边界、TS 工厂/声明/测试/示例及维护指南",
|
||
"acceptance": "防止覆盖现有包或示例;失败回退;生成包可构建并通过严格类型、旧模块消费及测试;不自动修改既有包或运行安装发布",
|
||
"evidence": [
|
||
"changes/2026-09-14-MOD-PLUGIN-01-scaffold.md",
|
||
"baselines/scaffold-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "MOD-02",
|
||
"phase": "7 工具链与性能",
|
||
"title": "整理剩余开发/构建脚本与插件模板",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"ENG-06",
|
||
"SITE-03",
|
||
"MOD-PLUGIN-01"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "dev/build/utils/create-plugin 的 TS 与可测 CLI,模板同时提供旧 API",
|
||
"acceptance": "旧脚本入口保留、新插件类型/测试/示例齐全,Lerna 改动单独取证",
|
||
"evidence": [
|
||
"changes/2026-09-14-MOD-02-library-tooling.md",
|
||
"baselines/library-tooling-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "MOD-DEV-01",
|
||
"phase": "7 工具链与性能",
|
||
"title": "修复开发服务器失败状态并明确资源生命周期",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"MOD-02"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "修复 Servor 占用端口却退出 0 的已复现问题;明确 HTTP/监听/热刷新连接与定时器的启动、失败和关闭责任",
|
||
"acceptance": "保持默认 8082、docs 页面、自动刷新和旧 dev 命令;端口冲突退出非零且不终止其他服务,连续启动/停止及编译错误恢复有实际验证;跨平台监听差异单独留证",
|
||
"evidence": [
|
||
"changes/2026-09-14-MOD-DEV-01-dev-server.md",
|
||
"baselines/dev-server-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "MOD-03",
|
||
"phase": "7 工具链与性能",
|
||
"title": "测量并优化核心热路径",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-22",
|
||
"ENG-08"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "DOM 读写、进度更新、持久化、初始化的测量与改进",
|
||
"acceptance": "相同设备媒体多次比较,契约不变,收益及无效尝试记录;复用 BASE-06 的原始样本与测量限制,至少三组同环境旧新配对,不以单次变快宣称收益",
|
||
"evidence": [
|
||
"changes/2026-09-14-MOD-03-slider-updates.md",
|
||
"baselines/slider-updates-validation.json",
|
||
"changes/2026-09-14-MOD-03-performance-acceptance.md",
|
||
"baselines/core-performance-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "MOD-04",
|
||
"phase": "7 工具链与性能",
|
||
"title": "测量并优化重型插件/proxy",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DANMUKU-09",
|
||
"PKG-MASK-06",
|
||
"PKG-MB-10",
|
||
"ENG-08"
|
||
],
|
||
"status": "todo",
|
||
"risk": "M",
|
||
"deliverable": "帧/队列/推理/音画同步与资源长期运行比较",
|
||
"acceptance": "不改默认算法/阈值,性能改善有证据;无收益则保留旧实现",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "MOD-05",
|
||
"phase": "7 工具链与性能",
|
||
"title": "完成工具链与性能采用决策",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"MOD-01",
|
||
"MOD-02",
|
||
"MOD-03",
|
||
"MOD-04",
|
||
"MOD-DEV-01"
|
||
],
|
||
"status": "todo",
|
||
"risk": "M",
|
||
"deliverable": "最终 runtime/packageManager/构建配置及性能台账",
|
||
"acceptance": "干净安装和全包检查通过;Bun 未采用有理由,不为状态强行切换",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"evidence": [
|
||
"changes/2026-09-14-REL-08-release-ledger.md",
|
||
"baselines/release-ledger-validation.json",
|
||
"release-ledger.md",
|
||
"release-ledger.json"
|
||
],
|
||
"id": "REL-08",
|
||
"phase": "8 发布验收",
|
||
"title": "提前建立逐包发布准入台账",
|
||
"dependsOn": [
|
||
"BASE-08",
|
||
"ENG-07"
|
||
],
|
||
"deliverable": "每批包/版本/源码/锁文件/工具/tarball integrity、必需测试/设备证据、限制和回退映射",
|
||
"acceptance": "受影响能力缺证据明确阻止对应批次;无关批次可独立准备,旧证据在候选内容变化后失效;站点采用真实构建/URL/资源验收,npm 分发依据历史核实,不从版本清单推断新增发布范围;关联 risks.json 和 third-party.json;受影响 bundle/worker/WASM/font/模型的来源与许可通知缺口必须有审查结论,未决项阻止对应批次"
|
||
},
|
||
{
|
||
"id": "REL-01",
|
||
"phase": "8 发布验收",
|
||
"title": "提前确定分包版本与差异方案",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"REL-08",
|
||
"CORE-21",
|
||
"SITE-03",
|
||
"PKG-CHAPTER-04",
|
||
"PKG-AMBILIGHT-04",
|
||
"PKG-AUDIO-04",
|
||
"PKG-AUTO-THUMB-04",
|
||
"PKG-VTT-THUMB-04",
|
||
"PKG-HLS-04",
|
||
"PKG-DASH-04",
|
||
"PKG-MULTI-SUB-04",
|
||
"PKG-JASSUB-04",
|
||
"PKG-MASK-04",
|
||
"PKG-ASR-04",
|
||
"PKG-ADS-04",
|
||
"PKG-VAST-04",
|
||
"PKG-CAST-04",
|
||
"PKG-DPIP-04",
|
||
"PKG-CANVAS-04",
|
||
"PKG-IFRAME-04",
|
||
"PKG-TOOL-THUMB-04",
|
||
"PKG-DANMUKU-06",
|
||
"PKG-MB-08",
|
||
"PKG-FACTORY-01"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "每包版本/变更日志/依赖/类型差异方案和独立准入状态;按 version-policy.md 冻结各包下一 major(minor/patch 归零)并核实 registry 占用",
|
||
"acceptance": "所有包有方案和剩余门槛,未决项明确阻止相应发布;本步骤不声称已经可发布;全部包有 major 目标,版本冲突明确处理,独立准备任务同步 manifest/锁/依赖/日志;按 BASE-05 区分 21 库与文档站分发,不机械把文档站当库上传 npm",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "REL-09",
|
||
"phase": "8 发布验收",
|
||
"title": "落实全包下一 major 版本及依赖元数据",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"REL-01",
|
||
"DOC-11"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "22 包版本目标落实、适用锁文件/依赖范围/示例/变更日志同步,核实 registry 版本占用",
|
||
"acceptance": "版本与 policy 一致,旧核心支持保留;必要拆子任务各自提交,候选构建前完成,不执行 publish",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "REL-02",
|
||
"phase": "8 发布验收",
|
||
"title": "生成候选 tarball 并验证新旧组合",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"REL-01",
|
||
"CORE-22",
|
||
"ENG-07",
|
||
"REL-09"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "各候选本地 tarball/integrity 与新旧核心/插件消费者验证报告,外部门槛单独标注",
|
||
"acceptance": "隔离安装和可自动化组合通过;设备结论不伪造,最终发布绑定同一候选内容;在目标 major 版本确定后构建 pack,不在测试后改版本",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "REL-03",
|
||
"phase": "8 发布验收",
|
||
"title": "完成真机、外部 SDK 与压力验收",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"REL-02",
|
||
"EX-03",
|
||
"SITE-06",
|
||
"MOD-05"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "Safari/移动/PiP/Cast/IMA/模型/长播放完整报告",
|
||
"acceptance": "包集成与全项目真机/SDK/压力结论齐全才完成本汇总;独立批次先建立自己的完整门槛子任务",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "REL-04",
|
||
"phase": "8 发布验收",
|
||
"title": "提前演练回退与主线修复同步",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"REL-08",
|
||
"ENG-07"
|
||
],
|
||
"status": "doing",
|
||
"risk": "H",
|
||
"deliverable": "分包旧版本/tag/依赖回退方案与 master 差异",
|
||
"acceptance": "隔离包演练可回退,主线修复同步流程可执行;正式每批再核对其实际回退产物",
|
||
"evidence": [
|
||
"changes/2026-09-15-REL-04-consumer-checkpoint.md",
|
||
"rollback-rehearsal.md",
|
||
"baselines/rollback-consumer-validation.json",
|
||
"changes/2026-09-15-REL-04-workflows-checkpoint.md",
|
||
"rollback-inventory.md",
|
||
"baselines/rollback-workflows-validation.json",
|
||
"changes/2026-09-15-REL-04-pages-recovery.md",
|
||
"baselines/pages-recovery-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "REVIEW-01",
|
||
"phase": "8.1 多轮复盘",
|
||
"title": "第一轮全项目架构与兼容性复盘",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"REL-02",
|
||
"CORE-22",
|
||
"SITE-04",
|
||
"DOC-08",
|
||
"MOD-01",
|
||
"MOD-02",
|
||
"MOD-03",
|
||
"CORE-25",
|
||
"ENG-13"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "22 包结构、类型、旧 API/路径、测试盲区和维护文档的逐包报告",
|
||
"acceptance": "本轮阻断项由独立修复任务关闭并复测;环境缺口转交下一轮,不宣称已发布就绪",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "REVIEW-02",
|
||
"phase": "8.1 多轮复盘",
|
||
"title": "第二轮真实浏览器与生态集成复盘",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"REVIEW-01",
|
||
"REL-03"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "Chrome 交互、自动浏览器、新旧组合、真机/SDK/性能/资源的全范围报告",
|
||
"acceptance": "所需环境证据齐全,前轮修复再次核对;本轮阻断项关闭,无关 mock 不替代真实验收",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "REVIEW-03",
|
||
"phase": "8.1 多轮复盘",
|
||
"title": "第三轮 npm 候选内容与发布准备复盘",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"REVIEW-02",
|
||
"REL-04",
|
||
"CI-04"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "实际候选 integrity、干净安装构建/消费者、入口/许可/版本/tag/回退及前轮证据汇总",
|
||
"acceptance": "最终候选完整检查通过,发布阻断项为零;准备可审阅的批次报告,不自动执行 publish;逐包核对 major 目标,不能用大版本豁免旧 API 兼容",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "REL-05",
|
||
"phase": "8 发布验收",
|
||
"title": "经授权发布候选并收集反馈",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"REL-03",
|
||
"REL-04",
|
||
"REVIEW-03"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "候选 tag、完整产物 integrity、反馈与复现记录",
|
||
"acceptance": "实际发布授权/操作/版本可追溯;本计划不自动执行发布",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "REL-06",
|
||
"phase": "8 发布验收",
|
||
"title": "经授权分批正式发布",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"REL-05"
|
||
],
|
||
"status": "todo",
|
||
"risk": "H",
|
||
"deliverable": "正式分包版本/tag/站点文档及兼容公告",
|
||
"acceptance": "候选验收通过,安装/浏览器复核和回退入口就绪;候选反馈修复须独立建任务并复验三轮受影响结论,正式内容与最终验证产物一致",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "REL-07",
|
||
"phase": "8 发布验收",
|
||
"title": "关闭重构里程碑并维护后续队列",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"REL-06",
|
||
"ENG-LINT-01",
|
||
"ENG-LINT-02"
|
||
],
|
||
"status": "todo",
|
||
"risk": "L",
|
||
"deliverable": "最终任务/设计/证据归档和维护指南",
|
||
"acceptance": "全范围任务有结论、无未解释兼容缺口;遗留项有明确后续责任",
|
||
"evidence": []
|
||
},
|
||
{
|
||
"id": "PKG-FACTORY-01",
|
||
"phase": "5 工厂类型兼容补审",
|
||
"title": "修复已迁移工厂的反向赋值兼容",
|
||
"scope": [
|
||
"artplayer-proxy-canvas",
|
||
"artplayer-plugin-ambilight"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-CANVAS-04",
|
||
"PKG-AMBILIGHT-04",
|
||
"PKG-DPIP-04"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "复现两包旧typeof工厂替换与新.default/可选重载冲突,修复公开类型并补安装消费者、产物和文档",
|
||
"acceptance": "默认工厂的历史合法反向赋值继续通过;既有类型/运行时导出逐版本核对,不能只验证Parameters或直接调用",
|
||
"evidence": [
|
||
"baselines/factory-assignment-gaps.json",
|
||
"baselines/factory-compatibility-proposals.json",
|
||
"factory-compatibility-decision.md",
|
||
"changes/2026-09-12-PKG-FACTORY-01-decision.md",
|
||
"type-compatibility-policy.md",
|
||
"baselines/factory-compatibility-validation.json",
|
||
"changes/2026-09-13-PKG-FACTORY-01-compatible-types.md"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-25",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "修复无 navigator 环境读取默认选项",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-22",
|
||
"ENG-12"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "安全读取默认语言并保留浏览器已有默认值;实际 Node 与发布产物正反例",
|
||
"acceptance": "记录旧发布版 ReferenceError;候选在无 navigator 时可读默认选项,浏览器语言和公开类型不回归;不以补全局对象隐藏错误",
|
||
"evidence": [
|
||
"changes/2026-09-13-CORE-25-defaults-ssr.md",
|
||
"baselines/defaults-ssr-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "ENG-12",
|
||
"phase": "2 测试与工程基础",
|
||
"title": "隔离库构建的 public 源码与分发内容",
|
||
"scope": [
|
||
"workspace",
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"ENG-03",
|
||
"CORE-21"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "禁用库的隐式 public 复制,拒绝误入包内的 TS 源码,清理生成污染并验证真实构建",
|
||
"acceptance": "三格式真实构建和严格 tarball 检查通过;已有声明和所有剩余成员字节不变;文档站使用独立构建",
|
||
"evidence": [
|
||
"changes/2026-09-13-ENG-12-library-public.md",
|
||
"baselines/library-public-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-ASR-07",
|
||
"phase": "5 包迁移:artplayer-plugin-asr",
|
||
"title": "修复原生播放音量二次衰减",
|
||
"scope": [
|
||
"artplayer-plugin-asr"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-ASR-04"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "移除重复音量应用;保留新旧原生音频振幅对照及正式产物验收",
|
||
"acceptance": "Chromium/Firefox 两核心和 source/main/legacy 输出音量线性、静音和 stop/restart 正确;旧版平方衰减单独保留;单元/类型/真实安装通过,不代替设备验收",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-ASR-07-playback-volume.md",
|
||
"baselines/asr-volume-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-ASR-08",
|
||
"phase": "5 包迁移:artplayer-plugin-asr",
|
||
"title": "修复捕获回退重复播放与静音漏声",
|
||
"scope": [
|
||
"artplayer-plugin-asr"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-ASR-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "捕获回退静音输出图、非零PCM与外部播放归属;真实红绿证据及产物验证",
|
||
"acceptance": "已进入回退后不产生额外输出、静音不漏声、外部播放图不被关闭、stop/restart/换源清理正确;明确Firefox受控拒绝不代表自然选择回退",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-ASR-08-capture-output.md",
|
||
"baselines/asr-fallback-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-ASR-09",
|
||
"phase": "5 包迁移:artplayer-plugin-asr",
|
||
"title": "提供显式捕获归属并取消过期切源重启",
|
||
"scope": [
|
||
"artplayer-plugin-asr"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-ASR-04",
|
||
"PKG-ASR-08"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "保留默认API的capture模式、精确runtime类型、可取消重启和原生外部归属/CORS证据",
|
||
"acceptance": "显式模式零直接绑定、不增加输出、拥有资源正确清理;Firefox不强制异常,CORS无绕过;旧工厂类型保持;延迟关闭期间pause/stop取消旧重启",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-ASR-09-explicit-capture.md",
|
||
"baselines/asr-explicit-capture-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DANMUKU-10",
|
||
"phase": "5 包迁移:artplayer-plugin-danmuku",
|
||
"title": "修复 issue958 密集热力图过高与曲线裁平",
|
||
"scope": [
|
||
"artplayer-plugin-danmuku"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DANMUKU-05"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "自动密度缩放与曲线边界、历史自定义坐标兼容及真实浏览器红绿证据",
|
||
"acceptance": "16000条三种分布在两核心三引擎和source/main/legacy不遮挡;显式轴和自定义points保持旧解释,有单独commit",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-DANMUKU-10-heatmap-density.md",
|
||
"baselines/danmuku-heatmap-density-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DANMUKU-11",
|
||
"phase": "5 包迁移:artplayer-plugin-danmuku",
|
||
"title": "修复 Worker 隐藏等待吞掉可见寿命",
|
||
"scope": [
|
||
"artplayer-plugin-danmuku"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DANMUKU-06"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "成功放置时的可见计时与延迟回复回归",
|
||
"acceptance": "真实 Worker 延迟下完整显示寿命;保留暂停/回收/取消和公开契约",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-DANMUKU-11-visible-lifetime.md",
|
||
"baselines/danmuku-lifetime-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DANMUKU-12",
|
||
"phase": "5 包迁移:artplayer-plugin-danmuku",
|
||
"title": "保持异步放置期间的原生帧采样与寿命维护",
|
||
"scope": [
|
||
"artplayer-plugin-danmuku"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DANMUKU-11"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "每帧采样与串行dispatcher、代际buffer及回归",
|
||
"acceptance": "异步等待不丢已到时采样、不延迟既有寿命维护;保留顺序、取消与公开readys窗口",
|
||
"evidence": [
|
||
"changes/2026-09-13-PKG-DANMUKU-12-frame-sampling.md",
|
||
"baselines/danmuku-frame-sampling-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-JASSUB-08",
|
||
"phase": "5 包迁移:artplayer-plugin-jassub",
|
||
"title": "修复默认 offscreen 初始化消息顺序",
|
||
"scope": [
|
||
"artplayer-plugin-jassub"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-JASSUB-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "在释放排队绘制消息前转移初始画布;独立 vendor 补丁、默认模式原生回归和维护文档",
|
||
"acceptance": "保留默认能力选择、Worker/资源和公开同步 API;旧红新绿消息顺序测试及真实默认 offscreen 播放/seek/全屏通过,主线程绘制保持",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-JASSUB-08-offscreen.md",
|
||
"baselines/jassub-offscreen-validation.json",
|
||
"baselines/jassub-offscreen-patch.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-JASSUB-09",
|
||
"phase": "5 包迁移:artplayer-plugin-jassub",
|
||
"title": "修复 hybrid 迟到绘制与销毁后画布重建",
|
||
"scope": [
|
||
"artplayer-plugin-jassub"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-JASSUB-08"
|
||
],
|
||
"status": "doing",
|
||
"risk": "H",
|
||
"deliverable": "释放旧混合绘制 bitmap,不改变新模式的画布/时钟;销毁后切字幕不重新分配画布;来源补丁、原生排队消息及维护记录",
|
||
"acceptance": "旧红新绿验证旧帧不能重建画布/解除新绘制等待;正常 hybrid 绘制保持;真实 Worker/ImageBitmap 交错、主线程及默认模式回归通过,能力缺口明确",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-JASSUB-09-hybrid.md",
|
||
"baselines/jassub-hybrid-validation.json",
|
||
"baselines/jassub-hybrid-patch.json",
|
||
"changes/2026-09-14-PKG-JASSUB-09-firefox-diagnostics.md",
|
||
"changes/2026-09-14-PKG-JASSUB-09-display.md",
|
||
"baselines/jassub-display-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-AUTO-THUMB-07",
|
||
"phase": "5 包迁移:artplayer-plugin-auto-thumbnail",
|
||
"title": "终止抽帧时清空私有画布像素尺寸",
|
||
"scope": [
|
||
"artplayer-plugin-auto-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-AUTO-THUMB-02",
|
||
"CORE-09",
|
||
"CORE-19"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "将私有 canvas 尺寸归入 job 清理;完成、取消、失败及分配重入均有回归,保留已编码 JPEG",
|
||
"acceptance": "旧红新绿证明保留回调时画布归零,单项清理失败不阻断其他资源;原生取消和完成后 JPEG 仍可解码,原 API/时间公式/类型不变",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-AUTO-THUMB-07-canvas.md",
|
||
"baselines/auto-thumbnail-canvas-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-AUTO-THUMB-08",
|
||
"phase": "5 包迁移:artplayer-plugin-auto-thumbnail",
|
||
"title": "保留旧声明并提供准确异步类型入口",
|
||
"scope": [
|
||
"artplayer-plugin-auto-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-AUTO-THUMB-02",
|
||
"ENG-04",
|
||
"ENG-06",
|
||
"CORE-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "保留实际 npm 1.1.0 根声明;新增同实现 /runtime 类型、编辑器声明及隔离安装消费者",
|
||
"acceptance": "原 Parameters/ReturnType/替代函数不变;准确 Promise 类型正反例、CJS/ESM 条件入口和声明解析通过;不把像素与设备缺口计为通过",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-AUTO-THUMB-08-types.md",
|
||
"baselines/auto-thumbnail-types-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-AUTO-THUMB-09",
|
||
"phase": "5 包迁移:artplayer-plugin-auto-thumbnail",
|
||
"title": "兼容旧 CommonJS default 与直接工厂调用",
|
||
"scope": [
|
||
"artplayer-plugin-auto-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-AUTO-THUMB-02",
|
||
"PKG-AUTO-THUMB-08"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "同一 callable 上的 default 自别名,保留最新根声明并补准确 runtime 别名类型;旧/新实际包入口证据",
|
||
"acceptance": "旧红新绿、直接/default/ESM/legacy/global 调用一致;旧根类型提取不变,公开准确类型与实际别名匹配;不关闭抽帧像素和设备缺口",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-AUTO-THUMB-09-alias.md",
|
||
"baselines/auto-thumbnail-alias-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-AUTO-THUMB-10",
|
||
"phase": "5 包迁移:artplayer-plugin-auto-thumbnail",
|
||
"title": "为渐进 JPEG 编码建立取消时限与独立资源归属",
|
||
"scope": [
|
||
"artplayer-plugin-auto-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-AUTO-THUMB-02",
|
||
"PKG-AUTO-THUMB-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "拆分私有 canvas 编码模块,一次一帧的30秒编码时限,完成/失败/切源/销毁取消;迟到和重复回调无副作用",
|
||
"acceptance": "受控回调未返回的旧红新绿、正常JPEG和前一预览保持、同步重入/清理失败有回归;真实三浏览器编码/取消通过,公开时间公式与入口不变,首帧风险独立保留",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-AUTO-THUMB-10-encoding.md",
|
||
"baselines/auto-thumbnail-encoding-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "ENG-LINT-01",
|
||
"phase": "2 工程基础",
|
||
"title": "修复 Mask manifest 排序并恢复全仓 lint",
|
||
"scope": [
|
||
"artplayer-plugin-danmuku-mask",
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MASK-04"
|
||
],
|
||
"status": "done",
|
||
"risk": "L",
|
||
"deliverable": "仅调整 manifest 字段顺序,独立验证全仓只读 lint 与元数据语义不变",
|
||
"acceptance": "根 lint 通过;解析后的 manifest 深度相等;不改包版本、依赖或公开入口",
|
||
"evidence": [
|
||
"changes/2026-09-14-ENG-LINT-01-manifest-order.md",
|
||
"baselines/manifest-lint-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CORE-SUBTITLE-OFFSET-01",
|
||
"phase": "3-4 核心迁移",
|
||
"title": "修复暂停偏移后的原生活动字幕刷新",
|
||
"scope": [
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"CORE-15",
|
||
"CORE-22"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "暂停字幕偏移的原生轨道一致性修复、兼容回归和维护说明",
|
||
"acceptance": "保持cue对象、顺序、媒体时间、模式和公开事件;真实浏览器正负偏移及生命周期通过,历史缺陷单列",
|
||
"evidence": [
|
||
"changes/2026-09-14-CORE-SUBTITLE-OFFSET-01-paused.md",
|
||
"baselines/subtitle-offset-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MULTI-SUB-09",
|
||
"phase": "5 包迁移:artplayer-plugin-multiple-subtitles",
|
||
"title": "定位旧核心切源寻址与字幕显示边界",
|
||
"scope": [
|
||
"artplayer-plugin-multiple-subtitles",
|
||
"artplayer"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MULTI-SUB-08",
|
||
"CORE-19"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "无插件及旧新插件对照、真实事件轨迹、原切源失败归因和组合测试顺序",
|
||
"acceptance": "保留旧核心立即寻址观察,候选首次寻址与正常字幕组合通过;不把原生时钟失败误归为字幕丢失",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-MULTI-SUB-09-switch-order.md",
|
||
"baselines/multiple-subtitles-switch-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MULTI-SUB-10",
|
||
"phase": "5 包迁移:artplayer-plugin-multiple-subtitles",
|
||
"title": "适配旧核心的多条活动字幕渲染",
|
||
"scope": [
|
||
"artplayer-plugin-multiple-subtitles"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MULTI-SUB-08",
|
||
"PKG-MULTI-SUB-09"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "独立旧宿主显示适配、原生异步字幕重叠回归和兼容边界说明",
|
||
"acceptance": "旧5.1.2/5.1.7复现先红后绿;保持原生cue对象/时间、旧事件标量和方法身份;多格式显示及清理通过,保留其他组合和设备缺口",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-MULTI-SUB-10-legacy-captions.md",
|
||
"baselines/multiple-subtitles-legacy-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-MULTI-SUB-11",
|
||
"phase": "5 包迁移:artplayer-plugin-multiple-subtitles",
|
||
"title": "处理旧发布核心 ASS 转换器丢失换行",
|
||
"scope": [
|
||
"artplayer-plugin-multiple-subtitles"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-MULTI-SUB-10"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "冻结5.1.2发布/源码转换差异,兼容转换适配与真实ASS字幕回归",
|
||
"acceptance": "保持已有效转换行为,旧发布ASS缺陷有先红后绿与实际产物证据;不得将VTT替代夹具算作ASS通过",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-MULTI-SUB-11-ass-conversion.md",
|
||
"baselines/multiple-subtitles-ass-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-AUTO-THUMB-11",
|
||
"phase": "5 包迁移:artplayer-plugin-auto-thumbnail",
|
||
"title": "保证抽帧事件属性清理异常不截断其他资源释放",
|
||
"scope": [
|
||
"artplayer-plugin-auto-thumbnail"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-AUTO-THUMB-02",
|
||
"PKG-AUTO-THUMB-07",
|
||
"PKG-AUTO-THUMB-10"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "独立清除事件属性、抽帧时限和原生帧回调;首个异常保留,过期回调失效,替换任务可继续",
|
||
"acceptance": "八个故障注入用例旧红新绿,实际main/legacy抽帧与三浏览器生命周期回归通过;文档和构建同步,首帧及整体资源验收不冒充完成",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-AUTO-THUMB-11-handler-cleanup.md",
|
||
"baselines/auto-thumbnail-handler-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-VAST-07",
|
||
"phase": "5 包迁移:artplayer-plugin-vast",
|
||
"title": "恢复旧发布VAST工厂default调用入口",
|
||
"scope": [
|
||
"artplayer-plugin-vast"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-VAST-01",
|
||
"PKG-VAST-02"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "保留当前直接工厂并增加default自身别名,验证四类分发调用及异步注册,初始化决策独立保留",
|
||
"acceptance": "旧产物default用例失败,新源码/实际main/legacy/ESM通过;真实核心三浏览器控制SDK注册验证、模块文档/构建/测试入口同步;不冒充namespace反射、声明和IMA验收",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-VAST-07-default-alias.md",
|
||
"baselines/vast-alias-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-JASSUB-10",
|
||
"phase": "5 包迁移:artplayer-plugin-jassub",
|
||
"title": "释放绘制异常后的整批 ImageBitmap",
|
||
"scope": [
|
||
"artplayer-plugin-jassub"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-JASSUB-08"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "主线程异步绘制异常时释放整批位图;同步路径保持;原生异常/恢复测试和可逆vendor补丁记录",
|
||
"acceptance": "旧红新绿验证清屏、尺寸和首/后续绘制异常的释放及原异常传播;真实Worker位图和原生Canvas异常后恢复字幕;源码/main/legacy回归、类型、来源及构建通过",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-JASSUB-10-render-resources.md",
|
||
"baselines/jassub-render-validation.json",
|
||
"baselines/jassub-render-patch.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "ENG-13",
|
||
"phase": "2 工程基础",
|
||
"title": "保证性能资源探针的最小观察时长",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"ENG-08"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "性能页面按实测时钟补足既有350ms观察窗口,保留冻结基线和原校验门槛;时钟边界测试和实际安装包配对证据",
|
||
"acceptance": "349ms仍被拒绝;早到定时器补足观察、正常超时保留实际值;冻结计时样本逻辑未变,三浏览器实际350ms观察及资源校验通过",
|
||
"evidence": [
|
||
"changes/2026-09-14-ENG-13-observation-window.md",
|
||
"baselines/observation-window-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "SITE-VCONSOLE-01",
|
||
"phase": "6 文档与消费者",
|
||
"title": "修复 vConsole 日志帧与延迟面板销毁竞态",
|
||
"scope": [
|
||
"artplayer-vitepress",
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"SITE-01"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "冻结上游 bundle 的可复现 TS 生命周期补丁、旧红新绿回归、来源及生成检查;销毁后虚拟列表布局续段停止",
|
||
"acceptance": "最后日志插件移除后取消 RAF 并隔离旧队列;延迟面板不得写入已销毁或替换插件;三引擎移动页与 UMD 入口通过,维护声明与原有许可缺口分别记录;原生 ResizeObserver 布局与挂起 timer 旧红新绿",
|
||
"evidence": [
|
||
"changes/2026-09-14-SITE-VCONSOLE-01-lifecycle.md",
|
||
"baselines/vconsole-lifecycle-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "CI-BROWSER-01",
|
||
"phase": "2.2 GitHub CI/CD",
|
||
"title": "分离源码与已安装产物浏览器验证范围",
|
||
"scope": [
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"ENG-05",
|
||
"ENG-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "完整源码入口、明确已安装包子集、分开的报告目录与失败传播",
|
||
"acceptance": "混用输入旧红新绿;源码默认保留所有spec,已安装入口严格校验四包来源;两类报告都保留,源码失败不能误报全绿;不代表完整远端或全包验收",
|
||
"evidence": [
|
||
"changes/2026-09-14-CI-BROWSER-01-scopes.md",
|
||
"baselines/browser-scope-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-CHAPTER-HOVER-01",
|
||
"phase": "5 包迁移:artplayer-plugin-chapter",
|
||
"title": "定位并修复原生全屏章节悬停时序",
|
||
"scope": [
|
||
"artplayer-plugin-chapter"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-CHAPTER-04",
|
||
"CI-BROWSER-01"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "原生全屏动态几何与指针时序复现、针对根因的修复和真实浏览器回归",
|
||
"acceptance": "解释 Chromium 旧核心+新章节的 opacity 失败;保留标题、缩略图和全屏退出断言,不以重试或扩大等待掩盖;区分测试同步与生产缺陷",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-CHAPTER-HOVER-01-geometry.md",
|
||
"baselines/chapter-hover-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-CANVAS-SUBTITLE-01",
|
||
"phase": "5 包迁移:artplayer-proxy-canvas",
|
||
"title": "修复 Canvas 代理原生字幕轨道挂载",
|
||
"scope": [
|
||
"artplayer-proxy-canvas"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-CANVAS-04"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "初始字幕能力、原生轨道挂载与资源生命周期适配及新旧核心回归",
|
||
"acceptance": "复现旧字幕 cues 为空;新旧核心加载、寻址、切换、销毁通过;普通 Canvas 节点行为和分发入口保持兼容",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-CANVAS-SUBTITLE-01-track.md",
|
||
"baselines/canvas-subtitles-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-DANMUKU-MASK-LOAD-01",
|
||
"phase": "5 包组合:Danmuku / Mask",
|
||
"title": "修复真实Mask组合下的弹幕未采样与放置积压",
|
||
"scope": [
|
||
"artplayer-plugin-danmuku",
|
||
"artplayer-plugin-danmuku-mask"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-DANMUKU-12",
|
||
"PKG-MASK-04",
|
||
"CORE-22"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "分阶段性能/采样诊断、兼容实现修复及新旧核心/产物回归",
|
||
"acceptance": "关闭真实模型组合5项密集负载失败和1项负载前漏显,保持回调顺序、显示寿命与生命周期取消;不能以降低负载或关闭模型制造通过",
|
||
"evidence": [
|
||
"changes/2026-09-14-PKG-DANMUKU-08-combined-load.md",
|
||
"baselines/danmuku-combined-load-validation.json",
|
||
"changes/2026-09-14-PKG-DANMUKU-MASK-LOAD-01-scheduling.md",
|
||
"baselines/danmuku-mask-load-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "PKG-HLS-PACK-01",
|
||
"phase": "5 包迁移:artplayer-plugin-hls-control",
|
||
"title": "排除发布包内的实现 TypeScript 配置",
|
||
"scope": [
|
||
"artplayer-plugin-hls-control"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-HLS-04",
|
||
"ENG-07"
|
||
],
|
||
"status": "done",
|
||
"risk": "M",
|
||
"deliverable": "修正 npm 排除规则,真实打包核验公开入口与声明不变",
|
||
"acceptance": "旧归档复现 tsconfig 泄漏,新归档排除内部配置,全部历史 dist/types 保留且 JS/声明字节相同;正常 Yarn 打包与通用包校验通过",
|
||
"evidence": [
|
||
"changes/2026-09-15-PKG-HLS-PACK-01-config.md",
|
||
"baselines/hls-pack-config-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "ENG-LINT-02",
|
||
"phase": "2 工程基础",
|
||
"title": "修复 VAST 清单与生成声明的 lint 遗留",
|
||
"scope": [
|
||
"artplayer-plugin-vast",
|
||
"artplayer",
|
||
"artplayer-vitepress",
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"PKG-VAST-04",
|
||
"SITE-02"
|
||
],
|
||
"status": "done",
|
||
"risk": "L",
|
||
"deliverable": "仅整理 VAST 顶层元数据键顺序,并从声明生成源移除无效 lint 禁用项;保留入口与类型语义",
|
||
"acceptance": "全仓只读 lint 零错误零警告;VAST 元数据和嵌套条件键顺序不变;生成声明除注释外逐字一致,生成/只读检查通过",
|
||
"evidence": [
|
||
"changes/2026-09-15-ENG-LINT-02-clean-checks.md",
|
||
"baselines/eng-lint02-validation.json"
|
||
]
|
||
},
|
||
{
|
||
"id": "SITE-CONSOLE-01",
|
||
"phase": "6 文档与消费者",
|
||
"title": "迁移控制台自有 TS 源码并修复日志生命周期",
|
||
"scope": [
|
||
"artplayer-vitepress",
|
||
"workspace"
|
||
],
|
||
"dependsOn": [
|
||
"SITE-03"
|
||
],
|
||
"status": "done",
|
||
"risk": "H",
|
||
"deliverable": "从冻结 console.js 恢复自有入口/视图的 TS 模块、受控第三方边界与可验证构建;修复滚动回调、多容器 hook 所有权和原生 Error 消息丢失",
|
||
"acceptance": "保留 consoleLog 返回组件、React/ReactDOM/Parcel 全局及 DOM/CSS/日志对象语义;旧版复现与候选正确行为分开验证;多容器、卸载/重挂、外部 hook、错误/滚动及真实编辑器组合通过;架构与生成文档同批更新,不以冻结 vendor 代替 SITE-07 许可闭环",
|
||
"evidence": [
|
||
"console-modernization.md",
|
||
"changes/2026-09-15-SITE-CONSOLE-01-typescript.md",
|
||
"baselines/site-console01-validation.json"
|
||
]
|
||
}
|
||
]
|
||
}
|