From 1064f470ebe33c2d49e12a4b3155d7c53fc790f0 Mon Sep 17 00:00:00 2001 From: shaun0927 Date: Wed, 21 Oct 2026 13:49:18 +0900 Subject: [PATCH] docs: point contributors to the native GIF export path The architecture guide still directed readers to the removed renderer exporter. Tested: npm run docs:check; git diff --check; traced the UI-to-Rust export calls Confidence: high Scope-risk: narrow --- .../architecture/export-pipeline.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/technical-documentation/architecture/export-pipeline.md b/technical-documentation/architecture/export-pipeline.md index 8d773d99f5..b1c99de54e 100644 --- a/technical-documentation/architecture/export-pipeline.md +++ b/technical-documentation/architecture/export-pipeline.md @@ -12,9 +12,13 @@ leave the native process. Performance numbers, the bench, and the rejected alternatives that drove the design live in [engineering/rendering-performance.md](../engineering/rendering-performance.md). -GIF is out of scope here: it has no native encoder yet, so it keeps its own -dedicated code path in `src/lib/exporter/gifExporter.ts` — the one format -the document adapter still renders in the renderer. +GIF also uses the native compositor. `ExportDialog` calls `exportGifNative` +in [`compositorViewClient.ts`](../../src/native/compositorViewClient.ts), then +`compositorViewService.exportGif` forwards the clips, scene and export settings +to the addon's `exportGif`. The Rust +[`gif_export.rs`](../../crates/compositor/src/gif_export.rs) walks the same +composited timeline as MP4, then encodes the rendered frames as GIF. The +renderer watches progress for both formats; it no longer renders GIF frames. ```mermaid flowchart LR @@ -289,4 +293,4 @@ had `speedRegions: 0, zoomRegions: 0` while the real timeline held two 3× speed regions and a 1.80× zoom. Truncating to the valid prefix would have returned a project that opened cleanly and was silently stripped of its effects. **A partial document that parses is more dangerous than one that does not** — which is why the -loader rejects rather than salvages. \ No newline at end of file +loader rejects rather than salvages.