Skip to content

v1.0.0

Choose a tag to compare

@anjaldoshi anjaldoshi released this 16 Jul 00:56
· 7 commits to main since this release

Binary release July 15, 2025

Release Notes

This marks the first release of the "version 1.0" iteration of the Open Ephys GUI, which attains a new level of professionalism and robustness. This release brings a wide range of UI upgrades, performance improvements, and bug fixes based on feedback from end users over a period of 10+ years. We recommend that all users update to version 1.0, which has numerous advantages over previous releases.

The major changes are summarized below:

User Interface Upgrades

Enhanced Graph Viewer

The Graph Viewer provides a high-level overview of the current signal chains. As of version 1.0, the nodes in the Graph Viewer flow from left to right (rather than vertically), to mirror the layout of the plugin editors. In addition to information about the data streams generated or processed by each plugin, each node now includes editors for all available plugin parameters. This makes it easier to view and modify parameters for multiple signal chains in parallel. Graph Viewer nodes now retain their open/closed states when plugins are added and removed, or when signal chains are reloaded.

Graph Viewer

Stream info table

The “stream selector” in each plugin editor has been replaced with a table that summarizes information about all incoming data streams at a glance. Stream settings can be modified by clicking on each stream's row in the info table. The table can be expanded to reveal more detailed information about each data stream.

Stream info table

Empty processors

When a signal chain is missing a source node, an “Empty Processor” now appears as a placeholder. Empty processors also appear in place of unconnected sources for any Mergers.

Empty processors

Message Window

Custom text annotations can now be entered via a pop-up window. When recording is active, annotations are automatically timestamped and saved by all Record Nodes. Unlike the message bar in the main GUI, the pop-up window tags the annotation with the time it was opened, allowing users to launch it at the moment of interest and enter text at their convenience.

Message Window

More extensive undo operations

Previously, only plugin add/move/delete operations could be undone. Now, undo/redo also works with parameter changes, as well as channel reordering operations in the Channel Map and adding/removing electrodes from the Spike Detector. In addition, parameters for Spike Channels are restored correctly when undoing a plugin deletion or changing the number of incoming data streams.

More flexible Data Viewport

Tabs in the Data Viewport (which holds plugin visualizers) can now be rearranged, renamed, or deleted. Tabs can be placed in up to three columns, to allow multiple visualizers to be used side-by-side without the need to pop out additional windows.

Data Viewport

Support for color themes

Users can select “Dark,” “Medium,” and “Light” color themes, depending on their preference.

Color themes

Processor list search

Clicking on the new search button in the processor list header brings up a search bar that can be used to filter the processor list by name.

Flexible clock.

Added the option to reset the clock whenever acquisition begins.

Plugin Updates

LFP Viewer

In single-channel mode, each channel displays the RMS voltage instead of the standard deviation. The options bar can now be scrolled, to access all parameters on condensed displays. Rendering of continuous signals and event overlays is smoother across Windows, macOS, and Linux.

Spike Viewer

Added transparency to spike waveforms and peak locations. Added more information about channel info and display range.

spike viewer

Recording & Synchronization

More intuitive directory selection

Record Nodes now inherit the default recording directory from the Control Panel, unless the Record Node explicitly specifies a custom directory.

Synchronization upgrades

The synchronization algorithm used by the Record Node and Event Translator has been rewritten to improve robustness and add support for arbitrarily short sync pulses. In addition, details about each stream's synchronization status (stream start time, sync tolerance, and time since last sync pulse) can now be viewed by expanding the stream selector within the Record Node

Performance Improvements

Multithreading support

The Bandpass Filter now processes data using multiple threads, greatly reducing the delays incurred when filtering many channels in parallel.

GPU-based rendering on Windows

Visualizations on Windows are much more responsive, thanks to the addition of GPU-based rendering.

Faster data transfer

Greatly reduced the number of copy operations required to stream data from external devices

Logging

Integrated Console

The Console now appears as a tab in the Data Viewport, making it easier to access on Mac.

Integrated console

More complete log messages

Messages from plugins are now saved to the log file, and each line in the log file includes a timestamp.

Developer Improvements

Upgrade to the latest JUCE library

The GUI is now built on top of JUCE version 8, the most recent major release. This update makes the application more efficient, especially with respect to rendering graphics, and includes built-in support for OSC Messages and Video display.

More flexible Parameter editors

This update makes it even easier to build plugin user interfaces with minimal custom code. Default editors now have a more consistent appearance, while also being easier to customize. We have added default editors for selecting files, data streams, and TTL lines. Each Parameter can be linked to multiple editors, allowing settings to be modified directly from the Graph Viewer.

Expanded plugin API

Added callbacks for additional software events, such as signalChainWasLocked() and isReady().

Coding standards

A .clang-format file makes it easy to auto-format source code according to JUCE standards

Testing & Benchmarking

Unit testing infrastructure

The TESTABLE macro allows developers to easily write tests for any class, which can be run using Google Test. Unit tests for key data processing classes are now included alongside the GUI’s source code. Tests run automatically whenever a pull request is opened against the main branch.

Support for headless mode

A UI-free signal chain can be instantiated by running the application with the --headless command-line argument. This makes it easier to test features through cloud-based continuous integration services. In addition, all user interactions can now be simulated via the HTTP Server, and these are incorporated into a suite of automated integration tests.

Benchmarks for key use cases

We now provide precise information about the maximum number of channels and minimum processing delays achievable with various system architectures, from standard laptops to state-of-the-art workstations.