+
+ Warning! This will only work if the replay buffer is enabled and active in OBS.
+
+
+ `,
+ optionsController: () => {},
+ optionsValidator: () => {
+ return [];
+ },
+ onTriggerEvent: async () => {
+ saveReplayBuffer();
+ return true;
+ },
+};
diff --git a/src/backend/integrations/builtin/obs/obs-integration.ts b/src/backend/integrations/builtin/obs/obs-integration.ts
index 1b20b40ae..1114d9fdb 100644
--- a/src/backend/integrations/builtin/obs/obs-integration.ts
+++ b/src/backend/integrations/builtin/obs/obs-integration.ts
@@ -18,6 +18,7 @@ import { StartStreamEffectType } from "./effects/start-stream";
import { StopStreamEffectType } from "./effects/stop-stream";
import { StartVirtualCamEffectType } from "./effects/start-virtual-cam";
import { StopVirtualCamEffectType } from "./effects/stop-virtual-cam";
+import { SaveReplayBufferEffectType } from "./effects/save-replay-buffer";
import { SetOBSSourceTextEffectType } from "./effects/set-obs-source-text";
import { SetOBSBrowserSourceUrlEffectType } from "./effects/set-obs-browser-source-url";
import { SetOBSImageSourceFileEffectType } from "./effects/set-obs-image-source-file";
@@ -98,6 +99,7 @@ class ObsIntegration
effectManager.registerEffect(StopStreamEffectType);
effectManager.registerEffect(StartVirtualCamEffectType);
effectManager.registerEffect(StopVirtualCamEffectType);
+ effectManager.registerEffect(SaveReplayBufferEffectType);
effectManager.registerEffect(SetOBSSourceTextEffectType);
effectManager.registerEffect(SetOBSBrowserSourceUrlEffectType);
effectManager.registerEffect(SetOBSImageSourceFileEffectType);
diff --git a/src/backend/integrations/builtin/obs/obs-remote.ts b/src/backend/integrations/builtin/obs/obs-remote.ts
index 31d703ff1..d462756cd 100644
--- a/src/backend/integrations/builtin/obs/obs-remote.ts
+++ b/src/backend/integrations/builtin/obs/obs-remote.ts
@@ -533,6 +533,16 @@ export async function isRecording(): Promise