Skip to content

Releases: shapediver/Viewer

Viewer 3.19.0 - Tangerine

Choose a tag to compare

@github-actions github-actions released this 10 Jul 13:18

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.ts and version-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

Choose a tag to compare

@MajorMeerkatThe3rd MajorMeerkatThe3rd released this 08 Jul 14:50
7020470

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

Choose a tag to compare

@MajorMeerkatThe3rd MajorMeerkatThe3rd released this 08 Jul 14:50
583d458

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 separateObjects to the OutlineEffect properties. 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 depthBias to the OutlineEffect properties. A view-space depth offset applied during the depth comparison when xRay is 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 of 0 disables the bias.

Interaction

  • Added occludeBySceneGeometry to IInteractionManager and 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 getInterpolation returns 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 length when 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 buffers byteLength` was null (SS-9589).
  • Fixed geometry restriction calculation issues (SS-9563).

Viewer 3.16.0 - Quince

Choose a tag to compare

@MajorMeerkatThe3rd MajorMeerkatThe3rd released this 08 Jul 14:50
51ec55e

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.gumball package 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() and continue() to suspend and resume all user interactions without closing the tool.
  • Added movePoint() for programmatic movement of individual points.
  • Added cancelDrag() and isInteractionActive() to query and cancel in-progress hover/drag interactions.
  • New behavior settings block: enable/disable insertion, deletion, translation, and selection of points independently, as well as a displayUnit option for imperial and other unit formats.
  • New visualization settings (previously named display): separate visualization settings for edge controls, pointer position label, and per-restriction wireframe display.
  • New keyBindings settings block: customize the keyboard shortcuts for all drawing tool actions (insert, delete, confirm, cancel, undo, redo).
  • New geometry options: weightedAdjacency for propagating point movements to neighbors, disabledPoints to lock specific points in place, and constraints to restrict position and size along each axis.
  • New controls array 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 wireframe and wireframeColor properties on point, line, and geometry restrictions.

Camera

  • New initialAutoAdjust option on ICameraApi and in ViewportCreationDefinition to 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_ERROR event (EVENTTYPE_SESSION.SESSION_ERROR), which carries an ISessionErrorEvent with the originating Error object. This makes it possible to react to session-level errors without wrapping createSession / customize calls 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 ImageBitmap for 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

Choose a tag to compare

@MajorMeerkatThe3rd MajorMeerkatThe3rd released this 08 Jul 14:50
cfd8b82

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

Choose a tag to compare

@MajorMeerkatThe3rd MajorMeerkatThe3rd released this 08 Jul 14:50
a28209d

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

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 MultiSelectManager and DrawingTools)
  • 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

Choose a tag to compare

@MajorMeerkatThe3rd MajorMeerkatThe3rd released this 08 Jul 14:49
1eee453

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 ShapeDiverOutput component
  • added llms.txt for improved LLM support
  • improved error handling on session reload
  • allow app builder users to use the deselectOnEmpty option

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, xz and yz scaling 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

Choose a tag to compare

@MajorMeerkatThe3rd MajorMeerkatThe3rd released this 08 Jul 14:49

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

Choose a tag to compare

@MajorMeerkatThe3rd MajorMeerkatThe3rd released this 08 Jul 14:49

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

Choose a tag to compare

@MajorMeerkatThe3rd MajorMeerkatThe3rd released this 08 Jul 14:49

The main focus of this release was refinements for the multiple sessions in App Builder. Additionally, general improvements were done for the drawing tools.

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