refactor(chromecast): [PKG-CAST-03] isolate SDK and player lifecycles

This commit is contained in:
Harvey Zhao committed 2026-09-13 17:13:35 +08:00
1 parent 87cfcf5a6c
commit b0cfbfe3a0
26 files changed
+2503 -551

No files matched your search

+55 -13
View File
@@ -713,7 +713,7 @@
"PKG-CAST-05"
],
"evidence": [
"packages/artplayer-plugin-chromecast/src/index.js"
"packages/artplayer-plugin-chromecast/src/sdk.ts"
],
"compatibleResolution": "Default remote cast_sender.js?loadCastFramework=1; sdk URL/options and actual Cast device/session behavior require separate validation.",
"closureCriteria": "固定 SDK/外部资源版本和环境;成功/失败/切换/销毁有真实证据,设备和网络限制逐项记录。"
@@ -4743,7 +4743,7 @@
"id": "VENDOR-10",
"title": "Chromecast embeds a Font Awesome Pro path with no established redistribution entitlement",
"confirmation": "source-observed",
"status": "open",
"status": "resolved",
"owners": [
"PKG-CAST-03",
"PKG-CAST-06"
@@ -4753,7 +4753,14 @@
"refactor/baselines/chromecast-release.json"
],
"compatibleResolution": "Replace the default embedded artwork with an owned simple Cast indicator while retaining the custom icon option and wrapper classes; keep historical provenance separate.",
"closureCriteria": "Owned or properly licensed default artwork replaces the commercial-marked source and every shipped bundle, with source/provenance and generated-output checks."
"closureCriteria": "Owned or properly licensed default artwork replaces the commercial-marked source and every shipped bundle, with source/provenance and generated-output checks.",
"resolutionEvidence": [
"refactor/changes/2026-09-13-PKG-CAST-03-runtime.md",
"refactor/baselines/chromecast-runtime-validation.json",
"test/chromecast-runtime.test.js",
"test/browser/chromecast-lifecycle.spec.js"
],
"resolutionRationale": "Original repo-authored geometric SVG replaces the commercial path in source and all three built/copied formats; historical source remains frozen, no claim of rights in the removed artwork."
},
{
"id": "CAST-TYPE-01",
@@ -4774,7 +4781,7 @@
"id": "CAST-SDK-01",
"title": "Cast requestSession completion is incorrectly passed to loadMedia as a session",
"confirmation": "reproduced",
"status": "open",
"status": "resolved",
"owners": [
"PKG-CAST-03",
"PKG-CAST-05"
@@ -4784,13 +4791,20 @@
"refactor/baselines/chromecast-failures-validation.json"
],
"compatibleResolution": "Retrieve the actual current session after request success and validate live instance ownership.",
"closureCriteria": "Successful undefined/null request result loads through the current session; absence and refusal preserve appropriate original errors."
"closureCriteria": "Successful undefined/null request result loads through the current session; absence and refusal preserve appropriate original errors.",
"resolutionEvidence": [
"refactor/changes/2026-09-13-PKG-CAST-03-runtime.md",
"refactor/baselines/chromecast-runtime-validation.json",
"test/chromecast-runtime.test.js",
"test/browser/chromecast-lifecycle.spec.js"
],
"resolutionRationale": "35 candidate source/main/legacy tests and 135 native browser DOM/core cases verify corrected behavior against controlled SDK boundaries. 93 frozen historical observations remain. Actual remote SDK and receivers remain SDK06/CAST05, not waived."
},
{
"id": "CAST-LOADER-01",
"title": "Cast readiness waits hang or overwrite each other across ready SDKs, repeated clicks and multiple instances",
"confirmation": "reproduced",
"status": "open",
"status": "resolved",
"owners": [
"PKG-CAST-03",
"PKG-CAST-05"
@@ -4800,13 +4814,20 @@
"refactor/baselines/chromecast-failures-validation.json"
],
"compatibleResolution": "Coordinate one reusable loader per document with readiness detection, shared pending work and complete error settlement.",
"closureCriteria": "Ready, pending, failure, retry, external callback and multiple instances are covered without duplicate scripts or stranded callers."
"closureCriteria": "Ready, pending, failure, retry, external callback and multiple instances are covered without duplicate scripts or stranded callers.",
"resolutionEvidence": [
"refactor/changes/2026-09-13-PKG-CAST-03-runtime.md",
"refactor/baselines/chromecast-runtime-validation.json",
"test/chromecast-runtime.test.js",
"test/browser/chromecast-lifecycle.spec.js"
],
"resolutionRationale": "35 candidate source/main/legacy tests and 135 native browser DOM/core cases verify corrected behavior against controlled SDK boundaries. 93 frozen historical observations remain. Actual remote SDK and receivers remain SDK06/CAST05, not waived."
},
{
"id": "CAST-LIFE-01",
"title": "Cast listeners and continuations survive player destruction and update another player icon",
"confirmation": "reproduced",
"status": "open",
"status": "resolved",
"owners": [
"PKG-CAST-03",
"PKG-CAST-05"
@@ -4816,13 +4837,20 @@
"refactor/baselines/chromecast-failures-validation.json"
],
"compatibleResolution": "Use per-registration lifecycle ownership, scoped control nodes and obsolete-operation checks without ending a page-shared session.",
"closureCriteria": "Destroyed players get no late media loads or callbacks; subscriptions are removed and separate players keep independent UI."
"closureCriteria": "Destroyed players get no late media loads or callbacks; subscriptions are removed and separate players keep independent UI.",
"resolutionEvidence": [
"refactor/changes/2026-09-13-PKG-CAST-03-runtime.md",
"refactor/baselines/chromecast-runtime-validation.json",
"test/chromecast-runtime.test.js",
"test/browser/chromecast-lifecycle.spec.js"
],
"resolutionRationale": "35 candidate source/main/legacy tests and 135 native browser DOM/core cases verify corrected behavior against controlled SDK boundaries. 93 frozen historical observations remain. Actual remote SDK and receivers remain SDK06/CAST05, not waived."
},
{
"id": "CAST-STATE-01",
"title": "Cast terminal session states leave the normalized callback and icon connected",
"confirmation": "reproduced",
"status": "open",
"status": "resolved",
"owners": [
"PKG-CAST-03",
"PKG-CAST-05"
@@ -4832,13 +4860,20 @@
"refactor/baselines/chromecast-failures-validation.json"
],
"compatibleResolution": "Map terminal states without changing the raw SessionState query API.",
"closureCriteria": "Ended and failed states update UI and callbacks while getCastState keeps original SessionState values."
"closureCriteria": "Ended and failed states update UI and callbacks while getCastState keeps original SessionState values.",
"resolutionEvidence": [
"refactor/changes/2026-09-13-PKG-CAST-03-runtime.md",
"refactor/baselines/chromecast-runtime-validation.json",
"test/chromecast-runtime.test.js",
"test/browser/chromecast-lifecycle.spec.js"
],
"resolutionRationale": "35 candidate source/main/legacy tests and 135 native browser DOM/core cases verify corrected behavior against controlled SDK boundaries. 93 frozen historical observations remain. Actual remote SDK and receivers remain SDK06/CAST05, not waived."
},
{
"id": "CAST-ERROR-01",
"title": "Cast media loading rejection escapes on a detached Promise while the click has already fulfilled",
"confirmation": "reproduced",
"status": "open",
"status": "resolved",
"owners": [
"PKG-CAST-03",
"PKG-CAST-05"
@@ -4848,7 +4883,14 @@
"refactor/baselines/chromecast-failures-validation.json"
],
"compatibleResolution": "Await the complete media-loading chain and preserve one original error notification.",
"closureCriteria": "loadMedia failure reaches the click promise exactly once, no orphan rejection or duplicated error callback; success ordering remains documented."
"closureCriteria": "loadMedia failure reaches the click promise exactly once, no orphan rejection or duplicated error callback; success ordering remains documented.",
"resolutionEvidence": [
"refactor/changes/2026-09-13-PKG-CAST-03-runtime.md",
"refactor/baselines/chromecast-runtime-validation.json",
"test/chromecast-runtime.test.js",
"test/browser/chromecast-lifecycle.spec.js"
],
"resolutionRationale": "35 candidate source/main/legacy tests and 135 native browser DOM/core cases verify corrected behavior against controlled SDK boundaries. 93 frozen historical observations remain. Actual remote SDK and receivers remain SDK06/CAST05, not waived."
}
]
}