Files
ArtPlayer/refactor/changes/2026-09-12-PKG-AMBILIGHT-03-lifecycle.md
T

3.0 KiB

PKG-AMBILIGHT-03 TS职责拆分与生命周期修复

结构变化

原单文件JS拆为严格TS入口、视图、取色和RAF调度四个模块;新增包tsconfig并纳入现有 自动发现的严格类型检查。入口负责订阅和终止,视图只维护9格样式,取色一次收集9色, 调度使用运行/停止/销毁状态和代次,避免重入和过期帧重复挂载。包ARCHITECTURE.md说明 所有权、失败处理、兼容约束和后续AI应运行的检查;公开声明留给04单独验收。

缺陷修复

RAF id为0也能停止;destroy移除视图/订阅、释放Canvas,逃逸start不能复活;初始化 失败回滚,部分订阅/上下文错误保留原异常;销毁中某一步抛错仍继续其他清理。 取色中stop/destroy立刻放弃旧批次,stop/start留到新帧;空context与无效尺寸跳过。 绘制/读像素失败不再卡死调度,下一次有效取色重新创建Canvas,同源切源后恢复。

首轮真实浏览器18项中15通过,Firefox三核心恢复断言失败。补充独立新Canvas对照后, 确认同源视频可读,但旧原生Canvas改宽度仍抛SecurityError;据此将仅重置宽度改为 丢弃出错Canvas并在下次满足频率/播放/尺寸条件时替换。初次失败和诊断报告均归档, 没有扩大超时或skip来绕过问题。永久跨域时最多每个有效采样分配一次替代Canvas; 默认10Hz,高频选项仍按历史算式执行,该成本留给后续性能复盘。

兼容与范围

保留factory/options读取时机、start/stop同步返回、ready启动、暂停不采样、stop保留 颜色、3x3位置/默认样式、ignored zIndex和特殊frequency语义。destroy终止与错误恢复 是已复现缺陷修正;没有增加公共方法、修改声明或宣称npm分发和设备全部验收。 真实npm1.0.0/1.1.0与冻结工作区历史测试不改写;核心版本以实际归档5.1.7/5.4.0为准。

验证与提交

16项候选回归在冻结工作区上14项失败、2项正常语义通过;修复后与30项历史及7项发布 契约合计53项通过。最终三引擎/三核心18项浏览器全部通过,无skip。严格类型、专项 lint及三格式正式构建通过;完整CI971项通过(878单元+14工程+79基线),另44项契约 报告重复执行不作新增计数;全仓278个生产TS文件纳入严格检查。已知生成文档lint warning和Yarn弃用提示保留。结果与输入哈希见 验证证据。

03完成并独立本地commit,随后审计自身完成提交;无推送或发布。04公开类型/旧 CJS.default、05代理和设备、06分发/demo仍待实施。AMBILIGHT-LIFE-01保留open以追踪 05代理组合的终止/能力边界,不能把本步原生video验收扩展到所有proxy。

用户更正已核对:VPN外部脚本加载例外只适用于VAST,不适用于Ads。本次Ambilight验证 使用本地媒体,不涉及该例外。VAST初始化兼容选择仍是独立待决项。