- 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>
139 lines
3.6 KiB
JSON
139 lines
3.6 KiB
JSON
{
|
|
"schemaVersion": 1,
|
|
"product": "Web Blender Modeler V1",
|
|
"browserScope": "Chromium",
|
|
"privateDeployment": {
|
|
"scope": "current Linux host, single authorized user",
|
|
"usernameEnvironment": "WEB_BLENDER_USERNAME",
|
|
"defaultUsername": "owner",
|
|
"passwordEnvironment": "WEB_BLENDER_PASSWORD",
|
|
"authentication": "HTTP Basic over HTTPS",
|
|
"productionIngress": "HTTPS reverse proxy preserving Host and Authorization; HTTP listener remains loopback by default",
|
|
"unauthenticatedExternalBinding": "reject",
|
|
"authenticatedCacheControl": "private, no-store",
|
|
"crossOriginMutation": "reject",
|
|
"validation": "NOT_RUN",
|
|
"acceptance": "NOT_CLAIMED"
|
|
},
|
|
"transport": {
|
|
"production": "https",
|
|
"localDevelopment": "http://127.0.0.1",
|
|
"fileProtocolSupported": false,
|
|
"sameOriginRuntimeAssets": true
|
|
},
|
|
"methods": [
|
|
"GET",
|
|
"HEAD"
|
|
],
|
|
"serverOperator": {
|
|
"path": "/api/server-operator-job",
|
|
"methods": [
|
|
"GET",
|
|
"POST"
|
|
],
|
|
"actions": {
|
|
"describe": "POST",
|
|
"submit": "POST",
|
|
"read": "GET|POST",
|
|
"cancel": "POST"
|
|
},
|
|
"cacheControl": "no-store",
|
|
"configuration": [
|
|
"BLENDER_BIN",
|
|
"PYTHON_BIN",
|
|
"SERVER_OPERATOR_WORKSPACE_ROOT"
|
|
]
|
|
},
|
|
"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'; 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'"
|
|
},
|
|
"routes": [
|
|
{
|
|
"id": "entry-document",
|
|
"patterns": [
|
|
"/",
|
|
"/index.html"
|
|
],
|
|
"cacheControl": "no-cache"
|
|
},
|
|
{
|
|
"id": "runtime-manifest",
|
|
"patterns": [
|
|
"/engine-manifest.json"
|
|
],
|
|
"cacheControl": "no-cache"
|
|
},
|
|
{
|
|
"id": "content-hashed-assets",
|
|
"patterns": [
|
|
"/assets/*"
|
|
],
|
|
"cacheControl": "public, max-age=31536000, immutable"
|
|
},
|
|
{
|
|
"id": "stable-engine-assets",
|
|
"patterns": [
|
|
"/vendor/blender/*"
|
|
],
|
|
"cacheControl": "no-cache"
|
|
},
|
|
{
|
|
"id": "fallback",
|
|
"patterns": [
|
|
"*"
|
|
],
|
|
"cacheControl": "no-cache"
|
|
}
|
|
]
|
|
},
|
|
"mimeTypes": {
|
|
".html": "text/html; charset=utf-8",
|
|
".js": "text/javascript; charset=utf-8",
|
|
".css": "text/css; charset=utf-8",
|
|
".wasm": "application/wasm",
|
|
".json": "application/json; charset=utf-8",
|
|
".svg": "image/svg+xml",
|
|
".png": "image/png",
|
|
".jpg": "image/jpeg",
|
|
".jpeg": "image/jpeg",
|
|
".webp": "image/webp",
|
|
".ttf": "font/ttf",
|
|
".otf": "font/otf",
|
|
".woff": "font/woff",
|
|
".woff2": "font/woff2",
|
|
".wav": "audio/wav",
|
|
".mp3": "audio/mpeg",
|
|
".ogg": "audio/ogg",
|
|
".mp4": "video/mp4",
|
|
".webm": "video/webm",
|
|
".blend": "application/octet-stream",
|
|
".nvdb": "application/x-nanovdb",
|
|
".vtt": "text/vtt; charset=utf-8"
|
|
},
|
|
"rangeRequests": {
|
|
"extensions": [
|
|
".wasm",
|
|
".blend",
|
|
".nvdb",
|
|
".mp4",
|
|
".webm"
|
|
],
|
|
"unit": "bytes",
|
|
"singleRangeOnly": true,
|
|
"etag": "strong-sha256",
|
|
"satisfiedStatus": 206,
|
|
"unsatisfiedStatus": 416,
|
|
"requiredSatisfiedHeaders": [
|
|
"Accept-Ranges",
|
|
"Content-Range",
|
|
"Content-Length",
|
|
"ETag"
|
|
],
|
|
"ifRangeMismatch": "return-full-200"
|
|
}
|
|
}
|