Changelog
=========
.. raw:: html
.. role:: noncompat
PsychoPy uses **major.minor.patch** version numbers:
- All changes to **major.minor** numbers indicate that changes are expected to change the behavior of PsychoPy experiments
- Changes to the **patch** version number are relativel minor bug fixes and we hope they do not change behavior
Updating without breaking existing studies
------------------------------------------
We **strongly recommend** that, once your experiment is finished and is being run "for real",
that you apply the :ref:`useVersion ` setting so that your study will always try
to run on the same PsychoPy version even where a different version is installed on the computer.
That setting often even allows PsychoPy to run experiments from versions that have not yet
been installed! If the dependencies haven't changed it will run.
PsychoPy 2023.2
---------------
**Highlights:**
* Routine settings: Routines now have parameters of their own, giving control over their max duration, skipping the Routine altogether, or changing the way the window looks just for that Routine.
* Sort by priority: Columns in the data file can now be given a "priority" value, with the option to sort by priority instead of chronologically.
* Whisper transcription PLUGIN for Microphone: Using the OpenAI backend, Microphone transcriptions can be done quicker and more accurately, and include timing info for each word.
* Progress bar component: A visual component to show progress along an axis.
* Builder search dialog: Search for values across your whole experiment, then jump to the specific Routine/Component where it's present. Makes debugging much easier.
* Most stimuli now support a `draggable` attribute. If set to `draggable=True` then that stimulus should check/update position on each frame using `stim.doDragging()`
**Behaviour changes:**
* Eyetrackers (Tobii, SRR Eyelink, Gazepoint, PupilLabs) are now plugins rather than built-in, in keeping with the drive to cut down the dependencies of core PsychoPy
**Enhancements:**
* PsychoJS: Mobile-friendly viewport settings. by @lightest in `#5380 `_
* Allow experiment to run with different clocks (e.g. wall clock time instead of starting at t=0) by @TEParsons in `#5621 `_
* PsychoJS ShapeStim from Builder now supports custom vertices by @TEParsons in `#5522 `_
* Numerous improvements to plugins system and dialog
* Added `abortCurrentTrial` (Python only for now) method to `TrialHandler2` and `MultiStairHandler` by @mdcutone in `#5423 `_
* Better performance and fixes to FFPyPlayer movie engine
* Added `letterSpacing` attribute to Textbox by @TEParsons in `#5487 `_
* New `Session` class to run multiple experiments - create your stimulus window once and run multiple experiments in it, with the ability to pause/resume/stop the experiment. (Python only for now) Session can be controlled over `websockets` using the Liaison server
* Full support for Python 3.10, wxPython 4.2, and PyQt6
* Preserve tab order for Routines when saving/loading an experiment by @TEParsons in `#5517 `_
* Added audio settings to Camera component by @mdcutone in `#5681 `_
* Improved streaming of camera to disk by @mdcutone in `#5551 `_
* Window now explains it is performing timing test by @mdcutone in `#5511 `_
* Keyboard Components from Builder will store duration if available (if release has already occurred) by @TEParsons in `#5569 `_
* Show status text for objects in Flow panel by @TEParsons in `#5443 `_
* Make psychopy.Window title (and icon in pyglet) settable by @TEParsons in `#5540 `_
* UI enhancements to Coder and Runner by @TEParsons in `#5539 `_
* Multihead support for X11/Linux by @mdcutone in `#5520 `_
* Plugins Dialog now checks for version compatibility with PsychoPy by @TEParsons in `#5649 `_
* Install plugins to subdirectories by @mdcutone in `#5398 `_
* Make Save & Edit/View buttons on README window more explicit by @TEParsons in `#5523 `_
* New option to abbreviate long component names in Preferences, fixes `#5574 `_ by @TEParsons in `#5586 `_
* Highlight selected Routine in Flow panel by @TEParsons in `#5588 `_
* Better Builder visualisation very large experiments by @TEParsons in `#5618 `_
* Lock Flow panel buttons to the left when scrolling by @TEParsons in `#5620 `_
* ExperimentHandler.addData() now has optional `row` argument to specify previous entry by @TEParsons in `#5652 `_
* Fixed useVersion warning untracked working tree files would be overwritten by @peircej in `#5670 `_
* Add param to control whether movies/sounds end when the Routine does, by @TEParsons in `#5415 `_
* Add "transparent" as named color by @TEParsons in `#5689 `_
* Radio button styling was not work in Slider component in 2023.1, fixes `#5661 `_ (dev) by @TEParsons in `#5691 `_
* Allow expInfo fields to be marked as required (*) by @ainazay in `#5543 `_
* Fix VlcMovieStim by @marcpabst in `#5702 `_
* Added data file separator to expInfo by @EitanHemed in `#5607 `_
* Minor Textbox bugfixes by @ollie-d in `#5723 `_
* Extended autotranslate functions supported by py2js by @roelofsaj in `#5713 `_
* Submitting GitHub issues now supports templates by @shun2wang in `#5732 `_
* Numerous Documentation improvements by @fboers @kimDundas @patrickabolger @EitanHemed @larsoner @pmolfese
PsychoPy 2023.2.0
~~~~~~~~~~~~~~~~~
**Key fixes (from 2023.1.x series):**
* Fixed missing comma in Brush component code by @TEParsons in `#5564 `_
* Mouse position incorrect when desktop scaling not 100% on Windows by @mdcutone in `#5758 `_
* Fixed `AttributeError: 'SoundPTB' object has no attribute 'isFinished'` by @mdcutone in `#5541 `_
* Better handling of missing audio libraries - allow the app to load always and fallback to PsychToolBox if possible
* Better handling of Mouse.getPos() when no windows open by @peircej in `#5763 `_
* Param updates code for Sound in JS was using Python syntax by @TEParsons in `#5762 `_
* More informative error when useVersion fails to write script by @TEParsons in `#5761 `_
* saveAsWideText was using deprecated DataFrame.append function by @TEParsons in `#5507 `_
* Polygon/ROI vertices caused error if trying to set each frame by @TEParsons in `#5686 `_
* Don't crash if user attempts to initialise ioHub more than once by @TEParsons in `#5533 `_
* Added log file entry for Keyboard.clearEvents() by @peircej in `#5558 `_
* Fixed missing movie file in MoviePause.py demo by @EitanHemed in `#5583 `_
* Coder source tree thought any variable name beginning with `def` was a function def by @TEParsons in `#5581 `_
* README filename wasn't being updated for new frames by @TEParsons in `#5593 `_
* Fix Markdown parsing on README files by @TEParsons in `#5572 `_
* Ignore Escape in Keyboard component if needed to end experiment by @TEParsons in `#5598 `_
* Joystick component - SyntaxError in generated code by @EitanHemed in `#5601 `_
* Error `got an unexpected keyword argument "reset"` when trying to pause using PTB sounds by @peircej in `#5619 `_
* PsychoPJS: Fix issue with first frame of image being shown as default.png in JS by @TEParsons in `#5716 `_
* Add `self` to list of disallowed Component names by @TEParsons in `#5742 `_
* Split compound Survey answers into individual columns by @TEParsons in `#5734 `_
* Fixed audio file not resetting during (Python) experiment by @mdcutone in `#5712 `_
* If trying to load previously open file that is corrupted, do at least open the app (with an empty window) by @TEParsons in `#5696 `_
* Better catching of name errors in conditions file by @TEParsons in `#5654 `_
**New contributors:**
* @ranibaron made their first contribution in `#5394 `_
* @patrickabolger made their first contribution in `#5414 `_
* @fboers made their first contribution in `#5482 `_
* @gtosh4 made their first contribution in `#5609 `_
* @ainazay made their first contribution in `#5543 `_
* @marcpabst made their first contribution in `#5702 `_
PsychoPy 2023.2.1
~~~~~~~~~~~~~~~~~
**Key fixes:**
* Eyetracker plugins were not being detected by Builder by @peircej in `#5808 `_
* Fix device selection for Microphone component by @mdcutone in `#5811 `_
* ioHub reporting negative response times by @TEParsons in `#5807 `_
* Add attributeSetter / set functions for borderWidth by @TEParsons in `#5779 `_
* Option for hiding splash screen available in Preferences by @TEParsons in `#5776 `_
* `endExpNow` was only defined if Escape was enabled by @TEParsons in `#5780 `_
* Polygon JS from Builder failing to initialise code by @TEParsons in `#5783 `_
* Copied Routines were getting two Routine Settings components by @TEParsons in `#5792 `_
* Fix unresponsive scrolling in Routine canvas by @TEParsons in `#5795 `_
* update Japanese translation by @hsogo in `#5789 `_
* If rewinding Sound (seek to before end) then mark as not finished by @TEParsons in `#5781 `_
* Fixed _legacy-legacy-browser.js is not a file by @TEParsons in `#5799 `_
* Coder was making an error when opening a new file by @TEParsons in `#5801 `_
* Conditions file was being cleared when loop type is "interleaved staircase" by @TEParsons in `#5803 `_
* Add JS code to set window background image on init by @TEParsons in `#5806 `_
* MacOS iohub "TypeError: startswith first arg must be bytes..." by @peircej in `#5812 `_
* New projects sometimes wouldn't have a local root by @TEParsons in `#5814 `_
* Handle when Static Component tries to set param of deleted/disabled Component by @TEParsons in `#5815 `_
* Python 3.10 version bump had broken GIF avatars by @TEParsons in `#5791 `_
**Full Changelog**: https://github.com/psychopy/psychopy/compare/2023.2.0...2023.2.1
PsychoPy 2023.2.2
~~~~~~~~~~~~~~~~~
**Key fixes:**
* Fixed ioHub keyboard timing (was using incorrect timestamp offset) by @TEParsons in `#5807 `_
* Fixed locating config files for ioHub extensions which prevented them from loading by @mdcutone in `#5821 `_
* Fixed bug whereby iohub couldn't find plugin backends on Mac by @TEParsons in `#5824 `_
* Better handing of experiments with Components that are now only in plugins by @TEParsons in `#5834 `_ `#5831 `_ `#5833 `_
* Fixed "logFile does not exist" error when "Save log file" is False by @TEParsons in `#5836 `_
* Fixed matrix question breaking apart code in Survey Routine by @TEParsons in `#5840 `_
* Allow expInfo to use values from Code components without overriding them by @TEParsons in `#5837 `_
* Fixed error in Form when using a radio ctrl by @TEParsons in `#5843 `_
* Polygon broken in JavaScript code from Builder by @TEParsons in `#5844 `_
* Ignore spaces when getting variables from name by @TEParsons in `#5841 `_
* "tThisFlip not defined" error when using Routine stop time online by @TEParsons in `#5849 `_
* "eyetracker is not defined" error on experiment quit by @TEParsons in `#5850 `_
* Fixed incorrect formatting in `AudioDeviceInfo` `__repr__` by @mdcutone in `#5851 `_
* Fixed message order in Plugins dialog output by @TEParsons in `#5865 `_
* Update path of README dialog on "save as" by @TEParsons in `#5863 `_
* Fixed sounds restarting at the end of a Routine where they had perviously stopped by @peircej in `#5874 `_
**Various documentation updates:**
* Progress bar API and documentation by @suelynnmah in `#5822 `_
* Bart Builder demo fix by @suelynnmah in `#5823 `_
* psychophysicsStaircase demo fix by @suelynnmah in `#5829 `_
* Fix colors demo by @TEParsons in `#5838 `_
* Sternberg Builder demo - checked save log file to remove logFile error by @suelynnmah in `#5845 `_
PsychoPy 2023.2.3
~~~~~~~~~~~~~~~~~
## Key fixes (from 2023.2.2)
* Silenced warning about numpy version number in Windows Standalone
* Fixed issue with "cannot import Never from typing_extensions" in Windows standalone
* Fixed error detecting eyetracker config files by @TEParsons in `#5883 `_ `#5886 `_
* Fixed eyetracker calibration routine freezing by @mdcutone in `#5901 `_
* Fixed support for updated Pupil Labs plugin w/ support for Neon by @domstoppable in `#5887 `_
* Fixed useVersion for JS - needed to create a _legacy.js file by @TEParsons in `#5918 `_
* Fixed SerialOut parity should be N not None by @TEParsons in `#5907 `_
* Fixed bug whereby Textbox's scrolling Aperture was applied to all stim by @TEParsons in `#5934 `_
## 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 Contributors
* @meltemkaraca made their first contribution in `#5891 `_
* @SarvCh made their first contribution in `#5893 `_
* @ymhuang1005 made their first contribution in `#5894 `_
* @ice-yu made their first contribution in `#5895 `_
* @domstoppable made their first contribution in `#5887 `_
* @jingrun213 made their first contribution in `#5897 `_
* @psych575 made their first contribution in `#5912 `_
**Full Changelog**: https://github.com/psychopy/psychopy/compare/2023.2.2...2023.2.3
PsychoPy 2023.1
---------------
**Release series 2023.1. Highlights**
- **Pavlovia Surveys:** can now be integrated into PsychoPy online studies. You still create your
survey in the Pavlovia Survey Creator (on you Pavlovia Dashboard) but you can then incorporate
them as either a link or an embedded json file into your PsychoJS study. This only works for
online studies at present
- **Panorama Stimuli:** now supported in PsychoPy (lab-based) studies. You can add a photo-sphere
as a stimulus (e.g. create them in Street View app on Android phones) and then insert them into
Builder and explore
- **Plugins and Packages:** You can now add packages to your PsychoPy installation with a GUI that
installs new packages to your user folder (without needing admin rights). Some of PsychoPy's
existing functionality has also moved out to "Plugins"
- For users, plugins mean more control over what functionality you want PsychoPy to support
- For developers, plugins mean keeping more independence over your code and ownership
- **Speech Point:** on TextBox allows a tail to be added giving the impression of a cartoon speech
bubble (lab-based only, currently)
- **MovieStim:** further improvements to performance and fixes
On top of the [new features added in 2023.1 series](https://github.com/psychopy/psychopy/releases/tag/2023.1.0)
**Fixes:**
* Fix crash following gamma semi-auto correction (when laying out dialog box) dialog box by @TEParsons in `#5452 `_
* Crashing due to outdated `core.getFromNames` in Mouse by @TEParsons in `#5474 `_
* Setting Image as a numpy array caused a TypeError by @TEParsons in `#5453 `_
* Handle invalid paths when stringifying params by @TEParsons in `#5465 `_
* Swap all references to Panorama.altitude with Panorama.elevation by @TEParsons in `#5471 `_
* Fix typo in Survey routine - `stauts` rather than `status` by @TEParsons in `#5468 `_
* If user requests showing README and there isn't one then show a blank file @TEParsons in `#5470 `_
* Fix typos in high contrast theme by @TEParsons in `#5504 `_
* Sound files online were playing forever if duration set to <0.5s by @TEParsons in `#5466 `_
* Let Builder treat Sound.isPlaying and Sound.status==STARTED as synonymous by @TEParsons in `#5428 `_
* Correctly ignore blank columns by @wader in `#5406 `_
* Viewport was left as None when checkTiming was unticked by @TEParsons in `#5451 `_
* Better handling when a Pavlovia project / plugin avatars in the app @TEParsons in `#5458 `_ `#5460 `_ `#5469 `_
**Documentation fixes by**
* @roelofsaj in `#5477 `_ `#5483 `_ `#5484 `_
* @ChenBri in `#5478 `_ `#5480 `_
* @ChristopheBossens in `#5481 `_
* @suelynnmah in `#5444 `_
**New Contributors**
* @roelofsaj made their first contribution in `#5477 `_
* @ChenBri made their first contribution in `#5478 `_
* @ChristopheBossens made their first contribution in `#5481 `_
* @wader made their first contribution in `#5406 `_
**Full Changelog**: https://github.com/psychopy/psychopy/compare/2023.1.1...2023.1.2
PsychoPy 2023.1.1
~~~~~~~~~~~~~~~~~
**Fixed:**
- Better plugin handling:
- Better handling of plugin dependencies (moved to sub-folders) `#5398 `_
- More responsive plugins dialog (not waiting for all plugin info to populate) `#5410 `_
- Live info updates as the plugin installs `#5399 `_
- Sort package versions newest first `commit:a4987c95f `_
- Panorama stimulus no longer needs FBO=False on Window
- MovieStim locally opacity was not being honored `commit:094731084 `_
- MovieStim online crashed if using setEveryRepeat `commit:ed484ba17 `_
- Close eyetracker connection if experiment ends early `commit:f9b6f98e4 `_
- README dialog was created twice `#5383 `_
- Online Experiments with image sitmuli crashing with unknown resource "default.png"
- Nested loops were crashing
- Fixed various failures to translate `commit:804bfcde2 `_ `commit:b1b611ec1 `_
- Console gave encoding errors when opening MacOS csv files on Windows machines `#5396 `_
- Failure to log in to Pavlovia `#5382 `_ `#5450 `_
PsychoPy 2022.3
---------------
**Highlights:**
- Online: Interface in Pavlovia for building and running online questionnaires! As this is built on top of the
open-source [SurveyJS](https://surveyjs.io/) package it offers a rich feature list right off the bat. The new
Pavlovia Survey component you can insert a survey into your experiment just like you would a Form component.
- Python: New Panorama component lets you view a Photo Sphere image as a 3d scene within Python experiments.
- Python: New style for slider:
- **choice**: Hides the Slider line and replaces the marker with a focus box which sits behind the labels.
- Python: New control types added to Form component:
- **dropdown**: A drop-down menu, essentially a Button stimulus showing the current value which, on click, reveals
a Slider with style set to **choice**.
- **checkbox / bool**: A tick box for simple yes/no questions
- Python: Textboxes now have the option to hide overflowing text and/or to show a vertical scrollbar.
- Python: PsychoPy windows can now have a background image, settable in the Experiment Settings.
- Online: PsychoJS end message now customisable via Experiment Settings.
- App: Accessibility enhancements, making it easier to navigate menus and dialog boxes using just the keyboard.
PsychoPy 2022.2
---------------
*Highlights:*
- BETA: Cameras can now be accessed during your experiments (in web-based and in local experiments) and allow
- saving recordings to disk
- showing the current input from the webcam (make the Camera the input to a regular ImageStim)
- replaying a recording later in the experiment (use the Camera as input to a subsequent MovieStim)
- **all the above features are currently BETA**
- Python: New movie *playing* engine for higher performance playback in locally experiments (using FFPyPlayer)
- Online: Introducing the "Shelf" for persistent storage on Pavlovia of variables accessible to a range
of scopes (only the current participant, only the current project, any project in the lab etc.).
This may sound like not a big deal but it opens options for the following:
- **multi-session** studies: retrieve the participant threshold/progress form last session
- **interactive multi-player** studies: store 'messages' for another user to receive
- **counterbalancing online**: by tracking the number of participants that have been in each group
- Online: Gratings and Gabors now supported online, straight from your Builder experiments
- Online: gamma correction supported in the browser(!!) by setting Window.gamma property (currently
requires a code snippet)
- Local: Builder now has a Serial Port Component to make it easier to connect to hardware without needing
Code Components
**Compatibility changes:**
- App: Studies with Code Components that access `routineTimer` will need adapting because the non-slip Builder
logic has changed this is now a regular (count-up) Clock instead of a CountdownTimer
**Key Fixes:**
- Online: Button Component is now fully working, so you don't need to create your own text boxes for this
- Online: Routines used outside a loop now always advance the next row in the data file so that they
can't overwrite each others' data
- Python: The `.stopped` times should now be showing up correctly for all Components in the csv file
(they were always correct in the log file)
- Python: Better timing in non-slip Routines. Previously the non-slip timer corrected for overshoots but
not undershoots. This is now fixed.
- Python: 3D rendering should be working again.
**Also:**
- `Is trials` property of loops (to control whether the data file advances) is now supported
in online studies
PsychoPy 2022.2.1
~~~~~~~~~~~~~~~~~
Fixed:
- App: bug on MacOS opening Builder that led to ‘PosixPath’ object has no attribute ‘is_relative_to’ when loading experiments
- App: improved performance when the Shell has a large amount of text `commit:f1e8d6bf7 `_
- App: fixed the use of tab traversal within Component dialogs on MacOS `commit:a618c4cd7 `_
- Python: fixed setting the first position of markers on Sliders
- Python: experiments using ioHub Keyboard backend were registering keypresses twice (once for down and again for up) `#4990 `_
PsychoPy 2022.2.2
~~~~~~~~~~~~~~~~~
Fixed:
- App: non-slip Routines not being terminated properly by force-end-routine `#5004 `_
- Packaging: removed PocketSphinx from requirements (hard to install on several systems)
- App: translations of some choice fields into Japanese not working correctly `#5009 `_
PsychoPy 2022.2.3
~~~~~~~~~~~~~~~~~
Fixed:
- App: Dark mode was missing "goto" button
- App: Coder save button was not updating correctly after a change `#5031 `_
- Python: Arabic Harakat diacritics were misaligned in Python TextBox2 `#5033 `_
- Python: rendering performance improvement when contrast=1 `#5027 `_
PsychoPy 2022.2.4
~~~~~~~~~~~~~~~~~
Fixed:
- Python: fix to occasional crashing of new FFPyPlayer moviestim caused by excessive logging in the underlying lib `commit:47289f6ca `_
- App: better handling of case where Experiment Settings may have syntax error `commit:60cf0cea6 `_
- App: rare case where the $ could get ignored during dialog box validation `commit:eb1897087 `_
- App: better handling of an (apparent) syntax error in user-supplied JS `commit:992aaa423 `_
- App: transcription setting on Mic Component now False by default (because most people don't have a Google API key set up) `commit:2c8a27ed `_
- Pkg: added missing Labjack lib to Windows Standalone distribution
PsychoPy 2022.2.5
~~~~~~~~~~~~~~~~~
Fixed:
- Several fixes to syncing of Pavlovia projects
(e.g. when project has been deleted/recreated online or when files have been
copied over from another machine) `#5117 `_ `#5221 `_
- Shape Component in Builder can now update vertices on each frame/repeat `commit:e493ee2ca `_
- Participant name missing from filename if given in URL query `#5171 `_
- Eyetracker ROI stop code should only be written if a value is given to stop on `#5156 `_
- Don't crash if Microphone.stop() called repeatedly `#5121 `_
- TypeError in Window.resetViewport() `#5135 `_
- PupilLabs lib was not being found due to missing `__init__` `#5180 `_
- QUESTplus had ben removed from list of loop types `commit:2da0cfa0a `_
- Sound.pause() was resetting to start of track `commit:a161e135a `_
PsychoPy 2022.1
---------------
*Highlights:*
- Improved interface for searching, syncing and viewing Pavlovia projects from
within the PsychoPy app
- In online experiments you can now dynamically choose the resources your
participant needs as the experiment progresses rather than downloading them all in
the first dialog box
- Can now insert new Routines from pre-packaged templates (such as Fixation, 2-alternative
forced choice, feedback, etc)
- QUEST handlers now available in PsychoJS including interleaved staircases
- Most visual stimuli now have an "anchor" parameter to control how it's laid out
relative to its position, and you can now set the alignment of text within a Textbox
(with a handy demo to illustrate the difference between anchor and alignment!)
- Added support for :ref:`Pupil labs eye trackers ` (thanks to Pupil Labs themselves) directly from
the Builder
*Compatibility Changes:*
- Python 2.x is no longer supported
- Filename timestamps now have a different default format (based on ISO 8601):
2022-01-14_14h39.36.092 for 2:39pm and 36s, 92ms
See :func:`psychopy.utils.getDateStr` for details on the new functionality
*New and Improved:*
- Ability to customise the filename in online studies, using the same Experiment Settings
option as local studies
- Standalone distribution now using Python 3.8
- Builder: Keyboard class now providing the option to select the underlying engine
(iohub, psychtoolbox or pyglet) with `iohub` now being the recommended default
- Filter components view by what works online vs locally
- Eye Tracker Record Component can now be use to record across multiple routines.
- Added Text Color setting to Eye Tracker Calibration and Validation procedures / Routines
- Allow selection of which U3 register to write to when using a LabJack U3 with the
Parallel Out Component.
- Added non fullscreen window and multiple window support to iohub Mouse device.
- Python shell within Coder view has been rewritten and is much more functional
- Mouse now has the option to store only valid clicks
- Added the option to refer to pre-canned image files, such as default.png and use
as an image stimulus
PsychoPy 2022.1.4
~~~~~~~~~~~~~~~~~
Fixes:
- experiments using iohub were not running on MacOS standalone due to broken version of the gevent library
- fixes to connection from Builder to Pavlovia in certain circumstances (e.g. certain usernames or when
project has moved) `commit:22963a9 `_
- fixes searches of Pavlovia for private projects by the logged in user
- fix to use of correct answers for Joystick Buttons Component `commit:2e66dc1 `_ `commit:f9ef1be `_
- Builder crashing when a Routine had been copied over `commit:4592876 `_
- some parameters in Builder dialogs were missing their label names `commit:c8cd380 `_
- ShapeStim was not obeying requests for zero opacity `commit:8030b2f `_
- fixed "currentLoop is not defined" error for online studies `commit:a261d04 `_
- in certain circumstances, mic recordings were not saving for each trial, only for the last trial,
when online `commit:5e23a0a `_
PsychoPy 2022.1.3
~~~~~~~~~~~~~~~~~
Fixes:
- TextStim (and Button, which is derived from TextStim) was not easily clickable online due to incorrect bounding box psychopy/psychojs#492
- Slider styleTweaks were not being applied `#4773 `_
- Check that file is saved before trying to Run `#4759 `_
- Mouse coordinate mapping was incorrect for MacOS Retina displays which meant that Slider and Brush wasn't working, for instance `#4755 `_
- Allow the Sound Component to be used if transcription libs were not available `#4747 `_
- Form Component excel template was corrupted (by google sheets export) `#4742 `_
- Copying a Routine from one experiment to another was causing a compile error `#4740 `_
- Better logging of errors during application load for debugging purposes `#4750 `_
- Setting the Slider to reset() was looking like a response when it shouldn't `#4738 `_
- Fixed core.getTime() for M1 native installations (does not affect Standalone or Intel-based installations on M1) b839a32da52b
- Allow 3-dimensional arrays for ShapeStim vertices 31ca663bf2
- Fix dependency definition for Poetry installations 77cb7c92eac4
- Fix use of `event` module for keyboard as fallback for iohub/ptb 5c3672804f1
- If HomeBrew has a broken fonts folder ignore it `#4719 `_
- If user specifies a line width of `"2"`make it `2` 389bfd4692
PsychoPy 2022.1.2
~~~~~~~~~~~~~~~~~
Fixes:
- URL redirection was failing at the end of the study for online experiments
where the JS code was generated using 2022.1.0-2022.1.1 due to an erroneous
replacement of `//` with `/` in `https://` `commit:e8218b31f `_
- Hyphens can now be included in Pavlovia project names (the validator in the
PsychoPy GUI was being too strict) `commit:bbe6bf5ed `_
- Static Components that are used for fetching online resources (e.g. using a
Movie Component that sets its stimulus during a Static) will now freeze and
wait until the resource is fully received if it takes longer than the set
duration. Using ResourceManager components the experiment will not freeze but
status can be checked `status==FINISHED` when download is complete
- Fixed a bug where, after logging out of the Pavlovia Session in the PsychoPy
interface, PsychoPy would still provide the option to use the names/groups of
that user, but would not then allow access to their contents.
`commit:bbe6bf5ed `_
- PsychoPy would crash if using the Classic Theme on a mac with a retina display
(missing icons) `commit:495fddd81 `_
- DotStim in local (Python) experiments was failing to update dots position `#4694 `_
- Error raised when creating a new Pavlovia project from the menu item rather
than the toolbar button `#4683 `_
- Crashing on MacOS when running experiment due to Keyboard a) 'iohub' not
loading due to gevent incompatibility and b) not then correctly falling back
to 'event' backend
PsychoPy 2022.1.1
~~~~~~~~~~~~~~~~~
Fixes:
- MacOS app failed to run experiments with dialog boxes (broken dependency being packaged)
- the application would hang while trying to push any changes to Pavlovia
- added Japanese translations of the new menu items etc
PsychoPy 2022.1.0
~~~~~~~~~~~~~~~~~
Many bug fixes from 2021.x release, more than we have room for here, including:
- Code / Builder: iohub keyboard mappings now match those used by event.getKeys().
- Code: labjacks.U3.setData was not working
- Builder: Region of Interest (ROI) Component does not depend on ETRecord component.
- Builder: ROI Component 'look away' now ends routine after eyes have been outside
ROI for 'Min look time' seconds.
- Code: 0.5 second blocking eyelink start/stop/record caused iohub to drop
keyboard events.
- Code: eyelink now uses calibration 'randomize' param.
- Code: Layout of Form, Slider and Textbox now much more stable and consistent
PsychoPy 2021.2
---------------
*Highlights:*
- Unified Eyetracker support via ioHub is now integrated into Builder for easy-to-use eyetracking studies, with many fixes, improvements and a "MouseGaze" option to simulate eye movements while testing
- Mic recordings for voice responses (Python and JS)
- Transcription (speech-to-text) via Google Speech or using CMU Pocket Sphinx (free but currently on the Python lib only)
- Improved JavaScript outputs from the Builder, providing more seamless migration to web-based studies
*Compatibility Changes:*
- :noncompat:`CHANGED: In Python the random number generators for TrialHandlers etc use an improved algorithm (PCG64) and are now indendent of each other but seeded random sequences will differ from previous versions`
PsychoPy 2021.2.0
~~~~~~~~~~~~~~~~~
*New and improved:*
- JS+Py: Record and transcribe (speech-to-text) audio responses in both Python and JavaScript engines using various local (CMU Pocket Sphinx) and web (Google and Bing) services.
- Py: Eyetracking Components added to Builder for code-free eye-gaze monitoring
- Eyetracker Record: Starts an ioHub server to receive input from an eye tracker
- Eyetracker Calibration: Runs calibration procedure on connected eyetracker
- Eyetracker Validation: Runs validation procedure on connected eyetracker
- Region Of Interest: A PsychoPy polygon with methods to check whether it's being looked at, how long for, how many times, etc.
- also improved calibration and validation procedures
- Py: Improved Movie playback performance for both the OpenCV (MovieStim3) and VLC backends. The VLC backend has added playback controls (fast-forward, rewind, etc)
- Py: hardware.Keyboard class now supports ioHub as a backend and will use that in preference to Psychtoolbox keyboard (PsychHID) if ioHub has been started before the Keyboard is created. ioHub keyboard is similarly in performance but with fewer constraints (can handle a wider range of keyboards)
- App: demos within the app got so busy they've been moved into categories
- App: includes some basic fonts, so as not to rely on what is installed (except on macOS where these aren't permitted)
- App: output is available again in the bottom of the Coder view
- App: many improvements to the autotranslate of Py->JS in Code Components (fixing issues from the "Crib sheet")
- JS: audio playback can fade in/out to avoid clicks
- JS: Builder loops (TrialHandlers) support and update properties such as thisN as in Python Experiments
- JS: Form supports `formComplete()` call to check if all required items have a response
- JS: Form supports items types: SLIDER, RADIO (synonyms for RATING and CHOICE)
- JS: Button Component now supported for text-based buttons (as in the Python Component already present)
- JS: supports more options for color styles
*Fixes:*
- Py: TextBox better handling word boundaries for newlines
- Py: Button was incorrectly treating a held-down button as a click (now supports new-clicks only option)
- Py: ioHub better integration with PsychoPy units and color spaces
- JS: bug in Form scrolling
- JS: various fixes to TextBox and Form styling
- JS: Data files output now include information about their character encoding (BOM) supporting more locales of Excel
PsychoPy 2021.2.1
~~~~~~~~~~~~~~~~~
Fixes:
- macOS was crashing on launch (caused by missing files from psychtoolbox stripped by macOS GateKeeper)
- added cryptography lib explicitly to requirements for pip install `commit:267483d00 `_
- Runner local debug of PsychoJS experiments was failing with MIME-type errors (Runner didn't know about new psychojs packaging) `#4153 `_
- extended timeout when querying Pavlovia from the app (e.g. searching for projects) `#4148 `_
- corrected reset of clock for new Button Component
- DlgFromDict was crashing if `labels` were used (in code) `#4137 `_
- short (<0.5s) sounds were not labelled as finished in PsychoJS boilerplate `#4117 `_
- contrast parameter was not being applied to ShapeStim `#4111 `_
PsychoPy 2021.2.2
~~~~~~~~~~~~~~~~~
Fixes:
- Builder outputs weren't fully honouring the `userVersion()` request, resulting in broken PsychoJS code `commit:5f10b0a12 `_ `commit:017c18f2f `_
- Better documentation of (high-performance) VLC movie backend
- iohub.Mouse.setPosition was not handling units correctly when given a float
- Builder boilerplate for Microphone was looking for a transcription even if none was requested `#4163 `_
PsychoPy 2021.2.3
~~~~~~~~~~~~~~~~~
Fixes:
- on macOS the long-standing issue of the **app freezing in the dock** has now been fixed `#4214 `_
- smoother handling of trying to run an experiment on a computer with different mic hardware than where the experiment was created `#4210 `_
- Minolta LS100/110 was not working due to broken bytes/unicode conversion `#4186 `_
- ElementArray was not honouring the contrasts (contrs) parameter `#4196 `_
- Code Components were giving unnecessary warning about namespace issues. Should only warn if a variable name is being _shadowed_ not if it's being _used_ `#4193 `_
PsychoPy 2021.1
---------------
The first major release of 2021 brings a lot of fixes (the dev team is focussing heavily on making the user experience more smooth at the moment).
On top of those fixes are a number of useful additions though, like the new :ref:`buttonComponent`.
NEW:
- Builder has a :ref:`buttonComponent` to make it easier to have clickable image/text objects
- Builder: Improved layout of Component dialogs:
- Consistent tabs for common parameters (like pos, size, color...)
- Component parameters that use filenames (sounds, images, etc.) now have a Browse... button
- Component parameters that use Excel files now have an “open in Excel” button, if you click this when the field is blank it will open a pre-made template for you
- Component parameters that are colors now have a button to open the color picker
- Builder now features separate compile buttons for JS and Py and will open the JS file in the Coder view when compiled
- Builder readme files now support markdown formatting (and .md extensions) psychopy/psychopy#3377
- PsychoPy lib: refactored color handling via the :class:`~psychopy.colors.Color` class
:noncompat:`CHANGES (compatibility issues):`
- :noncompat:`CHANGED: the new more-flexible parameters of PsychoPy Experiment Components makes experiments from 2021.1 **will not run** on older versions of PsychoPy. If you share your study with people using older versions make sure you set the :ref:'useVersion' setting to be 2021.1.0 or upwards so that it will run elsewhere`
- :noncompat:`CHANGED: PsychoJS: orientation for PsychoJS now follows clock convention rather than engineering convention (polar coordinates, positive rotation is anti-clockwise) whereas PsychoPy used the clock convention. From this release onwards both use the clock convention or orientation/rotation.`
- :noncompat:`CHANGED: Slider has additional params for colors and fonts of lines/labels/marker that will not exist on older installations`
- :noncompat:`CHANGED: BufferImageStim was using an incorrect rect specification for selecting the region of the screen - it was using a bottom-left instead of PsychoPy standard center '#3597 '_`
PsychoPy 2021.1.0
~~~~~~~~~~~~~~~~~~
FIXES:
- All: Curly quotation marks (“”), which are sometimes automatically put into text boxes by MacOS and certain keyboard settings, will now be automatically replaced with regular quotation marks (“) when in code. To use curly quotation marks still, you can “escape” them by putting a \ before them.
- Lib: Fixed syntax warnings on Python 3.8 `#3344 `_
- Lib: The Pygame audio backend can be used again. `#3382 `_
- Lib: Several fixes to iohub ( `#3348 `_, `#3399 `_, `#3412 `_, commit psychopy/psychopy/3912167)
- Builder/Coder: Fixed the error raised when the “Plot gamma” button in the monitor center is clicked but no calibration data is loaded. `#3384 `_
- Coder/Builder: Correct detection of retina/high-dpi displays within wxPython on MacOS, Linux, and Windows.
- Python Lib: TextBox stim text layout not working on linux and macOS.
- Python Lib: various minor fixes to TextBox2
- Coder: Miscellaneous bug fixes to demos/coder/stimuli example scripts.
- Coder: Fixed a possible error when parsing code to build the source tree.
- Coder: Handle error caused when closing editor tabs.
- Builder: The “Routine” pane can no longer be- moved which broke the builder interface.
- Coder: Make Coder's default size reasonable on fresh install. `#3472 `_
- Coder: Bug where opening an unsupported file type raises an error. `#3519 `_
- Coder: Fixed bug where the source tree raises and error if it comes across things it cannot correctly parse.
- Online: Prevent Safari from beeping in full screen. psychopy/psychojs#266
- Online: Slider sizing, tick placement, and event handling improvements. `#249 `_ `#263 `_ `#264 `_
- Online: Fixed ShapeStim instances ignoring the closeShape property. psychopy/psychojs#245
- Online: Support `TrialHandler.Method.FULLRANDOM`. psychopy/psychojs#247
- Online: Improved mouse event accuracy overall. psychopy/psychojs#248
- Online: Fixed ShapeStim variants ignoring the contrast property. psychopy/psychojs#250
- Online: Fixed an issue translating ‘\n’ encoded line breaks when importing conditions files. psychopy/psychojs#251
- Online: Fixed TextBox click handling. psychopy/psychojs#258
- Online: Improved MovieStim autoplay. psychopy/psychojs#260
- Online: Allow for parsing of array-like strings when setting VisualStim position or size. psychopy/psychojs#262
- Online: Prevent Safari from beeping in full screen. psychopy/psychojs#266
PsychoPy 2021.1.1
~~~~~~~~~~~~~~~~~~
FIXES:
- Error when trying to sync a new project with Pavlovia `commit:33b3d80ea `_
- TextBox in Builder was resetting to "default text" on each repeat rather than blank `commit:8510d9f1a `_
- Editable elements of Form were being erroneously drawn when they fell beyond the Form boundary `commit:7d02c8251 `_
- Several improvements to styling of Form (on Python)
- Added a preference for Builder to show only the online-compatible Components (or other similar options). This is a BETA testing feature
PsychoPy 2021.1.2
~~~~~~~~~~~~~~~~~~
FIXES:
- Code Components were raising an error when trying to generate JS code `#3643 `_
- Slider styles weren't generating correct JS code
- New Button component (Python only) was not cleaning previous clicks so they tended to act as if clicking all trials! `#3641 `_
PsychoPy 2021.1.3
~~~~~~~~~~~~~~~~~~
FIXES:
- Builder: Fix `'list' object has no attribute 'contains'` with clickable mouse objects `#3651 `_
- Builder: context (right-click) menu was not aligned with mouse in Flow for large Flows `#3657 `_
- Builder: Slider styles were not being used correctly from previous versions (<2021.0) `#3665