Openedx-scorm-xblock 19.0.5

We just tagged 19.0.5 of the SCORM XBlock. It’s a bigger release than usual, with a new tracking feature and a handful of fixes for packages that were quietly misbehaving. Thanks to everyone who contributed a PR this time around.

New: learner activity tracking

Up to now, a SCORM package was mostly a black box to the platform. You’d get a grade and a completion status at the end, and nothing in between. This release adds tracking events for what happens inside a session: when it starts, when the learner answers an interaction, when a score or completion or pass/fail status comes in, and when the session ends.

Nothing needs to be installed or configured for this. Every event can be turned on or off individually through XBLOCK_SETTINGS["ScormXBlock"], and the one event carrying learner answers (interacted) is off by default since it’s higher volume and more sensitive.

If your platform routes tracking logs to an LRS through event-routing-backends, there are also optional xAPI transformers you can register to get cmi5-style statements out of these events. Both the events and the xAPI side are documented in the README.

Thanks to @felipemontoya for this one.

Improvement: Studio warns when a package never reports completion

In SCORM, completion is reported by the package, not the LMS. If a package never sets cmi.core.lesson_status or cmi.completion_status, learners stay stuck on “not attempted” forever and there’s no indication why. This release adds a check on upload (and on first view for packages uploaded earlier) that warns the course author directly in Studio when this is the case, so the problem is visible instead of silent. The check only looks at the package contents, so it stays quiet rather than risk a false warning on a package that reports completion in an unusual way.

Improvement: honest feedback on large uploads

Large SCORM packages could take long enough to extract that the request would time out before Studio got a response, which showed up to the author as “Studio’s having trouble saving your work” even though the upload itself was fine. Studio now shows a progress bar during extraction and an explanation that the package is still being processed, and the “Saving” indicator no longer hangs indefinitely. The Save button also no longer gets stuck disabled after a submit.

Fix: assets served at the exact requested path

Packages with multiple files sharing the same basename (Articulate Rise exports with several scormdriver.js files being the common case) could end up serving the wrong file, which showed up as a blank page. Assets are now resolved at the exact path requested instead of by basename. While in there, the asset proxy also now rejects path traversal and absolute paths in asset URLs.

Thanks to @djoseph for this fix.

Fix: audio and video seeking

Browsers use HTTP Range requests when a learner scrubs an audio or video timeline, and the asset proxy wasn’t handling those at all. It served the whole file every time, with no Accept-Ranges or Content-Range headers, so seeking in packages like Articulate Storyline would desync the audio from the visuals. The proxy now responds with proper 206 Partial Content for range requests.

Thanks to @gaurang8 for catching this one and sending the fix.

Upgrading

pip install -U openedx-scorm-xblock==19.0.5

If you’re on Tutor, bump the pinned version in your openedx-scorm-xblock plugin requirement and rebuild your images as usual.

As always, the full changelog is in CHANGELOG.md, and issues or questions are welcome on GitHub or right here in this thread.

3 Likes