mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-19 03:11:20 -08:00
refactor(docs): [SITE-03] migrate desktop editor and integrate typed generation
This commit is contained in:
1 parent
a468cb2c39
commit
2f130c58f1
37 files changed
+1921
-305
No files matched your search
@@ -0,0 +1,169 @@
|
||||
{
|
||||
"task": "SITE-03",
|
||||
"baseline": "a468cb2c39e626f7b4f737d0ca60334150deae2b",
|
||||
"node": "v24.21.0",
|
||||
"yarn": "1.22.22",
|
||||
"logs": {
|
||||
"unit": {
|
||||
"file": "refactor/.cache/site-editor-tests-final.log",
|
||||
"sha256": "d4189f4e94db6698546a3244198cc683526e18e1db9af7eb2c5cf6f328588681",
|
||||
"exitCode": 0,
|
||||
"pass": 5
|
||||
},
|
||||
"integration": {
|
||||
"file": "refactor/.cache/site-editor-integration.log",
|
||||
"sha256": "a704c43adbef4e0c626d605257da47d928ad3766e98ca803ae616450f39c2eae",
|
||||
"exitCode": 0,
|
||||
"pass": 21
|
||||
},
|
||||
"baseline": {
|
||||
"file": "refactor/.cache/site-editor-test-baseline.log",
|
||||
"sha256": "91e014ad170d1240cef8f52b1399e8239a78d09c036e0e360a32285974f71391",
|
||||
"exitCode": 0,
|
||||
"pass": 522
|
||||
},
|
||||
"ci": {
|
||||
"file": "refactor/.cache/site-editor-test-ci.log",
|
||||
"sha256": "5548f2543f5cf97b1264bd09f0fd40f9d01811c9cca5ce38ffab42628b116b5a",
|
||||
"exitCode": 0,
|
||||
"pass": 50
|
||||
},
|
||||
"lint": {
|
||||
"file": "refactor/.cache/site-editor-lint.log",
|
||||
"sha256": "1067b3ccb58d3adab1bf690433d1174eb224143338b9735ecf58461b0c67f818",
|
||||
"exitCode": 0
|
||||
},
|
||||
"toolchain": {
|
||||
"file": "refactor/.cache/site-editor-check-toolchain.log",
|
||||
"sha256": "2afc9e0561f660653ca354105298d2a161162db823ee2b9d35bbdbd5557a2e27",
|
||||
"exitCode": 0
|
||||
},
|
||||
"browserTypes": {
|
||||
"file": "refactor/.cache/site-editor-browser-types.log",
|
||||
"sha256": "e660a669a597da32a881a1b6fbc85700acf2b890f3dfb080037e08de1b0b5261",
|
||||
"exitCode": 0
|
||||
},
|
||||
"toolTypes": {
|
||||
"file": "refactor/.cache/site-editor-tool-types.log",
|
||||
"sha256": "3423554fc39544b5338814ffda828bda8b71ccd5841a86be422892408819dfa0",
|
||||
"exitCode": 0
|
||||
},
|
||||
"assets": {
|
||||
"file": "refactor/.cache/site-editor-check-site-assets.log",
|
||||
"sha256": "0d1fec774e30162af0e6ae5c7bcec5f8f859835f5a0c1ffebe7ccf77ddb0d81d",
|
||||
"exitCode": 0
|
||||
},
|
||||
"declarations": {
|
||||
"file": "refactor/.cache/site-editor-check-editor-types.log",
|
||||
"sha256": "03b2fe8bf2c1b1d2641c39ed28348ad1b2079d644ec57e3c3e1eee8c35240073",
|
||||
"exitCode": 0
|
||||
},
|
||||
"llm": {
|
||||
"file": "refactor/.cache/site-editor-check-llm.log",
|
||||
"sha256": "e1163bb3dbc38eb5ca3b0d497df6022d14d539452441d288d7a592898562141b",
|
||||
"exitCode": 0
|
||||
},
|
||||
"frozenInstall": {
|
||||
"file": "refactor/.cache/site-editor-frozen-install.log",
|
||||
"sha256": "4d587ec6212d0b874a96da55ebe55670fbd4c9e41642d79459d2b3bae0d87c85",
|
||||
"exitCode": 0
|
||||
},
|
||||
"generation": {
|
||||
"file": "refactor/.cache/site-editor-build-types.log",
|
||||
"sha256": "6a40248ab3422b04f84abed19b3178cb42acdef76f6a51fd5ca7badc27fd667e",
|
||||
"exitCode": 0
|
||||
},
|
||||
"browser": {
|
||||
"file": "refactor/.cache/site-editor-browser-accepted.log",
|
||||
"sha256": "d98249aedb874269171f761dcb52444d2062c8e88ea784ef208abd2d077f7900",
|
||||
"exitCode": 0
|
||||
}
|
||||
},
|
||||
"dependency": {
|
||||
"name": "monaco-editor",
|
||||
"version": "0.30.1",
|
||||
"category": "root devDependency; type-only",
|
||||
"oldLockEntriesIdentical": true,
|
||||
"vendorRuntimeUnchanged": true,
|
||||
"frozenInstallIgnoredScripts": true
|
||||
},
|
||||
"browser": {
|
||||
"file": "refactor/.cache/site-editor-browser-accepted/report.json",
|
||||
"sha256": "294110ebf4005af8ed41c9be4197ca917309ed0329a1263cdfdde8e2df2cc421",
|
||||
"stats": {
|
||||
"startTime": "2026-09-14T01:16:27.513Z",
|
||||
"duration": 31682.62,
|
||||
"expected": 42,
|
||||
"skipped": 0,
|
||||
"unexpected": 0,
|
||||
"flaky": 0
|
||||
},
|
||||
"versions": {
|
||||
"chromium": "153.0.8010.12",
|
||||
"firefox": "155.0",
|
||||
"webkit": "26.6"
|
||||
},
|
||||
"platform": "win32",
|
||||
"note": "Actual local Monaco/player with controlled media; no manual Chrome session or physical-device acceptance"
|
||||
},
|
||||
"initialFailure": {
|
||||
"file": "refactor/.cache/site-editor-browser-initial/report.json",
|
||||
"sha256": "ba6291978c9143a67903fe4c292a82fe0b6afc3c8b7a47572b4c9a4540ac7860",
|
||||
"stats": {
|
||||
"startTime": "2026-09-14T01:03:18.570Z",
|
||||
"duration": 38071.753,
|
||||
"expected": 33,
|
||||
"skipped": 0,
|
||||
"unexpected": 3,
|
||||
"flaky": 0
|
||||
},
|
||||
"causes": [
|
||||
"Two Firefox Error display-string assertions; actual Error.message used in candidate tests",
|
||||
"Real Monaco lazy language AMD race; await modules before starting dependencies"
|
||||
]
|
||||
},
|
||||
"unchangedPaths": [
|
||||
"packages/artplayer/src",
|
||||
"packages/artplayer/public",
|
||||
"packages/artplayer/types",
|
||||
"docs/assets/ts",
|
||||
"docs/assets/js/vs",
|
||||
"docs/document",
|
||||
"docs/llms.txt"
|
||||
],
|
||||
"fingerprints": {
|
||||
"docs/assets/js/bootstrap.js": "a31b05dfda0ffd9011af4fd786d01fb4b81600d34741c944d1f0144c187e357d",
|
||||
"packages/artplayer-vitepress/browser/bootstrap.ts": "134128a545375635a05fae4f1dc5707bcca389e7f2db27dcffb17692a1c728fa",
|
||||
"packages/artplayer-vitepress/browser/editor-files.ts": "09e437a9f70ccc5c4f071cfe6f8a90e11085caa8c26e7707b26dc6d2075a97a4",
|
||||
"packages/artplayer-vitepress/browser/editor-host.ts": "05673be0ca9aea7d890aa4cd84ab372b7d34407bd8ab674f2c0f619996586f03",
|
||||
"packages/artplayer-vitepress/browser/editor-libraries.ts": "da64881b70b187dbc0006937c2bc3759b7aeafda860c1b5c631308ebcb2c15a7",
|
||||
"packages/artplayer-vitepress/browser/editor-monaco.ts": "f51dd01c42a0652a830ae7257ba4432c5c970b91e1f5db585fbbe16d355e004d",
|
||||
"packages/artplayer-vitepress/browser/editor-preferences.ts": "10806adf43737cf0b85de91d1ca4ed988c192ccc6786129f45792c1bc026bed0",
|
||||
"packages/artplayer-vitepress/browser/editor-session.ts": "18ddc8161b1c2f0b1aab431625aaf448a222dddec9e01bb7cb741017772cac14",
|
||||
"packages/artplayer-vitepress/browser/editor.ts": "e27f46bb84abc363a36a3239018168d7ec8d22fe8690cf835a2c354ce54443bd",
|
||||
"test/browser/site-editor.spec.js": "be9a7fdc76a02861041510425fede36b461d8a72b1f47ee14657af91dc221f56",
|
||||
"test/site-editor.test.js": "ccad4960d9540da9ecc3208727d4478469bc69d8f07edff121b7581ce2d14268",
|
||||
"docs/assets/js/common.js": "4ccfc0bba7093a45621e2fe0c9b48cb6da0e6101a2b87a5a0f8785611d2d98fc",
|
||||
"docs/index.html": "bffcef9ee12817d79d41babaa01ea80ba8d44b2aa866b63105f4a453a2722f28",
|
||||
"package.json": "176aa0d3eb248b342470a6bda49ffa8f4be62c1f1fd7af58baad8268766dd061",
|
||||
"packages/artplayer-vitepress/browser/README.md": "2280fc2f0e344de008347cc6421e099e45092f76f4b5b01468933552c1dd5a7f",
|
||||
"packages/artplayer-vitepress/browser/editor-loader.ts": "7cfdc82726d164d450b21680d950ec3f508482f1ab743febee473855248568e1",
|
||||
"packages/artplayer-vitepress/browser/loader.ts": "d5d5c079854f40025be6af457baba863ab8cd37af59c120e811b7f59e5c160b6",
|
||||
"packages/artplayer-vitepress/browser/mobile.ts": "beba095b7fda9fb9aa2c5cd50437ea9e186fa76e700e6e79ee8e9eb67fd86d7d",
|
||||
"packages/artplayer-vitepress/browser/navigation.ts": "1ad87a6bee717f9e62d28c5e6dc382c5c1b43c09c9f10c64e3ef0824f2fbdedc",
|
||||
"packages/artplayer-vitepress/browser/tsconfig.json": "9a1331ca4b311d66df7aca6e5ff8a8e3647e338931e013ffc7df58aaee8f6a0c",
|
||||
"scripts/build-site-assets.mjs": "14effc0e354b8ed2d8c6370861181958058b20cb5e9485b7910fef4346cfc5bb",
|
||||
"scripts/build-ts.js": "153b487736ac9ece1d34bb5fb58c904eb886cb66ce1d7616a1d64a253d991518",
|
||||
"scripts/documentation/corpus.ts": "f4a977ec9b68c86ffa71164f8fd1263fe5ec0081a38586716a096cdfb86d8005",
|
||||
"scripts/editor-declarations/generate.ts": "633fc5c495e8146f79e820357a4a80d656eba8f375b383bb0b2d734fcb1d0e5a",
|
||||
"yarn.lock": "c76ffff6d6098b911487517f231ce758cf1f233ee3b6af79ab6676bf90b869d6"
|
||||
},
|
||||
"limitations": [
|
||||
"Synthetic non-persisted pagehide is not physical BFCache validation",
|
||||
"Already executed user-script globals and in-flight Monaco worker RPC cannot be undone",
|
||||
"Semantic TS diagnostics do not block classic-script execution",
|
||||
"No full example/search/link/vendor-provenance/device/remote-CI/npm acceptance",
|
||||
"Full baseline precedes final status/risk edits; those receive targeted final checks",
|
||||
"Root lint retains one existing generated-declaration warning"
|
||||
]
|
||||
}
|
||||
@@ -17913,12 +17913,13 @@
|
||||
{
|
||||
"source": "docs/index.html",
|
||||
"route": "/",
|
||||
"sha256Lf": "f654fa04c8aea08bc718e96ce2a438f04cc91060b2bb9b2b86f4e1467258fd97",
|
||||
"sha256Lf": "bffcef9ee12817d79d41babaa01ea80ba8d44b2aa866b63105f4a453a2722f28",
|
||||
"kind": "demo-or-editor",
|
||||
"scriptSources": [
|
||||
"https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662",
|
||||
"./assets/js/console.js",
|
||||
"./assets/js/loader.js"
|
||||
"./assets/js/loader.js",
|
||||
"./assets/js/bootstrap.js"
|
||||
],
|
||||
"status": "not-run",
|
||||
"owner": "EX-03"
|
||||
@@ -18102,7 +18103,7 @@
|
||||
},
|
||||
{
|
||||
"file": "scripts/build-ts.js",
|
||||
"sha256Lf": "1ff2d13f4247bba1818a187eb945a86969f4c4d60245ba5cac8fc0b2b8edd3ba"
|
||||
"sha256Lf": "153b487736ac9ece1d34bb5fb58c904eb886cb66ce1d7616a1d64a253d991518"
|
||||
},
|
||||
{
|
||||
"file": "scripts/editor-types.mjs",
|
||||
@@ -18138,7 +18139,7 @@
|
||||
},
|
||||
{
|
||||
"file": "docs/assets/js/common.js",
|
||||
"sha256Lf": "c18f72dd5489bdee5b7bd0030c716eab08ac7ea7bd253353eaf406fb8ae2bc14"
|
||||
"sha256Lf": "4ccfc0bba7093a45621e2fe0c9b48cb6da0e6101a2b87a5a0f8785611d2d98fc"
|
||||
},
|
||||
{
|
||||
"file": "docs/assets/js/mobile.js",
|
||||
@@ -18158,7 +18159,7 @@
|
||||
},
|
||||
{
|
||||
"file": "scripts/build-site-assets.mjs",
|
||||
"sha256Lf": "58c163e16efa901d227045b468f324ac79ad4ab2f8ab8716f10a8ede62091666"
|
||||
"sha256Lf": "14effc0e354b8ed2d8c6370861181958058b20cb5e9485b7910fef4346cfc5bb"
|
||||
},
|
||||
{
|
||||
"file": "scripts/docs-smoke/generator.ts",
|
||||
@@ -18182,7 +18183,7 @@
|
||||
},
|
||||
{
|
||||
"file": "scripts/editor-declarations/generate.ts",
|
||||
"sha256Lf": "6cf6ee27b2032e9e3a4aef949f2b54ba7bf12e40bed473478f63eb82759c8e5a"
|
||||
"sha256Lf": "633fc5c495e8146f79e820357a4a80d656eba8f375b383bb0b2d734fcb1d0e5a"
|
||||
},
|
||||
{
|
||||
"file": "scripts/editor-declarations/plugin.ts",
|
||||
@@ -18206,7 +18207,7 @@
|
||||
},
|
||||
{
|
||||
"file": "scripts/documentation/corpus.ts",
|
||||
"sha256Lf": "f916f63822b9e53a26d2017c0004a576c1fbdf0af0f839c296c8e3d2a14bb2c1"
|
||||
"sha256Lf": "f4a977ec9b68c86ffa71164f8fd1263fe5ec0081a38586716a096cdfb86d8005"
|
||||
},
|
||||
{
|
||||
"file": "scripts/documentation/files.ts",
|
||||
@@ -18240,10 +18241,42 @@
|
||||
"file": "packages/artplayer-vitepress/build/markdown.ts",
|
||||
"sha256Lf": "6d639e25bab97c973940661e2aac6f1034ab53ab1c016310a571ab52392819da"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-vitepress/browser/bootstrap.ts",
|
||||
"sha256Lf": "134128a545375635a05fae4f1dc5707bcca389e7f2db27dcffb17692a1c728fa"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-vitepress/browser/editor-files.ts",
|
||||
"sha256Lf": "09e437a9f70ccc5c4f071cfe6f8a90e11085caa8c26e7707b26dc6d2075a97a4"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-vitepress/browser/editor-host.ts",
|
||||
"sha256Lf": "05673be0ca9aea7d890aa4cd84ab372b7d34407bd8ab674f2c0f619996586f03"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-vitepress/browser/editor-libraries.ts",
|
||||
"sha256Lf": "da64881b70b187dbc0006937c2bc3759b7aeafda860c1b5c631308ebcb2c15a7"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-vitepress/browser/editor-loader.ts",
|
||||
"sha256Lf": "7cfdc82726d164d450b21680d950ec3f508482f1ab743febee473855248568e1"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-vitepress/browser/editor-monaco.ts",
|
||||
"sha256Lf": "f51dd01c42a0652a830ae7257ba4432c5c970b91e1f5db585fbbe16d355e004d"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-vitepress/browser/editor-preferences.ts",
|
||||
"sha256Lf": "10806adf43737cf0b85de91d1ca4ed988c192ccc6786129f45792c1bc026bed0"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-vitepress/browser/editor-session.ts",
|
||||
"sha256Lf": "18ddc8161b1c2f0b1aab431625aaf448a222dddec9e01bb7cb741017772cac14"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-vitepress/browser/editor.ts",
|
||||
"sha256Lf": "e27f46bb84abc363a36a3239018168d7ec8d22fe8690cf835a2c354ce54443bd"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-vitepress/browser/loader.ts",
|
||||
"sha256Lf": "d5d5c079854f40025be6af457baba863ab8cd37af59c120e811b7f59e5c160b6"
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
# SITE-03: desktop editor and generation integration
|
||||
|
||||
Baseline: `a468cb2c39e626f7b4f737d0ca60334150deae2b` on
|
||||
`codex/compatible-modernization`. This completes the remaining desktop portion
|
||||
of SITE-03; SITE-LOAD-01, SITE-AI-DOCS-01 and SITE-BUILD-01 retain the evidence
|
||||
for loaders/navigation, translation/LLM tools and i18n/VitePress builds.
|
||||
|
||||
## Implementation and ownership
|
||||
|
||||
The desktop editor now has strict TypeScript modules for HTML bootstrap, host
|
||||
types, preferences, Monaco initialization/compilation, run sessions and file
|
||||
imports. The entry binds existing controls and owns page listeners and cleanup.
|
||||
The module map and maintenance commands live in
|
||||
`packages/artplayer-vitepress/browser/README.md`.
|
||||
|
||||
`bootstrap.js` and `common.js` are generated from TS alongside the existing three
|
||||
site assets. Declaration generation owns `browser/editor-libraries.ts`; the UI,
|
||||
corpus and inventory consume that canonical list. Successful `build:ts` rebuilds
|
||||
the assets. Read-only declaration and asset checks separately reject drift.
|
||||
Generated code is checked against its source instead of being hand-linted/fixed.
|
||||
|
||||
Root development dependency `monaco-editor@0.30.1` supplies types matching the
|
||||
existing browser vendor. Imports are type-only. Only one lock entry is added;
|
||||
no vendor runtime upgrade or new consumer dependency is introduced. Frozen Yarn
|
||||
installation used `--ignore-scripts`, and strict toolchain verification checks
|
||||
Node 24.21.0, Yarn 1.22.22, 39 pinned tools and 1471 dependency selectors.
|
||||
`test:site-editor` is also included in the normal Node test chain.
|
||||
|
||||
## Reproduced problems and behavior changes
|
||||
|
||||
- The frozen old editor evaluates TypeScript syntax as JavaScript. The candidate
|
||||
uses the actual Monaco TS worker to emit JS before destroying/running a player.
|
||||
Syntax failure leaves the current player intact. Semantic diagnostics remain
|
||||
visible but do not become a new mandatory execution gate.
|
||||
- The frozen FileReader helper cannot settle read errors. Candidate handlers
|
||||
reject errors/aborts and remove listeners; imports run in file/batch order.
|
||||
- The frozen inline bootstrap throws when storage is denied. Candidate defaults
|
||||
still boot the editor; failed preference writes revert the checkbox and report
|
||||
the failure rather than claiming persistence.
|
||||
- Removing the old arbitrary one-second delay exposed a real WebKit AMD race:
|
||||
Monaco's late language script saw `define` suspended by the example loader.
|
||||
Initialization now awaits the actual language modules before enabling Run or
|
||||
starting example dependencies. A controlled delayed-module browser test holds
|
||||
this boundary explicitly.
|
||||
|
||||
## Compatibility and limits
|
||||
|
||||
Existing DOM classes, controls, `prod/ts/code/log` keys and string values, URL
|
||||
encoding, example priority, Ctrl/Meta-S, classic JS execution, dependency caching,
|
||||
Run cleanup and `window.art` remain. JS imports retain script semantics; classic
|
||||
Run code has global access and function-local `var`. Accidental access to the old
|
||||
editor's private eval closure is not a public API. Core/plugin runtime sources,
|
||||
public declarations and distribution contents are outside this change.
|
||||
|
||||
Newer runs supersede delayed example/compile results. Non-persisted pagehide
|
||||
aborts initialization/imports and releases owned models, imports, listeners and
|
||||
players. Already executed user scripts cannot be undone, and in-flight Monaco
|
||||
worker RPC has no cancellation promise. A synthetic pagehide verifies cleanup;
|
||||
real BFCache eviction/restore and physical devices are not claimed.
|
||||
|
||||
## Verification and failure history
|
||||
|
||||
Exact results, browser versions and log fingerprints are in
|
||||
`../baselines/site-editor-validation.json`. New Node tests retain frozen old
|
||||
reproductions and cover run races, failure propagation, FileReader settlement,
|
||||
storage and cancellation. The browser suite uses actual local Monaco and player
|
||||
assets with controlled media; it covers emitted TS, repeat Run/Ctrl-S, imports,
|
||||
preferences, failed declaration initialization and delayed AMD readiness.
|
||||
|
||||
The initial 36-case run had 33 passes and 3 failures. Two Firefox assertions
|
||||
incorrectly inspected the display string of Error objects; they now inspect the
|
||||
actual Error message. The third failure exposed the AMD race described above.
|
||||
Initial and subsequent reports are retained separately. Final 42-case runs pass
|
||||
on Chromium, Firefox and WebKit with no retry, skip or timeout widening.
|
||||
|
||||
Full baseline and CI regressions, strict browser/tool types, root lint and
|
||||
read-only declaration/asset/LLM checks are recorded with their actual results.
|
||||
The existing generated core-declaration lint warning is retained. Full site
|
||||
search/link coverage, all examples, advertising SDK services, remote CI and npm
|
||||
acceptance remain separate tasks; those are not inferred from editor tests.
|
||||
|
||||
## Handoff and rollback
|
||||
|
||||
Finish SITE-04/05/07 and EX-03 for documentation semantics, whole-site behavior,
|
||||
vendor/assets provenance and all examples. Plugin compatibility and release
|
||||
reviews remain open. Revert this task's commit as one unit (TS sources, generated
|
||||
assets, declaration-list wiring, tests, dependency/lock and task records); do not
|
||||
restore only generated common.js while retaining the new source list/HTML entry.
|
||||
This task is committed locally only, without pushing or publishing.
|
||||
@@ -134,3 +134,10 @@ Yarn Classic 可执行文件,不再调用 npm。入口仍由 `ci:build` 按原
|
||||
新增 `test:site-build`,其测试进入 `test:node`;构建 TS 模块与 VitePress
|
||||
稳定代码分组 ID hook 进入根 lint/docs-tools 类型检查。真实本地构建和三浏览器
|
||||
页面验证见任务变更记录,远端工作流、Pages 与 npm 验收不因此完成。
|
||||
|
||||
## SITE-03 编辑器来源与检查
|
||||
|
||||
common.js/bootstrap.js 由 browser 下的 TS 生成,源代码进入 typecheck:site-assets
|
||||
和根 lint,产物由 check:site-assets 比较;不再对生成 common.js 应用源码 lint。
|
||||
build:ts 生成声明 URL 清单后重建站点浏览器产物,check:editor-types 保持只读。
|
||||
新增 test:site-editor 并接入 test:node,新增真实 Monaco 交互测试走现有三引擎矩阵。
|
||||
+3
-2
@@ -4,7 +4,7 @@
|
||||
|
||||
基线:`40fcda6a37d0049d42e49c1e64e70d4fd9ba5f7f`。总任务 243 项,范围 22 个包及工作区/示例。
|
||||
|
||||
状态:todo 59 / doing 15 / blocked 0 / done 169 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
|
||||
状态:todo 58 / doing 15 / blocked 0 / done 170 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
|
||||
|
||||
前置依赖是启动条件;验收是完成条件。任务可以继续拆分,但不能复用或悄悄删除旧 ID。
|
||||
|
||||
@@ -386,7 +386,7 @@
|
||||
| SITE-LOAD-01 | artplayer-vitepress, workspace<br>修复文档示例加载顺序与导航边界 | SITE-02 | 共享 TS loader、移动入口与 Run Code/语言路由,保留 URL 和使用方式 | 旧版复现 define 丢失和依赖乱序;真实浏览器验证成功/失败恢复、顺序、去重、编码/优先级及 localhost/127 路由和语言跳转;不以此替代 SITE-03 构建/翻译流程 | M | done |
|
||||
| SITE-AI-DOCS-01 | artplayer-vitepress, workspace<br>重构可复现 LLM 文档与安全翻译草稿流程 | SITE-LOAD-01, SITE-02 | TS 离线文档聚合、显式远程翻译、草稿校验和可回退应用,保留命令与目标路径 | 默认不读密钥/调用网络;LLM 内容可复现并保留来源;旧翻译破坏性行为有复现;错误/限流/超时/结构损坏/过期/路径越界拒绝且英文文档不丢失;未执行付费翻译不计服务验收 | M | done |
|
||||
| SITE-BUILD-01 | artplayer, artplayer-vitepress, workspace<br>重构 i18n 与文档构建的暂存、替换和 Yarn 编排 | SITE-AI-DOCS-01 | 严格 TS 构建模块、编译后替换产物与失败回退,固定 Yarn 子进程和旧构建入口 | 旧 i18n 删除后失败有复现;失败不改变既有产物;语言集合、UMD/ESM/历史别名兼容;文档子进程退出码准确并完成真实 VitePress 构建;不隐式翻译、不修改播放器 API | M | done |
|
||||
| SITE-03 | artplayer-vitepress<br>整理 i18n/文档/LLM 生成流程 | SITE-02, SITE-LOAD-01, SITE-AI-DOCS-01, SITE-BUILD-01 | build-i18n/build-docs/build-llm/trans-docs 的任务边界和错误处理;桌面 common.js 自有 UI 的 TS 迁移与模块拆分 | 原命令兼容、生成可复现,翻译步骤不隐式运行远程服务;覆盖移动 loader 失败恢复 define、脚本依赖顺序、localhost/127.0.0.1 Run Code 目标和语言重定向;桌面剩余 UI 完成 TS 职责拆分并回归运行、导入与持久设置 | M | todo |
|
||||
| SITE-03 | artplayer-vitepress<br>整理 i18n/文档/LLM 生成流程 | SITE-02, SITE-LOAD-01, SITE-AI-DOCS-01, SITE-BUILD-01 | build-i18n/build-docs/build-llm/trans-docs 的任务边界和错误处理;桌面 common.js 自有 UI 的 TS 迁移与模块拆分 | 原命令兼容、生成可复现,翻译步骤不隐式运行远程服务;覆盖移动 loader 失败恢复 define、脚本依赖顺序、localhost/127.0.0.1 Run Code 目标和语言重定向;桌面剩余 UI 完成 TS 职责拆分并回归运行、导入与持久设置 | M | done |
|
||||
| SITE-04 | artplayer-vitepress<br>交叉核对逐包持续维护的文档 | 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 | 已随实现更新的中文/英文 API、包内实现地图、旧 JS 示例及已知能力限制的全包核对 | 未把缺环境的能力写成已验证,静态核对不等待设备任务;最终 demo 仍由 EX-03 验收;按 SITE-01 声明成员/候选标题清单逐项语义核对,补齐缺失的双语插件说明和 Danmuku 英文入口 | M | todo |
|
||||
| SITE-05 | artplayer-vitepress<br>构建文档站和验证链接/示例 | SITE-04, EX-01, EX-02, SITE-07 | VitePress 构建、链接与嵌入 demo 检查 | 文档构建、链接、嵌入路径与声明注入通过;真实完整 demo 保留 EX-03 独立门槛;核对 ENG-PM-01 登记的搜索 peer 范围和真实搜索行为 | M | todo |
|
||||
| SITE-06 | artplayer-vitepress<br>文档站交付验收 | SITE-05 | 维护指南和站点变更记录 | 未手改 generated 目录,旧 URL 可用、部署与检查分离 | M | todo |
|
||||
@@ -615,6 +615,7 @@
|
||||
- SITE-LOAD-01: [记录](changes/2026-09-14-SITE-LOAD-01-site-loading.md) [记录](baselines/site-loading-validation.json)
|
||||
- SITE-AI-DOCS-01: [记录](changes/2026-09-14-SITE-AI-DOCS-01-documentation-pipeline.md) [记录](baselines/documentation-pipeline-validation.json)
|
||||
- SITE-BUILD-01: [记录](changes/2026-09-14-SITE-BUILD-01-staged-builds.md) [记录](baselines/site-build-validation.json)
|
||||
- SITE-03: [记录](changes/2026-09-14-SITE-03-desktop-editor.md) [记录](baselines/site-editor-validation.json)
|
||||
- SITE-07: [记录](site-inventory.md) [记录](baselines/site-provenance.json)
|
||||
- EX-01: [记录](changes/2026-09-14-EX-01-react-consumer.md) [记录](baselines/react-consumer-validation.json) [记录](scripts/react-consumer.mjs)
|
||||
- EX-02: [记录](changes/2026-09-14-EX-02-vue-consumer.md) [记录](baselines/vue-consumer-validation.json) [记录](scripts/vue-consumer.mjs)
|
||||
|
||||
@@ -1,5 +1,21 @@
|
||||
# 进度与证据
|
||||
|
||||
## SITE-03 桌面编辑器与生成流程完成
|
||||
|
||||
桌面自有 UI 拆为严格 TS 的 bootstrap、Monaco、运行会话、文件导入与设置模块;
|
||||
common.js/bootstrap.js 由源码生成,编辑器声明列表移到生成的 TS 单一来源。
|
||||
实际 TS worker 编译后运行,修复旧版原样 eval TS、文件读取错误不结算及存储
|
||||
被拒时无法启动。三浏览器验证发现并修复 Monaco 语言模块与依赖 loader 的
|
||||
AMD 竞态,保留初始失败。原 DOM、偏好键、URL、Run/Ctrl-S 与公共包 API 保留。
|
||||
最终浏览器 42、目标集成 21、baseline 522、CI 50 全部通过;严格类型、工具链、
|
||||
生成一致性、冻结安装和 lint 通过(1 条既有 warning)。只新增 Monaco0.30.1
|
||||
开发类型依赖,既有锁条目、vendor、核心公开声明未变。合成 pagehide 不代替
|
||||
真机 BFCache;完整示例/搜索/链接/设备与远端发布验收仍开放。
|
||||
见[变更](changes/2026-09-14-SITE-03-desktop-editor.md)和
|
||||
[证据](baselines/site-editor-validation.json)。当前 243 项:170 done、15 doing、
|
||||
58 todo。下一步 SITE-04 中英文 API 语义核对;Auto Thumbnail/VAST 源码迁移和
|
||||
全部插件最终验收仍开放。独立本地提交后审计,无推送或发布。
|
||||
|
||||
## SITE-BUILD-01 构建流程完成
|
||||
|
||||
i18n/VitePress 构建完成严格 TS 模块拆分,暂存后替换并保留失败恢复路径;
|
||||
|
||||
@@ -258,3 +258,5 @@
|
||||
| SITE-TRANS-DATA-01 | resolved / 已复现 | Translation deletes English before requests and repairs valid fences destructively; exhausted rate limits return undefined | SITE-AI-DOCS-01 |
|
||||
| SITE-I18N-DATA-01 | resolved / 已复现 | Language build deletes existing distribution before compilation succeeds | SITE-BUILD-01 |
|
||||
| SITE-CODE-GROUP-01 | resolved / 已复现 | VitePress code-group random IDs make identical site inputs emit different output hashes | SITE-BUILD-01 |
|
||||
| SITE-EDITOR-FAILURE-01 | resolved / 已复现 | Desktop editor evaluates raw TypeScript and cannot settle FileReader errors or boot with denied storage | SITE-03 |
|
||||
| SITE-EDITOR-AMD-01 | resolved / 已复现 | Late Monaco language AMD initialization races with example dependency loading | SITE-03 |
|
||||
@@ -5823,6 +5823,54 @@
|
||||
"test/site-markdown.test.js"
|
||||
],
|
||||
"resolutionRationale": "Installed renderer reproduces random IDs; wrapper stabilizes page/group/tab identity and label associations. Consecutive full builds have equal tree fingerprints and three browser engines verify actual tab selection and visible blocks."
|
||||
},
|
||||
{
|
||||
"id": "SITE-EDITOR-FAILURE-01",
|
||||
"title": "Desktop editor evaluates raw TypeScript and cannot settle FileReader errors or boot with denied storage",
|
||||
"confirmation": "reproduced",
|
||||
"status": "resolved",
|
||||
"owners": [
|
||||
"SITE-03"
|
||||
],
|
||||
"evidence": [
|
||||
"refactor/changes/2026-09-14-SITE-03-desktop-editor.md",
|
||||
"refactor/baselines/site-editor-validation.json",
|
||||
"test/site-editor.test.js",
|
||||
"test/browser/site-editor.spec.js"
|
||||
],
|
||||
"compatibleResolution": "Keep existing UI selectors, preference keys, URL and player/plugin APIs; fix internal initialization, failure and TS execution behavior.",
|
||||
"closureCriteria": "Retain old failure evidence and verify candidate actual editor interactions plus deterministic generation and strict types.",
|
||||
"resolutionEvidence": [
|
||||
"refactor/changes/2026-09-14-SITE-03-desktop-editor.md",
|
||||
"refactor/baselines/site-editor-validation.json",
|
||||
"test/site-editor.test.js",
|
||||
"test/browser/site-editor.spec.js"
|
||||
],
|
||||
"resolutionRationale": "Frozen old-source reproductions and candidate Node/browser tests verify TS emit before execution, settled file errors and storage-denied fallback without changing player APIs."
|
||||
},
|
||||
{
|
||||
"id": "SITE-EDITOR-AMD-01",
|
||||
"title": "Late Monaco language AMD initialization races with example dependency loading",
|
||||
"confirmation": "reproduced",
|
||||
"status": "resolved",
|
||||
"owners": [
|
||||
"SITE-03"
|
||||
],
|
||||
"evidence": [
|
||||
"refactor/changes/2026-09-14-SITE-03-desktop-editor.md",
|
||||
"refactor/baselines/site-editor-validation.json",
|
||||
"test/site-editor.test.js",
|
||||
"test/browser/site-editor.spec.js"
|
||||
],
|
||||
"compatibleResolution": "Keep existing UI selectors, preference keys, URL and player/plugin APIs; fix internal initialization, failure and TS execution behavior.",
|
||||
"closureCriteria": "Retain old failure evidence and verify candidate actual editor interactions plus deterministic generation and strict types.",
|
||||
"resolutionEvidence": [
|
||||
"refactor/changes/2026-09-14-SITE-03-desktop-editor.md",
|
||||
"refactor/baselines/site-editor-validation.json",
|
||||
"test/site-editor.test.js",
|
||||
"test/browser/site-editor.spec.js"
|
||||
],
|
||||
"resolutionRationale": "Initial real WebKit failure retained; await JS/TS language modules before Run and example dependencies. Delayed-module regression passes on all three engines."
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -77,7 +77,7 @@ export function captureSiteInventory() {
|
||||
examples: demo.examples,
|
||||
pages: demo.pages,
|
||||
baselinePaths: { examplesAdded: demo.examples.filter(row => !historical.examples.some(old => old.source === row.source)).map(row => row.source), examplesRemoved: historical.examples.filter(row => !demo.examples.some(now => now.source === row.source)).map(row => row.source), htmlAdded: demo.pages.filter(row => !historical.pages.some(old => old.source === row.source)).map(row => row.source), htmlRemoved: historical.pages.filter(row => !demo.pages.some(now => now.source === row.source)).map(row => row.source) },
|
||||
editorDeclarations: [...read('docs/assets/js/common.js').matchAll(/'\.\/assets\/ts\/([^']+\.d\.ts)'/g)].map(match => ({ file: `docs/assets/ts/${match[1]}`, exists: fs.existsSync(path.join(root, 'docs/assets/ts', match[1])), owner: 'SITE-02' })),
|
||||
editorDeclarations: [...read('packages/artplayer-vitepress/browser/editor-libraries.ts').matchAll(/'\.\/assets\/ts\/([^']+\.d\.ts)'/g)].map(match => ({ file: `docs/assets/ts/${match[1]}`, exists: fs.existsSync(path.join(root, 'docs/assets/ts', match[1])), owner: 'SITE-02' })),
|
||||
scripts: [...scriptFiles, 'scripts/build-site-assets.mjs', ...files('scripts/docs-smoke').filter(file => file.endsWith('.ts')), ...files('scripts/editor-declarations').filter(file => file.endsWith('.ts')), ...files('scripts/documentation').filter(file => file.endsWith('.ts')), ...files('scripts/site-build').filter(file => file.endsWith('.ts')), ...files('packages/artplayer-vitepress/build').filter(file => file.endsWith('.ts')), ...files('packages/artplayer-vitepress/browser').filter(file => file.endsWith('.ts'))].map(file => ({ file, sha256Lf: hash(read(file)) })),
|
||||
generationCommands: Object.fromEntries(Object.entries(json('package.json').scripts).filter(([name]) => /^(?:build:(?:types|ts|test|i18n|docs|llm|all)|ci:build)$/.test(name))),
|
||||
siteManifest: json('packages/artplayer-vitepress/package.json'),
|
||||
|
||||
@@ -10,7 +10,8 @@ SITE-SMOKE-01 后续已将 build:test 拆为 TS 解析、生成和浏览器运
|
||||
|
||||
SITE-LOAD-01 后续修复并抽取共享 loader、移动入口和 Run Code/语言导航,TS
|
||||
来源及生成规则见[浏览器模块](../packages/artplayer-vitepress/browser/README.md)。
|
||||
保留本站点生成/翻译流程和桌面剩余 UI 给 SITE-03,完整内容/页面验收给 SITE-04/05。
|
||||
SITE-AI-DOCS-01/SITE-BUILD-01 已落实生成、翻译草稿和暂存构建;SITE-03 完成
|
||||
桌面 UI 的 TS 模块拆分、实际 TS emit 与资源管理。完整内容/页面验收仍给 SITE-04/05。
|
||||
|
||||
SITE-01 在 `d62ab13a35c756ea567c426d4fbe00d893dd7e2b` 后核对当前源码。
|
||||
可重跑清单见 [site-inventory.json](baselines/site-inventory.json);它登记
|
||||
@@ -57,24 +58,27 @@ SITE-01 在 `d62ab13a35c756ea567c426d4fbe00d893dd7e2b` 后核对当前源码。
|
||||
|
||||
`prod` 是 localStorage 键/勾选项,不是已实现的查询参数;只选择核心产物,
|
||||
不会重写 libs 中的插件路径。`libs` URI 解码后按换行分隔,依扩展名加载 JS/CSS,
|
||||
Promise.all 等待全部完成;这不保证列表中脚本按顺序执行。
|
||||
当前 loader 串行加载并缓存成功 URL,失败允许重试,保留列表依赖顺序。
|
||||
`example` 优先于 `code`;均不存在时桌面取 index.js,移动取 mobile.js。
|
||||
桌面移动重定向保留 location.search。桌面 Run 先发送 `artplayer:example:cleanup`,
|
||||
销毁已有实例再 eval;重启将 libs/code 写入 URL。不要把 TS 模式视为严格类型编译证明。
|
||||
销毁已有实例后在独立经典函数作用域运行;重启将 libs/code 写入 URL。
|
||||
TS 模式先通过实际 Monaco worker 发射 JavaScript,语法错误保留当前实例;
|
||||
语义诊断可见但不作为 Run 的阻断条件,不等于发布级严格类型验收。
|
||||
|
||||
当前编辑器注入 22 个 d.ts(20 个生态包、核心、i18n),逐个 fetch 后 addExtraLib/createModel。
|
||||
来源是核心 public 经 build:types/build:ts,以及各生态包 types 经 build:ts。
|
||||
URL 列表生成在 browser/editor-libraries.ts,build:ts 同步生成 common.js。
|
||||
仅存在性检查不证明请求成功或 Monaco 诊断有效,真实编辑器验收归 EX-03。
|
||||
loadScript 暂时覆盖 window.define:桌面成功/失败均恢复,移动失败分支没有恢复;
|
||||
重复运行和加载失败顺序需要 SITE-03 / EX-03 修复与回归。
|
||||
loadScript 暂时覆盖 window.define 后在成功/失败/取消时恢复。桌面先等待 Monaco
|
||||
实际语言模块就绪,避免其 AMD 加载与外部脚本的临时 define 覆盖竞态。
|
||||
|
||||
## 生成流程和分发
|
||||
|
||||
| 命令/脚本 | 输入 → 输出 | 当前边界/责任 |
|
||||
| --- | --- | --- |
|
||||
| build:types | 核心 public → types | 已有严格生成检查,不手改输出 |
|
||||
| build:ts | 核心及插件声明 → assets/ts、common.js 的 libUris | 大部分语义转换,仍有字符串 fallback;SITE-02 |
|
||||
| build:test | 中文 Run Code → docs/test/test.js | 排除 en/plugin/public/.vitepress;100ms done 只是 smoke,含生成时间戳;SITE-02 |
|
||||
| build:ts | 核心及插件声明 → assets/ts、editor-libraries.ts、生成 UI | 两代编译器整组校验;保持原声明 URL 与选包命令 |
|
||||
| build:test | 中文 Run Code → docs/test/test.js、examples.json | TS 解析生成;按真实 ready/error 清理,覆盖范围见 SITE-SMOKE-01 |
|
||||
| build:i18n | 核心语言源 → dist/i18n、compiled/i18n | SITE-BUILD-01 暂存全套 UMD/ESM 后替换;保留内置语言/辅助排除 |
|
||||
| build:docs | VitePress 源 → docs/document | SITE-BUILD-01 固定 Yarn 子进程、暂存构建、失败回退 |
|
||||
| build:llm | 英文文档、实际编辑器声明、示例、声明 notices → docs/llms.txt + manifest | SITE-AI-DOCS-01 离线可复现;check:llm 只读检查 |
|
||||
|
||||
+5
-2
@@ -4223,11 +4223,14 @@
|
||||
"SITE-AI-DOCS-01",
|
||||
"SITE-BUILD-01"
|
||||
],
|
||||
"status": "todo",
|
||||
"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": []
|
||||
"evidence": [
|
||||
"changes/2026-09-14-SITE-03-desktop-editor.md",
|
||||
"baselines/site-editor-validation.json"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "SITE-04",
|
||||
|
||||
@@ -34,6 +34,11 @@ CORE-25 默认选项缺陷已修复并通过相同三 Node 与严格打包检查
|
||||
|
||||
## 验证记录
|
||||
|
||||
SITE-03 新增根开发依赖 `monaco-editor@0.30.1`,仅为桌面编辑器提供与既有
|
||||
Monaco 浏览器资产匹配的精确 API 类型。只使用 type import,不替换 vendor
|
||||
或加入播放器产物;root yarn.lock 仅增加该版本的一个条目。新增
|
||||
`yarn test:site-editor` 验证编辑器状态/读取失败;浏览器检查仍使用原 assets/js/vs。
|
||||
|
||||
ENG-01 的 [npm 验证报告](baselines/toolchain-validation.json) 是切换前历史证据,不代表 Yarn 已验证。[Yarn 验证报告](baselines/yarn-validation.json) 记录最终干净冻结安装、20 项 Node 测试、21 库包 63 产物及文档站构建全部通过;63 产物 SHA-256 与 ENG-01 完全相同。保留的旧锁条目版本变化为零,9 个 workspace runtime 依赖解析与 npm 基线一致。搜索 peer 警告由 SITE-05 接续验证。
|
||||
|
||||
构建通过不代表运行时、类型、真实浏览器或 npm 发布验收已完成。Chrome 不可用时按 release-reviews.md 使用内置浏览器并注明实际环境。
|
||||
Reference in new issue
Block a user