Skip to content

v0.6.0

Release Date: 2026-10-19

This release adds question banks: the registry package manages licensed collections of questions with immutable published versions, forks with lineage, and .h5p import and export. Question metadata gains relative difficulty, skills, and standards under the renamed h5pkit extension key. The rename is breaking; see the upgrade notes. The documentation site is reorganized into guides, design, specifications, and releases.

Highlights

  • Question bank registry. registry.Bank, BankVersion, License, and Lineage describe licensed banks whose content lives in versions. Store persists them; MemoryStore is the in-memory implementation, and registry/registrytest is the conformance suite any other store must pass. See Question Banks.
  • Versioning. The store numbers versions, a bank has one draft at a time, and Publish validates and freezes a draft, computing the union of its questions' skills and standards. A frozen version returns ErrImmutable.
  • Forks and lineage. Fork derives a bank from a published version, recording its parent and inheriting the parent's license when it has none. Descendants finds everything derived from a bank.
  • Interop. ExportQuestionSet, ExportPackage, and WritePackage turn a version into a playable H5P question set or an .h5p package; ImportPackage reads one into a draft, keeping the metadata.
  • Question metadata. The h5pkit block adds difficultyScore (relative within a bank, 0 to 1), skills, and standards, all validated by QuestionSet.Validate. See Extensions and Standards Compliance.

Upgrade notes

  1. Rename the metadata key. The block is read and written only under extensions.h5pkit. Content with an extensions.h5pGo block no longer loads its metadata; rename the key.
  2. Rename the Go type. H5PGoExtension is now Extension and NewH5PGoExtension is now NewExtension. The old names are removed.
  3. Go 1.26. The module's go directive is 1.26.
  4. Documentation links moved. The guides are under /guides/ on the site, for example /guides/getting-started/installation/. Update bookmarks to the old paths.

Known limits

  • No Store operation archives a version yet; archived is treated as frozen when a store sets it.
  • MemoryStore keeps everything in one process. A persistent store lives in its own module and passes registrytest.RunStoreTests.
  • The new content types (true/false, blanks, single choice set, essay, drag text, drag question) and the editor's metadata fields come in the next release.