Highlights
* **Counterbalance Routine**: Standalone Routine to handle counterbalancing *between participants*, using the "shelf" to maintain records inbetween
* **Piloting Mode**: Run experiments in "piloting" mode - adjusts settings to avoid common pitfalls while you're building (e.g. getting stuck in a full screen experiment), then switch to "running" when you're ready to start gathering data
* **Improved UI**: Toolbars across the app have a clearer layout for buttons and a more intuitive interface for Pavlovia. Runner especially has had a visual overhaul, with a lot more space for reading stdout/alerts and a new output specifically for Pavlovia sync messages.
* **Fixes to Eye tracker plugins**: Several eye trackers had not been working since being moved out to plugins and these should all now be back in operation
Translation works
* Continued translation into Simplified Chinese (and now Traditional Chinese) and beginnings of translations into Spanish, Hebrew: 5891 5892 5893 5894 5895 5897 5904 5912 5915 5917 5923 5903 5932 5925
New features and enhancements
* Added plugin support for standalone plugins by mdcutone in 5866
* **Button Box Component**: Component for using button boxes, which will always have the same methods and properties but by installing plugins you can add functionality for different devices
* Allow speech-to-text engine configuration from Builder by mdcutone in 5905
* Replace toolbars with a "Ribbon" by TEParsons in 5920
* Method for processing device info on Windows by TEParsons in 5940
* Added tools for creating and managing hardware interfaces by mdcutone in 5950
* Allow expInfo fields to be ordered, required, hidden and deprioritised using a new name syntax by TEParsons in 5949
* Added Counterbalance Routine (and Python implementation of Shelf) by TEParsons in 5967
* Add component for Button Box, with plugin-able backends by TEParsons in 6006
* Option in Builder to skip/customise frame rate check by TEParsons in 6049
* Option in Builder to specify globalClock format by TEParsons in 6048
* Added method to Window to get value of specific pixels by mdcutone in 6054
* Added piloting mode by TEParsons in 6066
* Add param to enable "rush" mode by TEParsons in 6279
* Speed up plugin dialog by mdcutone in 5796
* Better handling when opening e.g. png files in Coder by TEParsons in 5788
* Speed up app by using faster string tools for labels and methods by TEParsons in 5826
* Improved plugin installation method by mdcutone in 5872
* Allow prefs dialog menu to be resized by TEParsons in 5869
* Add method to manually create a keypress, photodiode response, etc. by TEParsons in 6022
* Add option to ignore keypresses outside of PsychoPy window by TEParsons in 6039
* Allow Sound to specify a Speaker rather than using general system audio by TEParsons in 6079
* Add method to wait for responses to SerialDevice by TEParsons in 6092
* Include link to project in "Successful sync" message by TEParsons in 6171
* Silence "Unrecognised Parameter" warnings if params came from a plugin by TEParsons in 6179
* Speed up experiment loading by TEParsons in 6180
* Catch fails in Packages dialog by TEParsons in 6193
* Hide components/routines from future versions by TEParsons in 6200
* More intuitive label on Pavlovia project info update button by TEParsons in 6217
* Added menu item in Builder to reveal current folder by TEParsons in 6218
* Install packages in editable mode via a pyproject.toml file by TEParsons in 6228
* Improvements to Code component UI behaviour by TEParsons in 6265
* Open news from menu by peircej in 6205
* Make expInfo dialog always on top by TEParsons in 6301
Bug fixes
* Fix matrix questions Survey Routine by TEParsons in 5797
* Fix crash which happened if wx wasn't installed by peircej in 5832
* Make sure icons & labels in preferences dialog are always visible by TEParsons in 5868
* Handle when Component has no start time in JS by TEParsons in 5864
* Static component was preventing Movie from starting by TEParsons in 5928
* Change default logging level to warning by suelynnmah in 5941
* Let experiments run without git installed by TEParsons in 5939
* Fix bug whereby Brush wouldn't pick up on mouse clicks by TEParsons in 6056
* Fix inconsistent data outside trial loop by monique2208 in 6004
* Fix shape setting on Polygon-derived components (e.g. ROI) by TEParsons in 5971
* Remove darc toolbox demos (maintainer no longer supporting package) by RebeccaHirst in 6094
* Fixed error when `audioLib` is `None` by mdcutone in 6103
* Handle unconventional launch methods (e.g. launching from command line with unrecognised args) by peircej in 6118
* Fixed error with resizing "sash" in Preferences dialogby mdcutone in 6146
* If psychtoolbox can't detect devices, log warning rather than crashing by TEParsons in 6150
* Fixed error when using Save in Coder when there is no file open by nvanhaute in 6158
* Fixed "missing reference" error with setting Sound device by mdcutone in 6122
* Fix _set function for NoiseStim to handle input length by simonfei123 in 6136
* Draw expected duration from Routine Settings in Builder by TEParsons in 6190
* Fix error when loading window whose size is negative by mdcutone in 6192
* Stop Builder from assuming the current folder is .../psychopy/app whenever filename is "untitled.psyexp" by TEParsons in 6198
* Catch error when package info is missing by mdcutone in 6202
* Experiments weren't working online if experiment name differed from filename by TEParsons in 6221
* Fixed iohub eyetracker calibration (keyboard was losing input) by mdcutone in 6226
* Handle when Static component has no start time by TEParsons in 6248
* Don't scroll to top after opening a Builder component category by TEParsons in 6251
* Fixed Mouse.visible attribute not applying requested state by mdcutone in 6254
* Fixed freeze when running eyetracker validation by mdcutone in 6264
* Fix error when cancelling a commit by TEParsons in 6271
* Special code for when Slider is "radio" was missed in JS code by TEParsons in 6272
* Fix "iCCP profiles" error with classic icons by TEParsons in 6276
* Fix wrong setter name in Textbox/TextStim JS code by TEParsons in 6277
* New Pavlovia projects were being created empty until first commit by TEParsons in 6273
* Fix UI inconsistencies on Ubuntu by TEParsons in 6242
* Fix code for sound component stop values by zuazo in 6300
* Fixed selecting audio device in builder and coder by zuazo in 6299
* Fix bug where local PsychoJS server kept running after quitting by TEParsons in 6323
Documentation and testing improvements by...
* alexander-pastukhov
* peircej
* suelynnmah
* patrickabolger
* richardnaar
* JensBoelte
* d-scanzi
* psych575
* shun2wang
* Solveig-Castelli
* carosamu
* Ahmad-Abudoush
* RebeccaHirst
* ice-yu
* domstoppable
* kimDundas
* afuetterer
* TEParsons
New contributors
* mscheltienne made their first contribution in 5889
* JensBoelte made their first contribution in 5956
* d-scanzi made their first contribution in 5952
* kshtjkumar made their first contribution in 5955
* Solveig-Castelli made their first contribution in 5961
* carosamu made their first contribution in 5972
* monique2208 made their first contribution in 6004
* afuetterer made their first contribution in 6110
* bartuatabek made their first contribution in 5942
* FS94 made their first contribution in 6121
* simonfei123 made their first contribution in 6136
* tomdstone made their first contribution in 6261
* zuazo made their first contribution in 6299
**Full Changelog**: https://github.com/psychopy/psychopy/compare/2023.2.3...2024.1.0