Every artifact now has three presentations instead of one, and media joins the kinds. The additions
are backward compatible: existing kinds, segmenters, and the streaming engine are unchanged, and the
new loading state sits in front of behaviour that previously started at streaming.
-
Artifacts have three presentations, not one. A new
loadinglifecycle state covers every artifact
that exists on the canvas with nothing renderable yet, and every kind now compiles a loading and
an error presentation alongside its content: skeleton bars for text-like kinds, a reserved box for
media, and failures that show their message beside the typed code. Streamed artifacts stay in
loadinguntil their segmenter commits a first character, because a chunk can arrive that commits
nothing. -
imageandvideoartifact kinds. Media is atomic — no prefix of the bytes is a smaller picture
— soMediaIngestionreplaces segmentation with load, resolve, or fail, reporting determinate
progress when a length is known and reserving the frame from the intrinsic aspect ratio so layout
does not jump on decode. Decoding stays with the host; the engine owns the lifecycle, pin, and
revision. -
Published to npm. The libraries are Apache-2.0 and live under
@dopejs/canvas-*, built from the
v0.2.0 tree with npm provenance attesting the GitHub Actions build. Installing is now ordinary:
pnpm add @dopejs/canvas-core.