Events
Everything the Rust backend pushes to the renderer
Where commands are the renderer calling Rust, events are Rust
pushing to the renderer. The backend emits them with Tauri's Emitter; windows subscribe with
listen.
No EventBus, no WebSocket relay
Managers emit Tauri events directly to all windows — there is no event bus and no network
relay. The UI subscribes to these event names with Tauri's listen.
Two flavors
Typed payloads
Declared in src-tauri/src/winstt/commands/events.rs, registered in collect_events![...],
and mounted via mount_events(app). They derive specta::Type + tauri_specta::Event, so
their shapes appear in bindings.ts and are type-checked on both sides.
Plain string events
High-frequency or legacy channels emitted as app.emit(name, payload), matching the
listener names the renderer subscribes to — e.g. stt:audio-level fires per audio frame.
Typed payloads
Declared in events.rs and type-checked end to end through bindings.ts.
| Event payload | Fields | Meaning |
|---|---|---|
RealtimeUpdatePayload | text | Raw live-preview text (pre-stabilization) |
RealtimeStabilizedPayload | text | Live preview past the committed watermark |
WakeWordDetectedPayload | word, word_index | A configured wake word matched |
WordAlignmentPayload | word timings | Per-word timestamps for history playback |
TtsLifecyclePayload | request_id, phase, progress? | TTS started / completed / failed / download-progress |
FileTranscribeProgressPayload | id, path, status, progress, text? | Batch file-transcribe progress |
Plain string events
High-frequency and legacy channels, grouped by concern.
Recording lifecycle
| Event | Meaning |
|---|---|
stt:recording-start / stt:recording-stop | Capture began / ended |
stt:transcription-start | Full decode started |
stt:full-sentence | Final transcription result |
stt:no-audio-detected | Recording held no speech |
Voice activity & audio
| Event | Meaning |
|---|---|
stt:vad-start / stt:vad-stop | Speech onset / offset (smoothed) |
stt:audio-level | Per-frame mic level + spectrum (visualizer) |
Wake word & realtime
| Event | Meaning |
|---|---|
wake_word_detected | Wake word hit → starts dictation |
realtime-update | Live preview text tick |
Models & swaps
| Event | Meaning |
|---|---|
stt:model-download-progress | Per-file download percentage |
stt:model-swap-started / -completed / -failed | Active-model swap lifecycle |
stt:restart-required | A startup-only setting changed (in-process engine can't hot-apply it) |
Settings
| Event | Meaning |
|---|---|
settings:changed | Full post-save snapshot, broadcast to every window |
settings:save-error | Validation or persistence failure |