Skip to content

Export: realtime recording follows the timeline; the two modes are named apart (#530) - #766

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

CaYatur merged 2 commits into
mainfrom
feat/export-modes

Conversation

@CaYatur

@CaYatur CaYatur commented Oct 16, 2026

Copy link
Copy Markdown
Owner

Closes #530. This finishes the v3.1.6 export epic (#520).

What changed

  • Two modes, two cards.
    • The export card is the offline mode: an audio file is drawn frame by frame as fast as possible, and the same job gives the same video every time.
    • The recording card is the realtime mode: it records what is on screen, with the live audio.
    • Each card's description now names its mode, in TR and EN.
  • Realtime follows the playhead. A new "Follow the timeline (start on play, stop on stop)" option:
    • Recording starts when playback starts.
    • It stops on pause or stop, or at the end of the timeline when the loop is off.
    • MIDI, OSC and MCP drive the same transport, so they start and stop it too.
  • The decision is a pure function (followDecision):
    • It starts only on the transition into playing, so a recording stopped by hand during playback does not restart.
    • It stops only a recording it started itself; a manual recording is left alone.
    • start() waits up to 1.5 s for the preview surface. While that start is pending, the follower keeps its flag; otherwise the recording looked finished and pause would not stop it.
    • The follower is armed at launch when the option is saved, not only after the recording card has been opened.

Measured in the panel (CDP, isolated profile)

  • Play: recording was on after 2.5 s. Pause: recording was off.
  • 2 s timeline, loop off: recording was on at 1 s and off after the end, while the transport kept playing to 3.7 s.

Verification

  • npm test: 3154/3154. The new tests/record-follow.test.js covers every branch of the decision function, the pending-start guard, arming at launch, and the mode names and translations.

CaYatur and others added 2 commits October 16, 2026 04:05
… named apart (#530)

Co-authored-by: caganturgut <271973834+caganturgut@users.noreply.github.com>
Co-authored-by: caganturgut <271973834+caganturgut@users.noreply.github.com>
@CaYatur
CaYatur merged commit 5b3ecc0 into main Oct 16, 2026
5 checks passed
@CaYatur
CaYatur deleted the feat/export-modes branch October 16, 2026 01:07
@cayadraft

cayadraft Bot commented Oct 16, 2026

Copy link
Copy Markdown

@CaYatur

CaYaDraft — pull request

Summary
Export: realtime recording follows the timeline; the two modes are named apart (#530)

Files
CHANGELOG.md (modified, +5/-0)
@@ -42,6 +42,11 @@ 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.
+- **Two re…

README.md (modified, +4/-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, +4/-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, +15/-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, +4/-2)
@@ -2946,7 +2946,7 @@
category: 'output',
icon: 'record',
title: 'Kayıt ve Anlık Görüntü',

  •    desc: 'Ekranda göründüğü gibi kaydedin: canlı sesle, modülasyon, geçiş ve efektler dahil. MP4, WebM, GIF ve PNG.',
    
  •    desc: 'Gerçek zamanlı kip: ekranda göründüğü gibi, canlı sesle kaydedin; modülasyon, geçiş ve efektler dahil. Zaman çizelgesini izleyebilir. MP4, We…
    

src/admin/record-panel.js (modified, +78/-1)
@@ -105,6 +105,76 @@
pumpRaf = 0;
}

  • /* ÇALMA KAFASINI İZLE (Export: separate realtime and offline render modes #530).
  • İki kip ayrı kalıyor: bu kart GERÇEK ZAMANLI kayıt (ekranda olan, o
    
  • anki sesle), dışa aktarma kartı ÇEVRİMDIŞI render (ses dosyasından,
    
  • kare kare, belirlenimli). Bu seçenekle gerçek zaman…
    

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.

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: separate realtime and offline render modes

1 participant