Fix progress feedback, diarization fallback, and dropdown readability

- Stream pipeline progress to frontend via Tauri events so the progress
  overlay updates in real time during transcription/diarization
- Gracefully fall back to transcription-only when diarization fails
  (e.g. pyannote not installed) instead of erroring the whole pipeline
- Add color-scheme: dark to fix native select/option elements rendering
  with unreadable white backgrounds

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-26 17:14:25 -08:00
parent d00281f0c7
commit 669d88f143
5 changed files with 81 additions and 21 deletions

View File

@@ -10,6 +10,7 @@
padding: 0;
background: #0a0a23;
color: #e0e0e0;
color-scheme: dark;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
Ubuntu, Cantarell, sans-serif;
overflow: hidden;

View File

@@ -1,5 +1,6 @@
<script lang="ts">
import { invoke, convertFileSrc } from '@tauri-apps/api/core';
import { listen } from '@tauri-apps/api/event';
import { open, save } from '@tauri-apps/plugin-dialog';
import WaveformPlayer from '$lib/components/WaveformPlayer.svelte';
import TranscriptEditor from '$lib/components/TranscriptEditor.svelte';
@@ -89,6 +90,19 @@
isTranscribing = true;
transcriptionProgress = 0;
transcriptionStage = 'Starting...';
transcriptionMessage = 'Initializing pipeline...';
// Listen for progress events from the sidecar
const unlisten = await listen<{
percent: number;
stage: string;
message: string;
}>('pipeline-progress', (event) => {
const { percent, stage, message } = event.payload;
if (typeof percent === 'number') transcriptionProgress = percent;
if (typeof stage === 'string') transcriptionStage = stage;
if (typeof message === 'string') transcriptionMessage = message;
});
try {
const result = await invoke<{
@@ -159,6 +173,7 @@
console.error('Pipeline failed:', err);
alert(`Pipeline failed: ${err}`);
} finally {
unlisten();
isTranscribing = false;
}
}