commits
- Add created_at field to /api/auth/me response
- Remove debug console.log statements from SSE streams
- Keep error logging for debugging issues
馃挊 Generated with Crush
Co-Authored-By: Crush <crush@charm.land>
- Add --success-green (#16a34a) to color palette
- Use green for completed transcriptions (distinct from processing)
- Replace remaining hardcoded rgba colors with CSS variables
- Status colors: uploading (blue), processing (orange), completed (green), failed (gray)
馃挊 Generated with Crush
Co-Authored-By: Crush <crush@charm.land>
API:
- POST /api/transcriptions - upload audio files
- GET /api/transcriptions - list user transcriptions
- GET /api/transcriptions/:id/stream - SSE progress updates
- Use structured error handling for validation
Frontend:
- Add transcription component with drag-and-drop
- Real-time progress via SSE (no polling)
- Support for MP3, WAV, M4A, AAC, OGG, WebM, FLAC
- Add transcribe link to nav menu
- Update homepage with CTA buttons
馃挊 Generated with Crush
Co-Authored-By: Crush <crush@charm.land>
Architecture improvements:
- Extract 510 lines to src/lib/transcription.ts
- Add TranscriptionEventEmitter with automatic listener cleanup
- Add WhisperServiceManager with race-safe SSE streaming
- Implement file cleanup system for stale uploads
Error handling:
- Add structured error codes and AppError class
- Add validation, auth, and transcription error helpers
- Add requireAuth middleware to reduce boilerplate
Fixes:
- Memory leak: auto-cleanup listeners after 5min inactivity
- Race condition: prevent duplicate SSE streams with locks
- File cleanup: remove completed/failed files after 24h
馃挊 Generated with Crush
Co-Authored-By: Crush <crush@charm.land>
- Add faster-whisper Python service with SSE streaming
- Support for multiple audio formats (MP3, WAV, M4A, etc)
- SQLite-based job tracking and progress updates
- Add setup instructions to README
馃挊 Generated with Crush
Co-Authored-By: Crush <crush@charm.land>
- Add transcriptions table with status tracking
- Add eventsource-client for SSE support
- Configure environment variables for Whisper service
- Ignore uploads directory and .env file
馃挊 Generated with Crush
Co-Authored-By: Crush <crush@charm.land>
- Add --success-green (#16a34a) to color palette
- Use green for completed transcriptions (distinct from processing)
- Replace remaining hardcoded rgba colors with CSS variables
- Status colors: uploading (blue), processing (orange), completed (green), failed (gray)
馃挊 Generated with Crush
Co-Authored-By: Crush <crush@charm.land>
API:
- POST /api/transcriptions - upload audio files
- GET /api/transcriptions - list user transcriptions
- GET /api/transcriptions/:id/stream - SSE progress updates
- Use structured error handling for validation
Frontend:
- Add transcription component with drag-and-drop
- Real-time progress via SSE (no polling)
- Support for MP3, WAV, M4A, AAC, OGG, WebM, FLAC
- Add transcribe link to nav menu
- Update homepage with CTA buttons
馃挊 Generated with Crush
Co-Authored-By: Crush <crush@charm.land>
Architecture improvements:
- Extract 510 lines to src/lib/transcription.ts
- Add TranscriptionEventEmitter with automatic listener cleanup
- Add WhisperServiceManager with race-safe SSE streaming
- Implement file cleanup system for stale uploads
Error handling:
- Add structured error codes and AppError class
- Add validation, auth, and transcription error helpers
- Add requireAuth middleware to reduce boilerplate
Fixes:
- Memory leak: auto-cleanup listeners after 5min inactivity
- Race condition: prevent duplicate SSE streams with locks
- File cleanup: remove completed/failed files after 24h
馃挊 Generated with Crush
Co-Authored-By: Crush <crush@charm.land>