Repository navigation
Fix Linux QA findings: export after cancel, i18n, app-audio grouping, export validation - #767
Merged
Merged
Conversation
- Bind ffmpeg exit/close/error and render-window handlers to their own job so a cancelled export's late close no longer finalizes the next one. - Localize export error messages (trUi). - sv_start_export rejects unknown resolution/fps/quality/speed/encoder instead of silently rendering 1080p60. - SIGTERM/SIGINT skip the confirm-close dialog, cancel the export and force-exit after 5 s.
Key streams by binary + application.name (e.g. pacat|ToneA) when they differ; plain saved keys still match by binary.
- Re-register SIGTERM/SIGINT/SIGHUP handlers after ready: Chromium installs its own handler at startup that closes windows (blocked by confirm-close) and Node's handler never ran. Force flag is honoured by the admin close handler, before-quit and confirmCloseIfNeeded; fallback exit no longer unref'd. - A legacy plain app key (pacat, python3) resolves to itself so capture keeps every stream of that binary; the picker shows such a selection as running using the shared sameApp matcher. - Tests; test count 3165.
CaYatur
added a commit
that referenced
this pull request
Oct 19, 2026
…ess (#768) Co-authored-by: caganturgut <271973834+caganturgut@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes the findings from the Linux QA pass (PC Agent). One PR, no behaviour change outside these paths.
Fixes
exit/closechecked the currentexportStateand finalized the new export, destroying its render window. All ffmpeg handlers (exit,close,error, stderr) and the render window'sclosed/render-process-gonehandlers are now bound to their own job (isMine()); the old window'sclosedno longer nulls the newexportWin. If the job ends while the window is loading, the job is not sent.onExternalConfignow callsSVRecordPanel.ensureFollow(cfg.recording.followTimeline).Kuyrukis also a mode parameter (Tail), so the heading is nowDışa Aktarma Kuyruğu→ "Export Queue".startExportJob/finalizeExportpaths usetrUi(already running, audio not found, render window, ffmpeg start/exit, output path, read errors, encoder pipe).svToastnow passes messages throughSVI18n.t, so toasts likeKaydedilemedi: …(studio) are translated.pacatclients → "ToneB · 2 processes"). Streams are keyed by binary +application.namewhen they differ (pacat|ToneA), so each is its own row and capture selects only its streams. Plain keys saved earlier (pacat,chrome) still match by binary.8k, 144 fps → 1080p60). NewexportFormats.validateOptions;sv_start_exportreturns e.g.Invalid resolution: "8k". Allowed: 720p, 1080p, …. The panel path is unchanged (stale saved values still fall back to defaults).forceQuitApp), stop the queue, cancel the export, and forceapp.exit(0)after 5 s; a second signal exits immediately.Tests
npm test: 3154 → 3163 (round 1), all passing.tests/qa-linux-findings.test.js(9 tests): job-bound handlers + simulated late close, localized errors, MCP validation,validateOptions, follow on config change, EN strings/toasts, Linux grouping/selection/back-compat, signal quit.tests/app-audio-linux.test.jsexpectation updated for the newpacat|toneAkey.Note on language: MCP error replies follow the app language setting (
trUi), not the panel's display language. This is intended.Round 2
Retest results: fixes 1, 2, 3, 4 and 6 passed.
closehandler then blocks on confirm), and our handler never ran. I reproduced this with a minimal Electron app under Xvfb: with the handler registered early, the window closes and the process stays alive. With the handler re-registered afterready, Node's handler runs and the app exits.ready(and 1 s later).signalQuitis checked in the adminclosehandler,before-quitandconfirmCloseIfNeeded.app.exitthenprocess.exit) is no longerunref'd.process.exit(0).pacat,python3) now resolves to itself, so capture keeps every stream of that binary again. The picker matches it with the sharedsameAppinstead of an exactbaseName, so it shows as running, not "çalışmıyor".