diff --git a/src/lib/views/TranscriptNotes.svelte b/src/lib/views/TranscriptNotes.svelte index 68fdc09..f44744f 100644 --- a/src/lib/views/TranscriptNotes.svelte +++ b/src/lib/views/TranscriptNotes.svelte @@ -29,6 +29,14 @@ return speakers.find((s) => s.label === label)?.display_name ?? label; } + // T8.7/FR-TRX-4: the meeting view shows the language actually used, not + // just the raw ISO code — falls back to the code itself if it's not in + // the (curated) catalog, and to "auto-detecting…" before any is known. + function languageLabel(code: string | null): string { + if (!code) return "auto-detecting…"; + return settings.languages.find((l) => l.code === code)?.label ?? code; + } + let notesText = $state(""); // Notes is a single pane: raw markdown ("Editor") or the rendered result // ("Preview"), toggled by one button whose label flips to the other mode. @@ -130,13 +138,16 @@ } let reprocessModel = $state(""); + // T8.7/FR-TRX-4: "" reuses the meeting's current language (backend default + // when `language` is omitted) rather than resetting it to auto. + let reprocessLanguage = $state(""); let reprocessing = $state(false); async function reprocess() { const m = meetings.selected; if (!m || !reprocessModel) return; reprocessing = true; try { - await meetings.reprocess(m.id, reprocessModel); + await meetings.reprocess(m.id, reprocessModel, reprocessLanguage || undefined); } finally { reprocessing = false; } @@ -154,8 +165,13 @@ />
-

+

+

{#if m.recorded && settings.models.some((mo) => mo.installed)} + {@const reprocessModelInfo = settings.models.find((mo) => mo.id === reprocessModel)}
+ {#if reprocessModelInfo?.multilingual} + + {/if}