Releases: shapediver/Viewer
Release list
Viewer 3.19.0 - Tangerine
This release focused on a comprehensive code modernization across the entire codebase. The release pipeline was completely overhauled for improved reliability and automation.
Rendering
- Fixed material database assignment edge cases.
- Improved shader caching for better performance.
- Improved glTF loading performance.
- Various rendering performance improvements.
Code Modernization
- Converted runtime imports to type-only imports (
import type) across the entire codebase for improved tree-shaking and bundle optimization. - Cleaned up and modernized the codebase including removal of unused Three.js objects and skinning code.
- Updated Vite and other build tooling.
- Updated axios and other package dependencies.
Performance
- Performance improvements for drawing tools geometry state handling, including optimized index array generation.
- Performance improvements in geometry math management, reusing scratch vectors to avoid per-frame allocation.
- Added performance evaluator improvements.
- Scene tree manager cleanup and optimization.
Interaction / Drawing Tools
- Performance improvements for drawing tools, especially in geometry and restriction handling.
- Improved constraint calculation with scratch vector reuse in hot paths.
CI / Release Pipeline
- Complete overhaul of the release pipeline with new GitHub Actions workflows for testing, building, deploying, and publishing.
- Implemented automated version management with
compute-version.tsandversion-packages.ts. - Added S3 deployment scripts for examples and test artifacts.
- Added npm and GitHub publishing scripts.
- Added CDN smoke testing.
- Added Gitleaks security scanning integration.
- Added Slack integration for CI notifications.
- Added mandatory release notes enforcement for public releases.
- Streamlined the release process with refined failure handling.
Bugfixes
- Fixed a race condition in session/rendering workflows.
- Fixed interaction package exports and settings package imports.
- Fixed constant scene tree update triggers.
- Fixed directional light update propagation.
- Fixed tree node assignment issues.
General
- Package updates across all dependencies.
- test infrastructure improvements, including nightly full test runs and test performance fixes.
- Viewer Examples integration updates.
Full Changelog: https://github.com/shapediver/Viewer/compare/viewer@3.18.0...viewer@3.19.0
Viewer 3.18.0 - Strawberry
This release focused mainly on improvements for Drawing Tools, post-processing precision, and follow-up fixes for AR/export workflows. Drawing Tools received targeted performance improvements, especially in constraint and restriction-heavy setups. The Outline effect was refined to reduce precision-related artifacts. In addition, several fixes were made for transformations in AR, animation tweening after dependency updates, hidden restrictions, and package exports.
Drawing Tools
- Performance improvements for Drawing Tools, especially in geometry/restriction handling and constrained point movement.
- Fixed an issue where hidden restrictions could return undefined in certain cases (SS-9822).
Post-Processing
- Improved precision handling of the Outline effect to reduce rendering artifacts and make the effect more robust (SS-9552).
AR / Export
- Fixed issues with transformations in AR conversion/export workflows, particularly for nodes containing multiple geometry primitives and instancing (SS-9735).
- Fixed an export issue in the interaction package by correcting the exported API surface.
Animation
- Fixed tween-related animation issues introduced by dependency/package updates.
General
- Updated the ua-parser-js package (SS-9755).
- Internal package, test, and workflow updates.
Viewer 3.17.0 - Raspberry
This release focused on two targeted improvements to existing features, alongside a series of stability fixes. The Outline post-processing effect received two new options to address visual artifacts: per-object outlining to prevent depth sorting issues when multiple objects are selected, and a configurable depth bias to eliminate z-fighting halos on co-planar geometry. Additionally, interaction managers now support an occlusion check against non-interactive scene geometry, making it possible to prevent selections from "reaching through" solid objects in front of a target.
The remainder of the release was dedicated to crash fixes addressing a range of edge cases in geometry loading, material handling, rendering, and environment maps.
Post-Processing
- Added
separateObjectsto theOutlineEffectproperties. When enabled, each selected node is outlined individually rather than as a unified group. This prevents depth artifacts when selected objects are at different depths (e.g. one in front of another). Note that this has a per-node performance cost. - Added
depthBiasto theOutlineEffectproperties. A view-space depth offset applied during the depth comparison whenxRayis false. Reduces z-fighting artifacts where co-planar or nearly co-planar geometry causes the outline halo to incorrectly bleed through adjacent surfaces. A value of0disables the bias.
Interaction
- Added
occludeBySceneGeometrytoIInteractionManagerand interaction parameter settings. When enabled, intersections are filtered against all scene geometry, so that objects occluded by non-interactive solid geometry in front of the target cannot be interacted with.
Bugfixes
- Fixed a crash in contact shadow rendering when a null color value was encountered (SS-9665).
- Fixed an "Invalid token" error in the HTTP client (SS-9666).
- Fixed a crash in environment map loading when loader data was undefined (SS-9664).
- Fixed a crash in scene anchor tracing caused by degenerate (zero-area) triangles — a Three.js issue where
getInterpolationreturns null for such triangles (SS-9599). - Fixed two crashes in the geometry engine when geometry data was unexpectedly undefined (SS-9596, SS-9597).
- Fixed a
RangeError: Invalid typed array lengthwhen loading glTF files with certain malformed accessor data (SS-9595). - Fixed a crash in the material engine and material database engine when the material type was null (SS-9592).
- Fixed a crash in the glTF converter when a buffer
sbyteLength` was null (SS-9589). - Fixed geometry restriction calculation issues (SS-9563).
Viewer 3.16.0 - Quince
The main focus of this release was the refactoring of the Gumball into a broader Transformation Tools package, which now also includes a new Rectangle Transform tool. Alongside this, significant improvements were made to the Drawing Tools, including the ability to run multiple instances simultaneously, a new pause/resume functionality, many new configuration options, and restriction visualization. A third major area of this release was rendering performance: the glTF loading pipeline, shader caching, scene tree management, and interaction effects were all overhauled to reduce CPU time, memory allocation, and main-thread blocking.
Transformation Tools
- The
@shapediver/viewer.features.gumballpackage has been replaced by@shapediver/viewer.features.transformation-tools. Please refer to the migration guide for details on the renamed exports. - Introduced the new RectangleTransform tool, which allows translating, rotating, and scaling objects in a 2D plane using a widely known handle. It is also available as an interaction parameter type (
rectangleTransform) to be used directly from Grasshopper. - Implemented restriction visualization for transformation tools restrictions.
- Various fixes for rotation issues and occlusion.
Drawing Tools
- Multiple instances of the Drawing Tools can now be active simultaneously. The previous restriction that only one instance could exist at a time has been removed.
- Implemented
pause()andcontinue()to suspend and resume all user interactions without closing the tool. - Added
movePoint()for programmatic movement of individual points. - Added
cancelDrag()andisInteractionActive()to query and cancel in-progress hover/drag interactions. - New
behaviorsettings block: enable/disable insertion, deletion, translation, and selection of points independently, as well as adisplayUnitoption for imperial and other unit formats. - New
visualizationsettings (previously nameddisplay): separate visualization settings for edge controls, pointer position label, and per-restriction wireframe display. - New
keyBindingssettings block: customize the keyboard shortcuts for all drawing tool actions (insert, delete, confirm, cancel, undo, redo). - New geometry options:
weightedAdjacencyfor propagating point movements to neighbors,disabledPointsto lock specific points in place, andconstraintsto restrict position and size along each axis. - New
controlsarray for attaching custom point controls (e.g. edge-aligned or plane-aligned movement). - Support for imperial display units (
"mile","feet","inches"). - Restriction visualization (wireframe outline) is now built in and can be configured per restriction via
wireframeandwireframeColorproperties on point, line, and geometry restrictions.
Camera
- New
initialAutoAdjustoption onICameraApiand inViewportCreationDefinitionto automatically fit the camera to the model the first time a scene is loaded. - Fixed issues with orthographic camera zooming into the model and near-plane clipping.
- Fixed plane restriction interactions with orthographic cameras.
Session Error Events
- Introduced the new
SESSION_ERRORevent (EVENTTYPE_SESSION.SESSION_ERROR), which carries anISessionErrorEventwith the originatingErrorobject. This makes it possible to react to session-level errors without wrappingcreateSession/customizecalls in try-catch. - Implemented texture fallback for failed texture downloads so that models are still displayed even if some textures cannot be loaded.
Performance
- Added
ViewportApi.updateGeometryData()for updating the material of a geometry on the GPU without triggering a full scene tree reconversion — ideal for hover/interaction effects. - Integrated
ImageBitmapfor faster texture decoding during glTF loading. - General glTF loading performance improvements and shader caching improvements.
- Attribute Visualization performance improvements.
Bugfixes
- Fixed scene extents computation for very small models (SS-9520).
- Fixed a race condition in parameter computation triggers (SS-9476).
- Fixed scene extents / camera adjust for models with instanced geometry.
- Fixed text label rendering issues.
Viewer 3.15.0 - Peach
This release was a small service release that mainly focused on internal refactoring to improve the code quality. Mainly the session-engine and all related components were re-done.
With these changes maintainability is improved and the project can be better expanded in the future.
Viewer 3.14.0 - Orange
The main feature of this release is the selection by drawing a rectangle. This feature will be available to all users that use multiple selections by default (by pressing the Alt-Key).
General
- advanced screenshot functionality
- implemented sdTF upload functionality
- exposed external file upload
- various fixes for App Builder patterns
- initial parameter types are now cast to their primitives
- advanced handling of three.js custom objects
- opacity aware contact shadows
- implemented reserved output for
materialdatabase
Attribute Visualization
- refinements of gradients
- fixed passive material bug
Gumball
- refinement of controls
- allow to set restrictions for translations of Gumball
Interactions
- selection by drawing a rectangle (both for
MultiSelectManagerandDrawingTools) - implemented new effect types, including outline effect (halo/glow)
- include the restriction data as metaData
- allow multiple SelectionManagers at once
Viewer 3.13.0 - Nectarine
This released focused on improvements of the Gumball, mobile usage of the drawing tools and various improvements for the Attribute Visualization. With the increased usage of App Builder, many improvements in the viewer are needed for App Builder.
General
- SDK version updates (including security and performance improvements)
- implemented improved scene tree traversal when using the
ShapeDiverOutputcomponent - added
llms.txtfor improved LLM support - improved error handling on session reload
- allow app builder users to use the
deselectOnEmptyoption
Gumball
- allow gumballs to be used with instances in app builder
- allow to specify minimum and maximum number of objects that are selected for the gumball
- implemented options to display
xy,xzandyzscaling handles
Drawing Tools
- implemented functionality so that the drawing tools can be used on mobile devices
- improved display of snapping geometry
Attribute Visualization
- various improvements for gradients
- allow users in app builder to click on objects to see the attribute data
- only use sdTF items for visualization
- improved value counting for string values
Viewer 3.12.0 - Mango
This release was a smaller release mainly focusing on new package updates which resulted in many changes, internally. For users, these changes mainly provide security and performance improvements.
Viewer 3.11.0 - Lemon
This release focused on performance improvements and changes for the usage of Attribute Visualization. The, soon to be released, improvements of Attribute Visualization in App Builder were the main target for these changes.
- performance improvements when loading attributes
- general performance improvements for data loading
- new gradient options
- caching improvements
- shadow map consistency fixes for different resolutions
- implementation of new settings
Viewer 3.10.0 - Kiwi
The main focus of this release was refinements for the multiple sessions in App Builder. Additionally, general improvements were done for the drawing tools.
- possibility to suspend scene tree updates
- flags can now also be provided on viewport creation
- improved utility functions for App Builder
- added lambert and phong materials
- improved texture caching
- implemented displayName for TreeNodes
- implemented support for new easing functions for animations
Drawing Tools
- the grid and angular restrictions for the drawing tools are now toggles
- improved grid snapping
- implemented optional separate radii for line restriction ends
- only freeze camera when points are being dragged