Skip to content

Export: one-click preset profiles (#522) - #763

Merged
CaYatur merged 2 commits into
mainfrom
feat/export-profiles
Oct 16, 2026
Merged

CaYatur merged 2 commits into
mainfrom
feat/export-profiles

Conversation

@CaYatur

@CaYatur CaYatur commented Oct 16, 2026

Copy link
Copy Markdown
Owner

Closes #522.

What changed

  • Profiles are data in export-formats.js:
    • YouTube 1080p60
    • YouTube 4K60 (H.265)
    • Reels / Shorts / TikTok 1080×1920 @ 30
    • Instagram square 1080×1080
    • Twitch / OBS overlay: 1080p60 WebM VP9 with alpha
    • Master 4K: ProRes 422 HQ, 4K60
    • GIF loop: 720p @ 24
  • What a profile sets: format, resolution, frame rate and quality. Colour handling is already BT.709 for every format. The GPU/CPU choice and the speed balance stay with the user.
  • No stored field. The panel's "Preset Profile" select is derived from the current settings with matchProfile. Picking a profile fills the fields. Changing any field by hand shows "Custom". All settings stay available underneath.
  • Machine support. Only profiles whose format works on this machine are listed.
  • MCP. sv_start_export takes profile. Explicit arguments override it, and the profile's format decides the allowed extension.
  • Generic selectCtrl hooks. The select control gained value() and onChange(), for selects derived from other fields.

Found while testing in the panel

Picking Reels and then changing the frame rate left the select still showing Reels. The setting itself was correct; the card just did not rebuild, because only the format select did. Resolution, frame rate and quality now rebuild it too.

Re-verified over CDP:

step profile shown
pick Reels Reels
60 fps Custom
back to 30 fps Reels

Verification

  • npm test: 3138/3138. tests/export-profiles.test.js covers:
    • every profile uses valid values and stays within the format's fps cap;
    • derive/apply and the switch to Custom;
    • dictionary entries;
    • MCP merge, override, wrong extension and unknown profile;
    • the rebuild rule.

CaYatur and others added 2 commits October 16, 2026 03:41
…nt (#522)

Co-authored-by: caganturgut <271973834+caganturgut@users.noreply.github.com>
Co-authored-by: caganturgut <271973834+caganturgut@users.noreply.github.com>
@cayadraft

cayadraft Bot commented Oct 16, 2026

Copy link
Copy Markdown

@CaYatur

CaYaDraft — pull request

Summary
Export: one-click preset profiles (#522)

Files
CHANGELOG.md (modified, +6/-0)
@@ -36,6 +36,12 @@ GitHub. The full reasoning and the measurements behind each change are in [ROADM
31 s to 11 s, MilkDrop at 1080p60 from 31 s to 13 s, and MilkDrop at 4K from 60–67 s to 18–19 s.
The conversion matches ffmpeg's to within one level on luma; the scene itself is drawn exactly as
before.
+- One-click profiles [522]. YouTube 1080p60, YouTube 4K60 (H.265), Reels / Shorts…

README.md (modified, +2/-2)
@@ -17,7 +17,7 @@ layers and 40 GPU effects, an OBS overlay, Spout / Syphon, **project
Downloads
License: MIT
[![Platform](https://img.shields.io/badge/platform-Windows%20%…

README.tr.md (modified, +2/-2)
@@ -18,7 +18,7 @@ destesi**, ve MCP üzerinden yapay zekâ kontrolü.
İndirme
Lisans: MIT
[![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-111997.sv…

ROADMAP.md (modified, +10/-2)
@@ -93,7 +93,7 @@ hands, and a row only moves up once it ships.
|---|:--:|---|
| Per-app audio capture on macOS and Linux | v3.1.6 | On main (#514, #517). Linux verified in WSLg with PulseAudio; macOS written on ScreenCaptureKit and compiled in CI, never run on a Mac. Windows shipped in v3.1.3 |
| Live level meter per application | v3.1.6 | Done on main (#516): a moving dB-scale bar per ap…

src/admin/admin.js (modified, +31/-5)
@@ -847,13 +847,16 @@
}

function selectCtrl(def) {

  • const cur = getPath(cfg, def.path);
  • /* value/onChange: ayarda kendi alanı olmayan, başka alanlardan
  •   türeyen seçimler için (dışa aktarma profili). */
    
  • const cur = typeof def.value === 'function' ? def.value() : getPath(cfg, def.path);
    const opts = typeof def.options === 'function' ? def.options() : def.option…

src/shared/export-formats.js (modified, +44/-0)
@@ -350,6 +350,49 @@
return args;
}

  • // ---------------------------------------------------------- profiller (Export: preset profiles #522)
  • /* Tek tıkla ayar. Her profil biçimi, çözünürlüğü, kare hızını ve kaliteyi
  • sabitliyor; renk her biçimde zaten BT.709. Kodlayıcı (GPU/CPU) ve hız…
    

Note
The local model is unavailable, so this is only the title and file list.


Stopping here. I will not merge, push, or change this pull request until you ask.

/caya explain describes the diff. /caya plan previews the next edit. /caya revise adds a commit.

@CaYatur
CaYatur merged commit d9bbfdd into main Oct 16, 2026
5 checks passed
@CaYatur
CaYatur deleted the feat/export-profiles branch October 16, 2026 00:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Export: preset profiles

1 participant