Smplrspace changelog
The definitive source of product updates on our lean digital twins
Search releases
18 April 2024

This version adds a number of new capabilities to the reporting feature that was first introduced in v2.10.0.

🎊 New reports features

  • You can now aggregate data from multiple sources, making it possible to configure all-in-one management reports.

  • We've added new statistic options: average, weighted sum, and weighted average.

  • We've added a new template displaying a list of stats.

  • The level explorer template now support multiple stats with in-page selection of the active stat by users.

  • We've added support for on-the-fly stat selection for the data visualization in reports.

  • We now support multiple data layers on a single report page.

  • It is now possible to use point data layers.

  • We've added support for numerical color scales in the reports.

  • It is now possible to map multiple assets to a single spreadsheet line.

πŸ’« Improvements to reports

  • We've updated the summary cards to support a large number of categories.

  • We've reworked the navigation between pages to allow for more complex reports.

  • Each page of a report now has its own url, making it easier to share a specific data view.

  • We've improved the loading state of report pages, removing the flash of white between page.

πŸŽ‰ Other new features

  • startViewer now returns a Promise, letting you react when the scene is ready without providing an onReady callback method. This is to adapt to different types of environments (e.g. Observable notebooks), or coding preferences.

  • You can now programmatically switch between 2D and 3D modes without restarting the viewer with the new setMode API. See the docs.

  • We've added an API to remove all data layers at once, a reset button of sorts! See the docs.

  • It is now possible to auto-rotate the viewer for display purpose. More details in the docs.

  • You can now programmatically compute the ground footprint of a piece of furniture. Ideal for alternative visualizations, or to compute the area taken by specific furniture classes. See the docs.

  • New keyboard shortcut for you power users! Shift+D will duplicate doors, windows, and furniture pieces in the editor.

  • We're added automatic classification of facade walls, to make it easier to add custom models as facade and in preparation for experimental performance features relying on facade-only rendering for hidden floors.

  • An experimental performance mode is in private alpha. We're looking at bringing the viewer to the next level of rendering performance, with a focus on not-necessarily large, but dense & complex multi-storey buildings.

πŸ’… Other improvements

  • We've improved the rendering of point data layers in 2D mode.

  • We're now making sure that data layers are fully managed in 2D mode.

  • We've improved consistency of the loading state of the viewer and you can now provide an optional message to be displayed when the space is loaded but still rendering. See the docs.

  • We've added statistics about your space in the right pane of the editor below the publish button. This gives you (and us) some useful information to debug performance related issues.

πŸ› Bug fixes

  • We've fixed the free rotation of furniture while pressing the shift key, in the editor.

  • We've fixed an issue where reports that had no data for a given space where also displayed in the list.

  • We've improved the consistency of the timing when the scene ready event is emitted. In some cases, it was emitted too early, it's now all good.

  • We've fixed an issue where the onClick event on furniture data layers would sometimes be triggered one too many times.

πŸ“š Documentation

  • You can now Ctrl+K to activate the search in the docs.


22 March 2024

No new feature today, but this release is a big one as it significantly improves the behavior of our viewer and data layers in 2D mode, as well as for spaces that span a very large area.

See below a before/after of an extreme case β€” a space spanning 700m by 460m 🀯.

πŸ’… Improvements

  • We've completely reworked the 2D mode of the viewer and it now renders spaces of all sizes without flickering.

  • Data layers in 2D mode are now fully managed in height/elevation, to make it much simpler to use and predictable in rendering.

  • Data layers in 3D mode are now automatically positioned in height/elevation if their value is so low that it would be hidden under the ground.

  • We've made sure that walls are always rendered higher than grounds and ground level data layers, making car park data viz (e.g.) much easier to achieve and predictable across space sizes. It's a trade-off with rendering of extremely large spaces, but will make the behavior more predictable for 95% of the users.

  • We've improved the default behavior of ground types so it's simpler to overlap different grounds, but still provide full control in cases where it's needed.

  • We've improved the rendering of structural walls so their size match exactly the size of non-structural walls they overlap.

  • We've improved the performance when using subspace rendering, by not rendering non included levels at all. They used to be hidden, now they're gone πŸ™ˆ.

  • You can now pass color values with their CSS names, like 'cyan', in the data layer color options.

πŸ› Bug fixes

  • We've fixed an issue that could sometimes lead to an unintended "flash" effect when clicking the info link in the viewer.

  • We've fixed an issue where stairs were missing in 2D mode.

  • We've fixed the handling of ranges of levels to include using ~ in shared space links.

  • We've fixed an issue with 2d rendering with thick grounds.

  • We've fixed a bug that would crash the viewer if it was passed elements that don't have a position or coordinates. They're now ignored.


14 March 2024

πŸŽ‰ New features

  • Our first step towards subspace rendering is live. You can now specify which levels to include in the viewer. This is available through smplr.js, either when you start the viewer (see includeLevels in the docs), or dynamically after the viewer has started (docs). It's also possible to use this feature on shared space links by appending the (zero-based) level indices to include to url: /0 for the first level only, /0-3 for the first and 4th level, /0~3 for the first to the 4th level, or any combination of these.

  • We have added the possibility to update the viewer's renderOptions dynamically, letting you adapt the way the space is rendered based on the data visualization needs you have. This lets you move from a data only view to a normal view instantly without restarting the viewer. See the docs for details.

  • You can now disable grounds from the rendering (see grounds.render in the docs).

  • You can now pre-navigate the viewer to a certain level when you start it (see topShownLevel in the docs).

  • We've added synchronous equivalents for each asynchronous function in QueryClient. This relies on our caching and requires pre-caching the space data, but make it much easier to implement batch compute queries by mapping arrays, or similar. See the docs for details.


Bug fixes
7 March 2024

πŸ› Bug fixes

  • We've fixed the point layer shape being cube instead of sphere as default.

  • We’ve fixed an issue in the numeric scale where the input was not properly clamped to the scale’s domain in case a decimal gamma value was set. Highly specific? yes. Solved? yes.


6 March 2024

This is another big release on the tail of v2.14.0. A number of you have already got a preview of our heat maps capabilities and have asked (quite impatiently πŸ˜‰) when the official API would ship. The answer is today ! And it's not coming alone, but alongside our new and shiny color scales, to help you bring best practices from color theory into your data visualizations.

πŸŽ‰ New features

  • We've added the highly awaited heat map data layer API. You can now render heat maps in just a few lines of code. The grid is automatically generated and configurable. It is also masked automatically by your space's footprint, but you can provide a custom polygon mask to use instead. Interpolation is done out of the box, with a smart confidence range computed based on the relative location of your data points, but you can also set the confidence range that makes most sense to your use-case. Heat maps come in a few configuration styles: spheres, grid, and bar-chart, with potentially more to come based on users feedback. Check out the docs for the API reference and a live demo with code, or play around with the options without code in our timeheat demo.

  • The point data layer is getting better, with shapes! You can now choose which shape you want each point to be rendered as. We're starting with spheres (the historically single option), and cubes of any size. More shapes will be added based on demand. Details in the docs.

  • We've added a Color utility class to smplr.js, which lets you easily create gorgeous looking color scales that are optimized for spatial data visualization. It also provides a legend component for react or vanilla javascript, and utility methods to convert css colors into the approximate color you visually see in a Smplrspace viewer when you use them. More details in the docs. Tip: that "A little context" section is a great read. Or go play with it in our colors mini-site.

πŸ’… Improvements

  • We've added a hello world example to the doc in which smplr.js is loaded from CDN.


Bug fixes
28 February 2024

πŸ› Bug fixes

  • We've fixed a bug where CSV data imported in the mapper with an empty smplrUuid value would result in assets that can't be mapped.


23 February 2024

This is a massive release with loads of new capabilities. In particular, it introduces 12 🀯 new queries to smplr.js' QueryClient, focusing on the ability to programmatically πŸ€– compute spatial parameters and extract data out of spaces.

πŸŽ‰ New features

  • New queries for spatial computation & floor plan data extraction:

    • Get the mapper's saved "assetmap" programmatically (docs).

    • Extract furniture from the spaces by level (docs) or out of a custom area defined by a polygon (docs).

    • Compute a variety of dimensions or spatial simplifications out of your spatially mapped data: lengths, areas, center points, bounding boxes, concave hulls.

    • Check if a point (docs) or a furniture (docs) is contained within a specific polygon.

  • We've added a viewer option to not render walls at all, which lets you build external views of buildings that are purely focused on your data. See renderOptions.walls.render in the docs.

  • We've added parametric triangular desks to the furniture catalog, and they come with a special smart action to automatically complete a cluster of 3 in a single click.

  • There is a new option for doors to be rendered as revolving doors – perfect for commercial space entrances. This one was inspired by Gijs VH πŸ‡³πŸ‡±, winner of the most creative customer award 2023. Thank you Gijs ✌️.

  • Our white label viewer add-on is officially live! Get in touch to know more.

πŸ’… Improvements

  • You can now drag while pressing spacebar to move the floor plan in any mode in the 2D editor.

  • New keyboard shortcut alert! You can now remove a wall, ground, etc. in the editor by pressing ctrl+delete/backspace or cmd+delete on Macs. Just delete continues to remove just the selected point.

  • We've added an option to hide the lower floor "hints" in the editor, which keeps you sane when digitizing really complex spaces. You can toggle this preference from the "Defaults" tab in the editor.

  • We've added a hello world example to the doc in which smplr.js is loaded from CDN. Check it out here and select "Static (CDN)" from the top right corner.

  • We've improved the consistency of dropdowns across the app and in particular in the editor. They now all open on click, not on hover.

  • We've improved the performance of bulk actions like clearing a level of all walls, grounds, etc.

  • We've improved our silent login mechanism to better support browsers with advanced privacy settings. ✌️ safari users!


5 February 2024

πŸŽ‰ New features

  • We've added a disableCameraRotation to the API that allows developers to force a 2D top view while in 3D mode. See the documentation for more details.

  • We've made great progress on our upcoming map view, which leverages our GeoJSON compatibility to render your geo-referenced buildings on a beautiful world map, in 3D, and interactively. This is currently an internal alpha release, but get in touch to explore with us what it could enable you to build.

πŸ› Bug fixes

  • We've fixed an issue where the wrong features (walls, grounds, etc.) where edited when changing options in the right pane.

  • We've fixed an issue that made windows jump when being resized significantly. This had been there for 4 or 5 years, so long amigo πŸ‘‹.

πŸ€“ For the nerds

Our editor codebase is now fully typed! πŸ’ͺ


22 January 2024

πŸ’… Improvements

  • We've improved our facade mode by adding the possibility to mark walls as part of the facade. This lets us hide them when the facade is rendered β€” a seamless transition between native Smplrspace buildings and models created by 3D artists.

  • The set scale button now becomes active when a scale value is entered, without having to click out of the input first. One of these tiny quality of life improvements.

  • We've expanded the console logs about our upcoming viewer white label license, now covering CSS modifications patterns.

πŸ› Bug fixes

  • We've fixed an issue where the CSV file exported from the mapper could not be imported again.

πŸ€“ For the nerds

We're adding tooling to automatically track the bundle size changes of smplr.js after each PR. This will help us continue to build while ensuring we are most efficient about the bytes you load in your app.


Bug fixes
10 January 2024

πŸ› Bug fixes

  • We've fixed an issue that had no user impact but was flooding our bug tracking system. A hotfix to safeguard our sanity πŸ˜…


Next page