Skip to content

v1.0.0

Choose a tag to compare

@alekswebnet alekswebnet released this 18 Oct 20:25

All seven packages at 1.0.0: @missing-elements/h5p-offline-player, @missing-elements/h5p-runtime, @missing-elements/h5p-libraries, @missing-elements/h5p-embed, @missing-elements/h5p-verify, @missing-elements/h5p-cmi5 and @missing-elements/h5p-normalize.

What 1.0 promises

From this release on, a change that breaks anything What a version number promises covers comes only in a major release. That covers the element's attributes, properties, events and files; what statements carry; how packages and saved state are named; and each command's options and output. A minor adds without breaking, and a patch fixes. Nothing is deprecated.

Breaking changes

  • Update the player, the runtime and h5p-sw.js together.
    • Player 1.0.0 plays with runtime 1.0, and runtime 1.0 needs player 1.0's Service Worker.
    • Given an older worker, the frame stops with "The player's Service Worker is older than this runtime" and says what to update.
    • The runtime's runtime export no longer has mainJs, and its dist/ no longer has main.bundle.js.
    • A tab still open on 0.10 when the worker updates keeps playing.
  • libraries="hub" is gone. Write pack.
    • hub has meant pack since 0.6.
    • The element now reads hub as a URL relative to the page, and the load fails naming that address.
    • In the embed site, &libraries=hub and --default-libraries hub are no longer accepted.
    • In the verifier, --libraries hub now looks for a file named hub.
  • Each package is downloaded once more. Cached packages are kept per major version, and the new worker deletes the 0.x caches as it starts. A learner's saved state (resume) is kept.
  • The normalizer needs Node 22 or later, as the embed site and the verifier already do. Node 20 reached its end of life in April.

The runtime is the H5P core from h5p-php-library

The runtime no longer uses h5p-standalone (#37). It carries the H5P core from h5p/h5p-php-library at cb64a1f (2026-08-11, core API 1.28), the same scripts and stylesheets an H5P site loads, in the same order. dist/NOTICE.txt names the commit. A newer core comes in a minor release, and its notes name the commit.

  • frame.bundle.js is 48.5 kB gzipped, against 54.6 kB for h5p-standalone's two files.
  • Libraries load in the same order as before. The worker now works out the order and the frame asks it, where h5p-standalone asked for every library.json from the frame.
  • Checked on 68 packages, the 55 content types of the library pack among them: the same files load in the same order, and every content type sends the same statements.
  • The core's English strings are the same 67, and the translations are unchanged.

Fixed: older packages with library folders named without versions play with the pack

With libraries="pack", a package that keeps its libraries in folders named without versions (H5P.Foo rather than H5P.Foo-1.2) now plays when the pack refreshes some of them. The pack's newer versions sit in folders named with versions beside the package's own. h5p-standalone named every folder one way, so such a package stopped with "Unexpected end of JSON input".

@missing-elements/h5p-libraries 1.0.0

The same libraries as 0.3.0. Player 1.0.0 pins it, so libraries="pack" plays against it.

@missing-elements/h5p-embed 1.0.0

  • It requires player 1.0.0, runtime 1.0.0 and libraries 1.0.0.
  • hub is no longer accepted, as above.
  • Write the site again with --force and deploy it.

@missing-elements/h5p-verify 1.0.0

  • It requires player 1.0.0 and runtime 1.0.0, so it checks packages against the new runtime.
  • --libraries hub is no longer accepted, as above.

@missing-elements/h5p-cmi5 1.0.0

No change in behaviour since 0.4.2. It still works with any player from 0.1.10.

@missing-elements/h5p-normalize 1.0.0

It needs Node 22 or later. Nothing else changed since 0.1.3.

Upgrading

  • On a CDN, update both URLs, and copy dist/h5p-sw.js of 1.0.0 onto your site again:

    <script type="module"
      src="https://cdn.jsdelivr.net/npm/@missing-elements/h5p-offline-player@1.0.0/dist/h5p-player.js"></script>
    <h5p-player src="https://host.example/course.h5p" sw="/h5p-sw.js"
                assets-base="https://cdn.jsdelivr.net/npm/@missing-elements/h5p-runtime@1.0.0/dist/"></h5p-player>
  • With a bundler, update @missing-elements/h5p-offline-player and @missing-elements/h5p-runtime together. The bundler emits the new worker.

  • With your own Service Worker that mounts the player (mountH5P), build and deploy it again.

  • With copied folders, delete them and copy them again.

  • Replace libraries="hub" with libraries="pack" wherever you still have it.

Full Changelog: v0.10.0...v1.0.0