Skip to content

Export: batch queue with per-job scene snapshots (#526) - #765

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

CaYatur merged 2 commits into
mainfrom
feat/export-queue

Conversation

@CaYatur

@CaYatur CaYatur commented Oct 16, 2026

Copy link
Copy Markdown
Owner

Closes #526.

What changed

  • The queue runs in the main process. Jobs run one after another. Each job keeps a copy of the scene configuration from the moment it was added, and startExportJob now renders that copy (jobCfg) instead of the live config. You can change the scene and queue the next variation.
  • Adding jobs.
    • Add to Queue adds the chosen song with the current settings.
    • Add Several Audio Files adds one job per file into a folder you pick.
    • Files are named "Track - Scene - 1080p". If a name already exists on disk or in the queue, the job gets " (2)", so one song at three resolutions, or ten songs, never overwrite each other.
    • Paths follow the same rule as a single export. The queue holds at most 200 jobs.
  • Survives failures.
    • A failing job is marked with its message and the next job runs. Failed or cancelled jobs can be retried.
    • A job that never started now hands back its completion waiter. Otherwise the next job's result would land on it.
  • Stop and quit.
    • Stop cancels the running job and leaves the rest waiting.
    • Quitting stops the queue first, so no new job starts during shutdown.
    • A single export is refused while the queue runs.
  • Panel. A queue section under the export card shows status rows (Waiting, Running, Done, Error, Cancelled) with Retry and Remove, a Start/Stop button, and Clear Finished. The list redraws on its own; the rest of the card does not.

Measured

Bench queue mode:

  • Two jobs with the same name produced q1.mp4 and q1 (2).mp4.
  • A job with a missing audio file failed with "Ses dosyası bulunamadı.", and the WebM and ProRes jobs after it still ran.
  • I changed the scene after adding the jobs. The first two videos still decode to identical frames (framemd5 6ba18e5823 for both).
  • Stopping mid-run cancelled the running job and left the other two waiting, with nothing left in the folder.
    • The first run seemed to leave a .partial. The cause was the bench's own app.exit(), which skips the delayed delete; the driver now flushes pending deletes before exiting.

Panel, driven over CDP with its own buttons:

  • The rows went Waiting → Running → Done, and the button switched Start ↔ Stop.
  • Found and fixed: after the queue ended, "Export to Video" stayed disabled with Cancel showing. A queue update arriving after the last job's done event re-marked the panel as busy. The panel now releases the state it set when the queue stops.
  • Re-tested with Stop from the panel: one job cancelled, one still waiting, the UI restored, and no files left.

Not in this PR

MCP still exports one job at a time.

Verification

  • npm test: 3151/3151.
    • New tests/export-queue.test.js covers the snapshot, failure path, waiter cleanup, stop/quit, unique names, panel state and i18n.
    • Three tests changed to read jobCfg and the new export:start handler.
  • --smoke --smoke-export with an isolated profile: PASS.

CaYatur and others added 2 commits October 16, 2026 03:59
…526)

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: batch queue with per-job scene snapshots (#526)

Files
CHANGELOG.md (modified, +6/-0)
@@ -42,6 +42,12 @@ GitHub. The full reasoning and the measurements behind each change are in [ROADM
CPU choice and the speed balance stay yours. The profile is read from the settings themselves, so
changing any of them by hand shows "Custom", and every setting stays available underneath. MCP's
sv_start_export takes a profile too, with explicit arguments taking precedence.
+- **A batc…

README.md (modified, +5/-3)
@@ -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, +4/-3)
@@ -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, +23/-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.css (modified, +12/-0)
@@ -1559,3 +1559,15 @@ input[type="number"]::-webkit-inner-spin-button {
font-weight: 800;
letter-spacing: .01em;
}
+
+/* Dışa aktarma kuyruğu (#526) */
+.export-queue { display: flex; flex-direction: column; gap: 6px; margin-top: 8px; }
+.export-queue-row { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 9px; background: var(…

src/admin/admin.js (modified, +143/-0)
@@ -595,6 +595,8 @@
return audioFileCtrl(def);
case 'exportpanel':
return exportPanelCtrl(def);

  •  case 'exportqueue':
    
  •    return exportQueueCtrl(def);
     case 'lightingpanel':
       return lightingPanelCtrl(def);
     case 'lightinggeneralpanel':…
    

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 ee85451 into main Oct 16, 2026
5 checks passed
@CaYatur
CaYatur deleted the feat/export-queue branch October 16, 2026 01:05
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: batch queue

1 participant