=========================
Autolab 2.0 is the first major release since 2020.
General Features
----------------
- Configuration Enhancements:
- Enhanced configuration options for driver management in autolab_config.ini, including extra paths and URLs for driver downloads.
- Added install_driver() to download drivers.
- Improved handling of temporary folders and data saving options.
- Driver Management:
- Shifted drivers to a dedicated repository: autolab-drivers.
- Drivers are now located in a local folder instead of in the main package.
- Added the ability to download drivers from GitHub using the GUI, allowing selective driver installation.
- Documentation:
- Added documentation for new features and changes.
GUI Enhancements
----------------
- General Improvements:
- Switched from matplotlib to pyqtgraph for better performance and compatibility.
- Enhanced plotting capabilities in the monitor and scanner, including support for 1D and 2D arrays and images.
- Added $eval: special tag to execute Python code in the GUI to perform custom operations.
- Added sliders to variables to tune values.
- Control Panel:
- Added the ability to display and set arrays and dataframes in the control panel.
- Introduced a checkbox option to optionally display arrays and dataframes in the control panel.
- Added sub-menus for selecting recipes and parameters.
- Improved device connection management with options to modify or cancel connections.
- Added right-click options for modifying device connections.
- Scanner:
- Implemented multi-parameter and multi-recipe scanning, allowing for more complex scan configurations.
- Enhanced recipe management with right-click options for enabling/disabling, renaming, and deleting.
- Enabled plotting of scan data as an image, useful for 2D scans.
- Added support for custom arrays and parameters in scans.
- Enabled use of a default scan parameter not linked to any device.
- Added data display filtering option.
- Added scan config history with the last 10 configurations.
- Added variables to be used in the scan, allowing on-the-fly analysis inside a recipe.
- Changed the scan configuration file format from ConfigParser to json to handle new scan features.
- Plotter:
- Implemented a plotter, allowing opening of back scan data, connecting to instrument variables, and performing data analysis.
- Usability Improvements:
- Enabled drag-and-drop functionality in the GUI.
- Added icons and various UI tweaks for better usability.
- Enabled opening configuration files from the GUI.
- Standalone GUI Utilities:
- Added autolab.about(), autolab.slider(variable), and autolab.variables_menu().
- Added autolab.add_device() for adding devices to the config file.
- Added autolab.monitor(variable) for monitoring variables.
- Added autolab.plotter() to open the plotter directly.
Device and Variable Management
------------------------------
- Variable and Parameter Handling:
- Added new action units ('user-input', 'open-file', 'save-file') to open dialog boxes.
- Added 'read_init' argument to variable allowing to read a value on device instantiation in the control panel.
- Added new type 'tuple' to create a combobox in the control panel.
Miscellaneous Improvements
--------------------------
- Code Quality and Compatibility:
- Numerous bug fixes to ensure stability and usability across different modules and functionalities.
- Compatibility updates for Python 3.6 up to 3.12.
- Switched from PyQt5 to qtpy to enable extensive compatibility (Qt5, Qt6, PySide2, Pyside6).
- Extensive code cleanup, PEP8 compliance, and added type hints.
- Logger and Console Outputs:
- Added an optional logger in the control center to display console outputs.
- Added an optional console in the control center for debug/dev purposes.
- Miscellaneous:
- Added an "About" window showing versions, authors, license, and project URLs.
- Implemented various fixes for thread handling and error prevention.