mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-23 05:41:20 -08:00
refactor(dpip): [PKG-DPIP-03] own windows and DOM resources in strict TypeScript
This commit is contained in:
1 parent
202351934b
commit
80d37d66f8
31 files changed
+2335
-597
No files matched your search
@@ -0,0 +1,254 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "PKG-DPIP-03",
|
||||
"status": "done",
|
||||
"checks": [
|
||||
{
|
||||
"command": "node --test test/dpip-lifecycle.test.js test/dpip.test.js refactor/scripts/dpip-contract.test.mjs",
|
||||
"result": "pass",
|
||||
"tests": 84,
|
||||
"candidate": 20,
|
||||
"historicalLifecycle": 48,
|
||||
"historicalContract": 16
|
||||
},
|
||||
{
|
||||
"command": "ARTPLAYER_DPIP_BASELINE=1 node --test test/dpip-lifecycle.test.js",
|
||||
"result": "expected-historical-failures",
|
||||
"passed": 3,
|
||||
"failed": 17
|
||||
},
|
||||
{
|
||||
"command": "yarn build artplayer-plugin-document-pip",
|
||||
"result": "pass",
|
||||
"formats": [
|
||||
"main",
|
||||
"legacy",
|
||||
"esm"
|
||||
],
|
||||
"generatedFiles": 6
|
||||
},
|
||||
{
|
||||
"command": "ARTPLAYER_DPIP_ARTIFACT=<main or legacy> node --test test/dpip-lifecycle.test.js",
|
||||
"result": "pass",
|
||||
"main": 20,
|
||||
"legacy": 20
|
||||
},
|
||||
{
|
||||
"command": "native Node ESM default import and initializer",
|
||||
"result": "pass",
|
||||
"scope": "actual ESM entry import shape; full installed consumer/type matrix remains task04"
|
||||
},
|
||||
{
|
||||
"command": "playwright test test/browser/dpip.spec.js test/browser/dpip-lifecycle.spec.js",
|
||||
"result": "pass",
|
||||
"tests": 66,
|
||||
"scope": "earlier source wide matrix: 48 historical plus 18 candidate; final source refinements are rechecked below with built main"
|
||||
},
|
||||
{
|
||||
"command": "ARTPLAYER_DPIP_ARTIFACT=<main> playwright test test/browser/dpip-lifecycle.spec.js",
|
||||
"result": "pass",
|
||||
"tests": 18,
|
||||
"skipped": 0,
|
||||
"browsers": [
|
||||
{
|
||||
"project": "chromium",
|
||||
"version": "153.0.8010.12",
|
||||
"platform": "win32"
|
||||
},
|
||||
{
|
||||
"project": "firefox",
|
||||
"version": "155.0",
|
||||
"platform": "win32"
|
||||
},
|
||||
{
|
||||
"project": "webkit",
|
||||
"version": "26.6",
|
||||
"platform": "win32"
|
||||
}
|
||||
],
|
||||
"scope": "final actual main artifact, two cores and three engines; native iframe DOM with controlled window APIs, not native Document PiP"
|
||||
},
|
||||
{
|
||||
"command": "focused eslint --no-fix",
|
||||
"result": "pass"
|
||||
},
|
||||
{
|
||||
"command": "yarn ci:check",
|
||||
"result": "pass",
|
||||
"tests": {
|
||||
"unit": 1006,
|
||||
"engineering": 14,
|
||||
"baseline": 116,
|
||||
"mainTotal": 1136,
|
||||
"repeatedContractExecutions": 44
|
||||
},
|
||||
"strictProductionTypeScriptFiles": 290
|
||||
}
|
||||
],
|
||||
"limitations": [
|
||||
"Public declarations and export compatibility remain task04; no inferred-type approval is borrowed from Ads.",
|
||||
"The native DOM iframe matrix controls requestWindow and close; native Document PiP activation, media continuity, proxies and devices remain task05.",
|
||||
"Restoration falls back to the original document body if the original parent rejects insertion, but cannot guarantee recovery if both reject insertion.",
|
||||
"The full demo/archive acceptance remains task06."
|
||||
],
|
||||
"inputs": [
|
||||
{
|
||||
"file": "packages/artplayer-plugin-document-pip/src/control.ts",
|
||||
"sha256LF": "9fe66b2fd59b50c05355d47a89af828b59eb9ad4e224237c72017170da7f7d65"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-plugin-document-pip/src/index.ts",
|
||||
"sha256LF": "cbf87010df6982f9b7ea39384f4120af380d26d3e051a96ee9db52eda8c7e1f8"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-plugin-document-pip/src/projection.ts",
|
||||
"sha256LF": "9a86780b54793427db448d7814d7e4a728d9f65ab3282bb6b476bb6ecedc731f"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-plugin-document-pip/src/resources.ts",
|
||||
"sha256LF": "6aa31086fd18104b176d6245ec297255c71993fe935db5b44ed649bedd33b8be"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-plugin-document-pip/src/styles.ts",
|
||||
"sha256LF": "7fed3354c81ccfd70cd70aba5afe8d1d78fa3f7022a3298c65446b5a0a0e6b96"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-plugin-document-pip/src/window-session.ts",
|
||||
"sha256LF": "cf6bc403caf22ecfea14da7bfa91ddb88a60ed0507d5485035abe48861e1ad17"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-plugin-document-pip/src/style.less",
|
||||
"sha256LF": "a75ae94a569c8fd6ce925dcc7ab6b22cfa39a4d81decb30cc447dd7108a84a22"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-plugin-document-pip/tsconfig.json",
|
||||
"sha256LF": "5b53a2bb158e81c5bfd3e2b50e750f7f6e20d0e9aaa6733facec036c15f28ebe"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-plugin-document-pip/.npmignore",
|
||||
"sha256LF": "145c5fa0341195e21cf13df3423a057282f8ea374e9a1b3065e2280e1ce1c5c1"
|
||||
},
|
||||
{
|
||||
"file": "test/dpip-lifecycle.test.js",
|
||||
"sha256LF": "bd9fb385a3bfd5d49695fbbaf5faf33d95d255cd63ef176758ccfd972e1f794c"
|
||||
},
|
||||
{
|
||||
"file": "test/helpers/dpip.js",
|
||||
"sha256LF": "36acf694e49472c927f7e8cf797fc21df27916cb5777b7d84dc280807948988e"
|
||||
},
|
||||
{
|
||||
"file": "test/browser/dpip-helpers.js",
|
||||
"sha256LF": "2ab9b30a60b809e3476462c3d89cf3eb31f74d321264a661e643321b5cf73d2a"
|
||||
},
|
||||
{
|
||||
"file": "test/browser/dpip-lifecycle.spec.js",
|
||||
"sha256LF": "813d8d3276283931b19f3046f93249116f3ff1bfe9e3782017b9d51f788166e0"
|
||||
},
|
||||
{
|
||||
"file": "test/browser/dpip.spec.js",
|
||||
"sha256LF": "fcf79924daca7b694b0265540f8e84355fc9ea81c6dd4d3d33f3749a0881e376"
|
||||
},
|
||||
{
|
||||
"file": "package.json",
|
||||
"sha256LF": "87ccb964b0247c4558f092ccb897084416f2d1a965703df7e28c1583885a134e"
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
{
|
||||
"file": "packages/artplayer-plugin-document-pip/dist/artplayer-plugin-document-pip.js",
|
||||
"sha256LF": "166931ad0c2c5b9696a4f76dbb441afb396874c1445830b8ed8a58e8e98167ab"
|
||||
},
|
||||
{
|
||||
"file": "docs/compiled/artplayer-plugin-document-pip.js",
|
||||
"sha256LF": "166931ad0c2c5b9696a4f76dbb441afb396874c1445830b8ed8a58e8e98167ab"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-plugin-document-pip/dist/artplayer-plugin-document-pip.legacy.js",
|
||||
"sha256LF": "d3f0cbe82ae5bccf571a8112b6803f24d2548c8b24ed839350c95a1f05dfbedb"
|
||||
},
|
||||
{
|
||||
"file": "docs/compiled/artplayer-plugin-document-pip.legacy.js",
|
||||
"sha256LF": "d3f0cbe82ae5bccf571a8112b6803f24d2548c8b24ed839350c95a1f05dfbedb"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-plugin-document-pip/dist/artplayer-plugin-document-pip.mjs",
|
||||
"sha256LF": "82b26dcba24d7c550c9edb5481bf2c80864cde09522c7f8b8743be63dbca4c3c"
|
||||
},
|
||||
{
|
||||
"file": "docs/compiled/artplayer-plugin-document-pip.mjs",
|
||||
"sha256LF": "82b26dcba24d7c550c9edb5481bf2c80864cde09522c7f8b8743be63dbca4c3c"
|
||||
}
|
||||
],
|
||||
"parentCommit": "202351934b1d9511691dcd298c7882ee6fe2c9f6",
|
||||
"mainSize": {
|
||||
"previousBytes": 4624,
|
||||
"candidateBytes": 6874,
|
||||
"previousGzipBytes": 1776,
|
||||
"candidateGzipBytes": 2831,
|
||||
"note": "Additional request cancellation, transactional rollback and cleanup increase plugin size. This is not a full ecosystem performance acceptance."
|
||||
},
|
||||
"logs": [
|
||||
{
|
||||
"file": "refactor/.cache/dpip03-node-reentry.log",
|
||||
"sha256": "92189cb71428649ab1687448a324958e002221fe350854d96c359e33c4455a40"
|
||||
},
|
||||
{
|
||||
"file": "refactor/.cache/dpip03-notice-rejection.log",
|
||||
"sha256": "af2db5c23135434c292ea8d1905aa5578bbcedd9fe5b70780594e2c6e0c69927"
|
||||
},
|
||||
{
|
||||
"file": "refactor/.cache/dpip03-node-final.log",
|
||||
"sha256": "b63a0f80492f87aa22ab82bdef8da8503fecfb6a3dd5a34bd758659f738bb14e"
|
||||
},
|
||||
{
|
||||
"file": "refactor/.cache/dpip03-old-negative-final.log",
|
||||
"sha256": "655223967f6d05d1226921923d648875924c62ca9fb2e0960e5c61d77b532cdb"
|
||||
},
|
||||
{
|
||||
"file": "refactor/.cache/dpip03-build-final.log",
|
||||
"sha256": "71e1ba8c478b29c7a020d8aa107d11bbfb69bf2f08d02a8ae96c45a685284817"
|
||||
},
|
||||
{
|
||||
"file": "refactor/.cache/dpip03-main-lifecycle.log",
|
||||
"sha256": "87424989382aabc285c18254f188d730edf30c7dc09e2e8f4b6be973cbdad1e4"
|
||||
},
|
||||
{
|
||||
"file": "refactor/.cache/dpip03-legacy-lifecycle.log",
|
||||
"sha256": "395aab100482170a1671c7652340193cecb2602ea7f0cc0f3ff9ab2b75413341"
|
||||
},
|
||||
{
|
||||
"file": "refactor/.cache/dpip03-esm.log",
|
||||
"sha256": "9df9f793dfccb511716a2d8ae3b3d9ccc616e1e8f547ebdde8245cafd4e898cb"
|
||||
},
|
||||
{
|
||||
"file": "refactor/.cache/dpip03-lint-final.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"file": "refactor/.cache/dpip03-browser.log",
|
||||
"sha256": "f51123de2b1553e56208893787bfbae15f12b26744513c0faa0529ba879e623a"
|
||||
},
|
||||
{
|
||||
"file": "refactor/.cache/dpip03-browser-artifact-final.log",
|
||||
"sha256": "a0dd85434da54fd3a10cf4c3de2e136d1da14d792dc615b66958122a440a3768"
|
||||
},
|
||||
{
|
||||
"file": "refactor/.cache/dpip03-ci.log",
|
||||
"sha256": "723c3c5014bc9fbc3f908c7973cbe6ecc44df8596e252034093ba9d601fb17dd"
|
||||
},
|
||||
{
|
||||
"file": "refactor/.cache/dpip03-final-results/report.json",
|
||||
"sha256": "c9b4822cda572b23e83ad8fef81b28302598f94eb65b367c85b2ab72f8c14722"
|
||||
},
|
||||
{
|
||||
"file": "refactor/.cache/dpip03-wide-results/report.json",
|
||||
"sha256": "92be3a027d3782b4336f541186dcc26ea9d728dc12e579df090279b2a6229b08"
|
||||
}
|
||||
],
|
||||
"browserArtifacts": [
|
||||
{
|
||||
"file": "refactor/.cache/dpip03-final-results/results/.last-run.json",
|
||||
"sha256": "91d1c43004802cd49950d78eb11c8fa7d05da8ffffe219a8b13b2f561bc00903"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
# PKG-DPIP-03 严格 TypeScript 与窗口资源
|
||||
|
||||
原单文件迁为6个TS模块:index核心门面、window-session请求/窗口状态、projection节点
|
||||
归属与还原、styles共享样式与跨文档复制、control控件监听器、resources延迟与清理。
|
||||
分包严格tsconfig接入根typecheck;生产依赖和版本不变,公开声明留04独立验收。
|
||||
三种构建产物通过仓库脚本重建,.npmignore排除分包tsconfig。
|
||||
|
||||
结构迁移保留同步注册和Result字段顺序、能力快照、工厂options浅拷贝、默认值、
|
||||
右侧index40控件、CSS id/class、同步toggle、open/close Promise<void>和正常事件顺序。
|
||||
未新增公开destroy方法。Window API类型为局部可选能力,不污染全局Window声明。
|
||||
DOM/状态模块不依赖Artplayer,新核心仅通过既有接口集成,不提升插件最低核心依赖。
|
||||
|
||||
缺陷修复单独由候选测试覆盖:正在申请时coalesce、close/toggle撤销申请并提前结算
|
||||
调用者、迟到窗口直接关闭、销毁终态、取消100ms定时器、事件重入/初始化失败回收、
|
||||
adoption错误回滚、占位移动/删除后恢复原parent/sibling、原ownerDocument样式复制。
|
||||
父节点拒绝插入时尽力恢复到原document.body并报告close失败;原document也拒绝插入
|
||||
仍无法保证恢复,不声称任意DOM破坏都可以修复。所有清理逐项尝试,不因单一监听器
|
||||
清理异常而跳过窗口和节点释放。销毁期间保留类清理/还原,禁止新事件/UI/延迟效果。
|
||||
|
||||
20项候选测试在旧冻结源码上3项正常契约通过、17项失败;候选全部通过。新加样式
|
||||
插入重入测试曾发现第一版迁移残留3节点,现追加插入返回后的终态检查与二次清理。
|
||||
首版记录和修正后记录都保留,不通过放宽断言隐藏失败。
|
||||
|
||||
浏览器宽矩阵66项(48历史+18候选)通过,随后释放control宿主引用的调整再次用
|
||||
最终构建main产物运行18项候选验证。两实际核心为npm5.4.0和候选,三引擎均覆盖。
|
||||
使用真实iframe DOM与受控窗口API;原生Document PiP/媒体连续性/代理设备组合仍05,
|
||||
不能把这一步称为原生文档窗口验收。LIFE/DOM风险记录实现修复证据并保持原生验收
|
||||
缺口开放;STYLE重复注入已有候选正反对照。类型和分发差异仍由04/06完成。
|
||||
|
||||
模块维护见包内ARCHITECTURE.md,测试入口与限制见[验证入口](../dpip-validation.md),
|
||||
结果与哈希见[证据](../baselines/dpip-lifecycle-validation.json)。回退需整体回退src、
|
||||
分包配置与同批生成产物,保留历史测试;不修改归档基线。不推送、发布或升级版本。
|
||||
|
||||
最终复查新增notice setter异常传播兼容用例,修复首版吞掉异常的回归;20项候选在旧源码上3正常通过/17失败。链路使用Promise.then结算,不新增Promise.finally能力要求。最后main产物浏览器与main/legacy受控生命周期重跑覆盖此修正。
|
||||
|
||||
最终完整CI1136项(1006单元+14工程+116基线)、44项重复契约观察与290个生产TS严格检查通过;main/legacy各20候选回归、最终main产物18项浏览器通过。main原始字节4624→6874,gzip1776→2831;资源正确性增加了体积,不宣称全项目性能门槛已经通过。本任务done并独立提交,04/05/06继续。
|
||||
@@ -31,3 +31,14 @@ test/helpers/dpip.js是受控DOM/window边界:验证ownerDocument、节点身
|
||||
当前WebKit的640宽读数与320宽fixture不同,精确保留为历史观察,待05查清尺寸和媒体
|
||||
连续性;测试不会宽泛允许任意尺寸。初次错误与修正原因见[02记录](changes/2026-09-12-PKG-DPIP-02-tests.md),
|
||||
验收状态见[02证据](baselines/dpip-behavior-validation.json)。03必须新增候选修复断言。
|
||||
|
||||
## TS实现与候选修复(03)
|
||||
|
||||
源码现拆为6个严格TS模块,真实文件地图见包内ARCHITECTURE.md。`yarn test:dpip`同时
|
||||
执行48项历史与20项候选生命周期测试;`ARTPLAYER_DPIP_BASELINE=1`运行候选用例时,
|
||||
保留旧源码17失败/3正常通过。正常契约另有16项test:baseline。
|
||||
`test/browser/dpip-lifecycle.spec.js`为18项候选真实DOM验证;`dpip-helpers.js`共享受控
|
||||
窗口入口,记录替换前能力,绝不冒充原生Document PiP。`ARTPLAYER_DPIP_ARTIFACT`
|
||||
选择明确构建文件(不fallback);最终产物证据与宽矩阵历史证据分开保存。
|
||||
本阶段保留原生窗口和媒体/代理验收门槛,详见[03记录](changes/2026-09-12-PKG-DPIP-03-lifecycle.md)
|
||||
及[03证据](baselines/dpip-lifecycle-validation.json)。04继续公开类型/导出/安装消费者。
|
||||
+3
-2
@@ -4,7 +4,7 @@
|
||||
|
||||
基线:`40fcda6a37d0049d42e49c1e64e70d4fd9ba5f7f`。总任务 221 项,范围 22 个包及工作区/示例。
|
||||
|
||||
状态:todo 120 / doing 6 / blocked 0 / done 95 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
|
||||
状态:todo 119 / doing 6 / blocked 0 / done 96 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
|
||||
|
||||
前置依赖是启动条件;验收是完成条件。任务可以继续拆分,但不能复用或悄悄删除旧 ID。
|
||||
|
||||
@@ -295,7 +295,7 @@
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| PKG-DPIP-01 | artplayer-plugin-document-pip<br>核对包契约与历史用法 | BASE-05 | width/height/placeholder/fallbackToVideoPiP、open/close/toggle 返回 | 源码/声明/README/demo/发布包差异已登记;公开形状和版本范围冻结 | H | done |
|
||||
| PKG-DPIP-02 | artplayer-plugin-document-pip<br>建立特有行为与错误测试 | PKG-DPIP-01, ENG-03, ENG-05 | 不支持/拒绝、重复打开、pagehide、核心销毁和视频 PiP fallback | 旧版本行为可重跑,成功/失败/切源/销毁有必要断言 | H | done |
|
||||
| PKG-DPIP-03 | artplayer-plugin-document-pip<br>整理内部职责与资源 | PKG-DPIP-02, CORE-16, CORE-17 | 窗口生命周期、DOM 迁移、样式与事件 document 重绑分离 | 结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过 | H | todo |
|
||||
| PKG-DPIP-03 | artplayer-plugin-document-pip<br>整理内部职责与资源 | PKG-DPIP-02, CORE-16, CORE-17 | 窗口生命周期、DOM 迁移、样式与事件 document 重绑分离 | 结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过 | H | done |
|
||||
| PKG-DPIP-04 | artplayer-plugin-document-pip<br>迁移自有源码和公开类型 | PKG-DPIP-03, ENG-04, ENG-06, CORE-07 | Document PiP 可选能力和真实状态/返回类型 | 严格类型检查、旧消费样例通过;声明路径/导出和同步异步兼容 | H | todo |
|
||||
| PKG-DPIP-05 | artplayer-plugin-document-pip<br>验证新旧核心和组合 | PKG-DPIP-04, CORE-22, PKG-CANVAS-04, PKG-MB-04 | 原生视频及两个 proxy、键盘/焦点/全屏与关闭还原 | 最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成 | H | todo |
|
||||
| PKG-DPIP-06 | artplayer-plugin-document-pip<br>验证分发并同步文档 | PKG-DPIP-05, ENG-07 | document.pip.js、浏览器能力矩阵、旧接口与恢复证据 | tarball 入口/资源、类型、8082 demo 和 README 一致,有回退记录 | H | todo |
|
||||
@@ -508,6 +508,7 @@
|
||||
- PKG-VAST-03: [记录](changes/2026-09-12-PKG-VAST-03-lifecycle.md) [记录](baselines/vast-lifecycle-validation.json) [记录](vast-compatibility-decision.md)
|
||||
- PKG-DPIP-01: [记录](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)
|
||||
- PKG-DPIP-02: [记录](changes/2026-09-12-PKG-DPIP-02-tests.md) [记录](baselines/dpip-behavior-validation.json) [记录](dpip-validation.md)
|
||||
- PKG-DPIP-03: [记录](changes/2026-09-12-PKG-DPIP-03-lifecycle.md) [记录](baselines/dpip-lifecycle-validation.json) [记录](dpip-validation.md)
|
||||
- PKG-CANVAS-01: [记录](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)
|
||||
- PKG-CANVAS-02: [记录](changes/2026-09-12-PKG-CANVAS-02-tests.md) [记录](baselines/canvas-behavior-validation.json) [记录](canvas-validation.md)
|
||||
- PKG-CANVAS-03: [记录](changes/2026-09-12-PKG-CANVAS-03-lifecycle.md) [记录](baselines/canvas-lifecycle-validation.json) [记录](canvas-validation.md)
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
# 进度与证据
|
||||
|
||||
## 最新完成:Document PiP-03 严格TS与窗口资源修复
|
||||
|
||||
6个模块分离窗口申请/终态、DOM还原、样式、控件与延迟资源。20候选用例在旧源码
|
||||
3正常通过/17失败,候选20全部通过;48历史和16正常契约继续通过。main/legacy各20
|
||||
生命周期、三格式构建、原生ESM导入通过。宽矩阵66项通过后,最终main产物18项
|
||||
真实DOM浏览器复验通过;受控窗口API不等于原生Document PiP,05门槛保留。
|
||||
完整CI1136项通过,另44项重复契约观察,290生产TS文件严格检查。STYLE风险关闭;
|
||||
LIFE/DOM记录修复,保留原生组合验收缺口。当前221项:96 done、6 doing、119 todo。
|
||||
见[本步记录](changes/2026-09-12-PKG-DPIP-03-lifecycle.md)和[证据](baselines/dpip-lifecycle-validation.json)。
|
||||
下一步04公开类型、两代导出与安装消费者;独立本地提交,不推送/发布。
|
||||
|
||||
## 最新完成:Document PiP-02 生命周期历史复现
|
||||
|
||||
四实现×12组共48项复现迟到/重复窗口、销毁后效果、DOM回滚失败和样式差异,
|
||||
|
||||
@@ -164,5 +164,5 @@
|
||||
| DPIP-TYPE-01 | open / 已复现 | Document PiP requires options and declares void actions and writable flags that differ from runtime | PKG-DPIP-04 |
|
||||
| DPIP-LIFE-01 | open / 已复现 | Document PiP has no separate ownership for pending window requests and delayed post-transition callbacks | PKG-DPIP-02, PKG-DPIP-03, PKG-DPIP-05 |
|
||||
| DPIP-DOM-01 | open / 已复现 | Document PiP copies global-document styles and retains original parent without transactional rollback | PKG-DPIP-02, PKG-DPIP-03, PKG-DPIP-05 |
|
||||
| DPIP-STYLE-01 | open / 已复现 | Document PiP 1.1.0 and frozen source duplicate style IDs when evaluated before DOMContentLoaded | PKG-DPIP-03 |
|
||||
| DPIP-STYLE-01 | resolved / 已复现 | Document PiP 1.1.0 and frozen source duplicate style IDs when evaluated before DOMContentLoaded | PKG-DPIP-03 |
|
||||
| DPIP-MEDIA-01 | open / 已复现 | WebKit reports styled width640 for width320 media in the controlled Document PiP iframe matrix | PKG-DPIP-05 |
|
||||
+21
-7
@@ -3500,8 +3500,11 @@
|
||||
"refactor/baselines/dpip-contract.md",
|
||||
"refactor/changes/2026-09-12-PKG-DPIP-01-contract.md",
|
||||
"refactor/changes/2026-09-12-PKG-DPIP-02-tests.md",
|
||||
"refactor/baselines/dpip-behavior-validation.json"
|
||||
]
|
||||
"refactor/baselines/dpip-behavior-validation.json",
|
||||
"refactor/changes/2026-09-12-PKG-DPIP-03-lifecycle.md",
|
||||
"refactor/baselines/dpip-lifecycle-validation.json"
|
||||
],
|
||||
"workspaceState": "Six strict TS modules with candidate fixes for pending requests, terminal effects, partial rollback and style ownership. Candidate versus frozen tests preserve historical failures. Native Document PiP/proxy/device evidence remains task05; current iframe coverage controls the window API."
|
||||
},
|
||||
{
|
||||
"id": "DPIP-DOM-01",
|
||||
@@ -3520,8 +3523,11 @@
|
||||
"refactor/baselines/dpip-contract.md",
|
||||
"refactor/changes/2026-09-12-PKG-DPIP-01-contract.md",
|
||||
"refactor/changes/2026-09-12-PKG-DPIP-02-tests.md",
|
||||
"refactor/baselines/dpip-behavior-validation.json"
|
||||
]
|
||||
"refactor/baselines/dpip-behavior-validation.json",
|
||||
"refactor/changes/2026-09-12-PKG-DPIP-03-lifecycle.md",
|
||||
"refactor/baselines/dpip-lifecycle-validation.json"
|
||||
],
|
||||
"workspaceState": "Six strict TS modules with candidate fixes for pending requests, terminal effects, partial rollback and style ownership. Candidate versus frozen tests preserve historical failures. Native Document PiP/proxy/device evidence remains task05; current iframe coverage controls the window API."
|
||||
},
|
||||
{
|
||||
"id": "DPIP-STYLE-01",
|
||||
@@ -3532,11 +3538,19 @@
|
||||
"compatibleResolution": "Preserve the style id and injection timing while deduplicating at insertion and releasing loading listeners.",
|
||||
"closureCriteria": "Historical two-node versus Parcel cached one-node difference stays explicit; candidate has one final style node under duplicate evaluation.",
|
||||
"confirmation": "reproduced",
|
||||
"status": "open",
|
||||
"status": "resolved",
|
||||
"evidence": [
|
||||
"refactor/changes/2026-09-12-PKG-DPIP-02-tests.md",
|
||||
"refactor/baselines/dpip-behavior-validation.json"
|
||||
]
|
||||
"refactor/baselines/dpip-behavior-validation.json",
|
||||
"refactor/changes/2026-09-12-PKG-DPIP-03-lifecycle.md",
|
||||
"refactor/baselines/dpip-lifecycle-validation.json"
|
||||
],
|
||||
"workspaceState": "Six strict TS modules with candidate fixes for pending requests, terminal effects, partial rollback and style ownership. Candidate versus frozen tests preserve historical failures. Native Document PiP/proxy/device evidence remains task05; current iframe coverage controls the window API.",
|
||||
"resolutionEvidence": [
|
||||
"refactor/changes/2026-09-12-PKG-DPIP-03-lifecycle.md",
|
||||
"refactor/baselines/dpip-lifecycle-validation.json"
|
||||
],
|
||||
"resolutionRationale": "Candidate and frozen-source comparison verifies one style node and zero retained DOMContentLoaded listeners after duplicate evaluation. Insertion rechecks the shared id; reentrant style insertion cleanup is covered separately. Native window acceptance is unrelated and remains task05."
|
||||
},
|
||||
{
|
||||
"id": "DPIP-MEDIA-01",
|
||||
|
||||
+6
-2
@@ -3031,11 +3031,15 @@
|
||||
"CORE-16",
|
||||
"CORE-17"
|
||||
],
|
||||
"status": "todo",
|
||||
"status": "done",
|
||||
"risk": "H",
|
||||
"deliverable": "窗口生命周期、DOM 迁移、样式与事件 document 重绑分离",
|
||||
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
|
||||
"evidence": []
|
||||
"evidence": [
|
||||
"changes/2026-09-12-PKG-DPIP-03-lifecycle.md",
|
||||
"baselines/dpip-lifecycle-validation.json",
|
||||
"dpip-validation.md"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "PKG-DPIP-04",
|
||||
|
||||
Reference in new issue
Block a user