VoiceInk
VoiceInk copied to clipboard
Enhancement: Export Format Options & Retry Button
Overview
Two additional quality of life enhancements that would benefit all VoiceInk users:
- Export Format Options - JSON, Plain Text, and CSV export
- Retry Button - Visible retry in transcription history
1. Export Format Options
Problem
Currently, transcriptions can only be exported as CSV. This limits:
- API integrations (need structured JSON)
- Quick sharing (plain text is easier)
- Programmatic access (CSV parsing is fragile)
Solution
Add format selection menu with three options:
- JSON - Structured data with full metadata, pretty-printed
- Plain Text - Human-readable with timestamps
- CSV - Maintain existing format for compatibility
Benefits
- Flexible workflows (choose format for need)
- API integrations (JSON enables programmatic access)
- Easy sharing (TXT for humans)
- Backward compatible (CSV still available)
Technical Details
- New TranscriptionExportService with multi-format support
- Menu in history view for format selection
- Complete metadata in JSON export
- Formatted duration display in TXT export
2. Retry Button in History
Problem
Currently, retry is only available via keyboard shortcut and only works for the last transcription. This is:
- Not discoverable (users don't know it exists)
- Limited (can't retry older transcriptions)
- Inconvenient (keyboard shortcut not intuitive)
Solution
Add "Retry Transcription" to each card's context menu:
- Visible button appears on right-click
- Works with any transcription (not just last)
- Shows only when audio file exists
- Loading state prevents double-clicks
- Clear success/error notifications
Benefits
- Discoverability (visible in UI)
- Flexibility (retry any transcription)
- User-friendly (context menu is intuitive)
- Safety (validates audio file exists)
Technical Details
- Integration with existing AudioTranscriptionService
- Proper error handling for missing files/models
- Async/await with @MainActor
- Automatic clipboard copy of result
Implementation
Complete implementation provided in PR #363:
- Production-ready source code
- Comprehensive documentation
- Step-by-step application guide
- Testing checklists
Code Quality
✅ Zero force unwraps
✅ Full error handling
✅ Proper async/await usage
✅ Memory safe (no leaks)
✅ Backward compatible
Use Cases
Export Formats
- Data Analysis - Export to JSON, import into analytics tools
- Sharing - Export to TXT, send via email/chat
- Backup - Export to JSON with full metadata
- Compatibility - Export to CSV for existing workflows
Retry Button
- Model Comparison - Retry same audio with different models
- Quality Improvement - Retry after model update
- Correction - Re-transcribe if result was poor
- Testing - Developers testing transcription accuracy
Related
- PR #363: Implementation with complete source and documentation
- PR #362: Initial 5 QOL improvements (recording duration, cancel button, shortcuts, logging)
Impact: High (benefits all users)
Complexity: Low (well-scoped features)
Risk: Minimal (backward compatible, no breaking changes)
Implementation: Ready (complete code provided)