Skip to content

Releases: psychopy/psychopy

2024.2.2

19 Sep 10:13
4fe80c2
Compare
Choose a tag to compare

Bug Fixes

  • Fix ribbon buttons showing label on Mac by @TEParsons in #6767
  • Builder files were marked as modified as soon as opened by @TEParsons in #6778
  • Builder getting start/stop times when using non-slip timing by @mh105 in #6739
  • Restore backwards-compatability to psychopy.gui.dlg by @TEParsons in #6792
  • Routines were still writing their end experiment code in JS even when removed from the flow by @TEParsons in #6780
  • Fix whisper transcriber sometimes being initialised twice (and breaking as a result) by @TEParsons in #6796
  • DlgFromDict was erroneously adding keys when given "order" or "fixed" by @TEParsons in #6818
  • Make output of Dlg.show backwards compatible with older versions by @TEParsons in #6809 #6792
  • pyglet controls of macOS NSWindow with multiple screens by @mh105 in #6799
  • Fixed detection of installed packages in standalone app for py3.10 by @mh105 in #6771
  • Smoother output from background jobs to stdout by @mh105 in #6833

Full Changelog: 2024.2.1...2024.2.2

PsychoPy 2024.2.1

02 Aug 06:59
872d0a6
Compare
Choose a tag to compare

Fixes

  • TrialHandler2 was starting thisRepsN at 1 rather than 0 by @TEParsons in #6747
  • The py3.10 standalone app failed to launch on macos-arm chips (due to broken tables release 0.9.2)
  • Updated translations for Spanish variants by @carosamu in #6763 #6737
  • Fixed a typo in Trials routine template .psyexp file by @mh105 in #6738
  • Set MovieComponent.status to FINISHED when playback finishes by @mh105 in #6740

FYI the windows py3.10 version didn't originally include git binaries, and the updated version number post4 simply indicates that it wasn't the original build, but compiled 4 commits later.

Full Changelog: 2024.2.0...2024.2.1

PsychoPy 2024.2.0

19 Jul 16:15
Compare
Choose a tag to compare

For this 2024.2.0 although there are many changes and therefore potential for some slight changes in behaviour we have focussed more this release on just making existing functionality smoother rather than adding new big fetaures.

New and Improved 🎉

  • Added "force nonslip" parameter to Routine Settings so that you can now use non-slip timing for a Routine using a variable by @TEParsons in #6603
  • Fix opacity not applying properly to border colors by @TEParsons in #6704
  • User can set the online end message from Builder rather than relying on JS default by @TEParsons in #6258
  • Performance improvements for MovieStim (parituclarly noticeable for larger videos) by @aforren1 in #6449
  • Added functions to MicrophoneDevice to continuously monitor volume by @TEParsons in #6444
  • Added function to check whether a speaker is working by @TEParsons in #6446
  • Builder can now set logging level for app console, independently of log file by @TEParsons in #6510
  • Added Keyboard.getState() to get current state of a key by @TEParsons in #6537
  • Added text-to-speech synthesis by @mdcutone in #6588
  • Eyetracking: Various fixes to plugin- and eyetracker-detection by @TEParsons @mdcutone @EyeLogicSolutions @mh105 @KirstenWilliams
  • Eyetracking: New support for EyeLogic Solutions eyetrackers with plugin (alongside existing Tobii, SRR, Pupil Labs, and Gazepoint support)
  • Eyetracking: Fixes and more flexible settings for calibration routines @KirstenWilliams @mdcutone @EyeLogicSolutions @TEParsons @RebeccaHirst
  • Eyetracking: can now save dwell times from ROI component by @RebeccaHirst in #6500
  • If storing all valid mouse clicks, still show invalid clicks explicitly in the list as None (or Null online) e.g. [None, "foil", "target"] for 3 clicks ending in target by @TEParsons in #6516 #6548
  • Some loops/form/counterbalance were not fetching the correct xlsx templates by @TEParsons in #6514
  • Implement orientation parameter for TextBox2 by @TEParsons in #6513
  • New changelog dialog on app start by @TEParsons in #6445
  • Improved error message for iohub connection error (issue #1226) by @MarkellaEgglezou in #6354
  • Visual stimuli now draggable attribute accessible from Builder by @TEParsons in #6337
  • Improved TrialHandler2 for more flexible adding/cancelling and retrieving info about trials @TEParsons in #6425 #6408 #6590
  • Using PhotoDiodes Components in experiments (e.g. in BBTK T-pad) #6432 #6442
  • Provide PsychoPy experiment filename to the ioHub server by @mh105 in #6555
  • Allow experiment to pause on the current frame by @TEParsons in #6584
  • Allow plugins to be uninstalled via the manager by @mdcutone in #6587
  • Store/update Routine parameters live in an object, rather than hardcoding them to the experiment file by @TEParsons in #6597
  • Make save speech onset/offset only available to supporting transcribers by @kimDundas in #6672

🐛 Bug Fixes

  • Fixed error sampling microphone volume even when buffer is full by @TEParsons in #6488
  • Fixed plugins page sometimes failed to load cached plugins file due to encoding error by @peircej in #6428
  • Fixed the launch of PsychoPy App on conda envs without pythonw by @mh105 in #6436
  • Allowed Static Component to update params by @TEParsons in #6462
  • Fixed TextStim letter height wasn't settable each frame/Routine in JS by @TEParsons in #6511
  • Fixed check for pythonw executable on macOS in psychopyApp.py by @mh105 in #6521
  • Fixed .js file not being found when using "Use version" (removed _legacy from suffix) by @RebeccaHirst in #6515
  • Hide dollar sign on start/stop controls when one is hidden by @TEParsons in #6528
  • Removed unused %s string format in MenuFrame to avoid unrecognized accel key by @mh105 in #6523
  • Remove incorrect code on removing eyetracker generated by builder by @mh105 in #6526
  • Fixed import backend_pysound after module name change by @mh105 in #6524
  • Caught AttributeError for sound.getDevices() when opening PreferenceDlg by @mh105 in #6522
  • Unregister event monitors during iohub calibration by @mh105 in #6466
  • Fixed plugin discovery algorithm not finding user package entry points correctly by @mdcutone in #6539
  • Allow enough time for all ioHub device._close() to finish by @mh105 in #6540
  • Use default speaker device if index is default by @mh105 in #6538
  • Fixed eyetracker record stop/start by @TEParsons in #6545
  • Fixed duplicate dependency install on MacOS and package installation in virtual environments by @mdcutone in #6529
  • Fixed size and pos of Line by @TEParsons in #6543 and @mh105 in #6525
  • Fied bug setting Sound in static period online by @TEParsons in #6546
  • Fixed ioHub finding eyetracker configuration files by @TEParsons in #6547
  • Fixed the issue that speaker index could jump over integers by @mh105 in #6559
  • Fixed crash when mono is specified if the microphone device expects stereo as default by @mdcutone in #6564
  • Fixed csv conditions file loading by @TEParsons in #6552
  • Get correct speech onset/offset times and write them to data file by @mdcutone in #6566
  • Fixed dict keys for setting sample filter levels by @mh105 in #6554
  • Add default duration to eyetracker record component by @RebeccaHirst in #6599
  • Remove second whisper option from mic transcriber backend drop down by @RebeccaHirst in #6604
  • Fixed remove the use of currentlyRecording in EyetrackerControl by @mh105 in #6567
  • Fixed syntax for mic max recording parameter by @RebeccaHirst in #6598
  • Decouple setting status from triggering playback/clock resets/etc. by @TEParsons in #6562
  • Fixed starting and stopping times for EyetrackerRecordComponent by @mh105 in #6607
  • Don't change self.param in getStartAndDuration of et component by @mh105 in #6615
  • Typo in JS boilerplate (True rather than true) by @wakecarter in #6625
  • Builder: Ensure frame rate is stored. by @aforren1 in #6619
  • Allow Sound to stop on a condition rather than just time by @TEParsons in #6631
  • Fix obj.contains is not a function error in JS by @TEParsons in #6635
  • Enable correct behavior of entry-points to load eyetrackers by @mh105 in #6610
  • Movie component Volume inputType should be single instead of float by @mh105 in #6643
  • Use inspect.getfile to check path of plugin entry points by @mh105 in #6660
  • UI wasn't fully refreshing after changing theme by @TEParsons in #6673
  • Coder GUI fixes by @aforren1 in #6678
  • Allow keyboard allowedKeys to be set as an int by @TEParsons in #6676
  • Enable mouse clickable from variable when running online by @RebeccaHirst in #6668
  • Fixed crash when clearEvents(device_label=None) by @mdcutone in #6669
  • Fix JS translation of .pop() when there's no index by @TEParsons in #6651
  • Allow polygon outline opacity to be persistent across frames by @mdcutone in #6657
  • Sound Component code was using the wrong set function name in JS by @TEParsons in #6649
  • Fixed files being marked as modified as soon as opened by @TEParsons in #6679
  • Re-add distro as a runtime dependency for linux & remove deprecated function. by @aforren1 in #6686
  • Save mouse.corr for online studies by @RebeccaHirst in #6701
  • Creating project from ribbon raised error by @TEParsons in #6706
  • Plugin Components weren't recognised if experiment loaded with app by @TEParsons in #6707
  • Original types for "UnknownPluginComponent"s were being lost after loading and saving again by @TEParsons in #6708
  • Start/Stop controls had lost their tooltip by @TEParsons in #6711
  • Update flow button style when switching theme by @TEParsons in #6712
  • Conditions file wasn't updated when chosen from file browser for multistair loops by @TEParsons in #6714
  • Save to the color cache when rendering. by @aforren1 in #6720
  • BF/RF: Code to load Builder-relevant entry points was broken and obsolete by @TEParsons in #6717
  • maxDurationReached in Routine Settings False should be false online by @wakecarter in #6724
  • fix trial data writing when there are multiple key presses including None by @mh105 in #6718
  • Fixed units for mouse gaze calibration targets (pix -> height) by @KirstenWilliams in #6443
  • Standardise tDown attribute between ioHub and ptb Keyboard backends (follow ioHub behaviour) by @TEParsons in #6417
  • Improved audio resampling method by @mdcutone in #6605
  • Change iohub port to avoid conflicts with Whisper transcription by @mdcutone in #6661
  • Fixed 'best match' mic settings not being used to init recording buffer by @mdcutone in #6670
  • Prompt user to reconsider if they try to close plugin window mid-install by @TEParsons in #6705

📓 Docs & Demos

Translations

New Contributors

Full Changelog: 2024.1.5...2024.2.0

PsychoPy 2024.1.5

03 Jun 16:00
98c2bae
Compare
Choose a tag to compare

Bug fixes on top of 2024.1 highlights

  • Standalone distribution on Windows wasn't starting due to incompatible pandas/numpy versions
  • Failing to find Eyetracker Components (Eyelink by @KirstenWilliams in #6406 and Gazepoint by @mdcutone in #6424 )
  • Installed plugins were not being found on Linux/MacOS by @mdcutone in #6441
  • Faster MovieStim rendering (don't call play() when already playing) by @aforren1 in #6448
  • Fixed eyetracker calibration target units (height -> pix) by @peircej in #6451
  • KeyboardComponent allowed keys from spreadsheet caused namespace errors by @TEParsons in #6458
  • hide that visible mouse, please by @mh105 in #6465
  • Fix an issue with etRecord component for Stop Only (not stopping the eytracker) by @mh105 in #6463
  • Only change Mouse visibility if explicitly asked to by @TEParsons in #6467
  • Fix "Stop only" issue regardless of Component order by @TEParsons in #6468
  • Clear keys to initialize keyboard when starting a routine by @mh105 in #6471
  • Allow getKeys() to return the same key pressed multiple times by @mh105 in #6479

Documentation fixes and updates

Full Changelog: 2024.1.4...2024.1.5

PsychoPy 2024.1.4

29 Apr 09:00
05babf9
Compare
Choose a tag to compare

Bug fixes on top of 2024.1 highlights

  • ioHub keyboard was registering key releases before presses, so duration was always None. We now have a test in place that confirms keyboard RT timing using hardware which will be used on each new release going forwards. By @TEParsons in #6416
  • fixed some translation issues by @hsogo in #6409
  • Fixed JSON encoding error when opening plugin dialog by @mdcutone in #6411

Docs

New Contributors

Full Changelog: 2024.1.3...2024.1.4

PsychoPy 2024.1.3

24 Apr 17:01
Compare
Choose a tag to compare

What's Changed

  • BF: Telling Mouse Component to check new clicks without clickable stim raised syntax error by @TEParsons in #6398
  • BF: Keyboard responses in ioHub weren't using relative time by @TEParsons in #6407

Full Changelog: 2024.1.2...2024.1.3

NB the version of the windows installer initially uploaded was inadvertantly an un-signed version. That will likely raise a security warning on Windows during the install. This was updated 25th Apr 2024 at 09:10 (UTC) to a code-signed version that will not raise the security warning

2024.1.2

22 Apr 09:26
607045e
Compare
Choose a tag to compare

Enhancements

  • Default TextStim font set to Arial (TextBox default was already Arial) by @wakecarter in #6378

Bug fixes

  • Keyboard clock wasn't being reset properly, so .rt values were from exp start by @TEParsons in #6360
  • Safer (and faster) behaviour when copying a param, avoids "infinite recursion" (app hangs) by @TEParsons in #6362
  • Make line spacing specific to just one TextBox2 object by @Catherine9811 in #6356
  • Fixes to the Gazepoint eyetracker plugin by @mdcutone in #6365
  • Fixed error when camera tries to close when it's already closed by @mdcutone in #6364
  • Fixed editable TextBox2 cursor location with line breaks by @Catherine9811 in #6358
  • Remove "constant" updates option from SoundComponent (as it wasn't used) by @TEParsons in #6351
  • Python 3.8 was falsely marked as incompatible with 2024.1.x onwards in "use version" interface by @TEParsons in #6366
  • Form Component wasn't finding the correct table template by @TEParsons in #6381
  • Remove blank rows from form template by @wakecarter in #6382
  • Error saving icons from plugin details by @TEParsons in #6368
  • Transparent colours online by @wakecarter in #6386
  • Button numclicks defined by timesOn.length by @wakecarter in #6385

Documentation and testing improvements by...

New contributors

Full Changelog: 2024.1.1...2024.1.2

PsychoPy 2024.1.1

04 Apr 15:46
5285acb
Compare
Choose a tag to compare

This version adds bug fixes on top of the highlights and features of 2024.1.0

Fixes

  • Handle errors when loading list of plugins by @TEParsons in #6334
  • Counterbalance in online studies was still trying to confirm entries after finishing by @TEParsons in #6345
  • Make sure the drawn max time in Builder is never None by @TEParsons in #6347
  • Fixed translation issues by @hsogo in #6348
  • Fixed inability to load plugins list from local with non-utf-8 default encoding by @peircej in #6349

Full Changelog: 2024.1.0...2024.1.1

PsychoPy 2024.1.0

25 Mar 20:07
5ac0e82
Compare
Choose a tag to compare

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

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...

New contributors

Full Changelog: 2023.2.3...2024.1.0

2023.2.3

09 Oct 16:00
34b4e66
Compare
Choose a tag to compare

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

New Contributors

Full Changelog: 2023.2.2...2023.2.3