2 hours ago
next.js

v16.4.0-canary.21

Misc Changes

  • Bump to swc v78: #98268
  • Create next.config.ts when generating apps with pnpm new-test: #98364
  • test(evals): accept LayoutProps in App Router migration: #98365
  • [test] Run deploy tests against local JavaScript changes by default: #98353
  • [test] Resolve workspace:* packages to the version under test: #98330
  • turbo-tasks: explicit GC root anchoring + cross-session orphan reclamation: #96857
  • [PPF] Fix missing runtime-follow up if hints are stale: #98278
  • Instant validation for caches excluded from prerenders: #98342
  • [PPF] Model caches with stale < MIN_SHELL_STALE as prefetch-only data: #98339
  • docs: document excluding content from a prefetch in the prefetching g…: #98175
  • docs: add unstable_navigation and unstable_prefetch API references: #98122
  • Fix turbopacks webpack loader setup to support options being optional: #98270
  • [ci] Align build-and-deploy triggers with build-and-test: #98331
  • test: stabilize server action HMR update: #98322

Credits

Huge thanks to @mischnic, @lubieowoce, @aurorascharff, @unstubbable, @eps1lon, @lukesandberg, @icyJoseph, @jimmyhmiller, and @sokra for helping!

3 hours ago
vgpu

v0.4.1

What's Changed

Full Changelog: https://github.com/vercel-labs/vgpu/compare/v0.4.0...v0.4.1

3 hours ago
plotly.js

v4.1.0

Added

  • Add an opt-in modebar button for downloading Plotly figures as JSON [#7990, #8022], with thanks to @gokul-debugger for the contribution!
  • Add legend.groupdoubleclick to set the group behavior for a legend double-click [#7997], with thanks to @rascal-sl for the contribution!

Changed

  • Increase default double-click delay threshold to 500ms (from 300) [#8014]

Fixed

  • Correct the showspikes axis attribute description to clarify that it applies for all hovermode values except when hovermode is false [#7981], with thanks for @CAOShurong for the contribution!
  • Update country-iso-search to v0.1.2 to fix issue with UTF-8 characters being decoded incorrectly [#7994]
  • Compile TypeScript files under src/ to JavaScript during packaging to fix Node resolution [#8000]
  • Include type defs in appropriate partial bundles [#8001]
  • Add TypeScript declarations for the modular lib/ entry points [#8009]
  • Handle regex enum values when generating schema types [#8010]
  • Include trace-contributed layout attributes in generated types [#8020]
  • Resolve the per-point marker color for hover labels in scattergl, quiver traces [#8027]
3 hours ago
three.js

r186

https://github.com/mrdoob/three.js/wiki/Migration-Guide#185--186 https://github.com/mrdoob/three.js/milestone/99?closed=1

  • Global
    • Add linting for tsl/. #34488 (@ycw)
    • Clean up. #34499 (@Mugen87)
  • AnimationObjectGroup
    • Fix stale index bookkeeping in uncache() and unsubscribe_(). #34035 (@sean-kim05, @Mugen87)
  • Backend
    • Renderer: Add resetState() function. #33877 (@pepperoni505, @Mugen87)
  • Backends
    • Don't scale render target viewports by the pixel ratio. #34333 (@mrdoob, @claude)
  • BatchedMesh
    • Mark visibility dirty in setGeometryIdAt(). #34096 (@wrangelvid)
  • BezierInterpolant
    • Make interpolate_() more robust. #33934 (@Mugen87)
  • Bindings
    • Remove cached bind groups in _destroyBindings(). #33954 (@Mugen87)
    • Fix _destroyBindings(). #34014 (@Mugen87)
    • Fix stale storage buffer attributes. #34388 (@Mugen87)
  • BufferGeometry
    • Clean up serialization/deserilization. #34044 (@Mugen87)
  • Core
    • Fix some copy() and toJSON() implementations. #34083 (@Mugen87)
    • Don't check against default values in toJSON(). #34178 (@Mugen87)
    • Initialize render targets with valid dimensions. #34380 (@204a, @Mugen87)
  • Frustum
    • Improve docs. #34093 (@Mugen87)
  • Geometries
    • Delete the disposed geometry's own attributes. #33939 (@sashankaryal, @Mugen87)
  • ImageBitmapLoader
    • Fix regression in load(). #34151 (@Mugen87)
    • Avoid mutating loader options. #34500 (@cuishuang, @Mugen87)
  • KeyframeTrack
    • Serialize/deserialize tangent data. #34400 (@Mugen87)
  • Material
    • Add serialization/deserialization support for clipping planes. #34084 (@Mugen87)
  • MathUtils
    • Fix large isPowerOfTwo values. #34459 (@lprnmns, @Mugen87)
  • MeshPhysicalMaterial
    • Add support for retroreflectivity. #33949 (@bhouston)
    • Fix diffuse Fresnel blend for retroreflective. #34057 (@Mugen87)
  • Object3D
    • Add intersectsFrustum(). #34065 (@Mugen87)
    • Add dispose(). #34141 (@Mugen87)
  • PMREMGenerator
    • Replace separable blur with spiral blur on both renderers. #32367 (@mrdoob, @claude)
  • QuadMesh
    • Optimize rendering by bypassing MVP transforms. #33917 (@sunag)
  • Ray
    • New watertight intersectTriangle(). #33661 (@Mugen87)
    • Handle empty spheres in intersectSphere(). #34016 (@sean-kim05)
  • Renderer
    • Don't use MSAA for fullscreen-passes. #33936 (@Mugen87)
    • Fix operator-precedence bug. #33943 (@Mugen87)
    • Fix computation of _projScreenMatrix. #33947 (@Mugen87)
    • Clear inactive render lists. #33941 (@Mugen87)
    • Warn when using removed PCFSoftShadowMap. 1b7d5f7aed0bef0303ccceeb036f977584c84330 (@mrdoob, @claude)
    • Remove remaining PCFSoftShadowMap code. #33987 (@mrdoob, @claude)
    • Clarify PCFSoftShadowMap warning. 4d0de92db18c49a44a821762a43420dbdb7c29e8 (@mrdoob, @claude)
    • Use WeakMap in Info. #34045 (@Mugen87)
    • Simplify _getFrameBufferTarget(). #34157 (@Mugen87)
    • Introduce dispose() async. #34364 (@sunag)
  • Renderers
    • honor renderOrder with reversed depth buffer. #33945 (@LLiJJing, @claude)
    • Refactor sort key negate. #33948 (@Mugen87)
    • Optimize multi-scattering energy compensation. #34046 (@Mugen87)
    • Optimize DFG LUT sampling. #34055 (@Mugen87)
  • RenderTarget
    • Introduce storage flags for MSAA. #33974 (@Mugen87)
  • RenderTarget3D
    • Fix texture setup. #34117 (@Mugen87)
  • Shaders
    • Fix multi-scattering energy compensation, remove BRDF_GGX_Multiscatter. #33983 (@mrdoob, @claude)
    • Fix iridescence IBL multiscattering and transposed XYZ_TO_REC709. #33984 (@mrdoob, @claude)
    • Improve energy conservation for diffuse and sheen lighting. #33985 (@mrdoob, @claude)
    • Make comments more explicit. #34038 (@WestLangley)
    • Add environment lighting support for retroreflective materials. #33995 (@mrdoob, @bhouston, @claude)
  • Source
    • Reanme to TextureSource. #34202 (@Mugen87)
  • src
    • Remove deprecated code. #33886 (@linbingquan)
  • Src
    • Improve retroreflection nomenclature. #34079 (@WestLangley)
    • Clean up. #34161 (@WestLangley)
    • Clean up. #34272 (@WestLangley)
  • SunLight
    • Clean up. #34258 (@mrdoob, @claude)
    • Reduce cascade count to 2. 52184ab39216913eb2984cbcffaf0efe1b677378 (@mrdoob, @claude)
  • TimestampQueryPool
    • Clear timestamps Map on query resolution and dispose. #34243 (@sunag)
  • TorusGeometry
    • Forward thetaStart and thetaLength in fromJSON(). #34034 (@sean-kim05, @Mugen87)
  • Tour
    • Add Playground Projects and Templates. #34437 (@sunag)
  • Vector3
    • Clean up comments. #34037 (@WestLangley)
  • WebGLAnimation
    • Schedule next frame before the loop callback. #34448 (@aktanazat, @Mugen87)
  • WebGLBackend
    • Fix usage of storeMultisampledDepthBuffer. #34142 (@Mugen87)
    • Add support for MinEquation and MaxEquation. #34146 (@tonybart1337)
    • Make clear of default framebuffer more consistent. #34502 (@WilliamLiu-1997, @Mugen87)
  • WebGLOutput
    • Match depth texture format to stencil setting. #34008 (@sawa-zen, @Mugen87)
    • Optimize MSAA support. #34030 (@Mugen87)
  • WebGLRenderer
    • Fix clearLayerUpdates() call. #33989 (@Mugen87)
    • Tighten multi-scattering check. #34047 (@Mugen87)
    • Fix color texture check for BatchedMesh. #34056 (@Mugen87)
    • Optimize readRenderTargetPixels capability checks. #34183 (@dli7319, @Mugen87)
    • Support Node Materials in compile(). #34232 (@Mugen87)
    • Add SunLight with cascaded shadow maps. #34221 (@mrdoob, @claude)
    • Make GL init more robust. #34299 (@Mugen87)
    • Unbind PIXEL_PACK_BUFFER after async readback. #34321 (@TheBlek, @cursoragent)
    • fix compileAsync() crashing when a tracked material is disposed mid-flight. #34378 (@kvvasuu, @Mugen87)
    • Honor clipping in compile(). #34507 (@Mugen87)
  • WebGLTextures
    • Improve max textures warning. 7cab421ee0a0790bfc45e672fdf1702ff401e5f6 (@Mugen87)
  • WebGLTextureUtils
    • Delete PIXEL_PACK_BUFFER after copy. #34323 (@Mugen87)
  • WebGPU
    • Allow read_write storage buffers and atomic ops in non-compute stages. #33626 (@SebastianBaltes, @claude)
  • WebGPUAttributeUtils
    • Fix interleaved buffer handling for integer attributes. #34098 (@Ryan-G7, @Mugen87)
  • WebGPUBackend
    • WebGPUBackend - Fix type of _getDefaultRenderPassDescriptor. #33969 (@cmhhelgeson)
    • Check for render bundle/occlusion query combination. #34286 (@Mugen87)
    • compare GPU bind groups by handle in _draw(). #34276 (@jjmhalew, @Mugen87, @claude)
  • WebGPURenderer
    • Use UnfilterableFloat for NORM16 textures. #33910 (@Mugen87)
    • Do not render shadow maps when precompile. #33924 (@Mugen87)
    • Honor resolve flags in WebGPU backend. #33946 (@Mugen87)
    • Fix stale occlusion queries. #33959 (@Mugen87)
    • Make occlusion queries more robust. #33972 (@Mugen87)
    • Add support for TRANSIENT_ATTACHMENT. #33977 (@Mugen87)
    • Add missing layerUpdates support to CompressedArrayTexture. #33996 (@Mugen87)
    • Support shared depth texture between multiple passes. #34042 (@sunag)
    • Support dynamic swapping of the lighting system. #34050 (@sunag)
    • Fix XR shadows. #34088 (@cabanier, @Mugen87)
    • Introduce compileComputeAsync(). #32551 (@RenaudRohlinger)
    • Fix native WebGPU XR camera selection. #34112 (@cabanier)
    • Fix copyTextureToBuffer() 3D and array textures when using WebGL. #34129 (@Mugen87)
    • Fix transmission during WebXR rendering. #34114 (@cabanier)
    • Enable MSAA for native XR layers. #34143 (@cabanier)
    • Add MSAA support to WebXR WebGPU. #34120 (@cabanier)
    • Support material blend color and alpha. #34154 (@Mugen87)
    • Introduce refresh types for render objects. #34162 (@Mugen87)
    • Add DirectRenderPipeline. #34166 (@cabanier, @Mugen87, @sunag)
    • Fix draw offsets of BatchedMesh. #34212 (@Mugen87)
    • Fix timestamp query limits. #34236 (@sunag)
    • Refresh shared uniform buffers. #34283 (@cabanier, @Mugen87)
    • Make cache key for bind groups more robust. #34288 (@Mugen87)
    • Add clipping + stencil demo. #34325 (@Mugen87)
    • Dispose render objects when the renderer is disposed. #34327 (@wcandillon, @Mugen87)
    • Add missing material properties to state checks. #34406 (@Mugen87)
    • Fix viewport regression with array cameras. #34424 (@Mugen87)
    • Fix integer array texture bindings. #34422 (@WilliamLiu-1997, @Mugen87)
    • Add packed_4x8_integer_dot_product support. #34451 (@Mugen87)
  • WebGPUUtils
    • Refactor getTextureSampleData(). #34121 (@Mugen87)
  • WebXR
    • Restore camera properties at session end. #34152 (@Mugen87)

Nodes

  • Nodes
    • Make node buffer binding labels deterministic. #34069 (@RenaudRohlinger)
    • Add renderer.debug.onNodeBuilderCreated callback. #34068 (@RenaudRohlinger)
    • Remove top-level side effects for better tree-shaking. #34332 (@mrdoob, @claude)
    • Add updateBefore and updateAfter support for compute stage. #34401 (@sunag)
  • Batch
    • Support positionPrevious. #34100 (@Mugen87)
  • BitcountNode
    • Fix GLSL Bitcount + add test coverage for BRDF/BSDF, depth, color space, type constructors, and bit operations. #34350 (@bhouston, @Mugen87)
  • ContextNode
    • Avoid redundant calls. #34251 (@sunag)
  • DFGLUT
    • Mention direct lighting use in headers, fix generator output path. d60e5bd8688dbef0c0efab901cb2ddae2ecd447b (@mrdoob, @claude)
  • GLSLNodeBuilder
    • TSL Bug: Fix bitcast(uint, 'int')'s GLSL polyfill return type. #34429 (@bhouston)
    • TSL Bug: bitcast() fails unnecessary between int and uint vector types. #34430 (@bhouston, @Mugen87)
  • LightsNode
    • Introduce getBuiltinLights. #33909 (@sunag)
    • Detect dynamic shadow map size changes. #34360 (@Mugen87)
  • Line2NodeMaterial
    • Implement setupPosition(). #34005 (@Mugen87, @sunag)
  • MathNode
    • Fix integer min()/max() on the WebGL backend. #34018 (@mrcljx, @Mugen87)
    • TSL Unit Tests - Fix determinant() type inference reporting the matrix's own type instead of float. #34341 (@bhouston, @Mugen87)
  • MathUtils
    • TSL Unit Tests - Fix sinc() removable singularity computing a literal 0/0. #34337 (@bhouston, @Mugen87)
    • TSL Unit Tests - Fix gain() JS-ternary-on-a-Node bug and wrong base formula; fix pcurve() NaN exponent. #34340 (@bhouston, @Mugen87)
  • MeshPhysicalNodeMaterial
    • Fix specular nodes. #34164 (@Mugen87)
  • ModelNode
    • Support ArrayCamera in highp matrix nodes. #34384 (@Mugen87)
  • MRTNode
    • Fix blend modes bug in merge(). #34248 (@Mugen87)
    • Allow clear colors per attachment. #34250 (@Mugen87)
  • NodeBuilder
    • Check for reserved keywords. #33871 (@Mugen87)
  • NodeFunction
    • Filter initial spaces and comments. #34363 (@sunag)
  • NodeManager
    • Correctly dispose of background mesh. #34108 (@Mugen87)
  • NodeMaterial
    • Improve scene lighting enabled check. #34052 (@sunag)
  • NodeMaterialObserver
    • Honor retroreflective and fix updates with nested render calls. #33992 (@mrdoob, @claude)
    • Add geometry version check. #34064 (@Mugen87)
    • Fix stale render object cache. #34076 (@Mugen87)
    • Monitor dispose for geometries and textures. #34287 (@Mugen87)
    • Track shadow map sizes. #34361 (@Mugen87)
  • PMREMNode
    • Handle unresolved PMREM during setup. #33881 (@jure)
  • ReferenceElementNode
    • Move into own file. #34245 (@Mugen87)
  • RotateNode
    • TSL Unit Tests - Fix rotate() 3D Euler-angle path rotating in the wrong direction. #34338 (@bhouston, @Mugen87)
    • Add support for Euler Order. #34348 (@WestLangley)
  • RTTNode
    • Add autoUpdate, resolutionScale and preserve default type. #34307 (@sunag)
    • Fix reset and restore renderer state. #34385 (@sunag)
    • Keep the renderer state per instance. #34508 (@mrdoob, @claude)
  • ScreenNode
    • Refactor DPR handling. #34186 (@Mugen87)
  • ShadowNode
    • Fix WeakMap usage. #33964 (@Mugen87)
    • Move shadow material and render object helpers to base class. #34312 (@sunag)
  • Skinning
    • Support bone counts exceeding UBO limit. #34200 (@Mugen87)
  • StorageTextureNode
    • Preserve integer store values. #34423 (@WilliamLiu-1997)
  • SubgroupFunctionNode
    • TSL Unit Tests: Workgroups, StorageBuffer Atomics, Compute builtins, Barriers and Subgroups. #34431 (@bhouston)
    • TSL Bug: Fix subgroupAll()/subgroupAny() parameter length. #34432 (@bhouston)
    • TSL Bug: Fix subgroup broadcast first param length. #34433 (@bhouston, @Mugen87)
  • TextureNode
    • Add isPlainGather(). #34119 (@Mugen87)
    • Refactor isPlainGather(). #34201 (@Mugen87)
  • ToonLightingModel
    • Use the view space normal for the gradient irradiance. #34247 (@lazerg)
  • TSL
    • Respect texture format when sampling textures. #33875 (@sunag)
    • Make textureSize() more robust. #33925 (@Mugen87)
    • Inline transform of normal and tangent. #33938 (@WestLangley)
    • Do not export PMREMUtils. #33986 (@sunag)
    • Fixing rbmax / rbmin calculation of getParallaxCorrectNormal(). #34007 (@Mugen87)
    • Fix update range clear bug in Instance. #34022 (@explodi, @Mugen87)
    • Support individual lighting per pass(). #34051 (@sunag)
    • Add OnAfterObjectUpdate(). #34101 (@Mugen87)
    • Fix update of previous instance matrix data. #34107 (@Mugen87)
    • Add batchIndirectIndex. #34111 (@Mugen87)
    • Support primitive values in custom struct constructors. #34113 (@sunag)
    • Build CodeNode includes as references. #34132 (@Ryan-G7, @Mugen87, @sunag)
    • Remove export of 'append'. #34156 (@Methuselah96)
    • Add horizontalRotation option to billboarding(). #34197 (@sunag)
    • Add 4x8 pack/unpack functions. #34263 (@Mugen87)
    • Update exports in Three.TSL. #34310 (@sunag)
    • Honor type in toAttribute(). #34347 (@Mugen87)
    • Add TSL GPU unit test coverage for LTC area lights, point light, SH irradiance, equirect/spritesheet UV, and post-processing utils. #34358 (@bhouston)
    • Add warnings to GPGPU Nodes. #34291 (@cmhhelgeson)
    • Add atomic workgroup array support. #34428 (@WilliamLiu-1997, @bhouston)
    • Add missing clamp to V_Neubelt(). #34449 (@Mugen87)
  • UniformArrayNode
    • Fix update() overwrite. #33962 (@Mugen87)
  • WGSLNodeBuilder
    • TSL Unit Tests - Fix faceForward() WGSL capitalization bug. #34342 (@bhouston, @Mugen87)
  • WGSLNodeFunction
    • Add missing WGSL-TSL type entry. #34099 (@Mugen87)

Addons

  • Addons
    • Disable depth buffer when possible. #34043 (@Mugen87)
    • Fix typos. #34105 (@pailhead)
    • Gaussian Splat renderer / loader using TSL for WebGPU/WebGL + glTF import. #33950 (@bhouston, @Mugen87)
  • 3DMLoader
    • add views, namedViews, and strings to userData. #34498 (@YCoCg)
  • 3MFLoader
    • Basic support of Beam Lattice. #34267 (@Mugen87)
  • AST
    • TSL & Transpiler: Support parameterless loops (do ... while). #34209 (@sunag)
  • BufferGeometryUtils
    • Let toTrianglesDrawMode()modify geometries in-place. #33878 (@Mugen87)
    • avoid vertex hash overflow at zero tolerance. #34390 (@hamedrabah, @Mugen87)
  • CityGenerator
    • Improved city example. #33906 (@mrdoob, @claude)
  • CSS2DRenderer
    • Support Rotation. #33474 (@WestLangley)
  • FBXLoader
    • Support multiple clips in single timeline. #34167 (@Mugen87)
    • Fix missing userData copy. #34302 (@Mugen87)
    • Use global URL instead of window.URL. #34328 (@hybridherbst)
  • FirstPersonControls
    • Make keyboard movement world axis aligned. f88964a17e29a61e26ad4981754bb68ebf62264d (@mrdoob, @claude)
    • Restore R/F shortcuts and unify example look speed. #34485 (@mrdoob)
  • GaussianSplatMesh
    • Fix sort invalidation for transforms. #34233 (@gqfx, @Mugen87)
    • Add support for per-mesh bounding box, frustum culling. #34254 (@gkjohnson)
    • Inline splat data reads to improve bounding box generation performance. #34262 (@gkjohnson)
    • Pack RGBA8 colors in storage buffers. #34255 (@gqfx)
    • Add support for raycasting. #34284 (@gkjohnson, @bhouston)
  • GaussianSplatPLYLoader
    • PLYGaussianSplatLoader -> GaussianSplatPLYLoader. #34292 (@WestLangley)
  • GaussianSplatUtils
    • Simplify GaussianSplatUtils via ThreeJS math classes. #34223 (@bhouston)
  • Global
    • Remove deprecated code. #33880 (@Mugen87)
  • GLTFExporter
    • Cache normal maps. #33940 (@Mugen87)
    • Implement ability to export with a copyright notice. #34138 (@Mirei3D, @Mugen87)
  • GLTFGaussianSplatLoaderExtension
    • Optimize Gaussian Splat loading. #34205 (@bhouston)
    • View-dependent Gaussian Splatting via Spherical Harmonics. #34215 (@bhouston)
  • GLTFLoader
    • Fix EXT_mesh_gpu_instancing custom instance attributes shared across nodes. #33927 (@sebgoubier, @Mugen87)
    • Skip skinning without skin attributes. #33988 (@0b5vr, @Mugen87)
    • Fix KHR_texture_transform support when rotation is specified. #34033 (@zeux)
  • HTMLMesh
    • Improve form controls support. #34172 (@Mugen87)
  • Inspector
    • Stop keyboard events from leaking into the app. 0696807d586ab1c04b8fcedc71079559c07f1ddf (@mrdoob, @claude)
    • Add debounce(). #33932 (@Mugen87)
    • resolve bare three imports in TSL graph loader. #33965 (@bhushan6)
    • Fix TSLGraphEditor raycasting and refactor primary pass retrieval. #34133 (@sunag)
    • Use absolute positioning and add alignment configuration. #34137 (@sunag)
    • Add split screen, list grid mode and revisions. #34140 (@sunag)
    • Fix split screen overlay alignment on sub-window canvases. #34203 (@sunag)
    • Add Color Grading extension and improve lifecycle API. #34216 (@sunag)
    • Optimize Timeline tab rendering with virtual scrolling. #34230 (@sunag)
    • Polish split screen divider and select dark theme. #34318 (@sunag)
    • Implement disposal support and improve split screen handling. #34383 (@sunag)
    • Support nonce and CSP compliance. #34396 (@sunag)
  • LightProbeGrid
    • Rename to LightProbeGridWebGL. #33911 (@mrdoob, @claude)
    • Add WebGPURenderer version. #33913 (@mrdoob, @claude)
    • Support incremental baking. #34486 (@mrdoob)
  • LightProbeGridWebGL
    • Fix SunLight integration. #34370 (@Mugen87)
  • MaterialXLoader
    • Materialx upgrade. #33485 (@bhouston, @cursoragent, @sunag)
  • OrbitControls
    • Improve disconnect(). #34504 (@Mugen87)
  • PCDLoader
    • Fix regex to remove comments. #34199 (@Virtycle, @Mugen87)
  • PLYGaussianSplatLoader
    • a dedicated loader for Gaussian splat PLYs. #34278 (@bhouston)
  • Rename
    • GaussianSplatMesh -> GaussianSplat. #34306 (@WestLangley)
  • Rhino3dmLoader
    • performance, PBR materials, editor import. #34180 (@fraguada)
  • SimplifyModifier
    • Refactor implementation. #34021 (@Mugen87)
  • Sky
    • Sky, SkyMesh: More realistic clouds. #33942 (@mrdoob, @claude)
    • Fix FP16 overflow. #34058 (@Mugen87)
    • Sky, SkyMesh: Slow down default cloud speed. 04679755feb07e1d7ad256307d5c4a7bb8043f92 (@mrdoob, @claude)
  • Sky/SkyMesh
    • Remove up uniform. #34354 (@Mugen87)
  • SkyscraperGenerator
    • Cheaper weathering noise. #33900 (@mrdoob, @claude)
  • SPZLoader
    • add support for SPZ version 4 in SPZLoader and add new SPZ v4 example. #34222 (@bhouston)
  • SunLight
    • Move to addons. #34326 (@mrdoob, @claude)
  • TrackballControls
    • Avoid updating _movePrev too often. #34173 (@Mugen87)
    • Implemented multi-touch rotate. #34249 (@surdu, @Mugen87)
  • Transpiler
    • Add GLSL preprocessor directives and macro support. #34206 (@sunag)
    • Add array support. #34208 (@sunag)
  • TubePainter
    • Properly transform normals. #34061 (@WestLangley)
  • UnrealBloomPass
    • Don't request depth buffer. #34036 (@Mugen87)
    • Merge adjacent taps into bilinear fetches. #34479 (@mrdoob, @claude)
  • USDLoader
    • Resolve connected attribute values. #34309 (@cabanier)
  • VolumeSlice
    • Move property declarations. #34130 (@Mugen87)
  • WebGLXRFallback
    • Detect WebGPU XR support upfront. #34080 (@cabanier)
  • WebGPURenderer
    • Add SunLight support. #34259 (@mrdoob, @claude)
  • XRControllerModelFactory
    • Fix profile hot-swap. #34266 (@Mugen87)

Addons / Nodes

  • TSL
    • Add softParticles(). #33887 (@Mugen87)
    • Support primitive values in array(). #33929 (@sunag)
    • Introduce OnBeforeRenderPipeline and OnAfterRenderPipeline and update context directly on material. #34025 (@sunag)
    • Fix angle bug in hashBlur(). #34077 (@Mugen87)
    • Pass stepSize to RaymarchingBox callback. #34257 (@sunag)
  • Addons
    • Add TAAUtils for shared functions. #34458 (@Mugen87)
  • BloomNode
    • Add faster blur strategy. #33923 (@Mugen87)
  • ClusteredLightsNode
    • Add dispose(), optimize create(). #34375 (@204a, @Mugen87)
  • CSMShadowNode
    • Fix frame-late bug. #34213 (@Mugen87)
  • DenoiseNode
    • Dispose internal noise texture. #34418 (@204a)
  • DepthOfFieldNode
    • Fix render target leak on repeated setup. #34188 (@cl0nazepamm, @Mugen87)
  • DotScreenNode/RGBShiftNode
    • Make ctor more flexible. #34417 (@Mugen87)
  • DualKawaseBloomNode
    • Added DualKawaseBloomNode. #33920 (@mrdoob, @claude)
    • Remove DualKawaseBloomNode. #33979 (@mrdoob, @claude)
  • GTAONode
    • Add Quadratic ray stepping, smooth sphere falloff. #33895 (@Mugen87)
    • Improve code example. #33902 (@Mugen87)
    • Clip-space ray marching and loop micro-optimizations. #33903 (@mrdoob, @Mugen87, @claude)
    • Fix banding issue. #33919 (@marcofugaro, @Mugen87)
    • Optimize code. #33930 (@Mugen87)
    • Bake sample count into the shader. #33931 (@Mugen87)
    • Dispose internal noise texture. #34369 (@204a, @Mugen87)
  • Nodes
    • More consistent dispose() usage. #34419 (@Mugen87)
  • OITPassNode
    • Add node for Order Independent Transparency. #34253 (@Mugen87)
    • Improve MSAA support. #34274 (@Mugen87)
  • PassNode
    • Fix pixel ratio in derived passes. #34453 (@Mugen87)
  • SMAANode
    • Fix and simplification. #34031 (@sunag)
  • SSAAPassNode
    • Use single-sample render targets. #34367 (@204a, @Mugen87)
  • SSAONode
    • Add SSAONode and depthAwareBlur. #33921 (@mrdoob, @claude)
  • SSRNode
    • Clean up. #34377 (@Mugen87)
  • VXGINode
    • Voxel Cone Tracing for Diffuse GI. #34402 (@Mugen87)
  • WebGLNodesHandler
    • Reuse collected lights and preparation data. #34219 (@hybridherbst)
    • Fix error with getCanvasTarget in WebGLRenderer. #34303 (@hybridherbst)
  • WoodNodeMaterial
    • Specialize single-octave noise. #33970 (@mrdoob, @claude)

Docs

  • Fix heading typo in CONTRIBUTING.md. 6cac81241961e3b68b0a5992cf325b4e9db8b3af (@mrdoob)
  • Improve descriptions. #34027 (@Mugen87)
  • Resolve reamining TODOs. #34029 (@Mugen87)
  • Matrix4: Improve inline documentation. #34067 (@WestLangley)
  • Fix typos and a wrong parameter name in JSDoc comments. #34169 (@xdroberto)
  • fix broken TSL anchor links for roughnessNode and metalnessNode. #34170 (@latent-9)
  • Drop JSDoc params the functions no longer take. #34226 (@darkdi)
  • Drop three more JSDoc params in WGSLNodeBuilder. #34237 (@darkdi)
  • Fix usage of @class tag. #34244 (@Mugen87)
  • Fix broken cross-links to texture utils pages. #34271 (@FirmaSpring)
  • Improve BundleGroup. #34305 (@Mugen87)
  • Tour of TSL. #34085 (@sunag)
  • IndexNode - Update JSDoc. #34413 (@cmhhelgeson, @Mugen87)
  • LoopNode - Update JSDoc. #34415 (@cmhhelgeson, @Mugen87)

Manual

  • Remove i18n. #33997 (@Mugen87)
  • Add Addons section anchor. #34017 (@zackabrah)
  • Add anchors to headings. #34020 (@zackabrah)
  • Slowed down colourshift effect in scenegraph tutorial. #34048 (@chesterblack)

Examples

  • Improve performance of clustered lights demo. #33901 (@Mugen87)
  • webgl_postprocessing_pixel: Snap Objects to Pixel Grid. #33908 (@zalo, @claude)
  • Add SSAO blur toggle in webgpu_postprocessing_ao. 70820b8d96b7cb2221a24c8170429b4169745a01 (@mrdoob, @claude)
  • Optimise PNGs across the repo. #33882 (@Chubercik)
  • Skip TRAA for SSAO in webgpu_postprocessing_ao. 84569eb27a3e070e6a4844e59e906ea0ee26c4cb (@mrdoob, @claude)
  • Use FXAA in clustered light demo. #33935 (@Mugen87)
  • Removed (wip) from webgpu. d51eb061e673cb9ec7f22c0277eefe925d7e2f05 (@mrdoob)
  • Clean up. #33981 (@WestLangley)
  • Clean up. #33994 (@Mugen87)
  • Refresh external links in /examples. #34001 (@bhouston)
  • Clean up. #34010 (@Mugen87)
  • Properly transform normal vectors. #34015 (@WestLangley)
  • Clean up. #34026 (@Mugen87)
  • More clean up. #34028 (@Mugen87)
  • Properly transform normal. #34039 (@WestLangley)
  • Add webgpu_deferred example. #34049 (@sunag)
  • Optimize backdrop water demo. #34086 (@Mugen87)
  • Refined the webgl_volume_perlin with bisection based refinement. #34090 (@mmmovania, @Mugen87)
  • Refined the webgpu_volume_perlin with bisection based refinement. #34094 (@mmmovania, @Mugen87)
  • Update webgl_volume_perlin.html. be6469cce5f91576c9efc8dc984c7ae3970197d3 (@Mugen87)
  • Eliminate branch divergence in volume refinement loops. #34097 (@WestLangley)
  • Clean up. #34148 (@Mugen87)
  • Clean up. #34185 (@Mugen87)
  • Change preset in backdrop area. #34195 (@Mugen87)
  • Make example links clickable in title & info. #34207 (@bhouston, @Mugen87)
  • Make material arrays demo more interesting. #34220 (@Mugen87)
  • Optimize rain demo. #34229 (@Mugen87)
  • Replace sun-like DirectionalLights with SunLight. #34228 (@mrdoob, @claude)
  • Clean up. #34273 (@WestLangley)
  • Update tags.json. 04008d6f255b9e2c92244244f484bd4508a14908 (@Mugen87)
  • Rename Gaussian Splat Example. #34293 (@WestLangley, @Mugen87)
  • Update webgl_lightprobes_sponza screenshot for two sun cascades. 5c81184a805495f5394aa50ad4c33d5f332a4b37 (@mrdoob, @claude)
  • Add post-processing volumetric fog example. #34319 (@sunag)
  • Remove ecsy . #34359 (@Mugen87)
  • Clean up. #34408 (@Mugen87)
  • Update tags. #34411 (@Mugen87)
  • Optimize glTF asset. #34435 (@Mugen87)
  • Optimize glTF asset. #34436 (@Mugen87)
  • Improve tags. #34472 (@Mugen87)
  • Clean up tags. #34473 (@Mugen87)
  • Add Sculptor addon. #33164 (@mrdoob, @claude)
  • Improve fog scattering trees and performance. #34491 (@mrdoob)
  • Refine custom fog terrain and resource handling. 511de1d2ee7c89f534b457d72e4ea4a7b20b50d4 (@mrdoob)
  • Update custom fog screenshot. e0119d1b87122d74701db34a04354e8979aff98e (@mrdoob)
  • Use SunLight in WebGPU examples. #34476 (@mrdoob, @claude)
  • Improve webgpu_materials_retroreflective. #33990 (@mrdoob, @claude)

Devtools

  • Clean up, light count and 1.17. #34387 (@mrdoob, @claude)
  • Object details, box highlight and 1.18. #34399 (@mrdoob, @claude)

Editor

  • Don't use picker object with skeletons. #34062 (@Mugen87)
  • Fix animation selection. #34322 (@Mugen87)
  • Add group selection. #34144 (@Mugen87)

Tests

  • Try to fix the webgpu async timeouts. #34225 (@pailhead, @claude)
  • GPU-native unit tests for TSL. #34331 (@bhouston)
  • fix lint error. #34345 (@linbingquan)
  • Update screenshots. #34346 (@Mugen87)
  • Add TSL GPU unit test coverage for math, packing, conversion, vector/matrix, logic/bitwise, color, tone mapping, and procedural helpers. #34349 (@bhouston, @Mugen87)
  • Unit tests: import unbuilt source instead of build/ output. #34362 (@bhouston)
  • Remove empty QUnit.module scaffolding. #34409 (@samuel7james)
  • TSL Tests: Give each GPU unit test kernel its own random canary value. #34427 (@bhouston)
  • Stabilize input and video screenshots. #34474 (@mrdoob)

Utils

  • Dev: Improve preview.js. #34407 (@Mugen87)
  • Support branches in changelog.js. f64ed0d50506064c99445e4b72ff0f82b387968e (@mrdoob, @claude)
  • Improve changelog.js. 16e1f0369b3ea976a581ca651de868818c9f0a9b (@mrdoob, @claude)
  • Rename Tour of TSL to TSL Guide. #34457 (@mrdoob, @claude)
  • Update TSL links in llms build. c4ffe022f2a4f982b42b7da5af79a87066a138ae (@mrdoob, @claude)

Build

  • Deprecate CommonJS build. #33891 (@mrdoob, @claude)
  • Remove minified builds. #33893 (@mrdoob, @claude)

CI

  • Comment on PRs with E2E screenshot failures. #33971 (@mrdoob, @claude)
  • Add Core to bundle size report. #34330 (@mrdoob, @claude)
  • fix grammar. #34482 (@linbingquan, @Mugen87)
5 hours ago
quasar

quasar-v2.31.0

[!IMPORTANT] Behavior changes worth checking before you upgrade:

  • A readonly QInput/QSelect/QFile/QField now reflects focus: it shows the focused styling (highlight, floated label, hide-hint hint), emits focus/blur and validates on blur with lazy-rules. Only disable now exempts a field from counting as focused, matching the existing rule that only disable exempts it from validation.
  • config.dark: 'auto' resolves again on SSR/SSG apps, on the client once it takes over. It has silently been a plain light false since v2.18.2. The first paint stays light (the server cannot know the preference), so the documented cookie approach remains the way to a flash-free page.
  • The fa and fa-IR language packs render Persian digits in QDate, QTime and QPagination, through the new root-level formatNumber pack key.
  • QStepper's horizontal DOM lost its .q-panel.scroll wrapper element; its classes moved onto .q-stepper__step-content, now a direct descendant of .q-stepper__step.
  • The q-transition--field-message-* classes no longer exist. Restyle a QField message swap through .q-field__messages--animated instead; the leave half of the animation (the old message fading out under the new one) is gone.

New

  • feat(QColor): palette slot, and the picker is fully keyboard-accessible -> the palette view had no way to be customized: swatches were plain divs, laid out 10 per row, reachable by pointer only. The new scoped palette slot replaces the default swatches while keeping the other views and the view switcher, handing over the resolved colors (palette), a select(color) function and an editable flag. The default swatches become buttons following the roving tabindex pattern (arrows move, Up/Down by one visual row, Home/End jump to the edges, Enter/Space picks), and the spectrum panel, the last pointer-only part of the picker, becomes a WAI-ARIA slider over its two axes: arrows step the saturation and the brightness by one, ten with Shift, Home/End and PageUp/PageDown jump. Both follow the visual direction in RTL, both draw a two-tone inset focus ring that stays visible on any color, and the spectrum spells out its value through two new lang-pack keys, colorPicker.saturation and colorPicker.brightness, translated across every pack (#8613)
  • feat(ui): shadow colors are CSS custom properties -> since v2.11 the elevation shadows are drawn with a light color while in Dark Mode, but the color was baked into the built CSS through the $shadow-color/$dark-shadow-color Sass variables, so the UMD build, the Vite plugin and every other prebuilt-CSS flavour had no way to revert or tune it short of restyling each component. Both colors are now declared on :root as --q-shadow-color and --q-dark-shadow-color, with the Sass variables as their defaults so existing Sass overrides keep working. Nothing moves by a pixel out of the box, and the pre-v2.11 look is a one-liner (body.body--dark { --q-dark-shadow-color: #000 }); transparent removes the shadows altogether. The tints are derived on body, so the tokens are read at the :root/body level (a body.body--dark rule, setCssVar()), not on a deeper element (#15144)
  • feat(Lang): formatNumber pack key, localized digits in QDate, QTime and QPagination -> a Persian calendar coupled with the fa-IR pack showed Persian month names next to Western day numbers, with no way to change that short of a font that remaps the ASCII digit glyphs. Language packs (and the locale prop) can now define an optional root-level formatNumber(value), which receives the ASCII digit string the component would display, zero-padded where it is padded ("5", "05", "1403"), and returns the localized rendering. QDate routes its day cells, navigation year, years grid, header title and subtitle, the "N days" count and the day buttons' aria-label through it, QTime its header units and clock face, QPagination its page buttons and their aria-label. Model strings, date hashes and QTime's stringModel stay ASCII. The fa and fa-IR packs opt in; every other pack is unchanged (#12735)
  • feat(QTable): autoWidth in the column definition -> shrinking a column to its content required a per-column header-cell and body-cell slot override with <q-th auto-width>/<q-td auto-width>, cumbersome for dynamically built columns, the only alternative being an undocumented class through classes and headerClasses. A column can now simply declare autoWidth: true, which applies to the auto-rendered cells as well as to QTh/QTd fed with the slot props (#8206)

Fixes

  • fix(QMenu/QDialog): the portal opening over a closing one takes the focus -> a QMenu item or a QDialog button carrying v-close-popup that opens a dialog made the two portals compete for focus, and the closing one won on both counts: the dialog opened without focus in its autofocus field (on Android the soft keyboard never showed), and it had captured, as the element to return focus to, an element inside the closing portal, destroyed with it, so closing the dialog dropped focus altogether. A portal closing while another one sits on top of it in its opening transition now hands its own anchor to the opener instead of restoring focus itself; portals that take no focus (no-focus, hover-shown menus) or that are already fully open decline the hand-off, so everything else is unchanged (#8211)
  • fix(QField): a readonly field reflects focus like a native readonly control -> the focused state was gated on the field being editable, so a focus event landing while readonly was still true got dropped and nothing re-synced afterwards: a handler flipping readonly off and calling focus() in the same tick left the input holding DOM focus with the field unfocused, label resting over the caret. The gate itself was the problem, not its timing, since a readonly control stays in the tab order and a keyboard user tabbing onto it got no visible focus indication at all. The focused state now mirrors DOM focus, only disable keeping a field from counting as focused. See the note at the top (#16056)
  • fix(QField): forward focus from the control slot wrapper to the control -> with a control slot, autofocus, focus() and every other way of focusing the field (QForm/QDialog/QMenu autofocus, clearValue, a click around the control) landed on the q-field__native wrapper: the field looked focused and emitted focus, but the slotted control never received the caret. The wrapper now forwards any focus it receives to the element bound to the slot scope id, else to the first focusable element of the slot, and keeps it only when the slot holds nothing focusable (#12648)
  • fix(QField): no more one compositor layer per field on Chromium -> every QField label carried backface-visibility: hidden, which Chromium answers with a permanent compositor layer per label. With a few hundred fields on a page each hover repaint re-runs the layer assignment pass against all of those interleaved layers and it goes quadratic: on the reported layout (100 rows x 5 labelled number inputs) headless Chromium held ~22 fps with 50-67 ms frames while native inputs held 60. The rule dates from the Qv1 stylesheets with no recorded purpose and the settled label renders pixel-identical without it. Measured after: 6 composited layers instead of 461, ~65 ms of Layerize per hover sweep instead of ~1.7 s (#16024)
  • fix(QSelect): typed text wins over the model's automatic highlight on Enter -> opening the list (and every filter completion) highlights the option mirroring the current value. With new-value-mode/@new-value, Enter or Tab then re-selected that option and silently dropped the text the user had just typed, @new-value never being emitted. The highlight now remembers whether it was placed automatically or by the user, and only the automatic one yields to typed text under new-value mode: navigated or hovered options still win, fill-input's filled-in label is not user text so Enter right after opening still re-selects, and selects without new-value mode never consult it (#16514)
  • fix(QStepper): the steps stay mounted across an orientation switch -> a stepper bound to $q.screen (:vertical="$q.screen.lt.sm") lost the active step's content, form state included, whenever the viewport crossed the breakpoint, and keep-alive could not bridge it either, the two orientations rendering different trees with two different caches. Both orientations now render every QStep under .q-stepper__content, with one plain Transition per step driving the vertical height slide and the horizontal slide alike. keep-alive-max, which the vertical mode never honoured, is now counted by the stepper itself, and the stepper's transition-duration also drives the vertical slides (default unchanged). See the note at the top (#9703)
  • fix(QStepper): a nested stepper keeps its own orientation -> the horizontal and vertical layout rules hung off the stepper root with descendant selectors, so a stepper nested inside a step of the other orientation matched both rule sets and source order decided: a vertical stepper inside a horizontal one drew a horizontal connector after its active label, lost its vertical connectors and got clipped by the tab overflow; a horizontal one inside a vertical stepper lost the connector before each dot and received the vertical content padding. Every orientation rule now hangs off a per-element modifier class instead of the root; no selector gained a class and several lost one, so existing overrides keep their targets and their precedence (#16516)
  • fix(QStepper): show the prefix on an active erroring step with active-icon="none" -> the header decided the dot's content with two computeds that disagreed on which state wins, so an active step that also had error, with active-icon set to none, got neither the icon nor the prefix and the dot was left empty; a step-level active/error/done-icon of none hit the same blank. The state icon is now resolved once, with the step prop taking precedence over the stepper one, and both the prefix decision and the rendered icon derive from it (#15259)
  • fix(QDrawer): mini-mode items stay put when the standard layout takes over -> in mini mode the item's side section was flex-centered inside the drawer's content box, which only agrees with the standard layout's 16px anchor when that box is exactly 56px wide. An unbordered drawer gives 57px, and on a display whose scale factor is not a whole number Chromium and WebKit snap the 1px border to a fraction of a pixel, so the centered icon landed on a fractional position and visibly jumped once the mini animation restored the standard layout (Mac Retina and 1x displays are exact, which is why it could not be reproduced there). The drawer now hands its current width to CSS as the --q-drawer-width custom property, documented as usable by user CSS, and the mini rule sizes the item from it, so 24px icons land on the standard inset at any scale factor, bordered or not (#18320)
  • fix(QDrawer): iOS Safari's edge navigation swipe stays out of the drawer gestures -> on iOS Safari, swiping in from the screen edge to open a drawer also ran the browser's back/forward navigation gesture: the page slid towards the previous history entry while the drawer followed the finger. The same happened when the backdrop of a right-side drawer was swiped from the left edge to close it. The opener strip and the backdrop now cancel the touch sequence once the pan direction is detected, which is what leaves the page in Safari's hands, while a vertical move (and so the page scroll) is left alone
  • fix(prevent-scroll): the page background keeps painting under the iOS scroll lock -> the iOS lock pins the body with position: fixed, which collapses the root element to zero height, and a body background propagates to the canvas with the root box as its positioning area: a gradient or a cover-sized image stopped painting the moment a popup locked the page, showing a blank canvas behind the dialog. A solid color needs no positioning area, which is why the default dark page never showed it, and desktop and Android use the viewport clip lock, so only iOS was affected. The lock class now gives the root element min-height: 100%, min-height so user html { height } rules still win (#16799)
  • fix(QResizeObserver): track padding and border changes of the observed element -> the component emits offsetWidth/offsetHeight, the border box, but observed the default content box, so a padding or border change on the observed element itself grew the border box without touching the content box and no notification fired. QHeader, QFooter and QDrawer size the layout through it, so a padding-top: env(safe-area-inset-top) rule placed on .q-header (the iOS PWA status-bar pattern) left QPageContainer with a page padding that ignored the inset until the device rotated. Padding on the toolbar child, which is what Quasar's own q-ios-padding/q-safe-area-padding rules use, was already tracked (#7526)
  • fix(QPage): the children's vertical margins stay inside the page -> QPage was a plain block with no padding or border, so a first child's top margin (a q-mt-md card, say) collapsed through it and pushed the page down inside QPageContainer; together with the page's min-height the layout then exceeded the viewport and the window grew a scrollbar even when the content fit the screen. A last child's bottom margin did the same at the other end. The page now establishes a block formatting context, through a zero-specificity rule so display utilities on the page and user overrides keep winning (#9536)
  • fix(Dark): 'auto' resolves on SSR/SSG clients once they take over -> since v2.18.2 the ssr-client build reads its initial dark state from the server-emitted body class, and the server renders 'auto' as light, so config.dark: 'auto' ended up as a plain false on every SSR/SSG app: no media query listener, light forever. The server now flags an 'auto' render with a body attribute, and the client resolves it on takeover unless the app already set an explicit value meanwhile. A SSR+PWA shell boot, which has no server markup to read, starts from the config like an SPA does; the config was silently dropped there too. See the note at the top (#7530)
  • fix(debounce): guard reentrant immediate calls -> a debounced function created with the immediate option could re-enter itself from within its own invocation and fire again instead of being held back for the wait period (#18544)
  • fix(morph): give up on a destination detached before the first frame -> morph() defers its work to a requestAnimationFrame callback, and when the destination's subtree was removed in between (a v-if or an unmount in the same tick as the model change) the validity check still accepted it, because a detached subtree keeps its parentNode, and the fixed-position parent walk then reached null and threw inside getComputedStyle

Other

  • perf(QField): message swaps animate with a CSS keyframe instead of a Transition -> every field with a hint, rules, a counter or an explicit error prop rendered a Transition component around its messages element, only to animate the hint-to-error swap. With Vue 3.5 that instance is about a quarter of a QInput's mount JS (2000 labelled inputs with hints: 148 ms to 113 ms on Chromium), and it was the single biggest item in the reporter's own devtools timeline. The messages element is keyed by its content, so a swap already re-creates it, and a keyframe on the new element reproduces the enter half of the old transition; nothing animates on page load and no field gets a composited layer at mount. See the note at the top (#12369)
  • perf(ui): 2D transforms are written as 2D instead of the 3D variants -> Chromium gives any 3D transform function its own compositor layer, permanently, and with hundreds of instances on a page every repaint re-runs the layer assignment against all of them. The production stylesheet never shipped these (the minifier flattens them), but quasar dev compiles the Sass verbatim, so dev servers paid for a layer per radio, checkbox, toggle, slider ring, linear progress, date indicator, tree arrow, spinner and notification badge; the JS-built strings (QLinearProgress, QCircularProgress and through it QKnob, QAjaxBar, Ripple, QTabs' indicator) reached production as written, so those are a production win too. Every value is rewritten as its exact 2D equivalent and the minified quasar.prod.css/quasar.rtl.prod.css are byte-identical before and after. QLayout's layer hack and QParallax's media transform stay 3D on purpose

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If Quasar is useful in your workflow and you want to support ongoing maintenance, please consider the following:

5 hours ago
electron

electron v44.3.0

Release Notes for v44.3.0

Features

  • Added the ELECTRON_DEBUG_DRAGGABLE_REGIONS environment variable, which visualizes and logs draggable regions in unpackaged apps to help debug custom title bars. #53627 (Also in 43, 45)

Fixes

  • File System Access permission requests and the file-system-access-restricted event are scoped to the requesting document, grants are reset when the origin's last page closes, and write access works in in-memory sessions. #53691 (Also in 42, 43, 45)
  • Fixed Ctrl+Y not yanking text killed with Ctrl+K in text fields on macOS. #53714 (Also in 45)
  • Fixed Tray icons not appearing when running inside Flatpak or Snap sandboxes on Linux. #53653 (Also in 45)
  • Fixed app.getGPUInfo('complete') stalling the GPU process for several seconds on some Windows systems. #53644 (Also in 45)
  • Fixed session.setPermissionCheckHandler receiving the top-level origin and a null webContents for hid and usb checks made from a subframe. #53688 (Also in 42, 43, 45)
  • Fixed webContents.on(), removeListener() and removeAllListeners() throwing "Object has been destroyed" for console-message listeners after the WebContents was destroyed. #53494 (Also in 42, 43, 45)
  • Fixed a crash on Linux when process.env was written while another thread was reading the environment, and a memory leak when a worker thread exits. #53509 (Also in 42, 43, 45)
  • Fixed a possible crash on Windows when a file dialog was shown for a window that was being closed at the same time. #53583 (Also in 42, 43, 45)
  • Fixed a renderer crash when the main process sent IPC to, or a page navigated, a same-process window.open() child whose contextIsolation differed from its opener's. #53539 (Also in 42, 43, 45)
  • Fixed a spurious node_init error being logged when creating a ShadowRealm with Node.js integration enabled. #53579 (Also in 45)
  • Fixed crashes in setDisplayMediaRequestHandler when the granted frame had been destroyed or another tab was granted by id. #53672 (Also in 42, 43, 45)
  • Fixed several non-functional DevTools integrations: the Security panel's "View certificate" button, Ctrl+wheel zooming inside DevTools, and DevTools keyboard shortcuts (e.g. F8) while the inspected page has focus. #53630 (Also in 43, 45)
  • Fixed window state not being persisted when a window entered or left fullscreen, or was maximized or unmaximized, without also being moved or resized. #53576 (Also in 45)
  • Internal <webview>, window.close() and executeJavaScript reply IPCs are validated against the sending frame. #53723 (Also in 42, 43, 45)
  • <webview> without allowpopups also blocks links opened into a new window by modifier-click, and such windows navigate as the clicking document rather than as a browser-initiated load. #53721 (Also in 42, 43, 45)
  • getUserMedia with chromeMediaSource: 'desktop' no longer accepts WebContents source ids; use chromeMediaSource: 'tab' with webContents.getMediaSourceId() or setDisplayMediaRequestHandler to capture a WebContents. #53709 (Also in 42, 43, 45)
  • nodeIntegrationInWorker now applies only to workers created by frames that themselves have Node integration; enable nodeIntegrationInSubFrames to keep Node in workers created by subframes. #53711 (Also in 42, 43, 45)
  • openExternal permission requests started by a frame that has since gone away are attributed to that frame's origin rather than to the navigating page. #53699 (Also in 42, 43, 45)
  • pointerLock and keyboardLock permission requests now report the requesting frame, and execCommand('paste') requires user activation in the frame that calls it. #53693 (Also in 42, 43, 45)

Other Changes

  • Fixed the app becoming unresponsive when a page has a very large number of app-region draggable elements. #53597 (Also in 43, 45)
  • Updated Chromium to 152.0.7977.78. #53523
5 hours ago
quasar

@quasar/app-vite-v3.8.3

Changes

  • feat(app-vite): build -> quasar.config file > build > publicPath now accepts the relative "./" value, for a build that can be served from any folder without knowing its URL prefix upfront (assets are referenced relative to index.html, which is Vite's own relative base shortcut). The publicPath formatter used to root every non-URL value, so "./" became "/./", which Vite normalizes to "/": the option silently produced a root-absolute build instead. It is available for the SPA and PWA modes with Vue Router in "hash" mode only, since a relative build cannot work with history mode (the router has no way to know the prefix) nor server-side. Vue Router then derives its base from the page URL, and the dev server keeps serving from the root, same as Vite does (#16945)

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If Quasar is useful in your workflow and you want to support ongoing maintenance, please consider the following:

6 hours ago
electron

electron v42.11.3

Release Notes for v42.11.3

Fixes

  • File System Access permission requests and the file-system-access-restricted event are scoped to the requesting document, grants are reset when the origin's last page closes, and write access works in in-memory sessions. #53695 (Also in 43, 44, 45)
  • Fixed session.setPermissionCheckHandler receiving the top-level origin and a null webContents for hid and usb checks made from a subframe. #53736 (Also in 43, 44, 45)
  • Fixed webContents.on(), removeListener() and removeAllListeners() throwing "Object has been destroyed" for console-message listeners after the WebContents was destroyed. #53497 (Also in 43, 44, 45)
  • Fixed a crash on Linux when process.env was written while another thread was reading the environment, and a memory leak when a worker thread exits. #53511 (Also in 43, 44, 45)
  • Fixed a possible crash on Windows when a file dialog was shown for a window that was being closed at the same time. #53585 (Also in 43, 44, 45)
  • Fixed a renderer crash when the main process sent IPC to, or a page navigated, a same-process window.open() child whose contextIsolation differed from its opener's. #53541 (Also in 43, 44, 45)
  • Fixed crashes in setDisplayMediaRequestHandler when the granted frame had been destroyed or another tab was granted by id. #53674 (Also in 43, 44, 45)
  • Internal <webview>, window.close() and executeJavaScript reply IPCs are validated against the sending frame. #53727 (Also in 43, 44, 45)
  • <webview> without allowpopups also blocks links opened into a new window by modifier-click, and such windows navigate as the clicking document rather than as a browser-initiated load. #53719 (Also in 43, 44, 45)
  • getUserMedia with chromeMediaSource: 'desktop' no longer accepts WebContents source ids; use chromeMediaSource: 'tab' with webContents.getMediaSourceId() or setDisplayMediaRequestHandler to capture a WebContents. #53710 (Also in 43, 44, 45)
  • nodeIntegrationInWorker now applies only to workers created by frames that themselves have Node integration; enable nodeIntegrationInSubFrames to keep Node in workers created by subframes. #53713 (Also in 43, 44, 45)
  • openExternal permission requests started by a frame that has since gone away are attributed to that frame's origin rather than to the navigating page. #53697 (Also in 43, 44, 45)
  • pointerLock and keyboardLock permission requests now report the requesting frame, and execCommand('paste') requires user activation in the frame that calls it. #53702 (Also in 43, 44, 45)
6 hours ago
astro

astro@7.3.2

Patch Changes

  • #17896 a548223 Thanks @matthewp! - Fixes <script>/<style> rendering in MDX so that only literal content (including content injected by remark/rehype plugins) is treated as trusted markup. A dynamic value passed as a <script>/<style> child (e.g. <script>{value}</script>) is now escaped like any other element's content instead of being rendered raw. Use set:html to explicitly opt a dynamic value back into raw rendering.

  • #17931 c1a6a89 Thanks @astro-factory! - Fixes the dev toolbar returning a 504 "Outdated Optimize Dep" error when a workspace-linked package imports a dependency that Vite's initial scan did not discover

  • #17908 42e9188 Thanks @astro-factory! - Fixes i18n fallback routing replacing the first substring match instead of the actual locale segment, which mangled paths like /energy/en/about into /esergy/en/about

  • #17936 4b92ddc Thanks @astro-factory! - Fixes sessions breaking in dev mode with the Cloudflare adapter when middleware is present

  • Updated dependencies [a548223]:

    • @astrojs/markdown-satteri@0.4.1
6 hours ago
astro

@astrojs/markdown-satteri@0.4.1

Patch Changes

  • #17896 a548223 Thanks @matthewp! - Fixes <script>/<style> rendering in MDX so that only literal content (including content injected by remark/rehype plugins) is treated as trusted markup. A dynamic value passed as a <script>/<style> child (e.g. <script>{value}</script>) is now escaped like any other element's content instead of being rendered raw. Use set:html to explicitly opt a dynamic value back into raw rendering.