Skip to content

Commit ae80221

Browse files
author
Babylon.js Platform
committed
Version update 9.5.2
1 parent a7ed279 commit ae80221

50 files changed

Lines changed: 371 additions & 277 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.build/changelog.json

Lines changed: 143 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,148 @@
11
{
2-
"fromTag": "9.5.0",
2+
"fromTag": "9.5.1",
33
"changelog": {
4+
"9.5.2": [
5+
{
6+
"pr": "18424",
7+
"title": "fix(build): output ES6 bundles to dist/ instead of package root",
8+
"description": "The webpack-to-rollup migration (https://github.com/BabylonJS/Babylon.js/pull/18415) left the outputPath option unset for @babylonjs/* ES6 packages. The rollup helper defaults to process.cwd() (root), but package.json declares main/files in dist/.\r\nResult: npm publish ships only the .d.ts — no JS bundle.\r\n\r\nAffected packages (broken since 9.5.1):\r\n- [@babylonjs/gui-editor](https://www.npmjs.com/package/@babylonjs/gui-editor)\r\n- [@babylonjs/node-editor](https://www.npmjs.com/package/@babylonjs/node-editor)\r\n- [@babylonjs/node-geometry-editor](https://www.npmjs.com/package/@babylonjs/node-geometry-editor)\r\n- [@babylonjs/node-particle-editor](https://www.npmjs.com/package/@babylonjs/node-particle-editor)\r\n- [@babylonjs/node-render-graph-editor](https://www.npmjs.com/package/@babylonjs/node-render-graph-editor)\r\n- [@babylonjs/accessibility](https://www.npmjs.com/package/@babylonjs/accessibility)\r\n\r\nFix: change the helper default to resolve('./dist'). All UMD packages already override with path.resolve('.') and are unaffected.\r\n\r\nAn alternative per-config fix (adding outputPath to each of the 7 ES6 rollup configs) was considered but rejected as it wouldn't prevent the same omission in future packages.",
9+
"author": {
10+
"name": "amirt01",
11+
"url": "https://github.com/amirt01"
12+
},
13+
"files": [
14+
"packages/public/rollupUMDHelper.mjs"
15+
],
16+
"tags": []
17+
},
18+
{
19+
"pr": "18422",
20+
"title": "Harden babylon-server dev CDN freshness",
21+
"description": "## Summary\n\nThis updates the local `@tools/babylon-server` CDN flow so it serves freshly built dev UMD bundles and complete Playground declaration files after the Vite migration.\n\nThe main issue is that root `build:umd` and the babylon-server fast dev build write to the same UMD output locations. That made file existence an unreliable readiness check: stale or mixed UMD artifacts could still be served, which is how runtime issues such as `Class constructor DynamicTexture cannot be invoked without 'new'` could be masked by running `npm run build:umd`.\n\n## Changes\n\n- Replace the UMD existence check with a strict dev-server stamp/freshness check.\n- Stamp bundles after startup builds and watcher rebuilds, and rebuild when stamps are missing, stale, or the served file was modified outside the dev-server path.\n- Keep dev-fast Rollup aliases pointed at source for packages that failed after clean because their `dist` inputs were missing, while keeping production behavior pointed at `dist`.\n- Watch shared UI and KTX2 type dependencies so running dev servers rebuild every affected UMD package when shared inputs change.\n- Add a declaration guard that refreshes declaration inputs, runs the Playground declaration combiner, and rejects missing/incomplete outputs.\n- Add inspector-v2 declaration generation and route handling, with true `.d.ts` 404 responses to avoid Vite HTML fallback poisoning Monaco.\n- Keep the glTF2 interface declaration as a narrow static declaration exception.\n- Make `CDN_PORT` validation strict and set Vite `strictPort: true`.\n- Type the sample scene without pulling Babylon core source into the server package.\n\n## Validation\n\n- `node packages/tools/babylonServer/scripts/ensureDeclarationBuilds.mjs`\n- `node packages/tools/babylonServer/scripts/ensureDeclarationBuilds.mjs --dry-run`\n- `node packages/tools/babylonServer/scripts/ensureUmdBuilds.mjs`\n- `node packages/tools/babylonServer/scripts/ensureUmdBuilds.mjs --dry-run`\n- Focused `prettier --check` across changed files\n- Focused `eslint --quiet` across changed scripts/configs/scene sample\n- VS Code diagnostics: no errors in changed TypeScript/script files\n\nNote: `npx tsc -p packages/tools/babylonServer/tsconfig.build.json --noEmit --pretty false` still fails on the existing package config because `vite.config.ts` is outside `rootDir` while the default include pattern includes it.",
22+
"author": {
23+
"name": "RaananW",
24+
"url": "https://github.com/RaananW"
25+
},
26+
"files": [
27+
"packages/public/umd/babylonjs-gui-editor/rollup.config.umd.mjs",
28+
"packages/public/umd/babylonjs-inspector-v2/rollup.config.umd.mjs",
29+
"packages/public/umd/babylonjs-inspector/rollup.config.umd.mjs",
30+
"packages/public/umd/babylonjs-ktx2decoder/rollup.config.umd.mjs",
31+
"packages/public/umd/babylonjs-node-editor/rollup.config.umd.mjs",
32+
"packages/public/umd/babylonjs-node-geometry-editor/rollup.config.umd.mjs",
33+
"packages/public/umd/babylonjs-node-particle-editor/rollup.config.umd.mjs",
34+
"packages/public/umd/babylonjs-node-render-graph-editor/rollup.config.umd.mjs",
35+
"packages/tools/babylonServer/declarationConfigDev.json",
36+
"packages/tools/babylonServer/package.json",
37+
"packages/tools/babylonServer/scripts/ensureDeclarationBuilds.mjs",
38+
"packages/tools/babylonServer/scripts/ensureUmdBuilds.mjs",
39+
"packages/tools/babylonServer/src/sceneTs.ts",
40+
"packages/tools/babylonServer/vite.config.ts"
41+
],
42+
"tags": [
43+
"enhancement",
44+
"build"
45+
]
46+
},
47+
{
48+
"pr": "18416",
49+
"title": "fix(pipelines): replace BASIC_AUTH with DEPLOY_TOKEN for API token auth",
50+
"description": "> 🤖 *This PR was created by the create-pr skill.*\n\n## Summary\n\nMigrates the deployment server authorization from Basic Auth to API token-based auth.\n\n## Changes\n\n- Replaced `BASIC_AUTH` variable with `DEPLOY_TOKEN` across all pipeline files\n- Updated all curl `Authorization` headers from `$(BASIC_AUTH)` to `Bearer $(DEPLOY_TOKEN)`\n- Updated the `BabylonJS-Deployment` variable group documentation in `VARIABLE-GROUPS.md`\n\n## Files changed\n\nAll changes are in `.azure-pipelines/`:\n- `ci-monorepo.yml`\n- `ci-browser-testing.yml` \n- `ci-playground-sandbox.yml`\n- `ci-graph-tools.yml`\n- `cd-tools.yml`\n- `cd-publish.yml`\n- `templates/deploy-tool.yml`\n- `templates/check-snapshot-exists.yml`\n- `templates/upload-test-results.yml`\n- `VARIABLE-GROUPS.md`\n\n## Action required\n\nUpdate the `BabylonJS-Deployment` Azure DevOps variable group: rename `BASIC_AUTH` to `DEPLOY_TOKEN` and store the raw API token value (the `Bearer` prefix is now in the pipeline YAML).",
51+
"author": {
52+
"name": "RaananW",
53+
"url": "https://github.com/RaananW"
54+
},
55+
"files": [
56+
".azure-pipelines/VARIABLE-GROUPS.md",
57+
".azure-pipelines/cd-publish.yml",
58+
".azure-pipelines/cd-tools.yml",
59+
".azure-pipelines/ci-browser-testing.yml",
60+
".azure-pipelines/ci-graph-tools.yml",
61+
".azure-pipelines/ci-monorepo.yml",
62+
".azure-pipelines/ci-playground-sandbox.yml",
63+
".azure-pipelines/templates/check-snapshot-exists.yml",
64+
".azure-pipelines/templates/deploy-tool.yml",
65+
".azure-pipelines/templates/upload-test-results.yml"
66+
],
67+
"tags": []
68+
},
69+
{
70+
"pr": "18413",
71+
"title": "Fix NodeMaterial SSS with clustered lights",
72+
"description": "> 🤖 *This PR was created by the create-pr skill.*\n\n## Summary\n- Fix NodeMaterial PBR shader generation so subsurface-scattering declarations are emitted before clustered/direct-light helper functions that depend on them.\n- Prepare clustered-light tile-mask resources according to shader language so WebGPU WGSL effects use `tileMaskBuffer`.\n- Keep WebGPU clustered-light runtime binding on the storage-buffer path; the WebGPU NodeMaterial repro should load the snippet as WGSL instead of relying on a GLSL texture fallback.\n- Bind a default empty texture for WebGPU `TextureBlock` and `ImageSourceBlock` resources that have no texture assigned, preventing bind group creation failures.\n- Propagate material shader language through materials-library clustered-light preparation.\n\n## Motivation\nThe forum repro at https://forum.babylonjs.com/t/nodematerial-compile-error-when-using-sub-surface-scattering-with-clustered-lights/63299 failed with NodeMaterial subsurface scattering and clustered lights.\n\nFor the WebGPU playground repro (`#CSCJO2#97`), the NodeMaterial snippet must be loaded as WGSL, for example by passing `{ shaderLanguage: BABYLON.ShaderLanguage.WGSL }` to `NodeMaterial.ParseFromSnippetAsync`. This preserves the WebGPU clustered-light fast path (`tileMaskBuffer`, batch size 32) instead of adding a slower GLSL texture fallback.\n\n## Validation\n- Added unit coverage for NodeMaterial SSS clustered-light shader ordering.\n- Added unit coverage for clustered-light tile-mask sampler/buffer selection.\n- Added unit coverage for WebGPU default texture binding for missing `TextureBlock` and `ImageSourceBlock` resources.\n- Verified the WebGPU playground repro locally with the snippet loaded as WGSL, clustered lights using `tileMaskBuffer`, and WebGPU batch size remaining 32.",
73+
"author": {
74+
"name": "Popov72",
75+
"url": "https://github.com/Popov72"
76+
},
77+
"files": [
78+
"packages/dev/core/src/Lights/Clustered/clusteredLightContainer.ts",
79+
"packages/dev/core/src/Materials/Background/backgroundMaterial.ts",
80+
"packages/dev/core/src/Materials/Node/Blocks/Dual/imageSourceBlock.ts",
81+
"packages/dev/core/src/Materials/Node/Blocks/Dual/lightBlock.ts",
82+
"packages/dev/core/src/Materials/Node/Blocks/Dual/textureBlock.ts",
83+
"packages/dev/core/src/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.ts",
84+
"packages/dev/core/src/Materials/PBR/openpbrMaterial.ts",
85+
"packages/dev/core/src/Materials/PBR/pbrBaseMaterial.ts",
86+
"packages/dev/core/src/Materials/materialHelper.functions.ts",
87+
"packages/dev/core/src/Materials/standardMaterial.ts",
88+
"packages/dev/core/test/unit/Lights/Clustered/clusteredLightContainer.test.ts",
89+
"packages/dev/core/test/unit/Materials/Node/Blocks/pbrMetallicRoughnessBlock.test.ts",
90+
"packages/dev/core/test/unit/Materials/Node/Blocks/textureBlock.test.ts",
91+
"packages/dev/core/test/unit/Materials/materialHelper.functions.test.ts",
92+
"packages/dev/materials/src/cell/cellMaterial.ts",
93+
"packages/dev/materials/src/fur/furMaterial.ts",
94+
"packages/dev/materials/src/gradient/gradientMaterial.ts",
95+
"packages/dev/materials/src/lava/lavaMaterial.ts",
96+
"packages/dev/materials/src/mix/mixMaterial.ts",
97+
"packages/dev/materials/src/normal/normalMaterial.ts",
98+
"packages/dev/materials/src/shadowOnly/shadowOnlyMaterial.ts",
99+
"packages/dev/materials/src/simple/simpleMaterial.ts",
100+
"packages/dev/materials/src/terrain/terrainMaterial.ts",
101+
"packages/dev/materials/src/triPlanar/triPlanarMaterial.ts",
102+
"packages/dev/materials/src/water/waterMaterial.ts"
103+
],
104+
"tags": [
105+
"bug",
106+
"rendering engine"
107+
]
108+
},
109+
{
110+
"pr": "18421",
111+
"title": "Use POST for CDN purge requests",
112+
"description": "## Summary\n- Explicitly send CDN purge requests to the deployment server with `POST`\n- Update both the monorepo CDN purge step and the shared tool deployment template\n- Update the disabled SFE example to avoid reintroducing implicit GET by copy/paste\n\n## Validation\n- `git --no-pager diff --check`\n- VS Code diagnostics for edited YAML files",
113+
"author": {
114+
"name": "RaananW",
115+
"url": "https://github.com/RaananW"
116+
},
117+
"files": [
118+
".azure-pipelines/cd-tools.yml",
119+
".azure-pipelines/ci-monorepo.yml",
120+
".azure-pipelines/templates/deploy-tool.yml"
121+
],
122+
"tags": []
123+
},
124+
{
125+
"pr": "18420",
126+
"title": "Add Bevel node to Node Geometry Editor",
127+
"description": "## Summary\n- Adds a new `BevelBlock` for Node Geometry with Blender-style controls: `amount`, `segments`, and degree-based `angle`.\n- Handles Babylon's triangle-only geometry by welding source positions, selecting hard manifold edges by angle, merging coplanar clipped source faces, and generating bevel strips/corner patches with normals.\n- Wires the Bevel node into core exports and the Node Geometry Editor block factory/node list.\n- Adds focused unit coverage and a Playwright/Vite visual render helper with Standard, MatCap, and Normals modes.\n\n## Validation\n- `npx vitest run --project=unit packages/dev/core/test/unit/Meshes/Node/bevelBlock.test.ts`\n- `npx eslint --quiet --no-warn-ignored --cache -- packages/dev/core/src/Meshes/Node/Blocks/bevelBlock.ts packages/dev/core/test/unit/Meshes/Node/bevelBlock.test.ts packages/dev/core/test/visualization/Node/bevelBlock.render.mjs packages/dev/core/src/Meshes/Node/index.ts packages/tools/nodeGeometryEditor/src/blockTools.ts packages/tools/nodeGeometryEditor/src/components/nodeList/nodeListComponent.tsx`\n- `npm run compile -w @dev/core`\n- `npm run compile -w @tools/node-geometry-editor`\n- Visual helper smoke test: `BEVEL_RENDER_MODE=normals node .\\packages\\dev\\core\\test\\visualization\\Node\\bevelBlock.render.mjs`\r\n",
128+
"author": {
129+
"name": "deltakosh",
130+
"url": "https://github.com/deltakosh"
131+
},
132+
"files": [
133+
"packages/dev/core/src/Meshes/Node/Blocks/bevelBlock.ts",
134+
"packages/dev/core/src/Meshes/Node/index.ts",
135+
"packages/dev/core/test/unit/Meshes/Node/bevelBlock.test.ts",
136+
"packages/dev/core/test/visualization/Node/bevelBlock.render.mjs",
137+
"packages/tools/nodeGeometryEditor/src/blockTools.ts",
138+
"packages/tools/nodeGeometryEditor/src/components/nodeList/nodeListComponent.tsx"
139+
],
140+
"tags": [
141+
"new feature",
142+
"nge"
143+
]
144+
}
145+
],
4146
"9.5.1": [
5147
{
6148
"pr": "18419",

0 commit comments

Comments
 (0)