diff --git a/client/src/pages/Recorder.tsx b/client/src/pages/Recorder.tsx
index d9a401e..58e4f3b 100644
--- a/client/src/pages/Recorder.tsx
+++ b/client/src/pages/Recorder.tsx
@@ -211,6 +211,13 @@ export default function Recorder() {
const archiveProgress = archiveTaskQuery.data?.progress ?? getArchiveProgress(mediaSession);
const archivePhaseLabel = getArchivePhaseLabel(mode, mediaSession, archiveTaskQuery.data?.progress);
const totalUploadBytes = uploadBytes + queuedBytes;
+ const uploadStillDraining = mode === "finalizing" && (queuedBytes > 0 || queuedSegments > 0 || finalizeTaskMutation.isPending);
+ const archiveRunning =
+ archiveTaskQuery.data?.status === "queued" ||
+ archiveTaskQuery.data?.status === "running" ||
+ mediaSession?.archiveStatus === "queued" ||
+ mediaSession?.archiveStatus === "processing";
+ const canLeaveRecorderPage = !uploadStillDraining && (archiveRunning || mode === "archived");
const syncSessionState = useCallback((session: MediaSession | null) => {
currentSessionRef.current = session;
@@ -1025,6 +1032,30 @@ export default function Recorder() {
) : null}
+ {uploadStillDraining ? (
+