# Openedx-scorm-xblock 19.0.5

**URL:** <https://discuss.openedx.org/t/openedx-scorm-xblock-19-0-5/19889>\
**Category:** Development\
**Tags:** how-to, tutor, core-contributor, xblock\
**Created:** [October 9, 2026, 5:53am UTC](https://discuss.openedx.org/t/openedx-scorm-xblock-19-0-5/19889 "2026-10-09T05:53:37Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Syed\_Ali\_Abbas](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/syed_ali_abbas/32/8753_2.png) [@Syed\_Ali\_Abbas](https://discuss.openedx.org/u/Syed_Ali_Abbas)\
**Post date:** [October 9, 2026, 5:53am UTC](https://discuss.openedx.org/t/openedx-scorm-xblock-19-0-5/19889/1 "2026-10-09T05:53:37Z")

</div>

We just tagged [19.0.5](https://github.com/overhangio/openedx-scorm-xblock/releases/tag/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](https://github.com/overhangio/openedx-scorm-xblock#learner-activity-tracking).

Thanks to [@felipemontoya](https://github.com/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](https://github.com/djoseph-apphelix) 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](https://github.com/Gaurang8) for catching this one and sending the fix.

## Upgrading

```auto
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](https://github.com/overhangio/openedx-scorm-xblock/blob/master/CHANGELOG.md), and issues or questions are welcome on [GitHub](https://github.com/overhangio/openedx-scorm-xblock/issues) or right here in this thread.
