event.stopPropagation()}
+ onkeydown={(event) => event.key === "Escape" && requestDismiss()}
+ >
+ {#if job}
+ {#if job.stage === "done"}
+
+
Transcription saved
+
{displayName}
+ {#if job.error}
+
{job.error}
+ {/if}
+
+
+
+
+ {:else if job.stage === "error"}
+
+
Transcription failed
+
{job.error ?? "Something went wrong."}
+
+
+
+ {:else if job.stage === "cancelled"}
+
Transcription cancelled
+
{displayName}
+
+
+
+ {:else}
+
File transcription
+
+
+ {displayName}
+
+
+
+ {fileStageLabel(job)}
+
+
+ {/if}
+ {:else if pendingFile}
+
Transcribe a file
+
+
+ {displayName}
+
+
+
+
Clean up with AI
+
+ Off keeps it fully local — no text is sent to a cleanup model.
+
+
+
+
+ {#if startError}
+
{startError}
+ {/if}
+
+
+
+
+ {/if}
+