VoiceInk icon indicating copy to clipboard operation
VoiceInk copied to clipboard

Enhancement: Export Format Options & Retry Button

Open tmm22 opened this issue 1 month ago • 2 comments

Overview

Two additional quality of life enhancements that would benefit all VoiceInk users:

  1. Export Format Options - JSON, Plain Text, and CSV export
  2. 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)

tmm22 avatar Nov 03 '25 02:11 tmm22