Releases: bonsai-rx/bonsai
2.9.0-preview1
Warning
THIS RELEASE IS UNDER ACTIVE DEVELOPMENT. We are actively looking for feedback on your experience with the new features. All preview features are subject to breaking changes as we incorporate feedback and so we do not recommend you to use this release for any production applications.
This is the first preview 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. If you create a new discussion, please indicate clearly that your question is about the 2.9.0-preview1 release.
In this preview, we are introducing a new workflow navigation model coupling a single-page browser-like view of the current workflow level, with a nested hierarchy tree view and breadcrumbs to allow quickly jumping between the different sections and modules of a complex project.
We also introduce a new workflow state watch mode, active by default, which 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 are hard to extend to the more complex project-based settings we now need to evolve the editor experience. 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 to support our migration from MyGet to NuGet. As discussed during the last MyGet outage, we urgently need 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
🔮 Feature Preview
- Modernize package manager dialog by @glopesdev in #1969
- Move layout files to workflow settings folder by @glopesdev in #1956
- Add workflow state watch to debug mode by @glopesdev in #1975
- Rewrite editor navigation model by @glopesdev in #1870
🎉 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
🐞 Bug Fixes
- Exclude build dependencies when counting inputs to new nested node by @glopesdev in #1946
🚀 Performance Improvements
- Replace uses of WebRequest with HttpClient by @glopesdev in #1937
🔧 Engineering
- Update launch settings to target artifacts folder by @glopesdev in #1923
- Update ScintillaNET to support modern .NET by @glopesdev in #1924
- Allow building workflows as typed sequences by @glopesdev in #1942
- Target netcore on editor and bootstrapper projects by @glopesdev in #1907
- Configure tests to run on .NET 8 by @PathogenDavid in #1952
- Fix test target framework issues by @PathogenDavid in #1958
- Use deployment key in CI for manipulating Git repository by @PathogenDavid in #1985
- Add support for sorting test workflows by @glopesdev in #1964
Full Changelog: 2.8.5...2.9.0-preview1
Bonsai 2.8.5
What's Changed
🎉 New Features
- Ensure multicast subject preserves source type by @glopesdev in #1916
🐞 Bug Fixes
- Fix redundant assembly resolution resulting in duplicate assembly loading by @PathogenDavid in #1902
- Ensure all resolved assemblies are unique by @glopesdev in #1904
- Fix exception constructor argument order by @glopesdev in #1910
🔧 Engineering
- Fix some lists in the NuGet package comparison log not being sorted by @PathogenDavid in #1908
- Fix NuGet testing feed appearing in official releases by @PathogenDavid in #1918
- Drop version build metadata for official releases by @glopesdev in #1913
📄 Documentation
- Add Discord and GitHub Discussions badges to the readme by @PathogenDavid in #1909
Full Changelog: 2.8.4...2.8.5
Bonsai 2.8.4
What's Changed
🎉 New Features
- Use forward slashes for package configuration by @glopesdev in #1893
🐞 Bug Fixes
- Fix build metadata in workflow version causing semver parsing to fail by @PathogenDavid in #1786
- Log all unhandled bootstrapper exceptions by @glopesdev in #1888
- Fix
ObjectTextVisualizer
allowing a buffer size of 0 by @PathogenDavid in #1882 - Ensure visualizer operator override by @glopesdev in #1889
🚀 Performance Improvements
- Preload all extension types from include workflows by @glopesdev in #1890
🔧 Engineering
- Revamp CI infrastructure and implement release automation by @PathogenDavid in #1873
- Move ironpython package into separate repository by @glopesdev in #1878
- Make package comparison in CI optional for the sake of forks by @PathogenDavid in #1887
- Hide embedded DLLs from the solution explorer by @PathogenDavid in #1894
- Avoid packing internal project dependencies by @glopesdev in #1898
📄 Documentation
- Add infrastructure for release automation and clean up build workflow by @PathogenDavid in bonsai-rx/docs#87
Full Changelog: 2.8.3...2.8.4
Bonsai 2.8.3
What's Changed
🎉 New Features
- Preserve visualizer types across nested sink nodes by @glopesdev in #1751
- Allow script extensions to declare unsafe blocks by @PathogenDavid in #1753
- Modify text visualizer to better handle newlines and unprintable control characters by @PathogenDavid in #1765
- Add support for binding textures directly from a
TextureSequence
by @PathogenDavid in #1770
🐞 Bug Fixes
- Fix workflows run from the command line not exiting upon completion by @PathogenDavid in #1755
- Prevent empty category nodes from being dragged into the workflow by @glopesdev in #1760
- Fix GateInterval not working after the first tick by @PathogenDavid in #1767
- Fixed uncaught exception when XRefMap is invalid by @PathogenDavid in #1785
- Log full exception trace for console bootstrap by @glopesdev in #1805
- Prevent infinite recursion when visualizer mappings of the same node are combined together by @PathogenDavid in #1787
🚀 Performance Improvements
- Avoid rebuilding combinator reset delegate by @glopesdev in #1750
- Enable support for compressed XRefMap from documentation server by @PathogenDavid in #1788
🔧 Engineering
- Move arduino package into separate repository by @glopesdev in #1754
- Update wix toolset version by @glopesdev in #1808
- Update project and item template dependencies by @glopesdev in #1810
📄 Documentation
- Fix typo in Bonsai.Design.Slider documentation by @PathogenDavid in #1752
- Clarify use of cross-correlation for FIR filters by @glopesdev in #1768
New Contributors
- @PathogenDavid made their first contribution in #1752
Full Changelog: 2.8.2...2.8.3
Bonsai 2.8.2
Second service release for the 2.8 series, including patches for installer, editor and bootstrapper packages.
What's Changed
- Fix circle picker rescaling and size conversion issues by @glopesdev in #1621
- Add missing circle constructor by @glopesdev in #1623
- Avoid cancellation exception on task completion by @glopesdev in #1688
- Improve detection of word boundaries in node names by @glopesdev in #1694
- Update wix toolset version by @glopesdev in #1695
- Ensure external browser docs are shown on modifier by @glopesdev in #1696
- Ensure retrieval of closest subject definition by @glopesdev in #1699
- Allow filtering package updates by @glopesdev in #1700
- Improvements to environment template by @glopesdev in #1701
Full Changelog: 2.8.1...2.8.2
Bonsai 2.8.1
First service release for the 2.8 series, including patches for bootstrapper and core packages.
What's Changed
- Avoid permissive exclusion of method overloads declared in base type by @glopesdev in #1512
- Ensure base path is not modified on resubscription by @glopesdev in #1554
- Add library folders to DLL search path on windows by @glopesdev in #1555
- Ensure arguments with spaces are surrounded by quotation marks by @glopesdev in #1563
Full Changelog: 2.8.0...2.8.1
Bonsai 2.8
This is the first release in the 2.8 series and one of the most significant in the last couple of years.
Critical parts of the compiler, IDE and bootstrapper have been rewritten to allow evolving the infrastructure into the new cross-platform .NET core. We have made the editor and language learning experience more accessible by providing support for rich rendering of Markdown annotations and embedded documentation for all operators. Finally, we have established the Bonsai Foundation, an independent organization to support our commitment to a free and open-source future, and to the benefit of our growing community.
Embedded code annotations and documentation
Code comments are an essential part of any programming language, and Bonsai is no exception. As the complexity of projects increases, and knowledge needs to be transferred across generations of scientists, it becomes more important to have effective ways of sharing information about how the internals of specific workflows work.
This release introduces a new Annotation
operator, which can be placed on its own or attached to any node, and where you can write your own development notes or operating instructions in Markdown to be saved with the workflow. Being a visual language, we think that having the ability to write-down rich HTML annotations, potentially with images or schematics, will be an important feature of Bonsai code comments. Markdown provides a great compromise between ease-of-use, flexibility and rich HTML support, which is leveraged by the new built-in browser panel which has also been co-opted to display embedded documentation.
Fully-featured Linux editor
We've been progressively cleaning up the kinks in cross-platform support of the current Bonsai editor (Mono .NET framework) and we now can run the editor with full-functionality (i.e. cameras, OpenGL, sound, serial ports) in latest Ubuntu, Arch Linux and Raspberry Pi. By taking advantage of VS Code on Linux it even becomes possible to use C# scripting directly.
We have documented the installation steps in detail and removed most crippling crashes and painful limitations around Bonsai on Mono. All the functionality required to run our tutorials and learning materials should now be available to any Linux system.
Announcing the Bonsai Foundation
We are welcoming our first new code contributors (@bruno-f-cruz), and announcing the Bonsai Foundation as part of our commitment to make Bonsai a free, open-source, and sustainable community-driven project. The primary role of the Foundation is to organize the development of the Bonsai ecosystem, and facilitate the sharing of contributions between individuals and organizations who want to volunteer their work for community projects. We hope that by establishing clear contribution guidelines, and improving access to freely available teaching materials, documentation, conferences and summer courses, we can empower current and future generations of scientists anywhere in the world to use this free and open-source programming language.
We hope you will join us in our journey!
What's Changed
- Add dotnet template for creating a new bonsai environment by @glopesdev in #1251
- Increase default max number of significant digits for floating-point values in CsvWriter by @glopesdev in #1261
- Reuse top-level prefix for all extension base types with explicit XML type declarations by @glopesdev in #1072
- Allow generic type resolution of TypeMapping values outside the core namespace by @glopesdev in #1279
- Allow overload inference for polymorphic operators by @glopesdev in #1291
- Ensure unique XML namespace prefix declarations by @glopesdev in #1292
- Avoid throwing on ResourceSubject dispose if source sequence terminated exceptionally by @glopesdev in #1293
- Ensure priority of base non-polymorphic properties by @glopesdev in #1306
- Add support for adding rich annotations to the workflow by @glopesdev in #1311
- Add support for dynamic keyword and dynamic object binding in C# scripts by @glopesdev in #1258
- Ensure single subscription to Gate opening events by @glopesdev in #1315
- Optimized workflow reordering and insert at cursor by @glopesdev in #1324
- Add support for in-editor docs browser by @glopesdev in #1359
- Improved support for editing annotations by @glopesdev in #1361
- Add support for the HasFlag operator by @glopesdev in #1364
- Add support for polymorphic operator docs by @glopesdev in #1369
- Ensure replaced nodes keep the same index by @glopesdev in #1371
- Add support for using System.Numerics namespace in local scripts by @glopesdev in #1373
- Limit group context menu to core nested operators by @glopesdev in #1376
- Allow derived IO writer classes to specify base path by @glopesdev in #1377
- Add tags to project templates by @glopesdev in #1382
- Regression testing for sorting and editor changes by @glopesdev in #1393
- Rewrite bootstrapper logic to avoid relying on AppDomain by @glopesdev in #1392
- Mono compatibility improvements by @glopesdev in #1407
- Redirect headless exceptions to stderr by @glopesdev in #1411
- Add assembly reference for data serialization by @glopesdev in #1413
- Fixes and improvements to workflow sort order by @glopesdev in #1414
- Cache configuration parameters for each async call in LoadImage operator by @glopesdev in #1421
- Bump NuGet.Protocol from 6.3.1 to 6.6.1 by @glopesdev in #1422
- Add keyboard shortcut for changing history length by @glopesdev in #1423
- Early error checking and file name generation for FileSink by @glopesdev in #1430
- Improve support for high-frequency visualizers by @glopesdev in #1415
- Allow lazy initialization of webview panel by @glopesdev in #1432
- Simplify qualified name for workflow element icons by @glopesdev in #1433
- Avoid returning resources declared inside disabled nodes by @glopesdev in #1439
- Update package template debug settings for new bootstrapper by @glopesdev in #1442
- Avoid deadlock when disposing serial connection by @glopesdev in #1443
- Refactor default serial port implementation to avoid event callbacks by @glopesdev in #1444
- Refactor arduino interface to avoid event callback by @glopesdev in #1445
- Refactor text visualizer to use buffered updates by @glopesdev in #1446
- Add net6.0 build target to player project by @glopesdev in #1447
- Update package dependencies by @glopesdev in #1448
- Add item templates for dotnet new by @glopesdev in #1449
- Add community code of conduct by @glopesdev in #1450
- Remove XML serialization properties from public API by @glopesdev in #1451
- Add tie-break for method overloads in derived classes by @glopesdev in #1452
- Add operators for reading and writing binary data from a serial port by @glopesdev in #959
- Improve information contrast for obsolete operators by @glopesdev in #1455
- Add support for streaming binary serial read buffers by @glopesdev in #1456
- Ensure output of Normalize is bounded between zero and one by @bruno-f-cruz in #1400
- Add operator to query an environment variable by @bruno-f-cruz in #1232
- Require user defined conversion when multicasting to subject with non-matching type by @glopesdev in #1459
- Refactor matrix and spike visualizers to use buffered updates by @glopesdev in #1460
- Allow starting editor session on a specified folder by @glopesdev in #1464
- Add citation file by @glopesdev in #1466
- Ensure Vid...
Bonsai 2.7.2
Second service release for the 2.7 series, including patches for editor and core packages.
What's Changed
- Ensure correct upgrade of inspectable workflows by @glopesdev in #1150
- Ensure XmlInclude types are included in serializer by @glopesdev in #1157
- Avoid locked file access when upgrading and re-saving extensions by @glopesdev in #1164
- Ensure initial and current directories are equal by @glopesdev in #1158
- Disable editing of design-only properties inside included workflows by @glopesdev in #1165
Full Changelog: 2.7.1...2.7.2
Bonsai 2.7.1
First service release for the 2.7 series, including patches for bootstrapper, editor and core packages.
What's Changed
- Fix layout for gallery and package export dialogs by @glopesdev in #1128
- Add support for COLLADA, FBX and STL formats by @glopesdev in #1136
- Add extension folders to IronPython search path by @glopesdev in #1144
- Fix drag and dropping of workflow files into the graph view by @glopesdev in #1133
- Ensure embedded workflows also upgrade on ungroup by @glopesdev in #1134
- Ensure upgrading does not re-enable disabled nodes by @glopesdev in #1132
- Ensure extensions are searched in order from project to config by @glopesdev in #1137
- Allow deprecation of embedded workflows using assembly metadata type by @glopesdev in #1138
Full Changelog: 2.7...2.7.1
Bonsai 2.7
This feature release adds support for built-in documentation of core and community packages and brings improvements to interoperability with hardware protocols. New UI functionality for replacing, renaming, and finding operators has been added, together with a new system for building custom visualizers directly in the workflow.
All reactive operators have been moved to a common namespace, and support for concurrency control has been added. Several namespaces and packages have been refactored in preparation for increased cross-platform targeting and support of .NET 6.0 in subsequent feature releases.
What's Changed
- Merge 2.6 patches by @glopesdev in #880
- Generalize multi-region editors and add support for editing circular regions by @glopesdev in #932
- Allow specifying limits for rolling graph builder by @glopesdev in #927
- Add support to bind parameters with white space by @glopesdev in #944
- Refactor and standardize SVG export functions by @glopesdev in #940
- Generalize layout settings and mashup API for arbitrary visualizer composition by @glopesdev in #917
- Allow cropping fixed-size rectangular regions around specified image points by @glopesdev in #996
- Add support for context-dependent renaming of subjects by @glopesdev in #921
- Add built-in integration for community documentation by @glopesdev in #937
- Add type descriptor support for property mapping by @glopesdev in #923
- Allow closing editor tab with middle mouse click by @glopesdev in #1013
- Add support for replacing selected nodes by @glopesdev in #1009
- Split expression and python scripting packages by @glopesdev in #942
- Load package manager dependencies without assembly lock by @glopesdev in #1049
- Add netstandard build target for core assembly by @glopesdev in #1052
- Refactor namespace organization for reactive operators by @glopesdev in #1046
- Disable modifier keys for docs and rename actions by @glopesdev in #1061
- Ensure nested mashup sources are always serialized by @glopesdev in #1065
- Finalize reorganization of reactive namespace by @glopesdev in #1064
- Align semantics of Slice operator with Take by @glopesdev in #1067
- Add support for finding toolbox elements by @glopesdev in #1074
- Require opt-in attribute to reset combinator by @glopesdev in #1083
- Add scheduler and concurrency control operators by @glopesdev in #1082
Full Changelog: 2.6.3...2.7