chore: checkpoint web Blender migration source, tools and docs
Accumulated uncommitted work: GHOST Web backend, WebGL/GPU web layer, web workflow engine and protocol, tooling, docs and task records. Large generated evidence, user-testing archives, build snapshots and imported test assets remain untracked. Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -32,6 +32,7 @@ export interface SequencerStripIR {
|
||||
sourceStart: number;
|
||||
sourceEnd: number;
|
||||
speed: number;
|
||||
selected?: boolean;
|
||||
muted: boolean;
|
||||
locked: boolean;
|
||||
sourceId?: string;
|
||||
@@ -70,7 +71,7 @@ export interface SequencerRuntimeCapabilityIR {
|
||||
export const SEQUENCER_CODEC_PROBE_SCHEMA = 1 as const;
|
||||
export const SEQUENCER_CODEC_PROBE_MAX_BYTES = 512 * 1024 * 1024;
|
||||
export type SequencerCodecStripType = "IMAGE" | "SOUND" | "MOVIE";
|
||||
export type SequencerCodecProbeBackend = "IMAGE_BITMAP" | "WEB_AUDIO" | "HTML_MEDIA";
|
||||
export type SequencerCodecProbeBackend = "IMAGE_BITMAP" | "WEB_AUDIO" | "HTML_MEDIA" | "FFMPEG_WASM";
|
||||
export type SequencerCodecProbeBlockReason =
|
||||
| "RUNTIME_UNAVAILABLE"
|
||||
| "MIME_UNSUPPORTED"
|
||||
@@ -200,6 +201,7 @@ export function parseSequencerTimeline(value: unknown): SequencerTimelineIR {
|
||||
sourceStart,
|
||||
sourceEnd,
|
||||
speed,
|
||||
selected: typeof item.selected === "boolean" ? item.selected : undefined,
|
||||
muted: typeof item.muted === "boolean" ? item.muted : false,
|
||||
locked: typeof item.locked === "boolean" ? item.locked : false,
|
||||
proxy: parseProxy(item.proxy, index),
|
||||
@@ -388,14 +390,16 @@ export function parseSequencerCodecProbeResult(value: unknown): SequencerCodecPr
|
||||
sourceSha256: value.sourceSha256,
|
||||
});
|
||||
if (value.status !== "READY" && value.status !== "BLOCKED") throw new SequencerValidationError("SEQUENCER_SCHEMA_INVALID", "Codec probe status is invalid");
|
||||
const backendAllowed = value.backend === null || value.backend === CODEC_BACKENDS[request.stripType] ||
|
||||
(request.stripType === "MOVIE" && value.backend === "FFMPEG_WASM");
|
||||
if (value.status === "BLOCKED") {
|
||||
if ((value.backend !== null && value.backend !== CODEC_BACKENDS[request.stripType]) ||
|
||||
if (!backendAllowed ||
|
||||
!CODEC_BLOCK_REASONS.has(value.reason as SequencerCodecProbeBlockReason) || value.decoded !== null) {
|
||||
throw new SequencerValidationError("SEQUENCER_SCHEMA_INVALID", "Blocked codec probe result is invalid");
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (value.backend !== CODEC_BACKENDS[request.stripType] || value.reason !== null || !record(value.decoded)) {
|
||||
if (!backendAllowed || value.backend === null || value.reason !== null || !record(value.decoded)) {
|
||||
throw new SequencerValidationError("SEQUENCER_SCHEMA_INVALID", "Ready codec probe result is invalid");
|
||||
}
|
||||
const decodedKeys = request.stripType === "IMAGE" ? ["width", "height"] :
|
||||
|
||||
Reference in New Issue
Block a user