v1.0.0
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.
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.
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.
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.
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.
Support for color themes
Users can select “Dark,” “Medium,” and “Light” color themes, depending on their preference.
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.
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.
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.
