发布

  • feat(media): convert legacy references to allocated asset ids (#1101)

    frostbyte_neo 发布于 2026-08-15 09:38:04 +00:00

    Lands epic #1007 part 2(c): the app-side reference converter, the audioUrl
    removal, and the DSL_VERSION bump as one delivery unit.

    convertDocumentAssetRefs walks a loaded document (slide canvases, whiteboards,
    video-manifest keys, speech actions) and rewrites legacy handles to allocated
    pool ids: placeholders and audioIds with local bytes are ingested, a co-present
    audioUrl/audioId pair collapses to one asset, a definitively dead URL
    converts to an emptied reference, and a transient failure keeps both handles for
    a later retry. Unavailable bytes leave the document untouched for a later open,
    and a converted document returns by identity with no writes.

    Conversion runs lazily on document open and at fetch time for server-generated
    classrooms, with conversion and the first document save sharing the per-stage
    document lock: once the document commits it owns every allocation, and every
    failure exit rolls its pass ledger back. Legacy URL probes are bounded by a
    per-probe timeout and a shared 60-second pass budget.

    SpeechAction.audioUrl is removed from the DSL and every consumer reads the
    converted shape; the server classroom generator keeps its derived-id + serving-URL
    pair as an explicitly typed pre-conversion transport, consumed before persistence.
    DSL_VERSION becomes 0.2.0 with the first real ladder entry, and
    @openmaic/dsl goes to 0.9.0 per the release rule.

    Deferred follow-ups are tracked in #1129: production principal derivation with
    document/asset ownership aligned, conditional document writes, and hoisting the
    aggregate probe budget into the export and video-timeline paths.

    Refs #1007

    下载附件