Follow-up to cmi5-xapi-lrs-ingest (openspec/changes/cmi5-xapi-lrs-ingest), task 5.2.
The backend cmi5/xAPI ingest half is now built: GET /api/lrs/launch-token (LrsController::launchToken) mints an RS256 launch JWT (or returns HTTP 503 when the key-pair is not yet provisioned), and POST /api/lrs/statements ingests xAPI statements with a server-stamped verified_actor_id.
The frontend has no cmi5 content-type branch yet: src/views/LessonPlayer.vue only renders sanitised HTML (v-html). This issue covers the frontend course-player work:
- Add a
cmi5 content-type branch to LessonPlayer.vue (or a dedicated player component).
- Before opening the AU iframe/window, call
GET /api/lrs/launch-token?lessonId=...®istrationId=...; if it returns 503, show a human-readable "cmi5 not available" state instead of a broken iframe.
- Pass the returned
launchToken to the AU per cmi5 §8 launch mechanics; the AU then POSTs xAPI statements to /api/lrs/statements with the token.
Explicitly out of scope for the ingest change to avoid silently expanding it.
Ref: openspec/changes/cmi5-xapi-lrs-ingest/tasks.md#task-5.2
Gemigreerd van Codeberg — oorspronkelijk Conduction/scholiq#50, geopend door rubenvdlinde op 2026-07-07.
Follow-up to
cmi5-xapi-lrs-ingest(openspec/changes/cmi5-xapi-lrs-ingest), task 5.2.The backend cmi5/xAPI ingest half is now built:
GET /api/lrs/launch-token(LrsController::launchToken) mints an RS256 launch JWT (or returns HTTP 503 when the key-pair is not yet provisioned), andPOST /api/lrs/statementsingests xAPI statements with a server-stampedverified_actor_id.The frontend has no cmi5 content-type branch yet:
src/views/LessonPlayer.vueonly renders sanitised HTML (v-html). This issue covers the frontend course-player work:cmi5content-type branch toLessonPlayer.vue(or a dedicated player component).GET /api/lrs/launch-token?lessonId=...®istrationId=...; if it returns 503, show a human-readable "cmi5 not available" state instead of a broken iframe.launchTokento the AU per cmi5 §8 launch mechanics; the AU then POSTs xAPI statements to/api/lrs/statementswith the token.Explicitly out of scope for the ingest change to avoid silently expanding it.
Ref: openspec/changes/cmi5-xapi-lrs-ingest/tasks.md#task-5.2
Gemigreerd van Codeberg — oorspronkelijk Conduction/scholiq#50, geopend door
rubenvdlindeop 2026-07-07.