feat(web): finish RE 5000PBR lesson video and fix non-ASCII GLB import
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled

- Add 11:07 Chinese-narrated lesson video, VTT, poster and 13 chapter screenshots.
- Regenerate 20-render WebGL2 matrix and 15 operation captures on RTX 4060.
- Fix WASM staging for non-ASCII import filenames (猴头.glb); rebuild web_engine.
- Harden lesson video recording pipeline; fix stale lesson-link E2E selector.
- Add RE PBR derived libraries, lesson page, evidence and status report.

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
mes123456
2026-11-12 21:49:24 +08:00
parent a078648297
commit d5dd647881
276 changed files with 9632 additions and 314 deletions

View File

@@ -23,7 +23,7 @@ assert.deepEqual(contract.responseHeaders.allResponses, {
"Cross-Origin-Opener-Policy": "same-origin",
"Cross-Origin-Embedder-Policy": "require-corp",
"Cross-Origin-Resource-Policy": "same-origin",
"Content-Security-Policy": "default-src 'self'; script-src 'self' 'wasm-unsafe-eval'; worker-src 'self'; connect-src 'self'; font-src 'self'; img-src 'self' blob:; media-src 'self' blob:; object-src 'none'; base-uri 'none'; frame-ancestors 'none'",
"Content-Security-Policy": "default-src 'self'; script-src 'self' 'wasm-unsafe-eval'; style-src 'self'; style-src-attr 'unsafe-inline'; worker-src 'self'; connect-src 'self'; font-src 'self'; img-src 'self' blob:; media-src 'self' blob:; object-src 'none'; base-uri 'none'; frame-ancestors 'none'",
});
const routes = Object.fromEntries(contract.responseHeaders.routes.map((route) => [route.id, route]));
assert.deepEqual(routes["entry-document"], { id: "entry-document", patterns: ["/", "/index.html"], cacheControl: "no-cache" });
@@ -52,11 +52,12 @@ for (const [extension, mime] of Object.entries({
".ogg": "audio/ogg",
".mp4": "video/mp4",
".webm": "video/webm",
".vtt": "text/vtt; charset=utf-8",
".blend": "application/octet-stream",
".nvdb": "application/x-nanovdb",
})) assert.equal(contract.mimeTypes[extension], mime, `${extension} MIME drifted`);
assert.deepEqual(contract.rangeRequests.extensions, [".wasm", ".blend", ".nvdb"]);
assert.deepEqual(contract.rangeRequests.extensions, [".wasm", ".blend", ".nvdb", ".mp4", ".webm"]);
assert.equal(contract.rangeRequests.unit, "bytes");
assert.equal(contract.rangeRequests.singleRangeOnly, true);
assert.equal(contract.rangeRequests.etag, "strong-sha256");