Files
workinf_Blender_Wasm/docs/web/deployment-contract.json
mes123456 d1e6b63d54
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
chore: checkpoint web Blender feature-gap work, docs and tests
- update native web_engine sources and rebuilt wasm artifacts
- add task cards, status notes and tooling scripts
- add web e2e specs, tutorial UI sources and tutorial assets
- sync golden task manifests and audit records

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-11-11 10:46:55 +08:00

89 lines
3.3 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"
},
"rangeRequests": {
"extensions": [".wasm", ".blend", ".nvdb"],
"unit": "bytes",
"singleRangeOnly": true,
"etag": "strong-sha256",
"satisfiedStatus": 206,
"unsatisfiedStatus": 416,
"requiredSatisfiedHeaders": ["Accept-Ranges", "Content-Range", "Content-Length", "ETag"],
"ifRangeMismatch": "return-full-200"
}
}