v0.5.0: M6 GUI export (the video-export studio)
The export feature is complete: a full GUI export studio, mastering-quality encoding, and a calmer animation pacing. The emberweft export CLI gains the same settings. Engine parity is unchanged (no renderer math changed; the export↔animate byte-identity pins hold).
GUI export studio
- Export sheet with three sources: single genome, collection-as-sequence, multi-select batch.
- Non-blocking progress banner in all windows: Cancel, Show in Finder, and an ETA (EMA-smoothed, "estimating..." during cold-start).
NSSavePanel/NSOpenPaneldestination;ProcessInfosleep prevention.
Mastering-quality encoding
- ProRes 422 HQ is the default (intra-frame, so no smearing on busy fractal content; visually lossless). Container is
.mov. - H.264 / HEVC tiers raised (~5x bitrate, High / Main10 profile, 1-sec GOP) for the
.mp4alternatives.
Animation pacing
The animation is no longer flam3-parity-bound: the owner decided Emberweft may improve on flam3's motion (renderer, determinism, and Metal↔CPU parity are unchanged).
- Separate loop and transition durations (loops and edges can differ).
- Transition rotation velocity-matched easing: the rotation eases so its velocity matches the loops at the boundaries, so short edges stay smooth. The realtime preview matches the export.
- Defaults: 15s loop, 12s edge, loop render-once-repeat x2 (a 15s loop renders once and outputs twice = 30s perceived, seamless, halving the loop render cost). A RAM guard refuses an oversized loop cache (4K is over; a disk-cache follow-up).
Engine (parity-neutral)
- Off-main temporal Metal (
renderTemporalOffMain): the temporal twin ofrenderOffMain, byte-identical, so motion-blurred exports never freeze the UI. - Shared
ExportSettings.resolve(CLI and GUI build byte-identical jobs).
Fixed
- Sequence export no longer truncates the timeline (
segmentCountis now2N-1to cover every genome's loop plus the transitions). - Batch output now carries the
.mp4extension. - Silent
isRenderableskips are surfaced in the banner.
Deferred to M6.1
- Export pause/resume (frame-count checkpointing + chunked-encode + concat) and temporal smoothing (across-frame histogram EMA for low-spp quality).