v53.3.10
1af4d23by @github-actions[bot] – Preserve HTML escaping when serializing editor content
dfe6805by @github-actions[bot] – Preserve equation output while ignoring unrelated XML
12a034fby @github-actions[bot] – Updatedslate-react.
Published @platejs/test-utils@53.3.10.
- Updated
@platejs/core,@platejs/slate.
- Updated
@platejs/core,@platejs/slate,@platejs/utils.
Full changelog: v53.3.9...v53.3.10
v5.2.9
5.2.9 (2026-09-04)
- Ads: Don't drop SVTA signaling of preloaded assets (#10520) (0659769)
- Ads: Report an ad that reaches its playout limit as complete (#10521) (9422a89)
- device: Ban changeType on Opera for macOS (#10514) (be3ec24)
- offline: Avoid DRM license removal failure (#10510) (3578859)
- offline: Avoid orphaned DRM sessions on removal failure (#10511) (1ed2672)
- Parse closed captions after transmuxing (#10499) (098a559)
- Prevent run-ahead throttling from starving frame-sized segments (#10496) (d248462)
- Reduce unnecessary error calls (#10501) (8a29e0d)
- Release XHR handlers once the request is done (#10506) (36617a7)
- Transmuxer: Fix infinite loop and dropped frames in MPEG audio (#10529) (a0a4c64)
v5.1.22
5.1.22 (2026-09-04)
- Ads: Don't drop SVTA signaling of preloaded assets (#10520) (dc05cc7)
- Ads: Report an ad that reaches its playout limit as complete (#10521) (3e79a44)
- device: Ban changeType on Opera for macOS (#10514) (075dbe3)
- offline: Avoid DRM license removal failure (#10510) (9950022)
- offline: Avoid orphaned DRM sessions on removal failure (#10511) (0390b07)
- Parse closed captions after transmuxing (#10499) (5449953)
- Prevent run-ahead throttling from starving frame-sized segments (#10496) (6493555)
- Reduce unnecessary error calls (#10501) (a7c41c7)
- Release XHR handlers once the request is done (#10506) (d26f7ab)
@joint/core@4.3.3
- mvc.Collection - store cids in a map separate from ids, so a model id in the cid namespace (e.g.
'c12') is never shadowed by another model's auto-generated cid — previouslygraph.getCell()could return the wrong cell or a newly added cell could be silently merged away as a duplicate (f7455fd9)
@joint/router-avoid@4.3.3
- RouterService - a
routeAll()/routeSubgraph()pass still queued whenstart()is called now resolves ascancelledinstead of running afterstart()'s full sync and resetting the engine to the pass's subset under the live graph listener - a crash path, since the listener referencing an element the engine no longer held aborted the WASM module irrecoverably (f66524f5) - MainThreadProvider - fire
processed(and so the RouterServiceidleevent) after every incremental change, not only after a full sync, matching the Worker provider's behaviour (9651d0d4) - Updated dependencies (f7455fd9)
- @joint/core@4.3.3
v2.22.0
- [BREAKING] Store frustum planes in a typed array by @mvaligursky in #9196
- [BREAKING] Remove wire drawing methods from
AppBaseby @mvaligursky in #9289
- Remove
Scene#forcePassThroughSpecularcompatibility flag by @mvaligursky in #9250 - Remove passive event listener detection and
platform.passiveEventsby @willeastcott in #9252 - Remove unused
BatchManager#clonemethod by @mvaligursky in #9106 - Add dual-source blending support by @mvaligursky in #9096
- Add
Camera.projectionOffsetfor off-center (shift lens) projection by @mvaligursky in #9098 - Add
RenderTargetorigin option, deprecateflipYby @mvaligursky in #9101 - Expose Bayer 2/4 dither modes and add Bayer 16 dither mode by @mvaligursky in #9117
- Add shadow pass support for
ShaderMaterialusing#includeby @mvaligursky in #9116 - Cull omni shadow casters against all six faces in a single pass by @mvaligursky in #9194
- Cull mesh instances by their bounding box instead of bounding sphere by @mvaligursky in #9197
- Add flat shading support by @mvaligursky in #9191
- Flat shade glTF primitives without vertex normals by @mvaligursky in #9193
- Add
shadowCascadeMaskto the render component by @mvaligursky in #9195 - Add
shadowCascadeMaskin batch by @AlexAPPi in #9104 - Configurable maximum number of clustered lights by @mvaligursky in #9188
- Add volumetric fog support for clustered omni and spot lights by @mvaligursky in #9137
- Support refraction without the metalness workflow by @mvaligursky in #9147
- Add independent blending for multiple render targets by @mvaligursky in #9140
- Add per-attachment clear colors for multiple render targets by @mvaligursky in #9142
- Add clear support for integer format color attachments by @mvaligursky in #9143
- Render the scene depth from the scene pass, replacing the depth prepass where possible by @mvaligursky in #9174
- Support writing the scene textures from the forward pass by @mvaligursky in #9166
- Add
SceneDepthReaderfor reading a camera's scene depth to the CPU by @mvaligursky in #9274 - Add a scene depth mode to
CameraFramedebug rendering by @mvaligursky in #9182 - Wire
alphaToCoverageinto the WebGPU render pipeline state by @mvaligursky in #9208 - Add
sample_maskbuiltin support to WGSL fragment shaders by @mvaligursky in #9222 - Add
samplesoption toTexturefor multisampled textures on WebGPU by @mvaligursky in #9217 - Support multisampled texture bindings in WGSL reflection and bind groups by @SashaRX in #9167
- Support multisampled color buffers and custom resolves on
RenderTargetby @mvaligursky in #9221 - Support multisampled depth buffers and depth resolve targets on
RenderTargetby @mvaligursky in #9230 - Add
RenderTarget.depthResolveModecontrolling multisampled depth resolve by @mvaligursky in #9226 - Support blendable and R/RG float formats in
getRenderableHdrFormatby @mvaligursky in #9164 - Expose
textureFloatBlendablecapability on all devices by @mvaligursky in #9160 - Support the
RG32Ftexture format on WebGL by @mvaligursky in #9218 - Add readonly detection for the WebGPU subgroup-size-control feature by @mvaligursky in #9158
- Fix parallax mapping correctness and promote to public by @mvaligursky in #9207
- Add parallax occlusion mapping as an opt-in parallax mode by @mvaligursky in #9213
- Add soft self shadowing to parallax occlusion mapping by @mvaligursky in #9225
- Add
heightMapBaseto unify the parallax zero level across modes by @mvaligursky in #9245 - Add
WireRendererfor wireframe debug shapes and a debug examples category by @mvaligursky in #9288 - Add
AppOptions.physicsWorldfor explicit physics backend selection by @willeastcott in #9266 - Add
timeScaleand publicstep()toRigidBodyComponentSystemby @willeastcott in #9300 - Wake constrained bodies when a joint constraint is created or destroyed by @willeastcott in #9177
- Add justified text support to text elements by @mvaligursky in #9185
- Allow typed arrays in geometry and mesh data APIs by @mvaligursky in #9121
- Add support for transform feedback separate buffer mode by @AlexAPPi in #9109
- Support multiple transform feedback buffers by @mvaligursky in #9131
- Add rotation attribute to the
ProceduralSkyscript by @mvaligursky in #9150 - Detach element component graph nodes on destroy by @mvaligursky in #9183
- Release application references on destroy by @mvaligursky in #9190
- Destroy the asset registry with the application by @mvaligursky in #9189
- Relocate deprecated API shims so the ESM engine tree-shakes by @willeastcott in #9251
- Remove WebGL1-era POT checks from texture mipmap upload and
gpuSizeby @willeastcott in #9262 - Use
Geometry#calculateTangentsin procedural geometry subclasses by @willeastcott in #9253 - Stop the
Shaderconstructor modifying the supplied definition by @willeastcott in #9281
- Error-driven GSplat LOD selection with a derived fallback by @mvaligursky in #9233
- Add a LOD mode and per-splat detail falloff for streamed GSplats by @mvaligursky in #9267
- Gaussian splats write the scene depth by @mvaligursky in #9175
- Add
scene.gsplat.useTonemapto opt GSplats out of tonemapping and exposure by @mvaligursky in #9229 - Use
shadowCasterPSchunk for gsplat shadow output by @mvaligursky in #9119 - Fix unified CPU splat sort for non-uniformly scaled splats by @AriaLian in #9268
- Fix stale gsplat projector pipeline after a
dataFormatswap by @mvaligursky in #9269 - Fix gsplat rendering on Firefox/Windows WebGPU by @mvaligursky in #9148
- Fix SOG parsers throwing when a load completes after app teardown by @mvaligursky in #9232
- Fix radix sort value buffer rotation with initial values by @slimbuck in #9276
- Fix blending disabled when generating SOG centers into an integer render target by @slimbuck in #9224
- Fix inverted normal mapping on WebGPU (derivative TBN) by @mvaligursky in #9099
- Fix MSDF coverage ramp exceeding field range at small sizes by @willeastcott in #9100
- Fix reported WebGPU sampled texture limit by @mvaligursky in #9103
- Discard out of range depth in VSM shadow casters by @mvaligursky in #9124
- Fix
textureBiasredefinition in tiled nine-slice shaders by @mvaligursky in #9129 - Fix the bright outline around MSDF text glyphs by @mvaligursky in #9139
- Fix vertex array object cache key collisions by @mvaligursky in #9127
- Fix instancing/draw-commands mismatch skipping indirect draws by @mvaligursky in #9159
- Fix phantom sampler binding for a trailing texture in WGSL reflection by @mvaligursky in #9198
- Fix
ScriptComponentclone dropping scripts awaiting their script type by @mvaligursky in #9200 #9201 #9202 #9203 #9204 - Fix
AnimationComponentleaking asset event handlers by @mvaligursky in #9141 - Fix component event leak when removing an enabled component by @mvaligursky in #9145
- Fix layer event leak when the scene layer composition is replaced by @mvaligursky in #9146
- Fix
XrMenurendering outside of XR sessions by @willeastcott in #9155 - Fix looping sounds that specify a start time and duration by @willeastcott in #9231
- Correct sound duration and playback timing by @mvaligursky in #9249
- Fix inverted entity name guard in
AnimComponentBinderby @willeastcott in #9187 - Fix volumetric fog missing for one frame after a canvas resize by @mvaligursky in #9283
- Fix
'set:outline'event reporting the text color by @willeastcott in #9260 - Handle
mapAsyncrejection when the WebGPU device is lost by @mvaligursky in #9115 - Fix
ComponentSystemRegistry.removeleaving the system in the list by @willeastcott in #9280 - Settle the WebGL texture read when the device is destroyed by @mvaligursky in #9275
- Recalculate particle local bounds when the spawn volume changes by @mvaligursky in #9192
- Anchor the AppleWebKit 15.4 antialias workaround UA match by @willeastcott in #9265
- Add VAT character crowd rendering scripts and example by @mvaligursky in #9123
- Add catapult siege demo example by @mvaligursky in #9130
- Add a parallax terrain example by @mvaligursky in #9223
- Support multiple transform feedback buffers and add a visual example by @mvaligursky in #9131
- Point the downtown example at a single full-scene streamed SOG bundle by @mvaligursky in #9290
- Make the examples MiniStats toggle drive example-owned instances by @mvaligursky in #9292
- Fix painter example render target orientation across APIs by @mvaligursky in #9108
- Update all npm dependencies (major) by @renovate[bot] in #9056
- @AlexAPPi
- @AriaLian
- @kpal81xd
- @mvaligursky
- @SashaRX
- @slimbuck
- @willeastcott
- @SashaRX made their first contribution in #9167
- @AriaLian made their first contribution in #9268
Full Changelog: https://github.com/playcanvas/engine/compare/v2.21.4...v2.22.0
v3.31.3
- Fixed a bug which allowed potentially unsafe color values being sent by other clients. Those unsafe colors received from collaboration users are now ignored.
- Fix a TypeScript error (TS2694) in the shipped type declarations when
skipLibCheckis turned off.