Skip to content

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, this project adheres to Semantic Versioning, commits follow Conventional Commits, and this changelog is generated by Structured Changelog.

Unreleased

v0.7.0 - 2026-10-19

Highlights

  • Likert questions on standard H5P.MultiChoice: build, validate, and score them by skill, and they play ungraded in any H5P player
  • MultiChoice behaviour fields that default to true can now be set to false

Added

  • Extension.Scoring (Scoring, NewLikertScoring, WithScoring), with the likert method, a scale, and a reverse flag, validated by Extension.Validate (9367cba)
  • NewLikertParams, QuestionSetBuilder.AddLikertQuestion, and ValidateLikertParams; QuestionSet.Validate checks questions with Likert scoring (22b2ee7)
  • LikertValue and QuestionSet.ScoreLikert, returning a LikertScore with count, mean, and normalized score per skill (22b2ee7)
  • schemas.Bool for setting the pointer behaviour fields (9260682)

Changed

  • BREAKING: schemas.Behaviour fields EnableRetry, EnableSolutionsButton, EnableCheckButton, RandomAnswers, and ShowScorePoints are *bool instead of bool (9260682)

Fixed

  • Setting a MultiChoice behaviour field that defaults to true to false is written to JSON; it was dropped, so players used true (9260682)

Documentation

  • Likert questions and the scoring field in the extensions guide (13dea9d)
  • The typed-questions guide shows the pointer behaviour fields and lists only fields the type has (9260682)
  • INIT-H5PKIT-001 Likert scoring phase and the v0.7.0 release item (d5a55cb)
  • v0.7.0 release notes

Tests

  • Likert scoring, validation, and JSON round trip, and a runnable Likert scoring example (11c2230)

v0.6.0 - 2026-10-19

Highlights

  • Question bank registry: banks, immutable published versions, licenses, lineage, and a Store interface with an in-memory store and a conformance suite
  • Question metadata gains relative difficulty, skills, and standards, under the renamed h5pkit extension key
  • Export a bank version to an .h5p package and import .h5p question sets
  • Documentation reorganized into guides, design, specifications, and releases, with a question banks guide

Added

  • Extension.DifficultyScore, Skills (SkillRef), and Standards (StandardRef), validated by Extension.Validate and QuestionSet.Validate (612e5a4)
  • registry types: Bank, BankVersion, License, Lineage, Status, Relation, and ListFilter (ca82eed)
  • registry.Store with MemoryStore, and the registry/registrytest conformance suite for other implementations (1fac3b2)
  • Publishing with skill and standard unions, ErrImmutable, new versions from existing ones, forks with lineage, and Descendants (4e343bb)
  • ExportQuestionSet, ExportPackage, WritePackage, and ImportPackage for .h5p interop, plus Unions and CompareVersions (bbe2b7a)

Changed

  • BREAKING: The question metadata block is read and written only under the h5pkit extension key; the h5pGo key is no longer read (0abbf90)
  • BREAKING: H5PGoExtension is renamed Extension and NewH5PGoExtension is renamed NewExtension; the old names are removed (cc1ffe4)
  • The go directive is 1.26 (995e6d5)

Fixed

  • QuestionSet.Validate names the index of a bad feedback range as a number (43b1dcd)

Documentation

  • Extensions guide covering every field, the relative-difficulty rule, and the h5pkit key (27db33f)
  • Question banks guide and standards reference (0c33584)
  • Site reorganized into docs/guides/, docs/design/, docs/specs/, and docs/releases/, with index pages and the changelog (ef74eec)
  • INIT-H5PKIT-001 specifications for the question bank registry and extensions (c979101)
  • v0.6.0 release notes

Tests

  • A runnable registry example (3503bf2)
  • Removed a test that read a file outside the repository (90b5989)

Infrastructure

  • Shared CI, lint, and CodeQL workflows updated (a0b8029)

v0.5.0 - 2026-03-22

Highlights

  • Module renamed from h5p-go to h5pkit
  • TypeScript quiz editor (@grokify/h5p-editor) for browser-based editing

Added

  • TypeScript quiz editor package in ts/packages/editor/
  • React component QuizEditor with ref-based API
  • Vanilla JS API via createQuizEditor() for CDN usage
  • Multiple Choice, True/False, Fill in Blanks question editors
  • Undo/redo support for editing operations
  • Real-time validation with detailed error messages
  • Light and dark theme support

Changed

  • Renamed module from github.com/grokify/h5p-go to github.com/grokify/h5pkit
  • Renamed repository from h5p-go to h5pkit

Documentation

  • TypeScript editor documentation in docs/ts-editor/
  • Updated homepage to feature both Go SDK and TypeScript editor

v0.4.0 - 2026-03-15

Highlights

  • Extensions support for vendor-specific question metadata with h5pGo namespace

Added

  • Extensions and H5PGoExtension types for question metadata (94ece1e)
  • Builder pattern methods: WithTopic(), WithTags(), WithDifficulty(), WithLearningObjective(), WithSource() (94ece1e)
  • Extensions field on Question and MultiChoiceQuestion structs (94ece1e)
  • NewMultiChoiceQuestionWithExtensions() and WithExtensions() helper methods (94ece1e)
  • Comprehensive tests for extensions JSON parsing and round-trip validation (94ece1e)

Dependencies

  • 4 dependency updates

Infrastructure

  • Update to shared CI workflows (f267f6b)
  • Rename workflow files for consistency (7be8b91)

v0.3.0 - 2025-09-02

Highlights

  • Semantics package with TrueFalse and Essay question type support
  • MkDocs documentation site with comprehensive guides

Security

  • Add permissions to CI workflow for code scanning compliance (70b6fec)
  • Add permissions to lint workflow for code scanning compliance (44bfab1)

Added

  • semantics package with individual semantics for TrueFalse and Essay question types (0a26542)
  • MkDocs documentation source in docsrc/ directory (67adc57)
  • Generated documentation site in docs/ directory (66042b4)

Changed

  • Refactored tests for new filename conventions (47f7444)

Documentation

  • API reference for builder, core-types, schemas, and semantics (67adc57)
  • Getting started guides: installation, quick-start, concepts (67adc57)
  • User guides: H5P packages, question sets, typed questions, validation (67adc57)
  • Reference documentation: file structure, H5P spec, standards (67adc57)
  • README refactored to use MkDocs structure (75552d3)

v0.2.0 - 2025-09-01

Highlights

  • Module renamed from go-h5p to h5p-go following Go naming conventions

Changed

  • Renamed module from github.com/grokify/go-h5p to github.com/grokify/h5p-go (b27dd94)

Documentation

  • Remove redundant shields from README (6cad7a0)

v0.1.0 - 2025-09-01

Highlights

  • Initial release with H5P QuestionSet parsing and typed question support
  • H5P package (zip file) management for creating and extracting H5P content

Added

  • Core QuestionSet type with JSON parsing and serialization (6d14533)
  • H5P package (zip) management: create, extract, and manipulate H5P files (a47df22)
  • schemas package with MultiChoice question type and params (3a7e9f0)
  • MultiChoiceQuestion typed wrapper with NewMultiChoiceQuestion() factory (3a7e9f0)
  • cmd/h5pparsequestionset CLI tool for parsing H5P question sets (9c07a4a)
  • Question builder utilities for programmatic H5P content creation (6d14533)

Documentation

  • Comprehensive README with usage examples and API documentation (d5d99b3)
  • Badge shields for CI status, Go Reference, and license (1430281)
  • "Why H5P for Quizzes?" guide explaining H5P benefits (6bbf489)

Infrastructure

  • GitHub Actions CI workflows for build, lint, and SAST (7746b68)
  • Dependabot configuration for automated dependency updates (7746b68)
  • golangci-lint configuration (7746b68)