Releases: kemalyy/edumints-scorm-mcp
Release list
v1.4.0 — Institutional readiness hardening (W9 P0+P1)
Accessibility alt-text (10 classes + missing_alt_text lint), per-principal rate limiting, audit
logging, real pip-audit --strict CI gate, mechanized anti-slop rules (A1/A2/A3/B3), SCORM Cloud
CI conformance gate (private repo), and a new non-blocking WCAG game a11y audit tool
(npm run a11y-audit in CI). Still 25 MCP tools, all additive — no server-side LLM.
Full changelog: https://github.com/kemalyy/edumints-scorm-mcp/blob/main/CHANGELOG.md#140--2026-07-23
v1.3.0 — SVG assets, block sizing, opt-in narration
SVG diagram pipeline + block sizing + opt-in narration. 25 MCP tools. All additive — existing
specs unchanged, no server-side LLM.
Added
svg_to_assettool (25th tool) — turn a Claude-generated SVG string into a packaged asset without
base64 (rawsvg_content); validates<svg>, returns anAssetRef(id) to use in
media_asset_id/image_asset_id/ blockasset_id. Optionalrasterize=true→ PNG (needs
cairosvg; clearrasterize_unavailableerror otherwise). Fixes the "inline<svg>inbody_html
gets sanitized away" pitfall — use the asset pipeline (rendered as<img src=…svg>).content_slideblocks[]per-blockwidth(e.g."60%") — image blocks can be sized + centered
(margin-inline:auto); omitted → full width.build_from_specauto_tts(opt-in, defaultfalse) +tts_voice— auto-generates Piper
narration for screens that havenarration_textand nonarration_asset_id, setting
narration_asset_id. Silently skipped when Piper is unavailable (build never breaks).
Changed
render_motion_video: when the render subprocess fails because Chromium is missing, return a clear
render_unavailableerror with workarounds (PNG+TTS video, static SVG/PNG asset, or local render)
instead of a raw HyperFrames stderr dump.
Full changelog: https://github.com/kemalyy/edumints-scorm-mcp/blob/main/CHANGELOG.md#130--2026-06-26
v1.2.0 — richer media authoring + QTI 2.1 export
Richer media authoring (content_slide blocks, per-item images, inline assets), screen reorder, and
QTI 2.1 export. 24 MCP tools. All additive — existing specs unchanged, no server-side LLM.
Added — richer media authoring + screen reorder (W9)
content_slidemulti-block (blocks[]) — optional ordered list of{html}/{asset_id, caption?}
blocks → interleaveparagraph → image → paragraph → imagein one screen (no more 3-consecutive-slide
workaround). Falls back tobody_html/media_asset_idwhenblocksis absent;body_htmlis now optional.- Per-item images — optional
image_asset_idonaccordionandtabsitems, ontimeline
events;front_asset_id/back_asset_idonflashcards. All optional/backward-compatible. reorder_screenstool (24th MCP tool) — reorder a project's screens to an explicit id order
(validates the set matches all existing screens).add_screenstill appends.- Inline images in
*_html— sanitizer now allowsdata:URIs on<img>(inline base64
icons), and{{asset:<id>}}tokens in any*_htmlinterpolate to the packaged asset (self-contained,
unlike external<img src>). Validator extended to check per-item / block asset references.
Added — QTI 2.1 export (W8a)
export_qtitool (23rd MCP tool) +core/qti.py: quiz screens → IMS QTI 2.1assessmentItem
XML.mcq/true_false→choiceInteraction,fill_blank→textEntryInteraction, with
correctResponse+ standardmatch_correctresponse processing. Deterministic XML (lxml), so
content becomes portable to QTI-compatible systems. Unmappable types are silently skipped (no fake
conversion); no server-side LLM. Returns{count, items:[{filename, xml}]}. Seedocs/QTI.md.
Full changelog: https://github.com/kemalyy/edumints-scorm-mcp/blob/main/CHANGELOG.md#120--2026-06-24