Change Log - imodeljs-frontend


Wed Nov 18 2020


  • pass map layer accessKeys through configOptions instead of hardcoded
  • Preliminary support for interactive editing sessions.
  • Clean up EventSource API for push events.
  • Fix ECEF for reality models
  • Change key name for MapboxLayers
  • Create animation tile trees if only transform present.
  • disable frontend Bentley telemetry in iModelBank use case
  • Thematic surface isolines are now pickable. Previously, trying to select an area in between isolines for a surface would select the surface. Now the empty space in between does not count.
  • Added ability to override the color of a point cloud.
  • Work around memory issues on iPads when rendering reality tile trees by introducing a mobile-only memory threshold which triggers a prune on tile trees.
  • Fix issue where some apps would exception when quantityFormatter.onIntialize was called before redux state was set up.
  • Fix QuantityFormatter volume definitions.
  • Support for push events
  • Set reality tile and terrain branches to own their own children.
  • Add call to reload tool settings UI.
  • Added ViewCreator APIs


Fri Oct 23 2020


  • Ensure transform animations in schedule scripts are applied correctly to tile graphics.
  • #460803 Improve clip arrow control visibility.
  • handle undefined _lut in FeatureOverrides when webgl context is lost, which obscured the actual context loss
  • link to webgl compatibility checker in context loss error message
  • Restore reality model and schedule script init - inadvertently removed.
  • fixed hilite/emphasis interaction for for non-default options
  • fixed hilite/emphasize interaction
  • Root WMS sublayer is now included is the list of Sublayers. First level of children is visible by default, unless too many layers are found (in that case we make the root sublayer visible only). Made sure prefixed sublayers groups are correctly linked to root sublayer. Also removed prefix from title for prefixed sublayers.
  • Added optional wms authentication
  • #468491 Stop touch viewing operations from affect last dynamics point.
  • IModelConnection.onOpen is not raised when opening iModel with NativeApp.openBriefcase
  • Support down-sampling very large textures in tiles.
  • Reduce threshold for ecef validation.
  • Remove deprecated SpatialModelTileTrees.
  • Add methods on viewport for attach/detach reality models. Support -1 for detach.
  • Add support for OPC point clouds in Reality Data widget.
  • Added color mix to thematic display for background map terrain and point clouds
  • added IModelApp.translateErrorNumber


Fri Oct 23 2020


  • Reduce threshold for ecef validation.


Mon Oct 19 2020

Version update only


Wed Oct 14 2020

Version update only


Tue Oct 13 2020

Version update only


Thu Oct 08 2020


  • Ensure transform animations in schedule scripts are applied correctly to tile graphics.


Fri Oct 02 2020


  • Added MapLayerSettingsService to persist custom map sources between sessions for same project/model
  • Support authorization via URL suffix for Cesium ion. Handle PBR texture.
  • Fixes to front end methods to pull, merge and push.
  • Fixed desktop authorization after recent changes.
  • Support literal double-quote characters in quoted key-in arguments.
  • Restore reality model and schedule script init - inadvertently removed.
  • Generate normals for 3d view decorations.
  • Fix locate for plan projection models with non-depth-buffered background map.
  • Calculate correct up vector even when ECEF is bad.
  • On iOS download in background
  • Look and move can now start from key. Don't use ctrl key due to browser conflicts.
  • Added switches to turn on and off the WMS feature of the map layer widget
  • Added optional wms authentication
  • Added a person to the "set up walk camera" tool decorations.
  • Cleaned up formatting of glsl shader code produced for better human readability when debugging shaders.
  • Support thematic display of point clouds.
  • Added thematic display to background terrain


Sat Sep 26 2020

Version update only


Tue Sep 22 2020

Version update only


Mon Sep 21 2020


  • Support literal double-quote characters in quoted key-in arguments.


Mon Sep 21 2020


  • Calculate correct up vector even when ECEF is bad.


Fri Sep 18 2020

Version update only


Thu Sep 17 2020


  • Supply symbology overrides for map geometry so that view defaults (isolate) are not applied.
  • Moved ESLint configuration to a plugin
  • Fix potential unbounded growth of an array each time a Viewport's scene is recreated.
  • react to telemetry and introspection client changes
  • Allow level 1 imagery tiles to be used (the planar projection requires them at max zoom). Force depth buffer for large globe tiles.
  • Add optional TileAdmin.Props.minimumSpatialTolerance as terminating condition for tile refinement.
  • Add support for opening a key-in palette to run key-ins.
  • Remove azure map support. Don't expose mapbox sources by default.
  • Add support for quoted strings during key-in parsing
  • Added validation to select only queryable layer in the GetFeatureInfo of the WMS layers
  • #437338 First attempt at walk tool collisions using depth buffer w/o changing view.
  • reduce jumpiness when zooming with mouse wheel quickly
  • make zoom with wheel faster when rolling quickly


Wed Sep 02 2020


  • Edges only render using the monochrome color if render mode is wireframe.


Fri Aug 28 2020

Version update only


Wed Aug 26 2020

Version update only


Tue Aug 25 2020

Version update only


Mon Aug 24 2020


  • Tweak reality model alignment test. Add getRealityModelAppearanceOverrides.


Thu Aug 20 2020


  • Change to use toast message to inform user of extension loaded.
  • Decorators can now optionally have their decorations cached to achieve a potential performance benefit.
  • Introduce IModelApp security options (including CSRF protection).
  • Fixed Web Accessibility issues
  • Move types from FeatureSymbology namespace from imodeljs-frontend to imodeljs-common.
  • When recalling a saved view with elevated plan projections, ensure the elevation is applied.
  • Fix an exception when drawing a surface that should have a texture but doesn't.
  • Use IModelRoutingContext
  • Added mobile oidc client
  • Moved SpecialKey & FunctionKey enums to ui-abstract & started using them throughout UI packages
  • Support reality model transparency
  • Refine reality model alignment test to avoid misapplication where no misalignment exists.
  • element editor
  • Switch to ESLint
  • Fix inaccurate snapping for elevated plan projection models.
  • Fix for crash when doing volume classification and there is no classifier geometry.
  • Make IModelApp globally accessible for debugging.


Fri Aug 14 2020


  • Fix regressions in background map locate and ground bias.
  • Add support for restart query


Fri Aug 07 2020


  • add missing rbac-client dep
  • Synch map layer imagery when properties change (could cause new tree to be used).


Tue Jul 28 2020


  • Added ability to enable antialiasing
  • remove linewidth adjustment for non-antialiased lines (like in transparent pass).
  • GraphicBuilder optionally accounts for the view's aspect ratio skew when computing level of detail.
  • Support Map Layer Settings.
  • Implement devicePixelRatioOverride on RenderSystem.Options.
  • RenderSystem option controlling whether device pixel ratio is taken into account when computing level of detail for tiles and decoration graphics.
  • Changes to support new HitDetail.isMapHit classificiation.
  • Optimize reality tile loading.
  • Decoration optimization: internally include range in order to reduce performance impact of pickable decorations.
  • overlay-tooltip should use overflow:hidden
  • Address LGTM warnings in UI code.


Thu Jul 23 2020


  • Fix regression that could result in increased number of tile requests.


Tue Jul 14 2020

Version update only


Mon Jul 13 2020

Version update only


Fri Jul 10 2020


  • geometry clip containment
  • Fully-transparent classifiers indicate the classified geometry should be clipped.
  • A TiledGraphicsProvider may override scene creation.
  • Add ability to override selected aspects of a viewport's display style.
  • Fix failure to locate textures when deserializing glTF in some instances.
  • Fix exception on missing shader uniform on Linux under specific combination of graphics settings.
  • Viewport now supports multiple feature override providers. The featureOverrideProvider property is deprecated.
  • added removeData() to native storage
  • Honor non-locatable flag on TerrainSettings.
  • Implement new thematic display modes: slope and hillshade.
  • enforce max texture size for stepped gradients.
  • New thematic gradient modes implemented and documented: Stepped, SteppedWithDelimiter, and IsoLines
  • Use height from ECEF transform for terrain cartesian region.


Tue Jul 07 2020

Version update only


Fri Jun 19 2020


  • add ViewState.adjustAspectRatio
  • Promote EmphasizeElements and IModelConnection.query() to public API.
  • Add support for cel-shaded views; promote many APIs, particularly display-related ones.
  • Expand frustum when fitting background map to avoid clipping in plan views.
  • Refactor FeatureTrackingManager
  • Return the new GeoServiceStatus instead of IModelStatus.BadRequest
  • Gpu profiler fix for readPixel calls
  • Orient silhouette clip for background map correctly in parallel projections
  • Added MessageManager.MaxDisplayedStickyMessages & support for maximum displayed sticky messages
  • Add support for applying different clip volumes to groups of models in a spatial view.
  • A GeometricModel may override specific view flag at display time, e.g. to specify that the model should always be drawn in wireframe mode.
  • Optimize thematic sensor display by using eye space instead of world space in the shaders.


Thu May 28 2020


  • Handle height value when calculating ecef transform for maps.
  • RenderClipVolume now supports ClipVectors containing more than one ClipPrimitive.
  • Remove now-unused clipping mask shaders.
  • An unhandled exception no longer closes the electron window.
  • Fix silently-caught exception during asynchronous loading of EntityState constructors."
  • Raise tile load event when map corners are reprojected.
  • Fix incorrect conversion of display priority to frustum depth.
  • ViewState3d.supportsCamera() returns false if 3d manipulations are disallowed.
  • Orthographic view attachments now render directly onto the sheet view.
  • Add support for perspective view attachments.
  • Added support for WebGL2 to shader debug
  • Make thematic gradient texture adhere to max texture size of system.
  • Optimize thematic sensor display by culling sensors based on a distanceCutoff property on ThematicDisplaySensorSettings.
  • Reduce number of shader programs produced for clipping.
  • small improvements to WebGL1 & WebGL2 performance & fix for output of hlsl shaders for debug
  • Some very minor performance improvements to WebGL1 & 2 shaders.
  • improve Terrain shaders; default to WebGL2


Wed May 06 2020


  • Fixed setup of UserInfo from browser clients, and more cleanups to AccessToken API.
  • Add a peerDependency on @bentley/extension-client
  • lookAtViewAlignedVolume should adjust view delta for limits and not fail.
  • Show min/max window error for mouse wheel zoom.
  • Show min/max window error for mouse wheel zoom.
  • Revert bogus backend extract-api change. More frontend api changes.
  • Limit minimum alpha weight to prevent transparent geometry at far plane from becoming invisible.
  • Separate Viewport.scheduleScriptFraction into analysisFraction and timePoint.
  • SpatialViewState.areAllTileTreesLoaded correctly checks secondary classifier and drape trees.
  • IModelApp.startup is now async.
  • IModelApp.shutdown() is now async.
  • Make locate work for background map with depth turned off.
  • Setup initialization of briefcase cache for offline workflows. (VSTS#286489)
  • Monitor progress of downloading briefcases, ability to cancel download of briefcases.
  • Introduce BriefcaseConnection, make IModelConnection abstract
  • Remove ^ for ulas client dep in the frontend"
  • Improve performance of shadow display on macOS by avoiding frequent calls to gl.getParameter().
  • Added support for customized lighting including hemisphere lights.
  • React to clients/UlasClient changes
  • Expand descendant clipping for reality tiles. Test noGcsDefined when calculating map ECEF.
  • Fix regression causing reality models not to be clipped by view clip.
  • Clip upsampled terrain tile triangles to avoid overlapping transparency anomalies.
  • Add feature to optionally colorize pixels inside or outside clip regions.
  • WebGL Compatibility functionality moved to webgl-compatibility package
  • Added support for backward slashes in erroneous URLs of Reality Data in PW Context Share
  • Reality models now cast and receive solar shadows.
  • NativeApp.deleteBriefcase should work in offline scenarios.
  • Dont reproject tiles if GeoLocation from tool.
  • Support for progress/cancel from ios
  • Ensure view decorations are scaled based on device-pixel ratio.
  • Ellipsoid API
  • Handle map tiles without depth buffering in ellipsoid map projection.
  • Adjust viewport's Z planes when background map display is toggled.
  • Refactor ExtensionAdmin for Extension Service support
  • Make iModelConnection an optional arg to track() in FeatureTrackingManager.
  • Fix error explanation from InteractiveTool filterHit not been shown.
  • Ensure 2d views have known extents at construction.
  • Do not cull on content range if children present.
  • Fix global frustum expansion.
  • Remove deprecated APIs; see for details.
  • Fix garbled terrain imagery caused by premature texture disposal.
  • Fix reprojection of map tiles.
  • Fix a bug in populating layer command lists, and ensure plan projection elevations are compared properly.
  • Fix for cannot pick clip handles when elements are emphasized
  • Always set planar flag for 2d geometry.
  • Fix documentation of DisplayStyle timePoint units.
  • Fix regression causing transparency threshold to be ignored in HiddenLine and SolidFill render modes.
  • Fix potentially uninitialized lighting uniforms.
  • fixed pick of volume classified geometry
  • fixed hilite for volume classifiers
  • Update definition of toolsettings properties. To assist with responsive UI based on screen size, Lock property is now specified with the property it locks.
  • Change to make ui-abstract a peer dependency, this required updating some test apps to explicitly defing ui-abstract as a dependency.
  • Fix for EcefLocation.createFromCartographicOrigin. Tooltip for monument point handle.
  • Refine frustum/globe intersection calculation.
  • Request high-performance webgl context.
  • added rendering frame lifecycle callbacks required for 3dmaps plugin
  • react to changes in imodeljs-clients
  • move OidcFrontendClient from imodeljs-clients
  • update IModelApp to require FrontendAuthorizationClient
  • Introduce SnapshotConnection and BlankConnection subclasses of IModelConnection
  • Promote properties from IModelToken onto IModelConnection
  • When computing the pixel size of a tile in a perspective view, use the point on its bounding sphere closest to the camera."
  • increase default wheel zoom durtaion to .5 seconds
  • Discard ECEF-dependent tile trees when ECEF location changes.
  • And parseKeyin and parseAndRun methods to ToolRegistry.
  • #285220 Wrong LocateResponse when 1st HitList entry isn't the accepted hit.
  • Fix terrain sometimes drawing garbage imagery due to freed textures.
  • Ensure the view updates in response to changes to terrain transparency.
  • openBriefcase should not access internet.
  • Fix material color inappropriately being applied in SolidFill mode when feature symbology overrides are in effect.
  • Added NativeApp.deleteBriefcase, avoided authorization exceptions when offline.
  • Refactored NativeApp API and RPC interfaces. This continues to be WIP.
  • Differentiated RemoteBriefcaseConnection-s from LocalBriefcaseConnection-s for use in web and native applications. These are now sub-classes of the abstract base class BriefcaseConnection.
  • Setup ability to use NativeApp.openBriefcase() in offline scenarios.
  • add new interface for native app
  • VSTS#217447, 162382: Cleanups to implementation of downloading/opening/discovering briefcases in native applications (WIP).
  • initialize connectivity status on NativeApp.startup() and unregister callback on NativeApp.shutdown()
  • VSTS#296110: Setup a way to close briefcases when the native application is offline.
  • Remove named clip code, we ended up not wanting to save clips independent of saved views.
  • Renamed OIDC constructs for consistency; Removed SAML support.
  • Support OrbitGT point cloud dislay.
  • RenderSystem.Options allows overriding WebGLContextAttributes.
  • #275962 Fix EmphasizeElements.toJSON for color overrides
  • Change pickNearestVisibleGeometry to not return "plane" points outside of npc range.
  • Fix z-fighting of blanking regions when logarithmic depth buffer is used.
  • Precompile shaders in order of priority during idle time when no viewports exist.
  • Project location error messages and tool assistance.
  • Passing optional iModel context/project as it is the one to be used for Reality Data originating from ContextShare(RDS)
  • Ensure unused tile trees are purged at regular intervals.
  • Added API in MessageManager to display either a Toast or Sticky message using React components.
  • Always accept point on reality model when snapping and remove message about nearest snap.
  • Optimize reality tile display.
  • Add mechanism to preload reality tiles included in an expanded frustum. Support display of ellipsoidal map tiles without depth buffering.
  • Reduce the number of surface shader variations by 75%
  • react to new clients packages from imodeljs-clients
  • Temporarily reinstated OidcBrowserClient and marked it deprec
  • remove decorationDiv member of DecorateContext.
  • Add ways to set contextId for BlankConnection
  • Remove deprecated static PluginAdmin.loadPlugin and PluginAdmin.register methods. Use the new IModelApp.pluginAdmin versions of the methods.
  • Remove 'const' from exported enums.
  • Fix being unable to roll wheel to zoom while rotating the view (merge error).
  • Upgrade to Rush 5.23.2
  • #301812 #288370 Fix label font specifications. Added max label width option to Marker.
  • Made management of loaded tiles and tile trees more robust, particularly in context of multiple viewports; fixed tile progress statistics for reality/map tiles.
  • Added some shader debug features
  • support for editing
  • The API for snapshot iModels is now public.
  • Add SnapshotConnection.openRemote
  • Add SnapshotConnection.isRemote
  • Rename iModel.js Plugins to iModel.js Extensions
  • Synch drape tile tree settings when terrain settings change.
  • Tentative snap should not hilite reality models.
  • Add API and shader system for thematic display.
  • Alpha feature: thematic sensor display.
  • Limit the number of simultaneously-active requests for TileTreeProps.
  • Move Tiles and EditingFunctions out of IModelConnection namespace.
  • Replaced ViewManager.onNewTilesReady with TileAdmin events.
  • Clean up Tile and TileTree APIs.
  • #271737 Fix handle2dRotateZoom
  • Fix exception when an extension fails to load.
  • Prevent edges of nearly-coincident surface from showing through another element.
  • Prevent text background color from being overridden by FeatureSymbology.Overrides; fix ugly raster text when transparency is overridden to zero.
  • Promoted some @beta to @public in Ui packages & ToolAssistance for 2.0 release.
  • Add ToolAdmin method that allows tool to send UI Sync Event messages.
  • Moved Property classes and interfaces to ui-abstract package.
  • Update tools to use the new BaseDialogItem for lock toggles in Tool Settings specifications.
  • Update tools that use the DefaultToolSettingsProvider to match its refactor using DialogItem interfaces rather that ToolSettings classes.
  • Update to use UiItemManager
  • Ensure view extents are updated when iModel's displayed extents change (e.g. when loading reality models).
  • Update release tags and documentation for Tile-related APIs.
  • Remove support for the iModel.js module system by no longer delivering modules.
  • decrease default durations for viewing operations
  • #281634 - make use of WebGL2 bit-wise ops
  • Prevent white-on-white reversal from applying to decorations and reality models.
  • Prevent exceptions in Firefox when more than one viewport is open and one is resized such that its width or height is zero.


Wed Apr 22 2020


  • Documentation


Tue Mar 31 2020


  • #269633 #285220 Wrong LocateResponse when 1st HitList entry isn't the accepted hit.
  • Tentative snap should not hilite reality models.
  • Ensure view decorations are scaled by device-pixel ratio.


Wed Mar 04 2020


  • #275962 Fix EmphasizeElements.toJSON for color overrides


Wed Feb 12 2020


  • #269169 Cancel drag operations when button is released outside of view. Suspend view tool animation when cursor moves out of view.
  • Option to omit area patterns from tiles.
  • Ignore ReadPixels calls when using GpuProfiler
  • iModel write API development
  • Fix broken links
  • Fix regression causing background map to be affected by view's symbology overrides.
  • Added support for backward slashes in erroneous URLs of Reality Data in PW Context Share
  • Prevent reuse of cached tiles after project extents change.
  • VSTS#256133: Fixed issue with reopening connections if the backend crashes. Fixes to integration tests.
  • Fix incorrect aspect ratio for 3d view attachments.
  • Overriding transparency of a textured surface or raster text multiplies the texture alpha by the override rather than replacing it.
  • Better documentation of OidcDesktopClient/IOidcFrontendClient
  • Consolidate ViewState code shared with backend's ViewDefinition using ViewDetails.
  • Add support for plan projection models with 3d display priority.
  • Customizable display of plan projection models.
  • Break up System.ts into modular files.
  • Fix setAuxiliaryCoordinateSystem
  • Reduced the number of tiles that must be loaded before a zoomed-in view is complete.
  • Resolve circular dependencies between tile-related types.
  • Support for TypeDoc 0.16.8
  • Mark as deprecated classes and interfaces that have moved to bentley/ui-abstract.
  • Change feature tracking API for plugins as requested by Design Review.
  • EN: #124601 - Initial implementation of WebGL2


Wed Jan 22 2020


  • For fit, adjust the aspect ratio so that one dimension is increased rather than just adjusting Y.
  • Fixed minor typo on RealityData rootDocument property
  • TileAdmin.Props.useProjectExtents now defaults to true for better performance.
  • Ensure ViewState3d's with camera enabled always have the eyepoint centered when they're created
  • Fix aspect ratio adjustment bug in camera views
  • Small fix for Fit when aspectRatioSkew isn't 1.0.
  • Fix shadows not updating after clearing emphasized/isolated elements.
  • Simplify iterator for GeometryList.
  • Fix shadow rendering on MacOS Safari and any other unknown client that could fail in the same way.
  • Native apps can now cancel tile requests in progress on the backend.
  • Reduce tile level-of-detail (thereby improving FPS and memory usage) for models that are small relative to the project extents.
  • Remvoe echo test function from devTools
  • #258853 Fix for pickDepthPoint
  • Add isSpatiallyLocated and isPlanProjection to GeometricModel3dState.
  • Added primitive composite value.
  • Make hilite and flash target syncing not depend on BeTimePoint.
  • Upgrade to TypeScript 3.7.2.
  • Add a FeatureToggleClient to iModelApp.
  • Gracefully handle an invalid acs id
  • ViewZoom not sets focus from depth point.
  • #257813 Rest zoom and look tools is mouse wheel is used to zoom.


Tue Jan 07 2020


  • Clear reality tile children loading flag when selecting.
  • Animate change view operations
  • Average the gpu profiler times for the last 120 frames instead of updating each frame; also simplify PerformnaceMetrics
  • Implement tile availability testing for Cesium World Terrain.
  • Return error message from concurrent query manager
  • Fixed some bugs associated with device pixel ratio.
  • Fix flickering view when zooming in/out while a section clip is applied.
  • Adjust focus plane when zooming with mouse wheel.
  • Prevent analysis style from overriding texture image for non-animated surfaces.
  • Do not force unload of children on reality tile trees as these may be shared among viewports.
  • Added support for displaying images embedded in a GeometryStream.
  • Added IModelConnection.onOpen event."
  • Regenerate shadow map when feature symbology overrides change.
  • Use parent if reality tile children are loading.
  • Allow events to be sent from backend to frontend
  • Fixed Viewport.turnCameraOn() having no effect if the contents of the viewport have uniform depth.
  • Set focus distance from depth point for viewing tools.
  • Start of new walk tool using mouse + keyboard and touch controls.
  • Reduce redundancy between CPU and GPU timers, creating a single interface for this; update display performance tests to save both CPU and GPU data (if available)
  • Use pointerlockchange event to make sure it's supported.
  • Reduced CPU overhead of computing uniform variable values.
  • Moved tile IO-related APIs from frontend to common.
  • #254280 #254276 Address "jump" when starting touch viewing operations.
  • Add features prop to iModelApp and specify a default implementation for FeatureTrackingManager.
  • Move PluginUiManager and PluginUiProvider to ui-abstract package.
  • Use onTouchMoveStart for control sticks. Fix issue with key transiton.
  • LookAndMoveTool change to use mouse look instead of treating mouse like a control stick.
  • Add setting to easily disable pointer lock for walk tool.
  • Fix walk tool pan when is 2d or camera is off
  • Fix edges of surfaces in 2d views sometimes showing through surfaces in front of them.


Tue Dec 10 2019


  • Logo dialog is now modal.
  • Animate mouse wheel zooms
  • Align cartesian coordinates when attaching reality models.
  • Animate applying saved views
  • Code quality report fixes
  • Make iModel.js viewports adhere to DPI of a host display.
  • Code cleanup from codeQL hits
  • Setup OidcDesktopClient for Electron use cases.
  • Don't execute our event loop if there is no need
  • Fix regression causing animation to be uneven.
  • Fix warnings from static analysis
  • Don't use map tiles until reprojection is complete.
  • Volume Clasify reality data only
  • Don't fade grid refs when camera is off, draw based on count. Simplify modal dialog auto close.
  • Treat half-floats and full-floats the same.
  • Added WebGLDisposable interface with defined 'isDisposed' member
  • Fix regression in EmphasizeElements.overrideElements() when both color and alpha are overridden.
  • Prevent touch events from firing mouse events when modal dialog is up.
  • Fix unintentional darkening of views
  • Only align reality models if near same height.
  • Added ability to adjust tile size modifier for Viewports to trade quality for performance or vice-versa.
  • Add QuantityTypes LengthSurvey and LengthEngineering to provide more formatting options and support for Survey Feet.
  • Change zoom view handle to set zoom ratio based on y distance from anchor point.


Fri Nov 22 2019


  • Added iModel.js logo in lower right corner of views.
  • Touch move event should not clear viewport animator. Put a time limit on what's considered a touch tap.
  • Clip low resolution terrain tiles to their displayable children ranges.
  • Fix bing tile attribution. Optimize map reprojection.
  • Logo card link opens in a new tab/window.
  • Update PluginAdmin.loadPlugin to accept a plugin path with a url scheme already defined.
  • optimized ReadPixels call for when volumes classifiers are in use
  • Flashed element wasn't being cleared after a tentative.
  • Limit map tile loading in orthographic views.
  • Add css styles in IModelApp.ts
  • Open logo card on touch start.
  • Allow zoom handle to move through depth point.
  • Added measure area by points tool. Measure and clip tool decoration improvements.
  • Added missing topic descriptions
  • When rendering transparent objects during opaque pass, ensure alpha is set to 1.
  • Report unsuported snap mode for view independent geometry when not using origin snap instead of unsnappable subcategory
  • Rework reality model loading to preload tiles.
  • Added method to Plugin that allows a Plugin to control whether the "loaded" message appears on repeated loads of same Plugin.
  • When a reality tile is not present use higher resolution tiles if ready.
  • Fix excessive number of tile requests when solar shadows are enabled.
  • Change shadow bias to 0.1
  • Ensure only surfaces cast shadows.
  • Tweak map and terrain tile loading.
  • Improve user experience by not displaying underresolved tiles.
  • Add support for view-independent display.
  • View target center handle now uses depth preview point instead of AccuSnap.
  • Added depth point preview for rotate, pan, and zoom tools.
  • When depth point is from an element hit, flash the element too.
  • Depth preview refinement and new view tool cursors.
  • Simplify walk tool by using Viewport Animator interface
  • Add walk cursor
  • Fix shadows failing to draw after resizing a viewport.
  • Use Viewport.animate for zoom and scroll tools


Fri Nov 01 2019


  • Anisotropic filting of draped map tiles.
  • Add debug tool for drape frustum.
  • Added MarkerSet.changeViewport
  • Allow sub classes of OidcBrowserClient to override the settings passed to the underlying oidc-client library.
  • Tweaks to ambient occlusion settings.
  • Fixed issues with use of OIDC AuthCode workflow in Electron and Single Page Applications.
  • Update DefaultToolSettingsProvider to create responisve UI.
  • Reduce size of Cesium ION copyright logo.
  • Cleanup AO settings.
  • Added badge support to context menu items. Moved some Plugin Ui definitions to ui-abstract.
  • Concatenate projection and model matrix to avoid jitter.
  • Make toJSON methods of EmphasizeElements and FeatureSymbology.Appearance return pure JSON types.
  • Added support for English key-ins in addition to translated key-ins
  • Simplify fitView. Hypermodeling plugin cleanup.
  • Rework perspective frustum calculation for planar projections
  • Fix plugin loader to honor the bundleName from the manifest file of the plugin.
  • Prevent background map terrain from being affected by default symbology overrides.
  • Fix failure to report shader compilation errors to user in debug builds.
  • Create terrain tiles about center to correct drape jitter.
  • Fix terrain skirt quantization
  • Fixes for making volume classifiers work.
  • Fixes to volume classifier hilite & flashing
  • Fixed EmphasizeElements.wantEmphasis having no effect if neither color nor transparency were overridden.
  • Added better control over auto-disposal of decoration graphics.
  • New wip plugin for hypermodeling support.
  • Added popup toolbar when cursor stops over marker or marker is tapped.
  • Add imageUtil functions that are used in Design Review and needed in other packages.
  • Improve horizon calculation
  • Fixed bug that caused duplicated points to be handled improperly in batched spatial<->geocoord conversions
  • MarkerSet applies only to a single ScreenViewport
  • Make viewport member of MarkerSet public
  • More OIDC fixes for logout of electron apps.
  • Improve performance for multiple viewports.
  • Added New badge for UI items
  • Cross-platform function to open an image in a new window.
  • Reduce planar texture frustum by clipping to view planes.
  • Fix planar-classified regions not displaying hilite silhouettes in perspective views.
  • Prioritize loading of map tiles.
  • RenderSystem.Options.displaySolarShadows now defaults to true; and directScreenRendering has no effect (deprecated).
  • Ensure shadows are continually updated using the best available tiles.
  • Apply transparency cutoff to shadows
  • Ensure transparency threshold takes into account material and feature overrides.
  • Make shadows not apply to world decorations
  • Reduce threshold for moving camera in planar texture projection
  • Added initial ui-abstract package setup
  • Added UiAdmin with support for displaying Menus and Toolbars at a location


Wed Oct 09 2019


  • Implement proper flashing and hiliting of classified geometry.
  • Add new range that represents the dipslayed extents. This is currently used to set the displayed depths.
  • Dont expand displayed extents for unbounded trees.
  • Added support for overriding feature symbology to use a hilite effect.
  • Fix display artifacts caused by interpolation of material settings.
  • Rework frustum calculation for terrain draping.
  • Fix inability to locate polylines and edges if their transparency was overridden.
  • Add GPU timing queries for devtools.
  • Addressed memory leaks when repeatedly restarting IModelApp (typically only done in tests.)
  • Enable display of non-spatial, spatially-located models in spatial views.
  • Geometry of planar classifier models is not required to itself be planar.
  • Fixes for getting image from readMarkup
  • Refine planar texture frustum calculation to handle parallel views.
  • Errors during shader program compilation produce exceptions.
  • Improve shadow lighting to match shadow direction
  • Fixed multiple viewport shadows
  • Refine classification frustum calculation.
  • Support transparency for terrain and planar classification.
  • Tool assistance for viewing tools. Prompt punctuation consistency.


Mon Sep 30 2019


  • AccuDraw Popup Editors. Improved editor sizes. Editor Params improvements.
  • Support animation and classification in same tiles.
  • Always adjust y dimension for aspectRatioSkew
  • Added support for blank IModelConnections
  • Added Cesium ION logo; fixed exception when opening a second viewport while terrain, shadows, or planar classification are enabled.
  • Add checkbrowser.js, refine i18n in Tool
  • Don't try to correct clip plane handle location when plane has been moved outside project extents. Updated image for two finger drag svg.
  • Refine frustum calculation for planar projection to create a tighter fit.
  • Added ViewManager.getElementToolTip for overriding default persistent element tooltip.
  • Various EVSM shadow tweaks
  • Fix scenario in which a tile request is canceled after its http request completes and it remains perpetually in the request queue.
  • Fixed elements failing to draw if transparency was overridden to be exactly 15.
  • Fix marker decorations not updating when markers are added or deleted; fix canvas decorations sometimes failing to display in Firefox.
  • Fix a problem with direct-screen rendering (black viewport in certain situations).
  • Fix edges of instanced geometry failing to respect edge color override defined by display style.
  • Fix transparency for some shaders
  • Added Viewport.readImageToCanvas() to obtain viewport image as a HTMLCanvasElement with a 2d rendering context.
  • Ensure IModelApp.queryRenderCompatibility() always returns an error message if webgl context creation fails.
  • Fix failure to locate an element if it also serves as a modeled element for a sub-model.
  • Added missing iconSpec to measure and clipping tools.
  • Correct ViewClipByPlaneTool icon.
  • Add minArgs, maxArgs, and parseAndRun to PluginTool
  • Added ToolTipProvider interface to augment tool tips.
  • Fix tool tip formatting for terrain.
  • Enable display of non-spatial, spatially-located models in spatial views.
  • Add public Tool method translateWithNamespace to allow plugins to supply their own localization.
  • Support animation of models within RenderSchedule.
  • Added support for iterating a Viewport's per-model category visibility overrides.
  • Refine planar projection frustum
  • Added autoExpand property to PropertyRecord
  • Add QuantityFormatter.onInitialized method to set up default formatting and parsing Specs. Update SetupCameraTool to use new LengthDescription (PropertyDescription)
  • Only apply pseudo-rtc workaround if no true RTC exist in GLTF
  • Performance optimization (benefits non-chromium-based browsers): Render directly to an on-screen canvas when rendering only a single viewport.
  • Select elements tool assistance. Add touch inputs, use new qualifier+button mouse inputs.
  • Fix for pinch zoom not being smooth.
  • Added facility to load plugins specified in settings at startup
  • Add ability for QuantityFormatter to generate station formatting.
  • Allow cached tiles to be used across revisions as long as the model geometry has not changed.
  • Tool Assistance changes per UX Design
  • Tool assistance: Measure tools, view clip tools, and touch cursor inputs.
  • Added touch entries to ToolAssistanceImage
  • Only force update of tool assistance for touch tap that creates the touch cursor.
  • Upgrade to TypeScript 3.6.2
  • Fix WindowAreaTool full screen cursor. Added selected view frustum debug tool.


Tue Sep 10 2019


  • Register tools for AccuDraw shortcuts to support keyboard shortcuts.
  • Partially support animation of classifiers for MicroSoft Poc.
  • Prevent ambient occlusion from being applied to unlit geometry.
  • Add methods for setting render schedule in display style
  • Identify classified reality data to avoid snap using classification element geometry.
  • Apply pseudo bias to batch range when tileset has huge offset.
  • Add workaround for ContextCapture tiles with large offsets.
  • Load bentleyjs-core before geometry-core instead of in parallel from the IModelJsLoader script
  • Refine tile corners on reprojection. Fix bing HTTP request
  • Added a new component for the Poc, an icon picker.
  • Support symbology overrides with no batchId for render schedules, Plugin case fixes.
  • Don't display markers that are very close to eye point.
  • Change how Marker scale is computed for views background map displayed.
  • Report coordinates to message center for copy to clipboard. Support drawing views.
  • Ensure texture memory is properly tracked.
  • Add support for GeometricModel.geometryGuid for detecting whether tiles for a model can be reused across versions
  • Added access to debugging features to RenderSystem via RenderSystemDebugControl; includes support for forcing webgl context loss and toggling pseudo-wiremesh surface display.
  • Support reality model masking via black classifier geometry.
  • Support nearest snap for reality models.
  • Remove doubling of planar classifier size. This caused excessive generation time.
  • Refine texture projection calculation to include height range (for terrain).
  • Ensure DisplayStyle3dState.sunDirection is synchronized with DisplayStyle3dSettings JSON.
  • Clip volume applied to view also applies to reality models.
  • Added SetupCameraTool for defining camera by eye point and target point.
  • Prioritize requests for reality model tiles based on distance from camera.
  • Allow an app to specify touch-specific instructions in tool assistance.
  • Tweak tile priorities so that reality models don't block quicker maps and classifiers.
  • Call to pickNearestVisibleGeometry on 1st data button almost always succeeds now that acs plane is used, remove from updateTargetCenter.


Tue Aug 13 2019


  • Add a frontend keyin UI and handler.
  • Add inertia to Pan and Rotate tools
  • Add test to avoid crash on null view
  • Add support for BackstageComposer so Plugins can add backstage items.
  • Fix loading bug with IModelConnection.codeSpecs
  • Support depth buffered background map and terrain provided through Cesium World Terrain. Switch to logarithmic Z-Buffer
  • Added CursorPopupRenderer to render multiple CursorPopups per RelativePosition.
  • Added CursorPrompt, improved Pointer messages
  • Added support for displaying shadows.
  • Fixed inability to select pickable overlay decorations when elements are emphasized or isolated in the viewport.
  • EmphasizeElements API for resymbolizing and isolating elements.
  • Fix Feature IDs for planar classification picking.
  • Use https: to download Plugin files, unless server is localhost
  • Correct cutting plane direction for Syncro schedule support.
  • Fix element locate occassionally locating transparent areas of textured surfaces.
  • Fix DecorateContext.addDecoration() ignoring view background graphic type.
  • Fix specular lighting in specific case when specular exponent is zero.
  • Improved grid display performance.
  • Don't check eyeDot in camera view.
  • Grid - fix loop test point, check spacing once when camera is off, don't fade unless decreasing.
  • Mass properties tool, report error when selection contains no valid elements for operation.
  • Report WebGL context loss to the user.
  • Optimized shader programs by moving computations from fragment to vertex shader; implemented material atlases to reduce number of draw calls associated with surface materials.
  • Measure distance, don't use cursor location in decorate while suspended.
  • Plugin changes to support building to tar files and hosting by external web servers.
  • Allow defining points with number[] and {x,y} or {x,y,z}
  • Made onClick event handler in LinkElementInfo optional.
  • Change SelectTool to always start in pick mode, add better filter explanations.
  • Add tool assistance for SelectTool.
  • Update SelectTool to set want tool setting property to true.
  • Rework map imagery and terrain tile trees to improve display fidelity during panning and zooming.
  • If a material specifies a pattern map and transparency, multiply pattern alpha by material alpha.
  • Fix a bug in which a tile request could become stuck in the "loading" state.
  • Added Tool.parseAndRun to make executing Tools from keyins easier.
  • Project point to ACS plane when zooming if an element isn't identify and no background map is displayed.


Wed Jul 24 2019


  • Added optional HTMLElement member to Marker
  • Product Backlog Items 148512: OidcBrowserClient can be used for authorization code workflows; Product Backlog Item 148571: Generalized OidcBrowserClient to work with Cesium and SharePoint.
  • Catch load errors for Sprites
  • Remove colinear clip shape points. Grid spacing is a double.
  • Added tests for Spatial Classifications
  • Added TileAdmin option to disable "magnification" tile refinement strategy, which can prevent production of extraordinarily large tiles in some cases.
  • ViewManager.dropViewport clears tool events associated with the dropped viewport, preventing errors in async event processing code. Added Viewport.isDisposed property.
  • Added limited opt-in support for drawing tiles from secondary IModelConnections and locating elements within them. Users must implement tools that can properly handle results like a HitDetail pointing to a different IModelConnection than the one associated with the viewport.
  • Fix Viewport.addViewedModels() failing to update view if some models needed to be loaded asynchronously.
  • Fix empty message body when display Bing map attribution info.
  • Update beta PluginUiProvider interfaces.
  • Add support for GroupItemInsertSpec, badges, and svg symbolId in ToolbarItemInsertSpecs
  • Added method to get element mass properties.
  • Added option to discard alpha channel when converting ImageBuffer to HTMLCanvasElement.
  • Measure distance, allow snap outside project extents for version compare. Added measure length, area, and volume tools.
  • Various OIDC related fixes - Bugs: 148507, 148508, Product Backlog Items: 148510, 148517, 148522.
  • Add PluginUiManager class and PluginUiProvider interface that will be used by Plugins to specify UI components to add to an iModeljs application.
  • Choose handle location for for section plane that is visible in the view.
  • Temporarily undid change to save tokens in local storage.
  • Added ToolAssistance support and Tool.iconSpec
  • The WebGL rendering system now takes advantage of Vertex Array Objects if they are available via an extension. These provide a measurable performance increase in certain datasets.


Mon Jul 01 2019


  • Added userAgent, renderer, and vendor to WebGLRenderCompatibilityInfo
  • Cleaned up background map API
  • Support batch Ids in I3dm (instanced) tiles
  • Add support for applying bing elevation to background map (Terrain).
  • Avoid forwarding tile content request to backend if request is canceled while awaiting content from blob storage.
  • Support batch tables in 3d Tilesets.
  • Added SelectTool.processMiss method to better support clearing logical selections.
  • Clip from element change to try local range XZ or YZ when XY extents aren't valid.
  • Added Viewport.onChangeView event to notify listeners when a new ViewState becomes associated with the Viewport.
  • Eliminate need to cache tool setting properties by ensuring active tool is available before activeToolChanged event is fired.
  • Removed missing group descriptions
  • Support draping of background map tiles on reality models.
  • Added internal method to retrieve attachments from SheetViewState for use in saving/recalling views.
  • Fix for Bing attribution hotspot - was unreliable with elements behind it.
  • Fix bing map URL template - http: -> https:
  • Fix background map tile when child not found.
  • Fix failure to use geocoordinate system to transform map tiles.
  • Ensure new tiles are loaded when edge display is toggled.
  • Fix usage of varyings
  • Fix incorrect range computation when Viewport.zoomToPlacementProps encounters a null range.
  • Added support for 'HTMLElement | string' for message strings
  • Allow index.html to set a CDN from which to load imodeljs external modules.
  • Make Viewport.invaildateDecorations @beta, was @internal
  • Add default unhandled exception handler to ToolAdmin
  • Added feature tracking info to UserInfo obtained by OidcBrowserClient.
  • Ensure we never have two active snap or tooltip requests
  • Refine tile selection for map tiles
  • Prevent default symbology overrides applying to subcategories whose appearances were explicitly overridden.
  • Add option to periodically purge unused tile trees from memory.
  • Allow Viewport's readImage() method to resize images as requested.
  • Force toolsettings to refresh when a tool is started even if new toolId is same as active toolId.
  • Fixed skybox for extreeme otho zoomin
  • Exit on uncaught exception in render loop (Electron only)
  • Thumbnail size was limited to 64K
  • Improve memory management for tile trees.
  • Update to TypeScript 3.5
  • A Viewport can now be instructed to load models when enabling their display.


Mon Jun 03 2019


  • RPC system now accepts only basic values (primitives, "interface" objects, and binary).
  • Updated release tags.
  • Added Viewport.changeViewedModel2d
  • Clip shape tool should only set AccuDraw rotation on 1st point.
  • Fix a prompt. Clip from element change to ignore selection set containing clip transient.
  • Combine planar classifier textures to converve texture units
  • Removed MaybeRenderApp and WebGLTestContext from tests
  • Remove unnecessary comment and initialization checks from tests
  • Fix bug sending sync ToolSettings message to UI when tool did not want ToolSettings.
  • Support emphasize of isolated elements. Allow default appearance independent of emphasize.
  • Dont enforce front/back ratio when displaying map as it does not require z-Buffer.
  • Export the classes from WebMercatorTileTree
  • Fix contentRange when GLTF contains RTC
  • Fix assertion when computing range of instanced meshes.
  • Fix loader so that it doesn't attempt to load .css files that don't exist.
  • Fix background map tile when child not found.
  • Allow ^ to be used to define angle degrees.
  • Downgraded certain NotificationManager methods to @beta to question styling support
  • Fix erroneous clipping of instanced geometry.
  • Constructors for BeButtonEvent classes now take props argument
  • Remove back face culling option due to lack of performance benefit and other observations
  • Increase precision of clipping by transforming clip planes off the GPU.
  • Change ModifyElementSource to internal.
  • Added onActiveClipChanged event to ViewClipDecorationProvider instead of having to implement ViewClipEventHandler. Support for named clips using SettingsAdmin (needs integration tests).
  • Saved clip integration tests. Change view rotate wheel to only zoom about target center when displayed.
  • Support multipass rendering for planar classification for computers that down support multi-target framebuffers
  • Refactored and simplified implementation of
  • Reduce display performance degradation when non-convex clip shapes are applied to a view.
  • Added Overflow button support
  • PropertyRecord can now optionally have extendedData which is a map of any
  • Add support for synchronous quantity parsing and showing and hiding InputFieldMessages.
  • Set max tiles to skip to 1 for reality model tiles. (better user experience)
  • Set release tags for TiledGraphicsProvider classes
  • Reload tile tree if animation id changes
  • Removed use of OidcClientWrapper.
  • Add cSpell comment.
  • Rename terrain to backgroundMap.
  • Add IModelApp.queryRenderCompatibility() API to allow querying of any rendering limitations of a client system.
  • Retire some tile-related feature gates.
  • Add ability to save/restore toolsetting properties during a session.
  • Change to using the new SharedSettings API.
  • Added test for shareClip.
  • Add slope biasing to solar shadow mapping.
  • Reduce horizon limit so that shadows appear earlier and later.
  • Reduced delay between opening a viewport and seeing any graphics.
  • Don't await tentative as it can prevent being able to double click to fit.
  • Change to the way the background map is specified, to allow overlays.
  • Introduced tile format v4.0
  • Tool writers only need AccuDrawHintBuilder, AccuDraw should be internal.
  • Use HTMLElements for tooltips
  • Improve touch cursor visibility. Fix tap on canvas decoration when touch cursor is active.
  • Loader finds and loads css files in production mode.


Mon May 13 2019


  • Support spatial classification of context reality models.
  • API methods for adding and removing context reality models
  • Account for view clip in adjustZPlanes. Fit view needs to check clipVolume ViewFlag.
  • Increase ambient light to .2
  • Adds parameter for api-extractor to validate missing release tags
  • Eliminate display performance issue caused by normal matrix computation.
  • Remove requirement that JavaScript classnames match BIS classnames
  • Reduce the number of geocoordination requests produced when loading map tiles.
  • Save ClipVector on ViewState instead of always creating new one from json.
  • Set initial GL state to match default
  • Dispose of planar classifiers.
  • Add spatial classifier UX
  • Hide clip decoration during modify. Easier right-click/touch tap support for non-handle pickable decoration.
  • Add orientation option button to toolsettings for ClipByPlane/ClipByShape tools.
  • ConvexClipPlaneSet modify handles. Make EmphasizeElements internal.
  • ClipShape modify handles.
  • Fix clip to element tool. wip: Compute clp plane offset in world to support tool settings to enter distance.
  • Fix handle drag test. Support smart lock wth clip shape tool. Offset all clip planes w/shift.
  • View clip fixes and start of tools.
  • Fit view support for planes clip primitive. View clipping tools.
  • Fix tolerance multiplier for reality models
  • Cull geometry outside view clipping volume before drawing.
  • Fix root tile range on webmercator tile tree for ground bias.
  • Added support for disabling certain capabilities for performance testing
  • Adding support for readPixels performance testing
  • Prevent tooltip from blocking tool event loop.
  • Add test coverage in frontend
  • Debug json clip plane usage.
  • ClipVector and ClipUtilities test and enhancements
  • Add backface culling feature to improve performance.
  • Continue showing old skybox until new is ready
  • Add method to return available reality models excluding attached.
  • Allow a view to define a set of elements which should never be drawn in that view.
  • Allow selected viewport to be changed when filterViewport rejects view.
  • Support instanced geometry.
  • Support clipping view volume with multiple convex clipPlane sets.
  • Fix rare failure to refine tiles displayed in view resulting in missing geometry.
  • Fix display of animated edges.
  • When loading a perspective view, fix up potentially bad camera settings.
  • Reduce mininum front clip.
  • Ensure webgl resources allocated by clip volumes are properly released.
  • Fix broken links
  • LoggerCategory -> FrontendLoggerCategory
  • Fix IModelJsLoader to load imodeljs-markup only when needed
  • Export solar calculations for UI
  • Fix scenario in which lower-resolution tiles would be inappropriately substituted for tiles of appropriate resolution.
  • Fix multipass depth issue
  • Fixed visual artifacts when drawing large batches of polylines.
  • Handle non-rds tile tree URLS when signed in.
  • Fix issue in which tiles of incorrect LOD would be drawn.
  • Fix issue with undo/redo view not having render materials
  • Fixes to web mercator.
  • Interfaces used by PropertyRecord are set to either beta or alpha as modules that use them to implement UI are not finalized.
  • Eliminate depedency on JavaScript class names for EnityState subclasses
  • Add support for appending GeoJson to existing IModel
  • Use default background map type if an invalid type is specified in JSON.
  • Ensure queries for large numbers of subcategories are paged appropriately.
  • Improve graphics performance in Firefox.
  • Only use instancing optimization if the system supports instancing.
  • update Sprite after it is loaded
  • Introduce LoggerCategory enum to advertise logger categories used by this package.
  • Logging fixes.
  • Put sourcemap in npm package.
  • Documentation cleanup
  • Add SVG to ImageSourceFormat
  • Add imodeljs-markup
  • Added vpDiv between parent and canvas
  • Allow a view's extent limits to be overridden.
  • Update measure distance tooltip on click. Improve total distance visibility.
  • Add alpha tags to PropertyEditorParams interfaces that are not ready for public use.
  • Improved performance of multipass rendering
  • Improve default rotate point for navigation cube
  • Fixes to OidcBrowserClient.
  • Optimize frontend renderer's performance by minimizing allocations of float arrays passed to the GPU.
  • Add more discrete, efficient Viewport synchronization events.
  • Added the ability to override category visibility on a per-model basis.
  • Rework projection of planar classifiers
  • Refactor classification rename to SpatialClassification
  • Remove "assembly lock" from SelectTool now that SelectionScope has been implemented.
  • Remove IModelApp subclasses
  • Remove IModelConnection.openStandalone and IModelConnection.closeStandalone
  • Setup a generic context for tracking client requests, and made various related enhancements to logging, usage tracking and authorization.
  • Allow tile content to be requested without edge data, reducing tile size and download time.
  • Support image textures larger than WebGL capabilities by resizing them.
  • Update icons-generic-webfont version to latest available.
  • Update the ToolSettings properties defined in the Select Tool so two groups of options are presented, one for selection method and one for selection mode.
  • Simplify SelectTool SelectionMethod and SelectionMode.
  • Remove need to sync SelectionMethod since it is not changed within tool code.
  • Add IModelConnection.openSnapshot/closeSnapshot, deprecate IModelConnection.openStandalone/closeStandalone
  • Refactor solar shadow settings - make these 3d only.
  • Support solar shadow display.
  • Make sky sphere / sky gradient use separate rendering primitive from sky cube.
  • Don't draw Sprite before it is loaded
  • Unit tests and fixed ColorEditor alignment
  • Fix errors on Linux caused by case-sensitivity and shader optimizations.
  • Upgrade TypeDoc dependency to 0.14.2
  • Update the primitive types to be within a Primitives namespace.
  • Allow IModelApp subclass to override applicationId & applicationVersion
  • Revert static inheritance in IModelApp.ts
  • Wrap applicationId & applicationVersion in IModelApp
  • Changes to build process to put all JavaScript files in version-specific subdirectories to avoid browser caching problems when deploying new versions.
  • View undo only saves changes to ViewState, not categories, models, or diplayStyle
  • Clip tool changes now that undo/redo does not affect clipping. Right-click menu support for clip handles.
  • Only save viewing volume for view undo rather than cloning ViewState
  • Tools to create and modify view clip.
  • Reality data shown as Model and picker
  • World decorations ignore symbology overrides defined for the view.


Thu Mar 14 2019


  • Add ColorEditor to list of available Type Editors including new ColorParams to specify set of colors.
  • FitViewTool enhancement to fit to isolated elements or clip volume.
  • Supply additional statistics for monitoring tile requests.
  • Resolve transparency rendering error in multi-pass compositor due to way textures are bound.
  • Cleaned up documentation related to the display system.
  • Use bubble-up for keyboard events
  • Plugin Enhancements
  • Documentation for Skybox
  • Added vertex handles for line/arrow markup.


Wed Mar 06 2019


  • Add ios oidc client
  • geometry-core camel case
  • Add Selection Scope toolsettings to SelectTool.
  • Allow subclasses of Range to use static methods
  • Raise events when a Viewport's always- or never-drawn element sets change.
  • OIDC changes needed for Angular client
  • Changes package.json to include api-extractor and adds api-extractor.json
  • Default SelectTool to select all members of the selected element's assembly.
  • Default scope to element.
  • Use new buildIModelJsBuild script
  • Generalize support for reading tiles to include tiles generated for Bimium.
  • AxisAlignedBox and ElementAlignedBox are now typed to Range3d rather than classes
  • clone methods are no longer generic
  • Optimize renderer to elide debug-only code paths unless explicitly enabled.
  • Generalize 3d tile support. Handle transform on child nodes.
  • Avoid using cutting planes while animating if not displayed, completely hidden or completely visible.
  • Started work on webworker to decode jpeg files for GLTF
  • Defer Draco support until moved to web worker
  • Reduce memory consumption when ambient occlusion is disabled.
  • Fix incorrect colors for some decoration graphics.
  • Remove unneeded typedoc plugin dependency
  • Add support for Draco compressed meshes
  • Change drag select to exclude non locatable
  • noMotion doesn't need to call beginDynamicUpdate
  • Example code (in comments) for frustum interpolator
  • Consistent naming of "get" methods in Growable arrays.
  • Add EmphasizeElements to/from wire format methods
  • Draw non-emphasized elements in "fade-out", non-locatable mode.
  • Move neverDrawn/alwaysDrawn to Viewport they are not part of the persistent ViewState. Change Viewport.addFeatureOverrides to an interface.
  • Rework and simplify ecef transform for reality models.
  • Correct ID for loading classifier trees.
  • Fix clipping volume being inconsistently applied to view.
  • Don't make textures transparent unless technique enables it.
  • Fix incorrect "fit view" behavior when empty tiles exist.
  • Handle relative subpaths in reality model tile trees. Handle Y for axis/
  • Fix handling of null animation visibility - should be 100% not 0.
  • Added spatial <-> cartographic methods that check/use the geographic coordinate system before using ecef location.
  • DefaultViewTouchTool should not call handleEvent until it's installed as the active ViewTool.
  • Traverse GLTF node structure rather than meshes so that node transforms are used correctly.
  • Ensure viewport updates immediately when background map settings are changed.
  • Add a test to determine if GCS is present before using GCS converter.
  • Documentation improvements
  • Support instanced rendering of .i3dm 3D tiles.
  • Preliminary support for drawing instanced geometry.
  • Fix branch transform for animation correctly - back out incorrect fix to BranchState.
  • Implemented, then commented out, doing jpeg decompression in a web worker
  • Added markup mode
  • Events are now on ScreenViewport.parentDiv rather than canvas
  • Update for geometry GrowableXYArray usage.
  • Measure Distance - change selected segment hilite. Measure Location - WIP use ecef transform.
  • Make it possible to define editor params for default Type Editors not explicitly specified by name.
  • Fixed a bug which caused non-locatable geometry to be rendered when no other symbology was overridden.
  • Defer loading of edges until needed
  • Omit animation branches that are not visible.
  • Improve efficiency and completeness of SubCategory loading for ViewStates.
  • Save BUILD_SEMVER to globally accessible map. PluginAdmin and Plugin classes defined. IModelJsLoader improved.
  • Add optional iModel argument to EntityState.clone
  • Added GeometricModelState.queryModelRange
  • Added creatorId, new method to list RD per project, identified numerous area for changes WIP
  • IModelConnection.close() always disposes the briefcase held at the backend in the case of ReadWrite connections.
  • Implemented spatial criterai when searching through all reality data associated to a project.
  • Problem with root document of reality data not in root of blob. Tiles could not be fetched. Root path is added to tiles names.
  • Threading issue accessing Reality Data, RealityData class was transformed to be the main data access object instead of the client that was used by most/all reality data causing cache data clash and mix between many reality data.
  • Optimze containment test with spheres.
  • Move the IModelUnitTestRpcInterface into the testbed and out of the public AP
  • Retry tile requests on time-out.
  • Remove loadNativeAsset and formatElements RPC calls from the IModelReadRpcInterface
  • Removed IModelConnection.connectionId, added IModelApp.sessionId
  • Make view transition animations smoother
  • Optimizations to tile format and schedule animation.
  • Tile requests can optionally specify a retryInterval.
  • Cleanup of DefaultToolSetting provider and EnumButtonGroup editor including new EditorParams.
  • Move property definitions to imodeljs-frontend so they could be used by tools to define properties for tool settings. Add toolsettings to Select Tool.
  • Added a new property to PropertyRecord - links.
  • IModelConnection.connectionTimeout is public to allow application customization.
  • Upgrade to TypeScript 3.2.2


Wed Jan 16 2019


  • Report unsigned measure distance deltas.
  • Add batch id to schedule scripts
  • Add batchID to schedule scripts
  • Handle wider variety of GLTF bounding boxes etc.


Tue Jan 15 2019

Version update only


Mon Jan 14 2019


  • Fix visible seams between map tiles.


Fri Jan 11 2019


  • Optimize performance of schedule animation.
  • Use QuantityType.Coordinate for measure distance start/end points.
  • Add QuantityTypes LatLong and Coordinate.


Thu Jan 10 2019


  • Add support for general 3d tilesets
  • Fix drag select decorator when cursor moves out of view. Doc fixes.
  • Support region bounding volumes
  • Fix IModelJsLoader to ensure react loaded before bwc.
  • MeasureLocationTool show lat/long and altitude.
  • Make raster text locate behave better.
  • Removed default OIDC scopes. All applications must now explicitly pass the required scopes.
  • Can now await result from QuantityFormatter. Report delta relative to ACS when context lock enabled. Cleanup "Measure.Points" plug-in example until real measure tools are available.
  • Quantity formatter now allows async method to get FormatterSpec that can be used to format quantities.
  • QuantityFormatter.formatQuantity is now the only method to format quantities.
  • Rename formatQuantityWithSpec to formatQuantity
  • Added ToolAdmin method for undo/undo last data button and call from Ctrl+Z.


Mon Jan 07 2019


  • Add ambient occlusion to the display frontend system.
  • Account for global origin when reporting coordinates.
  • Add measure distance tool, will be moved to plug-in later.
  • Fixed unnecessary reload during OIDC redirect callback.


Mon Jan 07 2019


  • When the iModel covers a large enough area, get the corners of background map tiles using Geographic reprojection


Fri Jan 04 2019


  • Fix incorrect display of point strings containing duplicate points.
  • Optimize performance when reading depth buffer.


Wed Jan 02 2019


  • Allow the maximum number of active tile requests to be modified at run-time.
  • Fix excessive memory consumption by polyline graphics.
  • Enable path interpolation
  • Enable schedule animation
  • If view delta is too large or small, set it to max/min rather than aborting viewing operations.
  • Fix transform order when pushing branch.
  • Implement quaternion interpolation for Synchro schedule animation
  • Remove trash files
  • Add batch feature overrides to optimize schedule animation.
  • Prioritize tile requests based on tile type and depth.
  • Improve performance by limiting the number of simultaneously-active tile requests.


Wed Dec 19 2018


  • Added showDialogInitially support to ActivityMessageDetails
  • View tools enhancement to use background map plane for depth point when geometry isn't identified.
  • Fix regression in the display of reality models induced by switch to OIDC for access token.
  • Support Pre animation tiles
  • Add support for Syncro schedules (transform disabled)


Thu Dec 13 2018


  • Fix view becoming black in some circumstnces when locate cursor exits viewport.
  • Only make createGraphicBuilder available to DecorationContext. DynamicsContext/SceneContext require a scene graphic.
  • Added StringGetter support to ItemDefBase, ItemProps & ToolButton. Added IModelApp.i18n checks to Tool for unit tests.
  • Fix failure to locate elements if their transparency is overridden.
  • Added tool prompts. Fix dynamics changing locate circle. Hide touch cursor on mouse motion.


Wed Dec 12 2018


  • Added TwoWayViewportSync class to connect two Viewports so that changes to one are reflected in the other.
  • Renamed ViewStateData to ViewStateProps and ViewState.createFromStateData to ViewState.createFromProps.
  • Turn off locate circle when mouse leaves a view


Mon Dec 10 2018


  • Move cursors and sprites to separate directories
  • Fix bug in which the frustum of a spatial view was always expanded to include the ground plane even if the ground plane was not displayed.
  • Ignore 2d models in model selectors.
  • Add tracking of active + pending tile requests.


Mon Dec 10 2018


  • Route map tiles over https


Mon Dec 10 2018


  • Touch tap with AccuSnap enabled now brings up a decoration planchette to help choose the snap point.


Thu Dec 06 2018


  • Map api cors fix
  • Fix failure to display Bing maps logo.
  • Fix "maximum window" error when viewing large drawings.


Tue Dec 04 2018


  • Changed index file name to match package name. Change imports to use other packages' index file.


Mon Dec 03 2018


  • WIP: add support for schedule animation (symbology).
  • Fix incorrect length used to create Uint32Array from Uint8Array.
  • Fix incorrect display of raster text.
  • Fix bug in which the frustum of a spatial view was always expanded to include the ground plane even if the ground plane was not displayed.
  • Fix exception when attempting to create a SubCategoryAppearance from an empty string.
  • Locate circle should be initialized to off.
  • Enable locate and hilite for point clouds.
  • Rename SimpleViewTest to display-test-app
  • SnapStatus and LocateFailure cleanup
  • Front end "read pixels" can now provide subCategoryId and GeometryClass to backend.
  • Check SubCategoryAppearance dontLocate and dontSnap now that HitDetail has subCategoryId.


Mon Nov 26 2018


  • Fix missing uniform error in Edge browser.
  • Optimize 'pick buffer' portion of renderer.


Tue Nov 20 2018

Version update only


Sat Nov 17 2018

Version update only


Fri Nov 16 2018


  • Add support for finding reality models that overlap project extent.
  • Refactor ContextRealityModelState
  • Numerous shader program optimizations.


Mon Nov 12 2018


  • Hydrated briefcases for ReadOnly cases from the latest checkpoint, rather than the seed files. This significantly improves performance of IModelDb/ for typical cases.


Mon Nov 12 2018


  • Fix SelectionSet broadcasting excessive selection change events
  • Add support for Context Reality Models


Thu Nov 08 2018


  • AccuDraw/AccuSnap markdown/examples
  • Fix edge animation of PolyfaceAuxData
  • Updated frontend performance testing
  • Change filterHit on InteractiveTool to async to support backend queries
  • Fix JSON representation of DisplayStyleState.
  • Fix links in tool docs
  • Added an option to Viewport.readImage() to flip the resultant image vertically.
  • PrimitiveTool isValidLocation shouldn't require write, want check for measure tools too
  • Updated to TypeScript 3.1


Wed Oct 31 2018


  • Get snap sprites and view cursors from a url
  • Move filterHit from PrimitveTool to InteractiveTool. PrimitiveTool docs.
  • Support conversion of ImageBuffer to PNG.
  • PrimitiveTool cursor fixes and wip markdown
  • Hide WIP ChangeCache methods on IModelConnection


Wed Oct 24 2018


  • Added view decoration examples to docs.
  • Make ToolAdmin.defaultTool. public. Allow getToolTip to return HTMLElement | string.
  • Fix clipping planes with large floating point values for iOS.
  • Breaking changes to optimize usage of 64-bit IDs.
  • Avoid small allocations within render loop.
  • Added NotificationManager.isToolTipSupported so that we can avoid asking for tooltip message when _showToolTip isn't implemented by application.


Fri Oct 19 2018

Version update only


Wed Oct 17 2018

Version update only


Tue Oct 16 2018

Version update only


Mon Oct 15 2018

Version update only


Sun Oct 14 2018


  • Fixing scripts for linux


Fri Oct 12 2018


  • Initial release

Last Updated: 18 November, 2020