|
1 | 1 | { |
2 | | - "fromTag": "9.5.0", |
| 2 | + "fromTag": "9.5.1", |
3 | 3 | "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 | + ], |
4 | 146 | "9.5.1": [ |
5 | 147 | { |
6 | 148 | "pr": "18419", |
|
0 commit comments