Development update: January 2021

Time got the better of me again, so here’s a big development update covering December, January, and some of February.

Numbas runtime

I’ve tagged v5.3 of the Numbas runtime on GitHub.

  • Enhancement: the “expand juxtapositions” rules are applied to the correct answer for a mathematical expression part, as well as the student’s answer. (issue)
  • Enhancement: variables are substituted into the labels for “next part” buttons. (issue)
  • Enhancement: display flags are applied to the rendering of the mathematical expression part’s expected answer. (issue)
  • Enhancement: Gap-fill parts are now marked in an order that satisfies the relations due to adaptive marking. (code)
  • Enhancement: The cancelPowers simplification rule now cancels expressions of the form x^m/x^n. (code)
  • Enhancement: There’s now a variable name annotation to add a degrees symbol. (code, documentation)
  • Enhancement: Strings marked as both ‘latex’ and ‘safe’ don’t have slashes stripped from before curly braces. (code)
  • Enhancement: There are new JME functions flatten, iterate and iterate_until. (documentation)
  • Change: you’re not warned about leaving questions when in review mode. (code)
  • Change: It’s now possible to accept an empty answer to a part. (code)
  • Change: expand_juxtapositions normalises variable names with subscripts, so for example x0 and x_0 are considered equivalent when marking a mathematical expression part. (code)
  • Change: A couple of changes to the way pattern-matching works. (code)
  • Bugfix: mathematical expression parts work out which variables are present in the expected answer before simplifying it. (issue)
  • Bugfix: fixed a bug in the infer_variable_types function for functions which take an arbitrary number of arguments. (code)
  • Bugfix: mathematical expression parts catch errors encountered while generating variable values. (code)
  • Backwards compatibility: when a JavaScript marking script doesn’t return anything, the built-in marking script’s result is used. (code)
  • Bugfix: the staged answer for a part is forced to be saved when it is submitted. (code)
  • Bugfix: in custom part types, the correct answer is included in the dictionary of resolved input options. (code)
  • Bugfix: The JME if function throws an error if called with more or less than three arguments. (issue)
  • Bugfix: variables defined by destructuring are restored correctly from suspend data. (issue)
  • Bugfix: the unary addition operator is converted to TeX correctly. (code)
  • Bugfix: hidden directories aren’t included in exam packages. (code)
  • Bugfix: fixed a bug to do with staged answers for gap-fill parts. (code)
  • Bugfix: Numbas.jme.isTypeCompatible returns false when given an unknown type. (code)
  • Bugfix: fixed a bug in the simplification rules cancelling +- and -+. (issue)
  • Bugfix: brackets are preserved when rendering a sequence of divisions like x/(1/2). (code)

Numbas editor

I’ve tagged v5.3 of the Numbas editor on GitHub.

  • Enhancement: you can now see all of your notifications on one page. (code)
  • Enhancement: the “Marking algorithm” tab in the part editor shows the settings available to the marking algorithm as well as the question’s variables. (issue)
  • Enhancement: emoji in a question or exam’s name are converted to words when producing the URL slug. (code)
  • Enhancement: The “Used by” and “Depends on” lists under a variable’s definition are sorted alphabetically. (issue)
  • Enhancement: When there’s an error uploading a resource to a question, an error message is shown. (code)
  • Change: you no longer need to have access to all of the questions in an exam in order to view the exam. This reverses a change made a while ago, due to popular demand. (code)
  • Bugfix: the “enable steps” option for exams is correctly loaded. (code)
  • Bugfix: fixed some links in the extension and theme editors. (issue)
  • Bugfix: Errors encountered while producing the displayed answer for a mathematical expression part are caught. (code)
  • Bugfix: The tab you were looking at is restored when you reload the editor page. (code)
  • Bugfix: Yannick Neyt fixed a couple of typos in the documentation. (code)
  • Bugfix: Variables defined by destructuring are correctly loaded into marking tests. (code)
  • Bugfix: The CSS preamble is applied to the question statement and advice in the editor. (issue)
  • Bugfix: when an item is deleted, all notifications about it are also deleted. (issue)

Numbas LTI provider

I’ve tagged version 2.10 of the Numbas LTI provider on GitHub.

Note that you need to make some changes to your settings files when upgrading to this version. See the upgrade instructions.

  • Enhancement: the “not authorized” page on LTI launch now shows a button to open the page in a new tab, in case that helps avoid cross-site scripting issues. (issue)
  • Enhancement: the automatic remarking page now shows the completion status of each attempt, and the change in score after remarking. (code)
  • Enhancement: the resource settings page tells you which time zone the server is working in. (code)
  • Enhancement: the name of the resource’s context is shown in the header of all resource management page. (issue)
  • Enhancement: the resource settings page uses the server’s locale’s preferred date-time format. (issue)
  • Enhancement: when you change the availability times for a resource, the new times are sent to all connected clients. (issue)
  • Enhancement: long-running tasks are now performed by a separate set of processes. (issue)
  • Enhancement: the scores CSV export now includes columns for the raw (unscaled) and maximum scores. (code)
  • Enhancement: each attempt’s start time is set to the time that the student started the Numbas exam, instead of the time they launched the attempt – they might spend any amount of time on the exam’s front page before beginning. (code)
  • Enhancement: exam packages are put in directories with obfuscated names, so you can’t guess them. (issue)
  • Enhancement: the attempt timeline shows when an attempt was ended automatically because of the resource’s availability dates, instead of by the student. (issue)
  • Enhancement: each version of the attempt’s suspend data value is stored as a diff against a more recent version, to save on space in the database. We recently realised that we were wasting gigabytes of disk space replicating data that hardly changes. (issue)
  • Enhancement: scores on the automatic remarking screen are rounded to three decimal places. (code)
  • Enhancement: the attempt timeline shows answers that the student entered but did not submit. (code)
  • Enhancement: the “Replace exam package” screen shows all versions of exam packages that have been associated with the resource, and allows you to restore an old one, or switch all attempts to use the current one. (issue)
  • Change: After uploading an exam package to a new resource, you’re shown the settings page instead of the dashboard. (issue)
  • Bugfix: the discount and manual remarking pages now cope with questions with more than 26 parts. (code)
  • Bugfix: when discounting a question part, attempts which do not have that part are handled gracefully. (code)
  • Bugfix: if there’s an error while automatically remarking an attempt, the error is caught and shown. (code)