1 hours ago
embed-pdf-viewer

Release Next v3.0.0-next.19

@cloudpdf/contract@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – Share links are grants. The operations are grants.* under /v1/tenants/{tenantId}/grants, the scope is grants.manage, and the public exchange is POST /v1/grant-sessions with { grant, passphrase }. Answers say grant/grants, the record says passphraseProtected, and create and update take passphrase. A grant has a name (1 to 100 characters, trimmed, or null). New grants are grt_…; shr_… ids keep working. The errors are GrantPassphraseRequired and GrantExpired, a layer names its grantId, and every Share* schema and type is Grant*.

@cloudpdf/engine@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – Opens a grant with open({ kind: 'grant', grant, passphrase }), and the document's grant is doc.grant. The client half is exchangeGrant, grantSessionSource, GrantSessionSource and GrantExchangeError, and it exchanges at /v1/grant-sessions.

@cloudpdf/sdk@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – client.shares is client.grants, with a grant's name and passphrase.

@cloudpdf/server@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – Share links are grants: routes under /v1/tenants/{tenantId}/grants, the grants.manage scope, and the public exchange at POST /v1/grant-sessions, which takes { grant, passphrase }. Migration 047 renames share_grants to grants and share_visitors to grant_visitors with their indexes and constraints, renames password_hash to passphrase_hash, and adds a grant's name. New grants are grt_…, and shr_… grants keep working. Session tokens name grant:<id>, and security_events records grant.created, grant.updated, grant.archived and grant.revoked.

@cloudpdf/viewer-angular@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – A document from a grant is src: { grant, passphrase, restart }; password stays the PDF's own. The exchange helpers are exchangeGrant, grantSessionSource and GrantExchangeError.

@cloudpdf/viewer@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – A document from a grant is src: { grant, passphrase, restart }; password stays the PDF's own. The exchange helpers are exchangeGrant, grantSessionSource and GrantExchangeError.

@cloudpdf/viewer-react@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – A document from a grant is src: { grant, passphrase, restart }; password stays the PDF's own. The exchange helpers are exchangeGrant, grantSessionSource and GrantExchangeError.

@cloudpdf/viewer-svelte@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – A document from a grant is src: { grant, passphrase, restart }; password stays the PDF's own. The exchange helpers are exchangeGrant, grantSessionSource and GrantExchangeError.

@cloudpdf/viewer-vue@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – A document from a grant is src: { grant, passphrase, restart }; password stays the PDF's own. The exchange helpers are exchangeGrant, grantSessionSource and GrantExchangeError.

@embedpdf/core@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – A document opened with a grant reports what it waits for as grantRequest, and retry() takes the grant's passphrase.

  • #923 by @bobsingor – createKernel({ fetch }) takes your own fetch for { kind: 'url' } documents, to add headers or cookies; it gets the URL and an init with the document's cancel signal, and retry() calls it again. A { kind: 'url' } source takes an id of its own. A download the server refuses with 401 or 403 fails as permission-denied, and one that isn't a PDF (a sign-in page, say) as invalid-input. New exports: the HostFetch type and isPdf(bytes).

@embedpdf/core-stage@3.0.0-next.19

Minor Changes

  • #923 by @bobsingor – Zoom limits: ZoomLimits is a view's zoom range, resolveZoomLimits(minZoom, maxZoom) makes one inside ZOOM_MIN and ZOOM_MAX (a minZoom above maxZoom counts as maxZoom), and clampZoom(zoom, limits) keeps a zoom inside it. resolveZoom() and zoomAround() take the limits as a last argument; without it they keep the full range.

@embedpdf/core-ui@3.0.0-next.19

Minor Changes

  • #923 by @bobsingor – A bar can go at the top of a panel, under its title: the place { panel: id }, beside an edge, { float }, { with } and { at }. A panel's bars stack in the order they were added. barsInPanel(data, panel) lists them and panelOf(place) reads the panel a place names, and validateLayout() names a panel the layout doesn't have, with the closest one that exists.

Patch Changes

  • #923 by @bobsingor – An item without its own importance has its group's, as the docs say, instead of 3. group('annotate', items, { importance: 2 }) now moves those items into the "More" menu before the rest of the bar, and every item of a group at 5 stays in the bar. An item's own importance still wins, and a custom item without a command is still pinned.

@embedpdf/engine-core@3.0.0-next.19

Minor Changes

  • #918 by @bobsingor – The open input for a CloudPDF grant is { kind: 'grant', grant, passphrase?, restart? } (OpenInputGrant), and a document opened with one has doc.grant (DocumentGrant), whose resume() takes passphrase. ShareOpenRequest is GrantOpenRequest, with passphraseProvided, and SharePasswordRequired is GrantPassphraseRequired.

@embedpdf/angular@3.0.0-next.19

Minor Changes

  • #920 by @bobsingor – The Stage draws the zoom tool's box while you drag, dashed in the accent color (the stage's zoomBox setting, or the --epdf-zoom-box-* variables). With interaction on, it registers the tool's handler for its own view only.

  • #923 by @bobsingor – provideEmbedPdf({ fetch }): your own fetch for documents at a URL, to add headers or cookies.

  • #923 by @bobsingor – EpdfStageRef (and so the <epdf-stage> component) has canZoomIn() and canZoomOut(), whether the zoom is below the Stage's maxZoom or above its minZoom.

@embedpdf/react@3.0.0-next.19

Minor Changes

  • #920 by @bobsingor – The Stage draws the zoom tool's box while you drag, dashed in the accent color (the stage's zoomBox setting, or the --epdf-zoom-box-* variables). With interaction on, it registers the tool's handler for its own view only.

  • #923 by @bobsingor – <Viewer fetch>: your own fetch for documents at a URL, to add headers or cookies. Each download calls the latest prop.

@embedpdf/svelte@3.0.0-next.19

Minor Changes

  • #920 by @bobsingor – The Stage draws the zoom tool's box while you drag, dashed in the accent color (the stage's zoomBox setting, or the --epdf-zoom-box-* variables). With interaction on, it registers the tool's handler for its own view only.

  • #923 by @bobsingor – <Viewer fetch>: your own fetch for documents at a URL, to add headers or cookies. Each download calls the latest prop.

@embedpdf/vue@3.0.0-next.19

Minor Changes

  • #920 by @bobsingor – The Stage draws the zoom tool's box while you drag, dashed in the accent color (the stage's zoomBox setting, or the --epdf-zoom-box-* variables). With interaction on, it registers the tool's handler for its own view only.

  • #923 by @bobsingor – <Viewer :fetch>: your own fetch for documents at a URL, to add headers or cookies. Each download calls the latest prop.

@embedpdf/web@3.0.0-next.19

Minor Changes

  • #920 by @bobsingor – Theming for the zoom tool's box: --epdf-zoom-box-fill and --epdf-zoom-box-stroke, which win over the stage's zoomBox setting, plus zoomBoxPaint(colors, accent) and ZOOM_BOX_DASH to draw it.

  • #923 by @bobsingor – Export isFromTextField(event), which tells a key or a copy typed in a text field (an input, a text area, a select or editable content, inside a shadow root too) from one meant for the viewer around it.

@embedpdf/plugin-commands@3.0.0-next.19

Minor Changes

  • #920 by @bobsingor – The standard commands have tool:zoom, the marquee zoom tool, on Z (Acrobat's key), next to tool:pointer (V) and tool:pan (H).

Patch Changes

  • #923 by @bobsingor – The standard zoom:in and zoom:out commands are off at the Stage's maxZoom and minZoom.

@embedpdf/plugin-i18n@3.0.0-next.19

Minor Changes

  • #920 by @bobsingor – Labels for the tool:zoom command (commands.tool.zoom) in all eight languages.

@embedpdf/plugin-interaction@3.0.0-next.19

Minor Changes

  • #920 by @bobsingor – A third built-in tool, zoom: drag a box to zoom to it, or click to zoom in a step (Alt-click zooms out), like Acrobat's Marquee Zoom. Its cursor is zoom-in on the pages and between them, one finger draws the box on a touch screen, and it neither follows links nor fills forms. The stage draws the box and does the zooming. listTools() now starts ['pointer', 'pan', 'zoom'].

@embedpdf/plugin-stage@3.0.0-next.19

Minor Changes

  • #920 by @bobsingor – The zoom tool's box. On the host lens, beginZoomDrag, moveZoomDrag, endZoomDrag({ zoomOut }) and cancelZoomDrag run the drag, and getZoomBox() gives the box in viewport pixels for an adapter to draw. A box zooms straight in, about the one point that stays put, until it fills the view, centered; it glides with scrollBehavior. A click (under 4 pixels) zooms one step around the point. createZoomDragHandler(stage, interaction) connects it to the interaction hub. The new zoomBox setting ({ fill, stroke }, null follows the accent) colors the box. zoomIn() and zoomOut() take { around }, like zoomTo and zoomBy. reveal() with a fit now stops at the zoom limit (64×) instead of zooming past it on a tiny rect. Under a tool with a gapCursor (pan, zoom), the pan fallback no longer takes drags between pages. A fit mode, a level or resetSettings() asked for again now applies after a zoom the user made: before, fitAutomatic() after a zoom step, pinch, double-tap or zoomed reveal did nothing when automatic was already the setting, and so did zoomTo() with the last level set.

  • #923 by @bobsingor – The Stage has zoom limits: the minZoom and maxZoom settings, 0.05 and 64 by default (5% to 6400%). Nothing zooms past them: not zoomIn(), a pinch or Ctrl+wheel, zoomTo(), zoomBy(), setCamera(), a reveal or a destination, and not a fit mode, which stops at the limit. When the limits change, a zoom outside them moves to the nearest one; a minZoom above maxZoom counts as maxZoom. canZoomIn() and canZoomOut() say whether the zoom is below maxZoom or above minZoom, for disabling your buttons.

    zoomIn() and zoomOut() step through round levels (100%, 125%, 150%, 200%, 300% and so on) in place of ×1.2. From a level in between, such as a fit, they go to the next one, and a level within 5% of a round one steps past it.

@embedpdf/viewer-angular@3.0.0-next.19

Minor Changes

  • #923 by @bobsingor – <epdf-pdf-viewer [fetch]>: your own fetch for documents at a URL, to add headers or cookies. It follows its input, like src.

@embedpdf/viewer-chrome@3.0.0-next.19

Minor Changes

  • #923 by @bobsingor – Comment cards show what their thread has and offer what comes next. A mark with nothing said yet shows one box to write the comment, which becomes the annotation's own text where it may change, and a reply where it may not. A thread shows its comment, its replies and a box to reply; the box shows on the selected card, and stays while it holds a draft. A thread's status shows as a chip by its date once one is set. A check on the card marks the thread completed, and the card's menu (its ⋯ button, or a right-click on the card) sets any review status and deletes the thread. A page's count says how many comments are written on it. New commands comment:status-accepted, comment:status-rejected, comment:status-cancelled, comment:status-completed, comment:status-none, comment:delete-thread and the comment-item menu, and the icons circleCheck and send.

  • #918 by @bobsingor – The grant prompt (grantPrompt in every locale) asks for a grant's passphrase or its questions.

  • #920 by @bobsingor – Marquee Zoom in the zoom menu: the tool:zoom command switches to the zoom tool. Drag a box to zoom to it, or click to zoom in (Alt-click: out). It has labels in every built-in language.

  • #923 by @bobsingor – The rows of buttons at the top of the thumbnails, outline and attachments panels are bars of the layout, named after their panel: thumbnails (groups edit, more, history), outline (filter, items) and attachments (count, files). They fit the panel's width like any bar, with what doesn't fit in a "More" menu, so a narrow panel no longer cuts off undo and redo, and add, remove and replace change them. The thumbnails bar also has insert from a file, duplicate and extract where there's room, in place of the page menu's button. The outline's filter and the attachments' count are { custom: 'outline-filter' } and { custom: 'attachments-count' }. Any panel, your own too, draws the bars placed in it with place: { panel: id }.

  • #923 by @bobsingor – FullViewer takes a fetch prop, which every document at a URL downloads with.

  • #923 by @bobsingor – The viewer speaks Swedish (sv) and Traditional Chinese (zh-TW), for fifteen languages. Readers of Traditional Chinese (zh-TW, zh-HK, zh-MO, zh-Hant) now see it instead of English. Both are machine-translated in the terms Adobe Acrobat uses in each language, are waiting for a native speaker's review, and load the first time the viewer shows them. strings an app gives for sv or zh-TW now change the built-in language's words, and the words it leaves out show in that language instead of English.

Patch Changes

  • #923 by @bobsingor – The bar for selected annotations sits below them, and above them when there's no room below. Its menus and the link editor open on the same side.

  • #923 by @bobsingor – The default bars make room in the order their groups say, now that a group's importance is its items' too. In a narrow main bar, pan and pointer are the first buttons to go into the "More" menu, then the View menu and zoom, and the document menu, thumbnails, search and comments never do. So a phone keeps the mode tabs, folded behind a chevron, beside search and comments. In the annotate, shapes and form bars, the text tools, polygons and the less common fields go before undo and redo. The measuring tools, and delete in the annotation bar, stay in their bars. An item you add with layout.add(item, { group }) takes that group's importance unless you give it its own.

  • #923 by @bobsingor – The thumbnails panel has a scrollbar like the pages', and room above the first thumbnail: 20 px around the thumbnails, where the panel's narrow width used to give them the 4 px phone gutter. plugins.thumbnails can still set padding and responsive.

  • #923 by @bobsingor – Full Screen (view:fullscreen) fills the screen with the viewer's own box instead of the whole page, and leaves the page's own full screen alone. The viewer stays where the page put it, and nothing on the page moves or changes. In a frame without allow="fullscreen" the button isn't there, since the browser lets nothing in such a frame go full screen. Where the browser has no full screen for elements (Safari on iPhone) or refuses it, the viewer covers the whole window instead, until the button or Escape ends it; a viewer that already is the whole window there has no Full Screen. The button follows Escape and the page's own requestFullscreen() on the <embedpdf-viewer> element, shows the fullscreenExit icon while the viewer fills the screen, and dialogs and sheets open in the viewer stay on top as it goes full screen.

  • #923 by @bobsingor – The zoom:in and zoom:out commands are off at the zoom limits, and the toolbar's − and + buttons show it: they grey out at maxZoom and minZoom, set under plugins.stage. Zooming in and out steps through round levels (100%, 125%, 150%, 200% and so on).

@embedpdf/viewer@3.0.0-next.19

Minor Changes

  • #923 by @bobsingor – The fetch config key: your own fetch for every document at a URL (src, documents and { kind: 'url' } in code), to add headers or cookies. It follows its prop, as element.fetch too: the next download uses a new one, and the viewer stays. A server that answers 401 or 403 shows in the tab as not allowed, and Try again calls fetch again.

@embedpdf/viewer-react@3.0.0-next.19

Minor Changes

  • #923 by @bobsingor – <PDFViewer fetch>: your own fetch for documents at a URL, to add headers or cookies. It follows its prop, like src.

@embedpdf/viewer-svelte@3.0.0-next.19

Minor Changes

  • #923 by @bobsingor – <PDFViewer fetch>: your own fetch for documents at a URL, to add headers or cookies. It follows its prop, like src.

@embedpdf/viewer-vue@3.0.0-next.19

Minor Changes

  • #923 by @bobsingor – <PDFViewer :fetch>: your own fetch for documents at a URL, to add headers or cookies. It follows its prop, like src.

@embedpdf/plugin-annotation@3.0.0-next.19

Patch Changes

  • #923 by @bobsingor – canDelete() answers for everything a delete takes. Deleting an annotation deletes its replies, review states, grouped parts and popups with it, and canDelete() (on the plugin and on comments) now checks each of them: the annotation as before, and what goes with it by its locked flag and the permission to delete it. A delete button no longer offers a delete the engine refuses (a reply someone else wrote, under a grant that deletes only your own), or deletes a locked reply along with its parent. comments.canDeleteThread() and comments.deleteThread() use the same check, so a thread with a review status can be deleted again: the hidden annotation a status is stored in no longer blocks it.

@embedpdf/core-acrojs@3.0.0-next.19

@embedpdf/core-annotation@3.0.0-next.19

@embedpdf/core-fonts@3.0.0-next.19

@embedpdf/core-form@3.0.0-next.19

@embedpdf/core-geometry@3.0.0-next.19

@embedpdf/core-js-sandbox@3.0.0-next.19

@embedpdf/core-signature@3.0.0-next.19

@embedpdf/engine@3.0.0-next.19

@embedpdf/engine-runtime@3.0.0-next.19

@embedpdf/engine-runtime-darwin-arm64@3.0.0-next.19

@embedpdf/engine-runtime-darwin-x64@3.0.0-next.19

@embedpdf/engine-runtime-linux-arm64@3.0.0-next.19

@embedpdf/engine-runtime-linux-x64@3.0.0-next.19

@embedpdf/engine-runtime-linuxmusl-arm64@3.0.0-next.19

@embedpdf/engine-runtime-linuxmusl-x64@3.0.0-next.19

@embedpdf/engine-runtime-wasm32@3.0.0-next.19

@embedpdf/engine-runtime-win32-arm64@3.0.0-next.19

@embedpdf/engine-runtime-win32-x64@3.0.0-next.19

@embedpdf/engine-services@3.0.0-next.19

@embedpdf/plugin-actions@3.0.0-next.19

@embedpdf/plugin-attachment@3.0.0-next.19

@embedpdf/plugin-form@3.0.0-next.19

@embedpdf/plugin-history@3.0.0-next.19

@embedpdf/plugin-link@3.0.0-next.19

@embedpdf/plugin-measurement@3.0.0-next.19

@embedpdf/plugin-metadata@3.0.0-next.19

@embedpdf/plugin-outline@3.0.0-next.19

@embedpdf/plugin-page-edit@3.0.0-next.19

@embedpdf/plugin-redaction@3.0.0-next.19

@embedpdf/plugin-render@3.0.0-next.19

@embedpdf/plugin-search@3.0.0-next.19

@embedpdf/plugin-selection@3.0.0-next.19

@embedpdf/plugin-shell@3.0.0-next.19

@embedpdf/plugin-signature@3.0.0-next.19

@embedpdf/plugin-stamp@3.0.0-next.19

@embedpdf/plugin-view-manager@3.0.0-next.19

2 hours ago
next.js

v16.5.0-canary.34

Misc Changes

  • fix(turbopack): fix canary build after chunk_groups became a Vec: #100949
  • Reland "perf(turbopack): canonicalize async loader availability": #100947
  • fix(turbopack): avoid panics from transient chunk group indices: #100928

Credits

Huge thanks to @sokra and @mischnic for helping!

3 hours ago
next.js

v16.5.0-canary.33

Core Changes

  • Stop patching error inspection if source maps are disabled: #93364

Misc Changes

  • Turbopack: store ChunkGroupInfo::chunk_groups as a Vec: #100935
  • [test] Fix flaky file-system-cache-clock tests: #100946
  • [ci] Fix test axis fixtures never running their off state in CI: #100912
  • Define the review agent's team as the owners in review/OWNERS: #100927

Credits

Huge thanks to @lukesandberg, @unstubbable, @eps1lon, and @acdlite for helping!

5 hours ago
starlight

@astrojs/starlight@0.42.8

Patch Changes

  • #4309 3490c80 Thanks @athulsreekumar! - Fixes autogenerated sidebar groups omitting directories whose names match Object.prototype properties, such as constructor or toString

  • #4290 bf93823 Thanks @RaphaelFakhri! - Fixes missing last-updated dates in production builds for pages whose file path contains special characters

  • #4295 af9557e Thanks @delucis! - Fixes a formatting issue in some error messages impacting projects with Zod ≥4.5 installed

  • #4299 a103f38 Thanks @clean99! - Fixes empty sidebars when autogenerating entries from the docs root directory using directory: ''

5 hours ago
three.js

r187

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

  • Global
    • Remove code deprecated in r177. #34517 (@linbingquan, @Mugen87)
  • AnimationUtils
    • Fix cubic spline additive reference sampling. #34860 (@gjija)
  • Backend
    • Keep occlusion query results per camera. #35066 (@arodic, @claude)
  • BatchedMesh
    • Clarify geometry compatibility requirements. #34675 (@MikeFernandez-Pro, @Mugen87)
    • Fix sort corruption. #34828 (@Mugen87)
    • Make shadows more node compatible. #34829 (@Mugen87)
    • Fix draw ranges after setGeometrySize(). #34983 (@MikeFernandez-Pro)
    • Fix memory leak of previous matrix data. #35272 (@Mugen87)
  • Bindings
    • Avoid recreating initial texture bind groups. #34657 (@mrdoob)
    • Avoid cache key allocations in _update(). #35120 (@Snuble-bot, @Mugen87, @claude)
    • Avoid cache key collision with similar IDs. #35226 (@Mugen87)
  • Box3
    • Use BatchedMesh bounds in precise mode. #34863 (@gjija)
  • BufferAttribute
    • (Interleaved)BufferAttribute: Optimize normalized data access. #34992 (@zeux)
  • BufferGeometry
    • Finalize tangents once per vertex. #34624 (@mrdoob)
  • Color
    • Accept negative hues and decimal percentages in setStyle(). #34849 (@ewraj)
  • ColorManagement
    • Fix order of color space conversion matrix. #34952 (@michaelcrosato, @claude)
  • CompressedTexture
    • Default mipmaps to an empty array. #35081 (@arodic, @Mugen87, @claude)
  • Core
    • Make copy() methods more robust. #34691 (@Mugen87)
    • Fix reversed depth function mapping. #35264 (@WilliamLiu-1997)
  • Curves
    • Invalidate cached lengths when copying or deserializing. #35118 (@dewanshshekhar, @Mugen87)
  • EdgesGeometry
    • Use a Map for edge lookups. #34805 (@sarojpahi)
  • FramebufferTexture
    • Fix source copy. #34636 (@Mugen87)
  • Geometries
    • Add missing delete. #34648 (@Mugen87)
  • Inspector
    • Auto-render non-texture nodes in the Viewer and fix toInspector() registration. #35253 (@sunag)
  • InterleavedBuffer
    • Fix clone() and toJSON() of views into a shared array buffer. #34755 (@vincentfretin, @claude)
  • KeyframeTrack
    • Fix shift() ignoring tangent data. #34951 (@kwy404)
  • LatheGeometry
    • Normalize the normal of the last point. #35153 (@spokodev)
  • LightProbe
    • Fix JSON round trips. #34859 (@gjija, @Mugen87)
  • LightShadow
    • Clean up. #35213 (@Mugen87)
  • Line
    • Line, Points: Copy morph targets in copy(). #35147 (@Enesuygurs)
  • Line3
    • Fix closest point for degenerate segments in distanceSqToLine3(). #34673 (@kwy404)
  • Math
    • Improve tree-shaking of unused classes. #34619 (@mrdoob)
  • MeshPhysicalMaterial
    • Add EON rough diffuse BRDF. #34379 (@Ryan-G7, @Mugen87)
    • Add iridescence thickness min/max properties. #35039 (@Mugen87)
  • Object3D
    • Honor pivot when decomposing local matrices. #34811 (@gjija, @mrdoob)
  • ObjectLoader
    • Fix loading of BatchedMesh available ids. #34652 (@gjija, @Mugen87)
    • Restore SpotLight.map. #35128 (@HEOJUNFO, @claude)
  • PMREM
    • Restore minimal roughness, improve roughness ramp. #34645 (@Mugen87)
  • PMREMGenerator
    • Replace the CubeUV atlas with cube render targets. #34585 (@mrdoob, @claude)
  • RenderContexts
    • Simplify comment. 121e626bb5d58ddd4f1d975010997f73688e665f (@Mugen87)
    • Add the camera type to the state key. #35123 (@arodic, @claude, @sunag)
  • Renderer
    • Fix edge cases in dispose(). #34765 (@Mugen87)
    • Improve canvas target disposal. #34969 (@Mugen87)
    • Track the source material in override passes. #35232 (@mrdoob)
  • Renderers
    • Fix polygon offset with reveresed depth buffer. #34606 (@Mugen87)
    • Preallocate wireframe indices. #34621 (@mrdoob)
    • Fix blit region in copyTextureToTexture(). #35167 (@batuhansalkim)
    • Ignore logarithmic depth buffer when reversed depth buffer is enabled. #35276 (@mrdoob, @claude)
  • RendererUtils
    • Preserve additional renderer state. #35233 (@kemchenj)
  • RenderObject
    • Use hashArray() in getDynamicCacheKey(). #34553 (@Mugen87)
    • Fix dispose listener for geometries. #34605 (@Mugen87)
    • Detect missing color change for instanced meshes. #34752 (@Mugen87)
    • Add uv channel to material cache key. #34773 (@Mugen87)
    • Exclude deprecated iridescenceThicknessRange. 2b7c79ef262c5f929d6170ebbdcc7cf2e0ee6742 (@Mugen87)
    • Fix handling of blending and combine. #35113 (@a411919924, @Mugen87, @claude)
  • RenderObjects
    • Improve geometry check. #34799 (@Mugen87)
  • RenderTarget
    • Give each attachment its own TextureSource. #34970 (@ycw, @Mugen87)
  • Shadows
    • Fix point light shadow seams. #35267 (@mrdoob, @Mugen87)
  • Skeleton
    • Take ownership of previous data. #34976 (@Mugen87)
  • SkinnedMesh
    • Avoid iterator spread in applyBoneTransform(). #34810 (@sarojpahi)
  • Sprite
    • Serialize center. #35162 (@mkantautas)
  • StorageBufferAttribute
    • Add support for disposing storage buffer attributes. #34664 (@gkjohnson)
    • Fix feedback on disposal. #34666 (@gkjohnson, @Mugen87)
  • Texture
    • Add mipmapsAutoUpdate. #34630 (@Mugen87)
  • Textures
    • Return generation key in updateTexture(). #34659 (@Mugen87)
  • TextureSource
    • Never write undefined into the target vector in getSize(). #34615 (@madisonrickert, @Mugen87, @claude)
  • Triangle
    • Fix closestPointToPoint() returning NaN when a equals b. #34695 (@kwy404, @Mugen87)
  • WebGLBackend
    • Fix single-layer array render targets. #34510 (@WilliamLiu-1997, @Mugen87)
    • Clear caches in dispose(). #34602 (@Mugen87)
    • Improve dispose(). #34688 (@Mugen87)
    • Fix clear() with a disabled color write mask. #34729 (@drakeo338, @Mugen87)
    • Fix FloatType depth textures with MSAA. #34768 (@WilliamLiu-1997)
    • Fix MSAA with default depth textures. #34927 (@WilliamLiu-1997)
    • Use correct depth texture for clear. #34928 (@Mugen87)
    • Move transforms and attributes to ComputePipeline. #35009 (@Mugen87)
  • WebGLProgram
    • Remove unreachable shader chunk alias fallback. ce84e0dbeb795869ec6876599c184df4a294d5c1 (@mrdoob)
  • WebGLPrograms
    • Remove undefined morphAttributeCount cache-key field. eb955c1ef3bd7d421c4ed237887b75456dc047e1 (@mrdoob)
    • Fix material.precision leaking into other materials. #34818 (@mrdoob)
  • WebGLRenderer
    • Only apply pixel ratio to the canvas in setViewport() and setScissor(). #34460 (@mrdoob, @claude)
    • Support FrustumArray. #34275 (@Mugen87)
    • Improve geometry disposal. #34529 (@Mugen87)
    • Improve texture disposal. #34530 (@Mugen87)
    • Reuse binding points for uniform groups. #34669 (@gkjohnson)
    • Align shadow camera layer handling to WebGPURenderer. #34670 (@Mugen87)
    • Correctly init default depth textures. #34687 (@Mugen87)
    • Add getProgramVariant(). #34739 (@Mugen87)
    • Support needsDepthTexture in setEffects(). #34858 (@mrdoob)
    • Fix PCF shadow bias with reversed depth. #34892 (@WilliamLiu-1997)
    • Move frame increament before project. #35103 (@Mugen87)
    • Fix color morphing regression. #35140 (@Mugen87)
    • Fix instanced attributes viewing a buffer attribute. #35227 (@sunag)
  • WebGLState
    • Reset blending cache in setMRTBlending(). #34990 (@yujiaxu-ops, @Mugen87, @claude)
  • WebGLTextures
    • Fix point light shadow disposal. #34522 (@Mugen87)
    • Don't invalidate depth for DRAW_FRAMEBUFFER. #35155 (@Mugen87)
  • WebGLTextureUtils
    • Fix copyTextureToBuffer() with red, RG and integer formats. #34852 (@mrdoob)
    • Fix source layer detection in copyTextureToTexture(). #35111 (@HEOJUNFO, @claude)
  • WebGLUniformsGroups
    • Fix uniforms with array values. #34889 (@mrdoob)
    • Fix std140 layout of arrays of uniforms. #34890 (@mrdoob)
  • WebGPUBackend
    • Skip generateMipmaps when the framebuffer copy dest has no mip chain. #34582 (@204a)
    • Fix widening of uint16 indices in standard use case. #34734 (@cmhhelgeson, @Mugen87)
    • Fix ArrayCamera depth clear value with reversed depth. #34804 (@mrdoob, @claude)
    • Recreate array camera layer descriptors when the depth texture changes. #34850 (@mrdoob)
    • Fix copyFramebufferToTexture() outside of render passes. #35133 (@mrdoob, @Mugen87)
  • WebGPUBindingUtils
    • Select depth aspect for sampled depth textures. #34584 (@WilliamLiu-1997)
  • WebGPURenderer
    • Fix render target texture dispose crash. #34496 (@Mugen87)
    • Textures never removes dispose listeners. #34368 (@wcandillon, @Mugen87, @claude)
    • Align dispose() for geometries. #34516 (@Mugen87)
    • Ensure valid state in compileAsync(). #34506 (@Mugen87)
    • Properly delete shader programs. #34601 (@Mugen87)
    • Refactor node attribute disposal. #34603 (@Mugen87)
    • Improve VAO caching and disposal. #34610 (@Mugen87)
    • Replace "addLight" with "lightNode" reference. #34622 (@gkjohnson)
    • Unify handling of interleaved attributes. #34690 (@Mugen87)
    • Derive viewport and stencil flags from render context. #34692 (@Mugen87)
    • Introduce ProxyNodeMaterial. #34684 (@sunag)
    • Refactor render cache key. #34726 (@Mugen87)
    • Reset timestampWrites with disabled trackTimestamp. #34760 (@Mugen87)
    • Add missing DEPTH32F_STENCIL8, fix default depth texture. #34803 (@Mugen87)
    • Support depth-only render targets. #34782 (@mrdoob, @Mugen87, @claude)
    • Release previous pipeline and programs when switching to cached ones. #34821 (@mrdoob)
    • Add _updateDispatchSize(). #34871 (@Mugen87)
    • Clear texture update ranges after upload. #34919 (@MikeFernandez-Pro, @Mugen87)
    • Throw an error if "count" and "dispatchSize" are used together. #34813 (@gkjohnson, @sunag)
    • Fix scissorTest check. #35000 (@Mugen87)
    • Always bind struct storage buffers as arrays. #34807 (@gkjohnson)
    • Compile pipelines in parallel in compileAsync(). #34816 (@sunag)
    • Fix shader reuse for instanced meshes. #34872 (@EdoardoLuciani, @mrdoob, @sunag)
    • Preserve material side in compileAsync(). #35016 (@mrdoob)
    • Share node builds across call depths. #35014 (@mrdoob, @Mugen87)
    • Support dispose() for all buffer attributes. #34685 (@sunag)
    • Support uncompressed data in compressed textures. #35082 (@arodic, @Mugen87, @claude)
    • Support CompressedCubeTexture. #35083 (@arodic, @Mugen87, @claude)
    • Share builds between instanced meshes with referenceAttribute(). #35007 (@mrdoob, @sunag)
    • Fix output camera initialization when starting in XR. #35126 (@salmanmkc, @Mugen87)
    • Fix disposed geometries with static objects and bundles. #35105 (@sunag, @Mugen87)
    • Fixed disposed PMREM. #35185 (@Mugen87)
    • Cull ArrayCamera draws per sub-camera. #35164 (@bhouston, @Mugen87, @claude)
    • Merge consecutive BatchedMesh draws that share a geometry range. #35259 (@MikeFernandez-Pro, @Mugen87)
    • Rename ProxyNodeMaterial -> NodeMaterialInstance. #35269 (@sunag)
    • Start the internal animation loop on first use. #35278 (@mrdoob, @claude)
    • Don't start the animation loop in setAnimationLoop( null ). #35279 (@mrdoob, @claude)
  • WebGPUTextureUtils
    • Fix getColorBuffer() cache check. #34826 (@mrdoob)
    • Fix row padding in copyTextureToBuffer(). #34851 (@mrdoob)
  • WebXRController
    • Use quaternion when decomposing pose matrices. #34817 (@mrdoob)

Nodes

  • Nodes
    • Make build more efficient. #34531 (@Mugen87)
    • Unify temporary node caching in Node. #34607 (@sunag)
    • Use named MathUtils imports. #34625 (@mrdoob)
    • Delegate variable statements to NodeBuilder. #34617 (@sunag)
    • Fix lightViewPosition() with ArrayCamera. #34912 (@bhouston, @claude)
  • AttributeNode
    • Allow the context to provide attribute values. #35054 (@sunag)
  • BasicEnvironmentNode
    • Limit env map rotation to envNode. #34570 (@Mugen87)
  • Batch
    • Only update the previous matrices texture when the matrices change. #35057 (@HEOJUNFO, @Mugen87, @claude)
    • Recreate the previous matrices texture when the instance count changes. #35075 (@HEOJUNFO, @Mugen87, @claude)
  • BitcountNode
    • Return the input type for zero in the WebGL fallback. #35217 (@HEOJUNFO, @claude)
  • BumpMapNode
    • Add normalNode parameter. #35101 (@MikeFernandez-Pro)
  • Camera
    • Isolate ArrayCamera uniforms across shader builders. #34916 (@bhouston)
  • ClippingNode
    • Fix clipping with ArrayCamera. #35096 (@bhouston, @Mugen87)
  • EnvironmentNode
    • Resolve environment textures before rendering. #35036 (@sunag)
  • getParallaxCorrectNormal
    • Keep axis-aligned directions finite. #35049 (@bhouston, @Mugen87)
  • GLSLNodeBuilder
    • Fix buffer name collisions between stages. #35012 (@mrdoob)
    • Fix generateTextureLevel() with depth textures. #35136 (@Mugen87)
    • Fix uniform block lookups in shared bind groups. #35222 (@mrdoob, @claude)
  • LightProbeNode
    • Update light probe uniforms in the render group. #35060 (@arodic, @claude)
  • LightsNode
    • Honor light version for shadow casting lights. #34949 (@Mugen87)
    • Fix cache key of shadow casting lights before the first build. #35019 (@mrdoob)
  • MaterialNode
    • Fix clearcoat roughness texture channel. #34564 (@hybridherbst)
  • Node
    • Cache node overrides per context. #35050 (@sunag)
  • NodeBuilder
    • Move shared bind groups cache into Bindings. #34707 (@Mugen87)
    • Remove getSharedDataFromNode(). #34857 (@mrdoob)
  • NodeMangager
    • Fix stack trace in async builds. #34727 (@Mugen87)
  • NodeMaterial
    • Fix copy(). #34766 (@Mugen87)
    • Add emissiveNode to lambert, phong and toon materials. #35059 (@MikeFernandez-Pro)
  • NodeMaterialObserver
    • Force full refresh when the output target changes. #34968 (@arodic)
    • Force full refresh with custom fog and environment nodes. #34996 (@arodic)
    • Clean up. c5e5061ed040ff74cef33b96bf84ef16f7282998 (@Mugen87)
    • Add missing material properties. #35022 (@Mugen87)
    • Track texture uv transforms. #35062 (@arodic, @Mugen87, @claude)
    • Improve output target ceck. #35156 (@Mugen87)
    • Revert fogNode and environmentNode tracking. #35221 (@Mugen87)
  • NodeSampler
    • Fix clone(). #35094 (@Mugen87)
  • NodeStorageBuffer
    • Fix stale attribute references. #34939 (@WilliamLiu-1997)
  • NodeUniformBuffer
    • Fix stale attribute references. #34941 (@Mugen87)
  • NodeUtils
    • Add mergeContext() to merge override nodes of nested contexts. #35108 (@sunag)
  • OverrideContextNode
    • Add shaderStage parameter to overrideNodes(). #35109 (@sunag)
  • PassNode
    • Compile with the render configuration in compileAsync(). #35168 (@sunag)
  • PhysicalLightingModel
    • Fix specular intensity in direct lighting. #34764 (@EdoardoLuciani)
  • PointShadowNode
    • Adhere CubeCamera conventions. #34899 (@Mugen87)
    • Loop over shadow filter taps. #35186 (@bhouston)
  • RangeNode
    • Use hash() instead of per-object buffers. #34897 (@mrdoob)
    • Make random values independent of node creation order. #34920 (@sunag, @mrdoob)
  • RectAreaLightNode
    • Fix lighting with ArrayCamera. #35095 (@bhouston, @Mugen87)
  • ReflectorNode
    • Fix reflection with view offset. #34917 (@scottcampbelldata)
    • Fix bounces: false with multiple cameras. #34977 (@arodic)
  • RenderOutputNode
    • Make premultipliedAlpha optional. #34948 (@Mugen87)
  • RTTNode
    • Keep the renderer's clear color. #34855 (@HEOJUNFO, @Mugen87, @claude)
  • ShadowBaseNode
    • Remove unused velocity flag. #34854 (@mrdoob)
  • ShadowFilterNode
    • WebGLRenderer, WebGPURenderer: Fix PCF radius for non-square shadow maps. #35018 (@mrdoob)
    • Create the PCF shadow uniforms once per shadow. #35047 (@sunag)
  • ShadowNode
    • Render shadows with needsUpdate only once. #34794 (@mrdoob, @claude)
    • Fix shadows with reverse depth in first frame. #34801 (@Mugen87)
    • Update shadows at least once. #35093 (@Mugen87)
    • Avoid redundant scene matrix updates. #35203 (@mrdoob)
  • SpriteNodeMaterial
    • Use the center of the rendered sprite. #35064 (@arodic, @claude)
  • StorageBufferNode
    • Better support mat2 with WebGL. #34595 (@Mugen87)
  • TextureNode
    • Simplify and optimize uniforms. #34552 (@Mugen87)
    • Propagate comparison sampling to the shared binding. #34555 (@dswhy, @Mugen87)
    • Detect filter and type changes. #34556 (@Mugen87)
    • Allow for non-mergeable uniforms. #34450 (@Mirei3D)
    • Fix int/float arithmetic regression. #34898 (@Mugen87)
    • Add getTextureGradient() context to provide analytic uv gradients. #35121 (@sunag)
  • ToneMappingFunctions
    • Fix ACES Filmic fit denominator. #35110 (@HEOJUNFO, @claude)
  • TSL
    • Fix attributeArray() buffer count usage. #34591 (@Mugen87)
    • Fix scalar constant caching. #34618 (@mrdoob)
    • Enable caching for reused type conversions. #34633 (@sunag)
    • Use local declarations for cached values and variable intents. #34637 (@sunag)
    • Share and vectorize bicubic filter calculations. #34655 (@mrdoob)
    • Share dielectric scattering in indirect lighting. #34656 (@mrdoob, @Mugen87)
    • Fix per-component select(). #34425 (@bhouston, @sunag)
    • Fix scope and reuse of function calls containing loops. #34643 (@sunag)
    • Share EON directional albedo in indirect lighting. #34660 (@mrdoob, @Mugen87)
    • Add type promotion in operators and math functions. #33695 (@shotamatsuda, @sunag)
    • Fix getViewPosition() with WebGL reversed depth. #34724 (@WilliamLiu-1997)
    • Add function layout to IBLSheenBRDF. #34824 (@mrdoob, @claude)
    • Simplify function layouts and add layouts to pure functions. #34843 (@sunag)
    • Optimize function layouts with include deduplication and default parameters. #34848 (@sunag)
    • Make nodes their own variable intents and improve build performance. #34815 (@sunag)
    • Fix external variables being generated twice when used in a branch. #35067 (@sunag)
    • Add color morphing. #35141 (@Mugen87, @sunag)
    • Fix parameter length of quadBroadcast(). #35218 (@HEOJUNFO, @Mugen87, @claude)
    • Build before() nodes only in the setup stage. #35245 (@sunag)
  • TSLCore
    • Move the swizzle cache to a WeakMap. #35251 (@sunag)
  • UniformArrayNode
    • Fix mat2 usage in WebGL. #34587 (@Mugen87)
  • ViewportDepthNode
    • Rename getProjectionDepth() to projectionDepth(). #35230 (@Mugen87)
  • WGSLNodeBuilder
    • Add Directives to Fragment Stage and Update NodeBuilder. #34513 (@cmhhelgeson, @Mugen87)
    • Support gather() with multisampled textures. #34609 (@RenaudRohlinger, @claude)
    • Honor read-write storage textures in the fragment stage. #34923 (@HEOJUNFO, @Mugen87, @claude)
    • Fix grad() with unfilterable textures. #35169 (@sunag)

Addons

  • Addons
    • Avoid unnecessary regex backtracking. #35184 (@mrdoob)
  • 3DMLoader
    • Fix authentication and custom header forwarding to internal asset loaders. #35024 (@bhouston)
  • BitonicSort
    • Dispatch a complete sort in one compute pass. #35275 (@subashc2023)
  • BufferGeometryUtils
    • Validate morph attributes in mergeGeometries(). #34532 (@cuishuang)
    • Support interleaved data in mergeVertices(). #34665 (@Mugen87)
    • Match tangent precision to quantized normals in computeMikkTSpaceTangents(). #34714 (@mrdoob, @Mugen87, @claude)
    • Fix deinterleaveGeometry() with morph attributes. #34827 (@MikeFernandez-Pro)
    • Add remapAttribute(). #34945 (@bhouston)
    • Preserve morphTargetsRelative in mergeGeometries(). #35177 (@HEOJUNFO, @Mugen87)
    • Fix group count of Infinity in mergeGroups(). #35258 (@shan3520, @Mugen87)
  • CCDIKSolver
    • Improve clamp. #35023 (@Mugen87)
  • ClusteredLighting
    • Add spot lights and WebGL2 fallback support. #34978 (@sunag)
  • ColladaLoader
    • Fix n-gon attribute triangulation. #34862 (@gjija, @Mugen87)
    • Fix sRGB to linear conversion of vertex colors. #35129 (@HEOJUNFO, @claude)
  • ColorConverter
    • Fix HSV conversion at black and white boundaries. #34806 (@dhairyajangir)
  • CSMShader
    • Sync lights_fragment_begin with the core chunk. #35248 (@subashc2023)
  • DDSLoader
    • Align data length computation to DirectXTex. #34908 (@Mugen87)
  • DRACOLoader
    • Fix loop bound when repacking unaligned attributes. #35037 (@cherenkov, @claude)
  • EXRExporter
    • Fix zip partial block. #34964 (@richardmonette)
    • Add RLE compression. #34972 (@richardmonette)
    • Add PIZ compression. #34979 (@richardmonette)
    • Add textureIndex option for MRT render targets. #35207 (@repalash)
  • EXRLoader
    • Remove duplicate half-float decoder. #34574 (@bhouston)
    • Use lookup table for DWA linear conversion. #34573 (@bhouston)
  • GCodeLoader
    • Fix extrusion detection in relative mode. #34895 (@scottcampbelldata, @Mugen87)
    • Fix parsing of files with CRLF line endings. #35171 (@L4XB, @Mugen87)
  • GLTFExporter
    • Fix orthographic camera xmag and ymag. #35215 (@HEOJUNFO, @Mugen87, @claude)
  • GLTFLoader
    • Fix GLTF loader credential forwarding to buffers and bitmap textures. #35025 (@bhouston)
    • Parse embedded KTX2 images without a Blob. #35193 (@Construkted-Reality, @Mugen87, @claude)
  • GTAOPass
    • Remove combined depth and normal texture support. #34836 (@bhouston, @Mugen87)
    • Fix external buffer handling. #34831 (@bhouston)
  • IESLoader
    • Apply photometric factors linearly instead of squaring candela. #34554 (@dswhy)
    • IESLoader, IESSpotLight: Add support for 2D & symmetric profiles. #34626 (@gkjohnson)
  • Inspector
    • Remove Circular Dependency. #34592 (@cmhhelgeson)
    • Fix CPU time double counting and FPS with skipped frames. #35070 (@sunag)
    • Fix number input drag interfering with text selection. #35117 (@MikeFernandez-Pro)
    • Truncate long parameter labels. #35206 (@MikeFernandez-Pro)
    • Fix overdraw render mode. #35255 (@sunag)
    • Fix mini panel checkbox and collapsed folder spacing. #35252 (@sunag)
    • Fix color grading exports and add example. #35257 (@sunag)
    • Fix GPU time display and triangle count for indirect draws. #35256 (@sunag)
  • JXLLoader
    • Add native HDR image loading. #35015 (@bhouston, @Mugen87)
  • KTXLoader
    • Fix mipmap size read. #34905 (@Mugen87)
    • Correctly round down mips. #34906 (@Mugen87)
  • LDrawLoader
    • Optimize smoothNormals() by fixing quadratic time complexity. #35200 (@AvaLovelace1)
    • Fix null conditional edge material for unknown colours. #35219 (@3a632062, @claude)
  • LightMapper
    • Diffuse light baker, works with Light Probe and VXGI. #34991 (@bhouston)
    • Clean up demo, add VGXI gather function. #35183 (@Mugen87)
  • LightProbeGrid
    • Batch probe capture with ArrayCamera for ~4x faster bakes. #34909 (@bhouston, @claude)
    • Project SH in row blocks. #35150 (@bhouston, @claude)
    • Faster multi-bounce (and default examples to use multi-bounce). #35145 (@bhouston, @Mugen87)
    • Place probes at the center of their cells. #35265 (@mrdoob)
    • Only sample the last grid that contains the fragment. #34798 (@mrdoob, @Mugen87, @claude)
  • LightProbeGridWebGL
    • Extend from Light. #34744 (@Mugen87)
  • LineMaterial
    • Fix world-unit extrusion with orthographic cameras. #34540 (@diarmidmackenzie, @Mugen87)
    • Fix depth shifting. #35139 (@Mugen87)
  • Loaders
    • Add priority and HTTP cache controls. #34936 (@bhouston, @Mugen87)
  • Lut
    • Read the end colors of a color map in linear space. #35181 (@L4XB, @Mugen87)
  • LUT3dlLoader
    • Prevent invalid bit depth values. #34903 (@Mugen87)
  • LUTCubeLoader
    • Fix domain regex. #34900 (@Mugen87)
  • MaterialXDocument
    • Clean MaterialX loader + compiler. #34523 (@bhouston)
    • MaterialXLoader bug fix: Support handlers that resolve with a Texture. #34575 (@bhouston, @Mugen87)
    • MaterialXLoader bug fix: consistent and correct nodedef defaults. #34593 (@bhouston)
  • MaterialXLoader
    • Only resolve loading promises when all sub-resources are loaded. #34439 (@bhouston)
    • Support displacement nodes (both scalar and vector). #34576 (@bhouston)
    • Match output-less separate2/3/4 behaviour with MaterialX. #34835 (@hybridherbst)
    • Add setNodeResolver(). #34832 (@hybridherbst)
    • Support hsvadjust, facingratio and triplanarprojection. #34986 (@hybridherbst)
    • Support surface_unlit. #34987 (@hybridherbst)
    • Support nodes implemented by node graphs. #34988 (@hybridherbst)
    • Forward texture request configuration. #35026 (@bhouston)
  • MikkTSpace
    • Replace WASM with JavaScript. #34623 (@mrdoob)
    • Speed up tangent generation. #34713 (@mrdoob, @claude)
  • NRRDLoader
    • Fix parsing of the last header field. #35178 (@HEOJUNFO, @Mugen87)
  • NURBSCurve
    • Fix clone(). #34542 (@Dev-next-gen)
  • OBB
    • Fix plane distance sign in intersection tests. #35195 (@Shubham-Padkonde, @Mugen87)
    • Fix applyMatrix4() with rotated boxes and negative determinants. #35261 (@Enesuygurs, @Mugen87)
  • OBJExporter
    • Support export of vertex colors in meshes. #35131 (@shan3520)
    • Fix export of indexed lines. #35154 (@nk-batman21, @Mugen87)
  • OBJLoader
    • Parse l and p statements correctly. #35006 (@shan3520, @Mugen87)
  • Octree
    • Preserve configured subdivision limits. #34814 (@dhairyajangir)
    • Fix sphere collisions at triangle edges. #35196 (@Shubham-Padkonde, @Mugen87)
    • Project box contacts toward the triangle plane. #35197 (@Shubham-Padkonde, @Mugen87)
    • Correct line segment to line segment closest point calculation. #35216 (@shan3520)
  • OrbitControls
    • Reset state when the one-finger touch action is disabled. #34651 (@gjija)
    • Fix zoomToCursor when dollying with the mouse. #34856 (@mrdoob)
    • Move away from getRootNode(). #34973 (@Mugen87)
  • PCDLoader
    • Respect COUNT when locating ASCII fields. #34809 (@dhairyajangir, @Mugen87)
    • Allow more separation styles. #34901 (@Mugen87)
  • PDBLoader
    • Fix coordinate field slices. #34896 (@scottcampbelldata, @Mugen87)
  • PLYExporter
    • Skip Points without position attributes. #34762 (@somasoil, @Mugen87)
    • Fix export of quantized attributes. #35192 (@nk-batman21, @Mugen87)
  • PLYLoader
    • Fix colors, tex coords and indices for quads. #34649 (@Mugen87)
    • Move custom data parsing. #34911 (@Mugen87)
  • PVRLoader
    • Fix mips size computation. #34910 (@Mugen87)
  • RapierPhysics
    • Update Rapier to 0.21.0 and use jsDelivr CDN. #35223 (@linbingquan)
  • Reflector/ReflectorNode
    • Better handle asymetric projections. #34929 (@Mugen87)
  • SceneUtils
    • Keep normalized in createMeshesFromMultiMaterialMesh(). #35224 (@mmporong, @Mugen87)
  • STLLoader
    • Fix COLOR= parsing. #34902 (@Mugen87)
  • SVGLoader
    • Fix stylesheet parsing. #34775 (@Mugen87)
    • Improve path parsing. #35005 (@Mugen87)
    • Support href in use elements. #35165 (@nk-batman21, @Mugen87)
  • SVGRenderer
    • Use the target of directional lights for the light direction. #35208 (@repalash)
  • TGALoader
    • Fix color palette index. #34907 (@Mugen87)
  • TSL
    • More usage of EPSILON. #35063 (@Mugen87)
  • unwrapUVs
    • Real-time generator of UV atlases for lightmap and normal baking. #34944 (@bhouston, @Mugen87)
  • USDAParser
    • Avoid per-character string building in preprocessing. #35020 (@cherenkov)
    • Keep time samples at negative time codes. #35172 (@L4XB, @Mugen87)
    • Keep comment markers inside strings and asset paths. #35182 (@L4XB, @Mugen87)
  • USDComposer
    • Correct the color space setting in to be linear sRGB. #34644 (@Jeggery)
  • USDLoader
    • USDLoader bug: Load texture images through ImageLoader. #35010 (@bhouston)
  • VXGI
    • Mitigate light bleeding. #35160 (@Mugen87)
  • VXGIVolume
    • Improve disposal. #34933 (@Mugen87)
  • WebGPURenderer
    • Introduce StandardDrawingPipeline, MeshletDrawingPipeline and VisibilityBufferDrawingPipeline. #35191 (@sunag)
  • XREstimatedLight
    • Remove session listeners in dispose(). #35106 (@salmanmkc, @Mugen87)

Addons / Nodes

  • TSL
    • Add lens dirt TSL function. #34715 (@Mugen87)
    • Add isBackgroundDepth() and use it in post processing nodes. #34792 (@mrdoob, @claude)
    • Remove redundant nodeObject() calls. #34841 (@sunag)
  • ClusteredLightsNode
    • Improve dispose() and code structure. #34930 (@Mugen87)
    • Preserve shader cache keys on first use. #35271 (@sunag)
  • DynamicLightsNode
    • Refactor to restore lost support. #34774 (@Mugen87)
    • Identify batched lights by their class. #35004 (@yujiaxu-ops, @Mugen87, @claude)
  • GTAONode
    • Fix false self-occlusion on distant slanted surfaces. #34718 (@EdoardoLuciani, @Mugen87)
    • Fix view direction for orthographic cameras. #35073 (@martincollignon, @Mugen87, @claude)
  • lensDirt
    • Clean up. f9cb766057cc4ddeed220b44e158ab2531e9ffad (@Mugen87)
  • LightProbeGrid
    • Add a small margin to the bounds test. #35268 (@mrdoob)
  • MaterialXLoader
    • Return 0 instead of NaN from burn and dodge. #34834 (@hybridherbst)
    • Vector and color noise now use one noise per channel. #34833 (@hybridherbst)
    • Add randomfloat and randomcolor. #34866 (@hybridherbst)
  • OutlineNode
    • Outline Nodes: Honor positionNode, improve dispose(). #34759 (@Mugen87)
  • PassNode/TAA
    • Improve depth support. #34802 (@Mugen87)
  • PixelationPassNode
    • Simplify Code. #34543 (@cmhhelgeson, @Mugen87)
  • SoftParticles
    • Fix shader compilation with the WebGL backend. #35249 (@subashc2023)
  • SpecularHelpers
    • Fix the GGX tangent frame at the poles. #35237 (@bhouston)
  • SSGINode
    • Support resolution scale, add getProjectionDepth(). #35229 (@Mugen87)
  • SSRNode
    • Default to the full GGX sampling lobe. #35243 (@bhouston)
    • Validate ray bounds and refined hits. #35238 (@bhouston, @Mugen87)
    • Fix refinement regression. #35266 (@Mugen87)
    • Clip traversal to the viewport and refine coarse hits. #35240 (@bhouston)
    • Support material F0 and F90 in stochastic reflections. #35242 (@bhouston)
  • TAAUNode
    • TAA Nodes: Register inputs ahead of consumers. #34565 (@Mugen87)
  • TemporalReprojectNode
    • Update the depth pass before the node. #34823 (@mrdoob, @claude)
    • Match the history depth type to the scene depth. #34793 (@mrdoob, @Mugen87, @claude)
  • TileShadowNode
    • Support reversed depth buffer. #34784 (@mrdoob, @claude)
    • Honor shadow camera layers. #34785 (@mrdoob, @claude)
    • Add depthType option. #34786 (@mrdoob, @claude)
    • Use a depth-only render target. #34783 (@mrdoob, @claude)
    • Sample only the tile that covers the fragment. #34787 (@mrdoob, @claude)
  • TRAANode
    • Fix previous-depth texture leak. #34873 (@EdoardoLuciani)
  • WebGLNodesHandler
    • Use the WebGL PMREM generator. #34628 (@mrdoob)
    • Add missing fogDensity uniform. #35250 (@subashc2023)
  • WebGPURenderer
    • Init render target textures differently. #35204 (@Mugen87)

Docs

  • Line3: Fix at() return description. #34545 (@Hugohong258)
  • TSL Guide: Fix parameter highlighting with parentheses in descriptions, plus edge case workaround. #34577 (@ycw)
  • Add a Static Properties subsection to improve discoverability. #34642 (@ycw)
  • Raycaster: Document batchId in Intersection. #34674 (@MikeFernandez-Pro)
  • BatchedMesh: Clarify when to recompute bounding volumes. #34699 (@MikeFernandez-Pro, @Mugen87)
  • Fix incorrect @default values. #34700 (@ZainnQureshii, @claude)
  • Fix JSDoc for TextureLoader.load to indicate optional callbacks. #34730 (@ycw)
  • Opt embedded tweets out of personalization. #34795 (@ycw)
  • LightUtils: Fix Documenation. #34845 (@cmhhelgeson)
  • BatchedMesh: Fix getGeometryRangeAt() description. #34847 (@MikeFernandez-Pro)
  • Fix typo in Object3D.js documentation. f2a1c255ac04bc532acf6335fcd3d992c8ba2f01 (@mrdoob)
  • DirectRenderPipeline: Document MSAA restriction. #34954 (@Mugen87)
  • NodeMaterial: Clarify positionNode with instancing. #34981 (@MikeFernandez-Pro)
  • SkyMesh: Improve docs. #34989 (@Mugen87)
  • InspectorBase: fix renderer types in JSDoc. #35027 (@kercre123)
  • Fix incorrect default values in JSDoc. #35034 (@ihsandeniz)
  • SpriteNodeMaterial: Correct positionNode type in docs. #35071 (@SachchitNesarikar)
  • Fix typo in ExtrudeGeometry section. #35180 (@andayers06)
  • Fix callback parameters of Object3D and Interpolant. #35231 (@mmporong, @claude)
  • TSL Guide: Update for r187. #35254 (@sunag)
  • Fix minor issue in BokehPass inline documentation code sample. #35274 (@cool-user1481)

Manual

  • Improve update guide. #34867 (@Mugen87)
  • Fix broken links in WebXR and textures pages. #34958 (@SatvikMishra08)
  • Clarify replacing geometries when buffers outgrow capacity. #35104 (@xlb3055, @Mugen87)
  • Add three-player-controller to libraries and plugins. #35234 (@hh-hang)

Examples

  • Clean up. #34518 (@Mugen87)
  • Clean up. #34539 (@Mugen87)
  • Remove iOS iframe auto-resize workaround. #34546 (@paulmasson)
  • Clean up. #34547 (@Mugen87)
  • Only use SunLight in larger scenes. #34586 (@Mugen87)
  • Fix MaterialX shader precompilation. d8d1c9b77a6fb16471d2a8b7908e59bf3372dbce (@mrdoob)
  • Skip MaterialX double-pass precompilation. 1b437fbd101f8c322b2ccfa811bcf8d4aca764a1 (@mrdoob)
  • Update path tracer to latest WebGPU version. #34704 (@gkjohnson)
  • Use Inspector in webgpu_renderer_pathtracer.html. #34708 (@ycw)
  • Add webgpu_tsl_occlusion_dither. #34710 (@MikeFernandez-Pro)
  • Remove redundant lil-gui CSS from webgpu_renderer_pathtracer.html. #34731 (@ycw)
  • Update fflate to 0.8.3. #34737 (@brennanmceachran, @claude)
  • Clean up. #34740 (@Mugen87)
  • Clean Up. #34839 (@cmhhelgeson, @Mugen87)
  • Clean Up 2. #34840 (@cmhhelgeson)
  • Linting. #34925 (@cmhhelgeson, @Mugen87)
  • Fix Readback in Reduce Example. #34924 (@cmhhelgeson, @Mugen87)
  • Clean up. #34984 (@Mugen87)
  • Fix hover highlight of first instance in webgl_batch_lod_bvh. #34998 (@MikeFernandez-Pro)
  • Add VDB loader community example. #35043 (@richardmonette)
  • Fix wireform transform not matching on CSG example. #35152 (@ctkerns)
  • Replace MRT scan asset. #35158 (@Mugen87)
  • Clean up. #35188 (@Mugen87)
  • Move point light uniforms to renderGroup in webgpu_volume_fire. #35198 (@MikeFernandez-Pro)
  • Switch Physics engine in ball pool demo. #35209 (@Mugen87)
  • Improve shadows in lightprobes_complex. 8c211ced8c0ba84b3cebcf3d23ef30b57d0cb2f0 (@mrdoob, @claude)
  • Rename webgpu_gpudriven_* to webgpu_meshlets_*. #35282 (@mrdoob, @claude)

Devtools

  • Lights, persistent helpers, previews without a renderer and 1.19. #35220 (@mrdoob, @claude)

Editor

  • Add missing sidebar/project/camera locale. #34512 (@ycw)
  • Fix editor lint warnings. #34515 (@ycw)
  • Better IDB perf metrics and error handling. #34514 (@ycw, @Mugen87)
  • Add zh/ja/ko/fa/fr translations for perspective/orthographic camera shortcuts. #34796 (@linbingquan)

Tests

  • Add lint rule to prevent import from /build in tests. #34541 (@bhouston)
  • Add TSL code generation reference tests. #34631 (@sunag)
  • Report size: Always format sizes in kB. 227e7bb0396ee0ba5b7f44c9e6e3818c549fe8c2 (@mrdoob, @claude)
  • Consolidate TSL unit tests. #34918 (@bhouston)
  • Simplify TSL case names and reference parsing. #35056 (@sunag)
  • Restart browser after a timeout. #35098 (@bhouston)
  • Retry examples after a timeout. #35146 (@bhouston)
  • Retry completely black screenshot mismatches. #35166 (@bhouston)

Build

  • Make three/tsl tree-shakeable. #34533 (@monken)

CI

  • Report size: Measure full builds as self-contained bundles. #34777 (@mrdoob, @claude)
  • Fix broken link to Node.js get help. #35151 (@ctkerns)
5 hours ago
vue-next

v3.6.0-rc.14

For stable releases, please refer to CHANGELOG.md for details. For pre-releases, please refer to CHANGELOG.md of the minor branch.

5 hours ago
core

v3.6.0-rc.14

For stable releases, please refer to CHANGELOG.md for details. For pre-releases, please refer to CHANGELOG.md of the minor branch.

5 hours ago
modern.js

v3.11.0

What's Changed

Bug Fixes 🐞

Other Changes ✨

  • Add MCP Apps support in a single @modern-js/mcp-apps package with build plugin, server plugin, BFF and Fetch adapters, React and Module Federation views, manifest-based UI resource registration, and an mcp-apps project template. by @danpeen in https://github.com/web-infra-dev/modern.js/pull/9062

更新内容

Bug 修复 🐞

其他变更 ✨

  • 新增 MCP Apps 支持,由单一的 @modern-js/mcp-apps 包提供构建插件、服务端插件、BFF 和 Fetch 适配器、React 和 Module Federation 视图、基于清单的 UI 资源注册,以及 mcp-apps 项目模板。 由 @danpeen 实现, 详情可查看 https://github.com/web-infra-dev/modern.js/pull/9062
13 hours ago
scalar

Release 2026-10-30

Releases

@scalar/schemas@0.16.0

Minor Changes

  • #10781: feat: add a Halloween theme preset with a moonlit sky, bats, and pumpkin accents

Patch Changes

  • #10767: Declare @scalar/types as a dependency, since the API reference configuration schema imports it at runtime and installs without hoisting failed to resolve it.

@scalar/themes@0.20.0

Minor Changes

  • #10781: feat: add a Halloween theme preset with a moonlit sky, bats, and pumpkin accents

@scalar/types@0.26.0

Minor Changes

  • #10781: feat: add a Halloween theme preset with a moonlit sky, bats, and pumpkin accents

@scalar/api-reference@1.76.3

Patch Changes

  • #10775: fix: name downloaded documents after the document title when no slug is configured

@scalar/astro@0.4.34

@scalar/docusaurus@0.8.55

@scalar/express-api-reference@0.10.34

@scalar/fastify-api-reference@1.76.3

@scalar/hono-api-reference@0.12.17

@scalar/nestjs-api-reference@1.2.34

@scalar/nextjs-api-reference@0.12.15

@scalar/nuxt@0.6.86

@scalar/starlight@0.2.19

@scalar/sveltekit@0.3.34

@scalar/agent-chat@0.12.49

@scalar/api-client@3.23.6

@scalar/api-client-react@2.0.63

@scalar/api-reference-react@0.9.86

@scalar/asyncapi-to-markdown@0.2.5

@scalar/asyncapi-validator@0.1.17

@scalar/blocks@0.6.3

@scalar/client-side-rendering@0.4.16

@scalar/components@0.33.1

@scalar/core@0.5.48

@scalar/json-schema-validator@0.1.17

@scalar/mermaid-plugin@0.1.4

@scalar/mock-server@0.20.3

@scalar/nextjs-openapi@0.3.55

@scalar/oas-utils@0.20.18

@scalar/openapi-parser@0.29.19

@scalar/openapi-to-markdown@1.7.3

@scalar/openapi-validator@0.1.17

@scalar/pre-post-request-scripts@0.4.61

@scalar/server-side-rendering@0.1.65

@scalar/sidebar@0.12.6

@scalar/snippetz@0.10.14

@scalar/workspace-store@0.69.3

galaxy-scalar-com@0.2.29

Patch Changes

  • #10781: feat: pick the default API reference theme from the date, using the Halloween theme throughout October

@scalarapi/docker-api-reference@0.6.20

Bundled API Reference

  • @scalar/api-reference@1.76.3

@scalar/aspire@0.12.6

Bundled API Reference

  • @scalar/api-reference@1.76.3

@scalar/aspnetcore@2.18.6

Bundled API Reference

  • @scalar/api-reference@1.76.3

@scalar/aws-lambda@0.3.6

Bundled API Reference

  • @scalar/api-reference@1.76.3

@scalar/azure-functions@0.3.6

Bundled API Reference

  • @scalar/api-reference@1.76.3

@scalar/java-integration@0.6.86

Bundled API Reference

  • @scalar/api-reference@1.76.3

scalar_api_reference@0.2.20

Bundled API Reference

  • @scalar/api-reference@1.76.3

@scalar/mock-server-docker@0.2.76

scalar-app@1.1.46

14 hours ago
next.js

v16.5.0-canary.32

Core Changes

  • Fix hangs and crashes for 204 responses from route handlers and deduped fetches: #100159
  • fix(adapter): preserve revalidation for metadata prerenders: #100861
  • next-custom-transforms: Optimize server-reference transform output: #100637
  • Show dev overlay errors before the indicator state is known: #100629
  • Update font data: #100863

Misc Changes

  • Improve common errors in turbo-trace-server: #100862
  • docs: clarify use cache is unsupported in Proxy: #100842
  • Revert "perf(turbopack): canonicalize async loader availability": #100898
  • [test] Cover cache reuse after revalidation and failed writes: #100652
  • Turbopack: use analyzed references for fragment facades: #100852
  • [ci] Pin deploy test deployments to Node.js 22.x: #100879
  • create-next-app: remove App Router prompt and always use App Router: #100850
  • Turbopack: fix trailing-slash package root resolution: #100726

Credits

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