Repository navigation
Replies: 2 comments 2 replies
|
Status: implemented for 1.2.0. Thanks to everyone who reviewed and tested along the way. What landed (tracked in #1810):
Answers to the open questions:
Not in scope: whiteboard actions — generated scenes never carry Follow-ups: #1846 (media inside interactive scenes vs narration), #1847 (iOS Files preview). |
|
@CXuPercy could you help test the export features on
Please report anything you find as an issue labelled |
Uh oh!
There was an error while loading. Please reload this page.
Summary
Today a classroom leaves OpenMAIC in pieces. The "Resource Pack" is a ZIP holding a PPTX with only the slide scenes, plus each interactive scene as a separate
interactive/NN_<title>.html. The two halves do not reference each other, the interactive scenes lose their position in the lesson, and quiz and PBL scenes are not exported at all. Teachers who present from the export have to leave the deck, find the right HTML file, and come back.This RFC proposes two changes:
.htmlfile that plays the whole classroom offline, in order. Slides, interactive scenes and quizzes are all included, with optional narration. It is built from the existing@openmaic/rendererpackage and the classroom ZIP manifest.Background and problems
buildResourcePackZip(lib/export/use-export-pptx.ts) filters scenes totype === 'slide'for the PPTX and writes interactive scenes as standalone files. Scene order across the two is lost.@openmaic/renderer: a read-onlySlideCanvaswith spotlight, laser, highlight and zoom effects.inlineHtmlAssets: already makes an interactive scene's HTML self-contained.ClassroomManifest(.maic.zip,formatVersion: 1): already serializes scenes, actions, agents and a media index.lib/playback: the action and playback model.Scope
In scope:
Out of scope: live AI features in the exported file (see Non-goals), and changes to the
.maic.zipformat beyond what embedding it requires.Design
1. PPTX: keep every scene in place
For each interactive or quiz scene, emit a slide at its original index containing:
interactive/NN_<title>.html(a relative path, valid when the pack is extracted). If the deployment exposes a public link for the classroom, also show that URL and a QR code so the deck still works once the PPTX is copied away from the pack.PBL scenes are left out of the PPTX: a project is not something to present from a slide, and the HTML export covers it (see below). The existing
getLinkOption/ pptxgenjs hyperlink support covers this. No new dependencies are needed.2. Standalone HTML export
Shape of the file
ClassroomManifestthe.maic.zipexport already produces, embedded as JSON, so one serializer serves both formats. Media referenced bymediaIndexis embedded as data URIs.Scene support
SlideCanvasfrom@openmaic/renderer; spotlight and laser actions via its effect overlays<iframe srcdoc>withinlineHtmlAssetsoutput, same sandbox flags asInteractiveIframeHostPlayback: manual navigation (keyboard, click, fullscreen) in every mode. When narration is included, speech actions play their audio and auto-advance, reusing the action sequence from the manifest.
Size control: narration and video dominate file size. Export options:
classroom.html+media/in a ZIP, with relative URLs.Security: the file makes no network requests and carries no keys. Interactive scenes stay in sandboxed iframes, the player sets a restrictive CSP, and user content is never evaluated in the player's own origin.
Phases
Open questions
media/?.maic.zipthe only round-trip format?Non-goals
All reactions