Image-only group (quality, max DPR, transparent BG).
Video / turntable shared group (resolution, duration, codec, …).
Turntable-only group (rotation speed, axis, …).
Format dropdown — hidden when the mode offers a single format (Video mode is WebM-only, so a one-item dropdown is just noise and its silent WebP→WebM rewrite confuses users).
Image quality slider — visible for lossy still/image-sequence formats (jpeg / webp) in image OR turntable mode. Hidden for the lossless png / exr.
Transparent-BG checkbox — hidden for exr (always has alpha).
Video codec dropdown — only video container formats.
Video quality slider — hidden for image-sequence formats.
Video duration limit — hidden for turntable (computed from speed).
Sync-to-slider toggle — hidden for turntable.
Sync-dimension dropdown — hidden when sync-toggle is off or for turntable.
Format dropdown options that should be visible for the current mode.
If the current outputFormat is invalid for the new mode, this
holds the auto-corrected default. null if no correction
needed.
For video container formats only: codec values that should be
visible in the codec dropdown. Video mode (MediaRecorder) limits
to the MediaRecorder-supported codecs; turntable uses mediabunny
which supports all. null for non-video formats.
Per-control visibility decision returned by computeControlVisibility.
Captures the pure-logic answers to "should X show?" so the panel only has to apply them, and so the rules are testable without lil-gui in the loop.