Skip to content

Bonsai 2.9.0

Latest

Choose a tag to compare

@glopesdev glopesdev released this 03 Jun 03:40
· 12 commits to main since this release
bd3ec7e

This is the first release in the 2.9 series, which introduces significant changes to the language editor experience. Please give us any feedback either in the comments below or by opening a new discussion.

In Bonsai 2.9 we introduce a new workflow navigation model leveraging a flexible docking layout panel, and a nested hierarchy tree view with breadcrumbs to allow easily and quickly jumping between different parts of a complex project. The docking architecture also enabled us to start developing new editor tools such as the new find all references window.

The new workflow state watch mode provides an unprecedented level of runtime feedback about the inner workings of a reactive workflow, including when sequences are subscribed to, when they produce values, terminate, or are cancelled. We expect this mode to provide an invaluable tool for learning visual reactive programming and understanding the behavior of programs written in Bonsai.

In anticipation of new editor features, we are introducing a reorganization of the .layout files, which were previously used to store debugger visualizer settings over multiple runs. These files previously cluttered folders containing multiple workflow files, and were very hard to extend to more complex project-based settings. With this reorganization we expect to facilitate a cleaner project folder structure and introduce more clarity on the version control of workflows.

Finally, we modernized the package manager dialog and completed our migration from MyGet to NuGet. As discussed during the last MyGet outage, we urgently needed to broaden our community package deployment options. The new package manager introduces support for two new package types: BonsaiLibrary and BonsaiGallery for packages providing libraries of Bonsai operators and example workflows, respectively.

These package types will be used to curate the nuget.org feed to keep our package manager focused on libraries providing reactive operators. Currently package type filtering is only supported for the nuget.org feed, but it is turned on by default there. New packages deployed to nuget.org are expected to declare both Dependency and BonsaiLibrary as their package types for maximum discoverability.

Important

In the near future, we will move entirely out of MyGet and will archive the community feed.

What's Changed

🔮 Release Highlights

🎉 New Features

  • Allow propagation of Defer nested sequence visualizer by @glopesdev in #1931
  • Rename CombineTimestamp to CreateTimestamped by @glopesdev in #1941
  • Make period a nullable property of reactive timer and clarify documentation by @glopesdev in #1957
  • Add MatrixWriter overload for sequences of unmanaged types by @glopesdev in #2110
  • Improve consistency of visualizer context menu by @glopesdev in #2158
  • Save workflow settings when closing the editor by @glopesdev in #2156
  • Allow selecting output menu items using keyboard by @glopesdev in #2173
  • Add multiline string editor for string properties by @glopesdev in #2192
  • Improve editor experience when manipulating visualizer mappings by @glopesdev in #2195
  • Use workflow filename as default export image name by @glopesdev in #2204
  • Add obsolete message to operator descriptions by @glopesdev in #2208
  • Expose texture array interface on texture sequence by @glopesdev in #2205
  • Add support for Prepend and Append operators by @glopesdev in #2264
  • Make package source configuration dialog a true modal window by @glopesdev in #2297
  • Allow multi-channel data when reading whole files using MatrixReader by @glopesdev in #2301
  • Improved gallery package builder dialog by @glopesdev in #2269
  • Add new VisualizerWindow operator by @glopesdev in #2240
  • Replace MyGet with NuGet as default package source by @glopesdev in #2285
  • Update package template to introduce recommended repository structure by @glopesdev in #2306
  • Add command for creating a new environment by @glopesdev in #2316
  • Automatically use workflow local environment on double-click by @glopesdev in #2315

🐞 Bug Fixes

  • Avoid launching editor during image export by @glopesdev in #2124
  • Remove idempotent operations from the undo history by @glopesdev in #2157
  • Ensure ordering before removing ungrouped nodes by @glopesdev in #2164
  • Improve navigation behavior when no tabs are open by @glopesdev in #2166
  • Ensure topological sort before deletion by @glopesdev in #2169
  • Ensure visualizer mapping build state is cleared by @glopesdev in #2172
  • Ensure OSC message format is culture invariant by @glopesdev in #2193
  • Fallback to base url when no docs are found by @glopesdev in #2197
  • Prune all fully disabled branches during build by @glopesdev in #2178
  • Clear annotation panel on new workflow creation by @glopesdev in #2199
  • Ensure property mapping and member selector operators prefer derived properties by @glopesdev in #2201
  • Ensure any workflow errors are cleared on open by @glopesdev in #2203
  • Avoid loading visualizer layout on mismatched type name by @glopesdev in #2213
  • Avoid multiple shutdown paths out of StartWorkflow by @glopesdev in #2212
  • Ensure editor workflow is not set until validation by @glopesdev in #2231
  • Avoid corrupting editor state when loading workflow with circular includes by @glopesdev in #2235
  • Disable confusing editor actions on disabled nodes by @glopesdev in #2239
  • Await initialization before loading layout by @glopesdev in #2232
  • Avoid setting minimum size on text visualizer by @glopesdev in #2253
  • Initialize editor layout after workflow validation by @glopesdev in #2255
  • Await asynchronous workflow initialization on editor load by @glopesdev in #2258
  • Fix various issues with Extensions.csproj handling and add unit testing for it by @PathogenDavid in #2180
  • Ensure workflow does not contain unknown types when exporting to an image from the CLI by @glopesdev in #2267
  • Ensure visualizer predecessor search can extend to nested scopes by @glopesdev in #2268
  • Add missing null guard in SelectPackageDetails by @glopesdev in #2290

🚀 Performance Improvements

🔧 Engineering

Full Changelog: 2.8.5...2.9.0