[FEAT] Retry failed and cancelled transcriptions from history
- Dominant language
- Swift
- Stars
- 2.9k
- Forks
- 226
- PR merge metrics
- No merged PRs in 30d
Description
**Is your feature request related to a problem? Please describe.**
Recordings that don't end in a successful transcription are silently discarded today. If I accidentally hit ESC, release the hotkey too early, or the model errors out mid-transcription, the audio is gone and I have to repeat myself. Wispr Flow keeps every recording in history with a retry button, which removes the cost of any misclick or model hiccup.
**Describe the solution you'd like**
Persist audio for non-successful runs and surface them in History with a retry action.
- Add a `status` field on `Transcript` (`completed` / `cancelled` / `failed`); treat missing as `.completed`.
- Keep the WAV on cancel/discard/error paths and write the entry with empty text.
- Show a Retry button on cancelled/failed rows; on success update the existing record in place.
**Describe alternatives you've considered**
- Keep audio only for `failed`, not `cancelled`: misses the main use case (accidental ESC). Less impact
- Undo toast with a short grace window: poor discoverability, doesn't help with errors that surface after the user has moved on. Less impact
**Additional context**
- Storage growth is the main concern — suggest gating on the existing min-duration check and reusing `maxHistoryEntries` pruning.
- "Save transcription history" toggle should gate this too, or get a sibling "Keep audio for cancelled/failed recordings".
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by locating Transcript persistence and the History row and retry flow, then trace cancellation, discard, and model-error paths. Check how the existing minimum-duration check, maxHistoryEntries pruning, and history toggle are applied. Done means cancelled and failed recordings remain retryable in History, while successful retries update the existing entry.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- swift
- Domain
- desktop
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100