Commit Graph

131 Commits

Author SHA1 Message Date
rishikanthc
c069afcae9 fix: harden engine worker public errors 2026-04-26 19:15:38 -07:00
rishikanthc
c8519ca90d fix: harden transcription API queue flow 2026-04-26 19:12:42 -07:00
rishikanthc
56cf5ca87f feat: wire transcription API to worker services 2026-04-26 15:29:16 -07:00
rishikanthc
7c01f81c8e Validate transcription profile references 2026-04-25 14:47:11 -07:00
rishikanthc
a18c1ec9c8 Implement file status filtering 2026-04-25 14:46:24 -07:00
rishikanthc
e065100e7c Avoid SSE unsubscribe send races 2026-04-25 14:44:57 -07:00
rishikanthc
4a60a6c005 Keep profile reads side-effect free 2026-04-25 14:44:28 -07:00
rishikanthc
3f5ea8ab9e Avoid buffering idempotent uploads 2026-04-25 14:43:50 -07:00
rishikanthc
1c9c86ac4f Use high upload request cap 2026-04-25 14:35:01 -07:00
rishikanthc
555a2a90a2 Clean up API async import tests 2026-04-25 14:32:58 -07:00
rishikanthc
6d690413e1 Harden API retry and event streaming behavior 2026-04-25 14:31:28 -07:00
rishikanthc
b47546b5f8 Document completed API contract 2026-04-25 14:23:28 -07:00
rishikanthc
36b51d68fc Add API security regression coverage 2026-04-25 14:22:07 -07:00
rishikanthc
627ba8952a Implement YouTube import API 2026-04-25 14:19:59 -07:00
rishikanthc
b2e34e6b61 Implement API SSE event streams 2026-04-25 14:14:57 -07:00
rishikanthc
9bbc9b917e Add API idempotency handling 2026-04-25 14:09:42 -07:00
rishikanthc
c79145099e Implement API list filtering and cursors 2026-04-25 14:02:07 -07:00
rishikanthc
1c183a2960 Split API router into focused modules 2026-04-25 13:58:38 -07:00
rishikanthc
e4fdcd2d06 Complete deferred upload entrypoints 2026-04-25 13:53:04 -07:00
rishikanthc
a3b85e2903 Quiet expected API test logs 2026-04-25 13:50:56 -07:00
rishikanthc
839e29387a Restrict file API to uploaded sources 2026-04-25 13:50:13 -07:00
rishikanthc
b089c8d000 Add API route contracts and canonical docs 2026-04-25 12:46:19 -07:00
rishikanthc
6b9e1ff98c Implement profiles settings and capabilities API 2026-04-25 12:40:57 -07:00
rishikanthc
79d9c77558 Implement transcription API skeleton 2026-04-25 12:36:14 -07:00
rishikanthc
178fa1919a Implement file API and range streaming 2026-04-25 12:32:01 -07:00
rishikanthc
7475244cfd Revamp API foundation and auth 2026-04-25 12:31:54 -07:00
rishikanthc
e3a7c48bd7 fix schema compatibility gaps after migration 2026-04-23 10:35:15 -07:00
rishikanthc
0be71a63a0 refactor database schema and legacy migration flow 2026-04-23 10:17:03 -07:00
Fran Fitzpatrick
4e75295019 feat: add speaker identification toggle to summary templates
Add option to include speaker labels in summary prompts when diarization
is available. When enabled, transcripts are formatted as:
[SPEAKER_NAME] Text here...

The prompt also includes a hint to the LLM that speaker labels are present,
helping it produce summaries that attribute statements to specific speakers.

Changes:
- Add IncludeSpeakerInfo field to SummaryTemplate model
- Add toggle UI in summary template dialog
- Format transcript with speaker labels when generating summary
- Update prompt prefix to indicate speaker labels are present

Closes #353

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-28 10:58:49 -08:00
rishikanthc
2afd6a1ecf fixes #317 2025-12-29 21:11:47 -08:00
Paul Irish
9975e6fb02 fix duplicated openapi annotations pt 2 2025-12-29 21:10:13 -08:00
Paul Irish
a7aaf06bbb fix duplicated openapi annotations 2025-12-29 21:10:13 -08:00
rishikanthc
913063eb49 refactor: Switch yt-dlp to standalone binary & cleanup UV config
- Dockerfiles: Install yt-dlp binary from GitHub releases to /usr/local/bin
- Go: Execute yt-dlp binary directly, removing uv python wrapper
- Config: Remove unused UVPath configuration and findUVPath function
- Entrypoint: Remove yt-dlp init logic (still initializes whisperx env if needed)
2025-12-16 19:07:29 -08:00
rishikanthc
f99087b2bd fix: Resolve mobile audio playback permission issues
- Change cookie SameSite policy from Strict to Lax (Strict blocks media subresources on mobile)
- Decouple Secure cookie flag from APP_ENV:
  - Add SECURE_COOKIES config (defaults to true in prod, but can be overridden)
  - Allows testing production builds over HTTP (home network)
- Increase gocyclo threshold to 25 to accommodate complex handlers
2025-12-16 18:21:36 -08:00
rishikanthc
11434b9f1b feat: Add production security configuration for CORS and cookie handling
- Fix refresh token cookie Secure flag bug (was hardcoded to false)
- Wire up AllowedOrigins config in CORS middleware (router, handlers, chat, SSE)
- Add APP_ENV=production to Dockerfile and Dockerfile.cuda
- Update all docker-compose files with APP_ENV and ALLOWED_ORIGINS examples
- CORS now validates origins in production, allows all in development
- Increase gocyclo threshold from 20 to 25 for complex handlers
2025-12-16 18:21:36 -08:00
rishikanthc
c44de7858b refactor: Complete repository pattern migration for all remaining files (Phases 5-7)
Phase 5: Refactor queue.go (10 DB calls removed)
- Added JobRepository to TaskQueue struct and constructor
- Added UpdateStatus, UpdateError, FindByStatus, CountByStatus methods to JobRepository
- Replaced all database.DB calls with repository methods

Phase 6: Refactor chat_handlers.go and summarize_handlers.go (6 DB calls removed)
- Added GetMessageCountsBySessionIDs and GetLastMessagesBySessionIDs to ChatRepository
- Added UpdateSummary to JobRepository
- Replaced batch queries and update calls with repository methods
- Removed database import from both files

Phase 7: Refactor quick_transcription.go (3 DB calls removed)
- Added JobRepository injection to QuickTranscriptionService
- Updated constructor and all callers

Summary: 46+ database.DB calls replaced with repository methods across 7 phases.
All tests pass, build succeeds.
2025-12-16 18:21:36 -08:00
rishikanthc
86add0037d refactor: Replace direct database.DB calls with repository pattern in handlers, dropzone, and multitrack_processor
Phase 1: Define interfaces
- Created internal/interfaces/ package with AuthServiceInterface, TaskQueueInterface, JobProcessorInterface

Phase 2: Refactor handlers.go (21 DB calls removed)
- Replaced all database.DB calls with repository methods
- Added RefreshTokenRepository for token management
- Added new repository methods: Count, FindActiveTrackJobs, FindLatestCompletedExecution, FindByName

Phase 3: Refactor dropzone.go (3 DB calls removed)
- Added CountWithAutoTranscription to UserRepository
- Injected JobRepository and UserRepository into Service

Phase 4: Refactor multitrack_processor.go
- Changed constructor to accept *gorm.DB and JobRepository
- Updated Handler to inject MultiTrackProcessor

Updated all test files with new dependencies and mock implementations.
2025-12-16 18:21:36 -08:00
rishikanthc
7fc7619ee6 fix: tests for upstream changes
fix: new tests for chat and user management flows

fix: resolve lint errors

fix: configured lefthook to check entire project
2025-12-16 18:21:36 -08:00
rishikanthc
658a1a5c49 fix: lint errors in go code 2025-12-16 18:21:36 -08:00
rishikanthc
3bbcbcfd63 fix: responsive design 2025-12-15 13:36:12 -08:00
rishikanthc
7deff5b903 fix: change logo.. fix chat 2025-12-14 19:09:52 -08:00
rishikanthc
57232d9c06 fix(api): return graceful empty responses instead of 400/404
- GetTranscript returns 200 with available=false when transcript not ready
- GetJobExecutionData returns 200 with available=false when no execution
- GetJobLogs returns JSON with available=false when no logs exist
- Updated frontend hooks to handle new response format with available field
- Added .gitignore entries for prompt.txt and .agent folder
2025-12-14 19:09:52 -08:00
rishikanthc
8cb6c394c8 fix(streaming): add proper headers for real-time chunk delivery
- Add Transfer-Encoding chunked and X-Accel-Buffering headers to chat and summarize handlers
- Start response immediately with c.Status(http.StatusOK)
- Fix SummaryDialog: wider desktop, reading font, no inner border, darker text
- Add generating animation while waiting for first LLM chunk
2025-12-14 19:09:52 -08:00
rishikanthc
9e7fec288e feat: show context length, thinking messages separately, automatic context management 2025-12-14 19:09:52 -08:00
rishikanthc
4f78395091 fix: testing fix for long transcript chat sessions 2025-12-14 19:09:52 -08:00
rishikanthc
e5cbd43d6c fix: testing fix for long transcript chat sessions 2025-12-14 19:09:52 -08:00
rishikanthc
ebdd4eced3 fix: errors on empty 2025-12-14 19:09:52 -08:00
rishikanthc
3a0f4fb9bc feat: implement per-job SSE for real-time status updates
- Implement SSE Broadcaster with job-based subscription support
- Add /api/v1/events endpoint for SSE streaming
- Update transcription service and handlers to broadcast job events
- Implement frontend per-job SSE connection logic
- Remove legacy polling from audio list hooks
- Fix server shutdown deadlock issue
2025-12-14 19:09:52 -08:00
rishikanthc
94bb19e774 feat: audio streaming, visualizer, and secure cookie auth
- Implemented HTTP Range Requests for audio streaming

- Added EmberPlayer and AudioVisualizer components

- Implemented secure HttpOnly cookie authentication

- Added production scaffolding (APP_ENV, Secure flag)

- Fixed layout jitter and normalized UI

- Fixed 400 error on /speakers endpoint
2025-12-14 19:09:52 -08:00
rishikanthc
503a6d714f feat: stream audio in chunks - new ember player and visualizer 2025-12-14 19:09:52 -08:00