@jodeleeuw jodeleeuw released this Jun 26, 2018 · 12 commits to master since this release

Assets 3

New features

  • Added plugin for Random Dot Kinematograms by @vrsivananda. Thanks for this major contribution!
  • Added the ability to display page numbers in the instructions plugin. Thanks @mjaquiery!
  • External scripts can now be optionally executed in the external-html plugin. Thanks @onkeltom!

Documentation updates

  • The PHP script example in the documentation for saving files to a server is fixed for recent versions of PHP. Thanks @akochari!
  • localSave() for data collections works in recent versions of Safari. Thanks @spencerking!
  • Audio examples are updated to reflect the Chrome 66+ restrictions on playing audio. Thanks @mpezzo!

Bug fixes

  • The free-sort plugin now properly records the final locations of the images.
  • The instructions plugin handles custom key assignments when allow_backwards is false. Thanks @pfeyz!
  • In some older browsers, the display element would lose focus when a button was clicked. By default, the display element is automatically focused at the start of every trial. Thanks @akochari!

@jodeleeuw jodeleeuw released this May 15, 2018 · 43 commits to master since this release

Assets 3

This update mainly addresses the Chrome 66+ audio autoplay issue. Briefly: Chrome 66+ no longer allows audio to autoplay until after the user has taken one action on the page. jsPsych creates the audio context when jspsych.js is loaded, and this is usually before the user takes an action. This updates modifies the way that jsPsych uses the audio context so that it is automatically unblocked after the first action that the user takes.

This update also modifies the survey-text plugin so that the first text field is auto focused.

@jodeleeuw jodeleeuw released this Apr 18, 2018 · 49 commits to master since this release

Assets 3

This release patches a few bugs in 6.0.1 and adds two small features.

New features

  • If preloading content fails, jsPsych will retry each failed file up to a specified number of times. The default behavior is 10 attempts. This can be overriden by setting max_preload_attempts in jsPsych.init()
  • Use of the WebAudio API is now optional. It can be disabled by setting use_webaudio in jsPsych.init() to false. HTML5 Audio is now automatically used as a backup when WebAudio is not available.

Bug fixes

  • The survey-text plugin now works when rows and/or columns is unspecified. Thanks @VorontsovIE !
  • jsPsych would attempt to create a new AudioContext on every jsPsych.init() call. This is now corrected and jsPsych uses a single AudioContext even if there are multiple inits on the same page.
  • The start and stop options for jspsych-video now work in Microsoft Edge.
  • The vertical scrollbar only appears if the experiment is too tall to fit in the window.
  • Various errors in the documentation and tutorials were corrected. Thanks @hans and @yulkang !

@jodeleeuw jodeleeuw released this Jan 11, 2018 · 79 commits to master since this release

Assets 3

This update fixes a bug that occurred when trial parameters were set to null. For example, this code caused undesired behavior:

var trial = {
  type: 'html-keyboard-response',
  stimulus: 'oops.',
  post_trial_gap: null

@jodeleeuw jodeleeuw released this Jan 3, 2018 · 86 commits to master since this release

Assets 3

This is a major update to jsPsych that reflects more than 100 changes to the library. Given the scope of the update, this document focuses only on high-level changes to the library. Note that many of the changes to the library break backwards compatibility with any prior jsPsych version.

New features

  • Timeline Variables are a powerful new tool for writing efficient code. They allow you to define parameters on a timeline that are replaced by variables. The variables can be grouped so that a value for one parameter is always paired with a value for another parameter. There are many new features built on top of the timeline variables system, including methods for randomly sampling sets of variables.

  • The data module has been entirely overhauled to provide an API for interacting with jsPsych data. This makes it easier to aggregate and analyze data during the experiment, allowing the experiment to be responsive to the data that is generated.

  • User interactions are now automatically recorded by jsPsych, allowing experimenters to know when subjects clicked away from an experiment or exited full screen mode.

  • Subjects can now be excluded if their browser does not meet certain technical requirements. Currently this features supports checking for minimum screen size and audio support.

  • Many new plugins, including plugins for the implicit association test, a plugin that can calibrate the size of the subject's display, and a plugin for the serial reaction time task. Many plugins have also been renamed to improve clarity.

  • A progress bar will now display while experiment resources are preloaded.

  • Automatic vertical and horizontal centering of jsPsych content by default.

  • New event handlers for when trials start and when trials have finished loading.

Technical changes

This update also features a large number of technical changes to the jsPsych library. These changes are designed to improve the compatibility of jsPsych with other web frameworks and support our ongoing development efforts towards a graphical experiment builder for jsPsych.

  • The jQuery dependency has been removed. All jsPsych code uses standard JavaScript with no dependencies. This change means that plugins now need to make changes to a standard HTMLElement to adjust the display, rather than a jQuery collection.

  • Plugins now require an .info property, which specifies the parameters of the plugin and what their default values and types are. We use this information to automate some of the tasks that plugins used to have to complete, such as evaluating function parameters and replacing default values. We mostly use the parameter type information as part of the graphical experiment builder engine, but we do check if the type is a function within jsPsych to handle cases where parameters should not be evaluated before the trial runs.

  • A testing suite has been written using Jest to facilitate community development on the project as it grows in scope. The suite has partial coverage right now, and remains an active area of work.

Other changes

Many other smaller changes can be discovered on our updated documentation site at www.jspsych.org

@jodeleeuw jodeleeuw released this Jan 31, 2016 · 945 commits to master since this release

Assets 3

Fixes example files that did not work with v5.x

@jodeleeuw jodeleeuw released this Jan 26, 2016 · 948 commits to master since this release

Assets 3
  • Fixes a critical bug with pre-loading audio files. If more than one audio file was required, the pre-loading would fail. This is now fixed.
  • The parameter randomize_order for timelines was being incorrectly applied to timelines that were nested under the randomized timeline. This is now fixed; randomize_order will only apply to the timeline that it is set on.

@jodeleeuw jodeleeuw released this Jan 15, 2016 · 953 commits to master since this release

Assets 3

Fixes two broken example files from v5.0.

@jodeleeuw jodeleeuw released this Jan 7, 2016 · 956 commits to master since this release

Assets 3

This is a significant update to the library. If you are a veteran jspsych user, you will need to reacquaint yourself with some of the new syntax, which is conceptually similar but simplified for the ease of new users. Old experiments from v4.x will not work with v5.0.

Major changes

  • Completely overhauled the system for constructing trials, blocks, and chunks. All trials are now declared through a common system: the timeline. The timeline can contain nested timelines, replicating the features of blocks and chunks, while simplifying the syntax and improving the flexibility. Conditional and looping timelines are much easier to build. For more information, read the docs page on the new timeline.
  • Greatly simplified plugin files. There is no longer a need to define a .create method in the plugin file. Parameters are passed directly from the timeline into the .trial method.
  • New button-response plugin for showing a stimulus and getting a response via a button press. Buttons are highly customizable.
  • Automatic preloading. Most image and audio files will now automatically preload at the start of the experiment.
  • New survey-multi-choice plugin for answering multiple choice questions.
  • Option to run the experiment in fullscreen mode.

Minor changes

  • Greater flexibility in options for multi-stim-multi-response plugin.
  • Mouse responses are valid for single-stim plugin.
  • Improved CSS styling of buttons in general.
  • Audio playback works in Safari.
  • New function to generate a random subject ID.
  • Option to display a message when using endExperiment to terminate the experiment early.
  • New function to recover URL string variables.
  • Plugin files now live in the jsPsych.plugins namespace to provide better organization.
  • New .dataAsJSON method.
  • Option to override the DOM target for jsPsych at the trial level.
  • Fixed many small bugs throughout the library.

@jodeleeuw jodeleeuw released this Jun 27, 2015 · 1065 commits to master since this release

Assets 3


  • jsPsych.pluginAPI.getKeyboardResponse has been redesigned to enable prevention of held down keys if desired. Plugins have been adjusted to take advantage of this new feature. The parameters for the method have been changed, and plugin developers should consult the documentation.
  • New method jsPsych.data.addDataToLastTrial allows data to be added to the most recently recorded trial.
  • New method jsPsych.randomization.shuffleNoRepeats shuffles an array with the constraint the neighboring items cannot be identical.
  • Extra parameters added to jspsych-categorize to implement a timeout if subject takes too long to respond.
  • New parameters for survey-text to allow for control over the size of the text fields.
  • Miscellaneous bug fixes